lang/javascript: if lsp fails, fallback to tide

This commit is contained in:
Henrik Lissner 2019-05-04 18:54:20 -04:00
parent 47f0f77d91
commit e5c8ced1a6
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
2 changed files with 16 additions and 15 deletions

View file

@ -127,27 +127,29 @@
;; Tools ;; Tools
(when (featurep! +lsp) (when (featurep! +lsp)
(add-hook! (js2-mode rjsx-mode typescript-mode) #'lsp!)) (add-hook! (js2-mode typescript-mode) #'lsp!))
(def-package! tide (def-package! tide
:unless (featurep! +lsp)
:defer t :defer t
:init :init
;; Don't let hard errors stop the user from opening js files. (defun +javascript|init-tide-maybe ()
(defun +javascript|init-tide () "Enable `tide-mode' if node is available, `lsp-mode' isn't enabled and this
"Enable `tide-mode' if node is available." buffer represents a real file."
(cond ((not buffer-file-name) (unless (bound-and-true-p lsp-mode)
(add-hook 'after-save-hook #'+javascript|init-tide nil t)) (cond ((not buffer-file-name)
((executable-find "node") ;; necessary because `tide-setup' will error if not a file-visiting buffer
(tide-setup)) (add-hook 'after-save-hook #'+javascript|init-tide-maybe nil 'local))
((message "Couldn't find `node', aborting tide server")))) ((executable-find "node")
(add-hook! (js2-mode typescript-mode) #'+javascript|init-tide) (tide-setup)
(remove-hook 'after-save-hook #'+javascript|init-tide-maybe 'local))
((message "Couldn't find `node', aborting tide server")))))
(add-hook! (js2-mode typescript-mode) #'+javascript|init-tide-maybe)
(defun +javascript|init-tide-in-web-mode () (defun +javascript|init-tide-in-web-mode ()
"Enable `tide-mode' if in a *.tsx file." "Enable `tide-mode' if in a *.tsx file (and `lsp-mode' isn't active)."
(when (string= (file-name-extension (or buffer-file-name "")) "tsx") (when (string= (file-name-extension (or buffer-file-name "")) "tsx")
(tide-setup))) (+javascript|init-tide-maybe)))
(add-hook 'web-mode-hook #'+javascript|init-tide-in-web-mode) (add-hook 'web-mode-hook #'+javascript|init-tide-in-web-mode)
:config :config
(setq tide-completion-detailed t (setq tide-completion-detailed t

View file

@ -17,7 +17,6 @@
(package! skewer-mode) (package! skewer-mode)
;; Programming environment ;; Programming environment
(unless (featurep! +lsp) (package! tide)
(package! tide))
(when (featurep! :tools lookup) (when (featurep! :tools lookup)
(package! xref-js2)) (package! xref-js2))