diff --git a/modules/config/default/+emacs-bindings.el b/modules/config/default/+emacs-bindings.el index 25391b39c..f6099d74d 100644 --- a/modules/config/default/+emacs-bindings.el +++ b/modules/config/default/+emacs-bindings.el @@ -42,16 +42,18 @@ (:when (featurep! :tools flycheck) :desc "List errors" "x" #'flycheck-list-errors) (:when (featurep! :tools lsp) - :desc "LSP Code actions" "a" #'lsp-execute-code-action - :desc "LSP Format buffer/region" "F" #'+default/lsp-format-region-or-buffer - :desc "LSP Organize imports" "i" #'lsp-organize-imports - :desc "LSP Rename" "r" #'lsp-rename - (:when (featurep! :completion ivy) - :desc "Jump to symbol in current workspace" "j" #'lsp-ivy-workspace-symbol - :desc "Jump to symbol in any workspace" "J" #'lsp-ivy-global-workspace-symbol) - (:when (featurep! :completion helm) - :desc "Jump to symbol in current workspace" "j" #'helm-lsp-workspace-symbol - :desc "Jump to symbol in any workspace" "J" #'helm-lsp-global-workspace-symbol))) + :desc "LSP Code actions" "a" #'lsp-execute-code-action + :desc "LSP Format buffer/region" "F" #'+default/lsp-format-region-or-buffer + :desc "LSP Organize imports" "i" #'lsp-organize-imports + :desc "LSP Rename" "r" #'lsp-rename + (:after lsp-mode + :desc "LSP" "l" lsp-command-map) + (:when (featurep! :completion ivy) + :desc "Jump to symbol in current workspace" "j" #'lsp-ivy-workspace-symbol + :desc "Jump to symbol in any workspace" "J" #'lsp-ivy-global-workspace-symbol) + (:when (featurep! :completion helm) + :desc "Jump to symbol in current workspace" "j" #'helm-lsp-workspace-symbol + :desc "Jump to symbol in any workspace" "J" #'helm-lsp-global-workspace-symbol))) ;;; f --- file (:prefix-map ("f" . "file") diff --git a/modules/config/default/+evil-bindings.el b/modules/config/default/+evil-bindings.el index ce615bb6f..4b1c155e2 100644 --- a/modules/config/default/+evil-bindings.el +++ b/modules/config/default/+evil-bindings.el @@ -337,7 +337,6 @@ ;;; c --- code (:prefix-map ("c" . "code") - :desc "LSP Execute code action" "a" #'lsp-execute-code-action :desc "Compile" "c" #'compile :desc "Recompile" "C" #'recompile :desc "Jump to definition" "d" #'+lookup/definition @@ -345,8 +344,6 @@ :desc "Evaluate buffer/region" "e" #'+eval/buffer-or-region :desc "Evaluate & replace region" "E" #'+eval:replace-region :desc "Format buffer/region" "f" #'+format/region-or-buffer - :desc "LSP Format buffer/region" "F" #'+default/lsp-format-region-or-buffer - :desc "LSP Organize imports" "i" #'lsp-organize-imports (:when (featurep! :completion ivy) :desc "Jump to symbol in current workspace" "j" #'lsp-ivy-workspace-symbol :desc "Jump to symbol in any workspace" "J" #'lsp-ivy-global-workspace-symbol) @@ -354,7 +351,13 @@ :desc "Jump to symbol in current workspace" "j" #'helm-lsp-workspace-symbol :desc "Jump to symbol in any workspace" "J" #'helm-lsp-global-workspace-symbol) :desc "Jump to documentation" "k" #'+lookup/documentation - :desc "LSP Rename" "r" #'lsp-rename + (:when (featurep! :tools lsp) + :desc "LSP Execute code action" "a" #'lsp-execute-code-action + :desc "LSP Format buffer/region" "F" #'+default/lsp-format-region-or-buffer + :desc "LSP Organize imports" "i" #'lsp-organize-imports + :desc "LSP Rename" "r" #'lsp-rename + (:after lsp-mode + :desc "LSP" "l" lsp-command-map)) :desc "Send to repl" "s" #'+eval/send-region-to-repl :desc "Delete trailing whitespace" "w" #'delete-trailing-whitespace :desc "Delete trailing newlines" "W" #'doom/delete-trailing-newlines diff --git a/modules/tools/lsp/config.el b/modules/tools/lsp/config.el index 888c9c6fe..fcc3e1e37 100644 --- a/modules/tools/lsp/config.el +++ b/modules/tools/lsp/config.el @@ -42,6 +42,8 @@ working on that project after closing the last buffer.") (setq lsp-server-install-dir (concat doom-etc-dir "lsp/") lsp-groovy-server-install-dir (concat lsp-server-install-dir "lsp-groovy/") lsp-intelephense-storage-path (concat doom-cache-dir "lsp-intelephense/")) + ;; Let doom bind the LSP keymap. + (setq lsp-keymap-prefix nil) ;; Disable LSP's superfluous, expensive and/or debatably unnecessary features. ;; Some servers implement these poorly. Better to just rely on Emacs' native @@ -114,6 +116,10 @@ This also logs the resolved project root, if found, so we know where we are." (lambda (it) (format "[%s]" (lsp--workspace-print it))) lsp--buffer-workspaces)))))) + (dolist (leader-key (list doom-leader-key doom-leader-alt-key)) + (let ((lsp-keymap-prefix (concat leader-key " c l"))) + (lsp-enable-which-key-integration))) + (add-hook! 'lsp-mode-hook (defun +lsp-init-company-h () (if (not (bound-and-true-p company-mode))