From e5c8ced1a6d206adf517fee1b9f5480d339eae62 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 4 May 2019 18:54:20 -0400 Subject: [PATCH] lang/javascript: if lsp fails, fallback to tide --- modules/lang/javascript/config.el | 28 +++++++++++++++------------- modules/lang/javascript/packages.el | 3 +-- 2 files changed, 16 insertions(+), 15 deletions(-) diff --git a/modules/lang/javascript/config.el b/modules/lang/javascript/config.el index 6d13982ba..459a50945 100644 --- a/modules/lang/javascript/config.el +++ b/modules/lang/javascript/config.el @@ -127,27 +127,29 @@ ;; Tools (when (featurep! +lsp) - (add-hook! (js2-mode rjsx-mode typescript-mode) #'lsp!)) + (add-hook! (js2-mode typescript-mode) #'lsp!)) (def-package! tide - :unless (featurep! +lsp) :defer t :init - ;; Don't let hard errors stop the user from opening js files. - (defun +javascript|init-tide () - "Enable `tide-mode' if node is available." - (cond ((not buffer-file-name) - (add-hook 'after-save-hook #'+javascript|init-tide nil t)) - ((executable-find "node") - (tide-setup)) - ((message "Couldn't find `node', aborting tide server")))) - (add-hook! (js2-mode typescript-mode) #'+javascript|init-tide) + (defun +javascript|init-tide-maybe () + "Enable `tide-mode' if node is available, `lsp-mode' isn't enabled and this +buffer represents a real file." + (unless (bound-and-true-p lsp-mode) + (cond ((not buffer-file-name) + ;; necessary because `tide-setup' will error if not a file-visiting buffer + (add-hook 'after-save-hook #'+javascript|init-tide-maybe nil 'local)) + ((executable-find "node") + (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 () - "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") - (tide-setup))) + (+javascript|init-tide-maybe))) (add-hook 'web-mode-hook #'+javascript|init-tide-in-web-mode) :config (setq tide-completion-detailed t diff --git a/modules/lang/javascript/packages.el b/modules/lang/javascript/packages.el index 02343440e..23e891ad6 100644 --- a/modules/lang/javascript/packages.el +++ b/modules/lang/javascript/packages.el @@ -17,7 +17,6 @@ (package! skewer-mode) ;; Programming environment -(unless (featurep! +lsp) - (package! tide)) +(package! tide) (when (featurep! :tools lookup) (package! xref-js2))