machine_setup/ansible/roles/emacs/files/lang-javascript.el

62 lines
1.8 KiB
EmacsLisp

(require 'common-lsp)
(require 'util-tree-sitter)
(use-package js
:mode (
("\\.js\\'" . js-mode)
("\\.json\\'" . js-mode)
)
:commands js-mode
:pin manual
:hook (
(find-file . (lambda () (when (string= (file-name-extension buffer-file-name) "json") (add-hook 'before-save-hook 'json-fmt-jq nil 'local))))
(js-mode . (lambda ()
(tree-sitter-hl-mode +1)
)
)
)
:config
(setq js-indent-level 2)
)
(use-package typescript-mode
:mode (
("\\.ts\\'" . typescript-mode)
("\\.tsx\\'" . typescript-mode)
)
:hook (
(typescript-mode . (lambda ()
;; (lsp-register-client
;; (make-lsp-client :new-connection (lsp-stdio-connection '("deno" "lsp" --compat --unstable --allow-read))
;; :major-modes '(typescript-mode)
;; :server-id 'typescript-ls))
(eglot-ensure)
(tree-sitter-hl-mode +1)
))
;; (before-save . lsp-format-buffer)
)
)
(defun json-fmt-jq ()
"Run jq."
(run-command-on-buffer "jq" "--monochrome-output" ".")
)
(use-package web-mode
:mode (("\\.dust\\'" . web-mode)
)
:config
(setq web-mode-markup-indent-offset 2)
(setq web-mode-enable-current-element-highlight t)
)
;; Define a custom mode for dust so that org-mode handle #+BEGIN_SRC dust blocks
(define-derived-mode dust-mode web-mode "WebDust"
"Major mode for editing dust templates in web-mode."
(web-mode)
(web-mode-set-engine "dust")
;; (setq web-mode-content-type "html")
)
(provide 'lang-javascript)