tools/lsp: lazy load <leader> c l keybind

Fixes a issue where folks would try to rebind <leader> c, only to get a
non-prefix key error about <leader> c l.
This commit is contained in:
Henrik Lissner 2020-08-27 17:44:58 -04:00
parent 362f101227
commit 841eacc77d
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
4 changed files with 51 additions and 39 deletions

View file

@ -47,8 +47,7 @@
:desc "LSP Code actions" "a" #'lsp-execute-code-action :desc "LSP Code actions" "a" #'lsp-execute-code-action
:desc "LSP Organize imports" "o" #'lsp-organize-imports :desc "LSP Organize imports" "o" #'lsp-organize-imports
:desc "LSP Rename" "r" #'lsp-rename :desc "LSP Rename" "r" #'lsp-rename
(:after lsp-mode :desc "LSP" "l" #'+default/lsp-command-map
:desc "LSP" "l" lsp-command-map)
(:when (featurep! :completion ivy) (:when (featurep! :completion ivy)
:desc "Jump to symbol in current workspace" "j" #'lsp-ivy-workspace-symbol :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) :desc "Jump to symbol in any workspace" "J" #'lsp-ivy-global-workspace-symbol)

View file

@ -345,9 +345,8 @@
(:when (featurep! :completion helm) (:when (featurep! :completion helm)
:desc "Jump to symbol in current workspace" "j" #'helm-lsp-workspace-symbol :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 symbol in any workspace" "J" #'helm-lsp-global-workspace-symbol)
:desc "LSP Rename" "r" #'lsp-rename :desc "LSP" "l" #'+default/lsp-command-map
(:after lsp-mode :desc "LSP Rename" "r" #'lsp-rename)
:desc "LSP" "l" lsp-command-map))
(:when (featurep! :tools lsp +eglot) (:when (featurep! :tools lsp +eglot)
:desc "LSP Execute code action" "a" #'eglot-code-actions :desc "LSP Execute code action" "a" #'eglot-code-actions
:desc "LSP Rename" "r" #'eglot-rename :desc "LSP Rename" "r" #'eglot-rename

View file

@ -0,0 +1,20 @@
;;; config/default/autoload/deferred.el -*- lexical-binding: t; -*-
;; TODO generalize this
;;;###autoload
(defun +default/lsp-command-map ()
"Lazily invoke `lsp-command-map'."
(interactive)
(require 'lsp-mode)
(map! :leader "c l" lsp-command-map)
(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)))
(setq prefix-arg current-prefix-arg
unread-command-events
(mapcar (lambda (e) (cons t e))
(vconcat (when evil-this-operator
(where-is-internal evil-this-operator
evil-normal-state-map
t))
(this-command-keys)))))

View file

@ -62,12 +62,6 @@ should be a deliberate act (as is flipping this variable).")
:type-definition #'lsp-find-type-definition :type-definition #'lsp-find-type-definition
:references #'lsp-find-references) :references #'lsp-find-references)
;; REVIEW The '<leader> c l' prefix is hardcoded here, unfortunately.
(when (featurep! :config default +bindings)
(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))))
(when lsp-auto-configure (when lsp-auto-configure
(mapc (lambda (package) (require package nil t)) (mapc (lambda (package) (require package nil t))
(cl-remove-if #'featurep lsp-client-packages))) (cl-remove-if #'featurep lsp-client-packages)))