diff --git a/emacs.d/dev.el b/emacs.d/dev.el index 1ce3215..b102d48 100644 --- a/emacs.d/dev.el +++ b/emacs.d/dev.el @@ -14,14 +14,24 @@ (treesit-auto-add-to-auto-mode-alist 'all) (global-treesit-auto-mode)) +;; This should be used for any hooks instead of `lsp`. Doing so makes it so that +;; LSP will not be loaded automatically unless the file is already part of a +;; pre-configured workspace/project/session. There will be no automatic prompt when +;; a file is opened from a directory that is not part of an existing workspace. +;; To initialize a new workspace/project/session, use `M-x lsp`. +(defun lsp-non-interactive () + (require 'lsp) + (when (lsp-workspace-root) + (lsp))) + (defun gered/enable-lsp () (interactive) - (add-hook 'prog-mode-hook 'lsp) + (add-hook 'prog-mode-hook 'lsp-non-interactive) (message "Adding lsp hook to prog-modes")) (defun gered/disable-lsp () (interactive) - (remove-hook 'prog-mode-hook 'lsp) + (remove-hook 'prog-mode-hook 'lsp-non-interactive) (message "Removing lsp hook from prog-modes")) (use-package lsp-mode @@ -29,7 +39,7 @@ :init (setq lsp-keymap-prefix "M-z") :hook - ((prog-mode . lsp) + ((prog-mode . lsp-non-interactive) (lsp-mode . lsp-enable-which-key-integration)) :config (setq lsp-enable-on-type-formatting nil)