From 653a38bce52f1a69f60cb32cb4ea0b4cb89d0ea5 Mon Sep 17 00:00:00 2001 From: Thanh Vuong Date: Mon, 24 Jun 2019 09:05:51 -0600 Subject: [PATCH] fix #12455 lsp layer add an internal variable for `lsp` layer `lsp-layer--active-mode-list` to keep track of active major modes using lsp, `spacemacs//lsp-declare-prefixes-for-mode` will check this variable to decide whether to add prefix to which-key or not --- CHANGELOG.develop | 1 + layers/+tools/lsp/config.el | 1 + layers/+tools/lsp/funcs.el | 24 +++++++++++++----------- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.develop b/CHANGELOG.develop index 0eb1c64bb..9dd3b915b 100644 --- a/CHANGELOG.develop +++ b/CHANGELOG.develop @@ -1804,6 +1804,7 @@ Other: - ~SPC m g s~ to find symbol in current project - ~SPC m g S~ to find symbol in all projects - Deleted =fix-lsp-company-prefix= since =company-lsp= is doing that handling. +- Fixed a delay when declaring prefixes for mode (thanks to Thanh Vuong) **** Debug Adapter Protocol (DAP) - Key bindings - ~SPC m d d e~ to edit debug template diff --git a/layers/+tools/lsp/config.el b/layers/+tools/lsp/config.el index 5982b53d7..c652af524 100644 --- a/layers/+tools/lsp/config.el +++ b/layers/+tools/lsp/config.el @@ -27,3 +27,4 @@ If :none, use neither flycheck nor flymake.") (defvar lsp-ui-sideline-enable t "Enable/disable lsp-ui-sideline overlay") (defvar lsp-ui-sideline-show-symbol nil "When non-nil, sideline includes symbol info (largely redundant for c modes)") ; don't show symbol on the right of info (defvar lsp-ui-sideline-ignore-duplicate t "Ignore duplicates") +(defvar lsp-layer--active-mode-list nil "internal variable to store active major modes") diff --git a/layers/+tools/lsp/funcs.el b/layers/+tools/lsp/funcs.el index 14447d886..3a4b01aec 100644 --- a/layers/+tools/lsp/funcs.el +++ b/layers/+tools/lsp/funcs.el @@ -77,17 +77,19 @@ (defun spacemacs//lsp-declare-prefixes-for-mode (mode) "Define key binding prefixes for the specific MODE." - (spacemacs/declare-prefix-for-mode mode "m=" "format") - (spacemacs/declare-prefix-for-mode mode "mh" "help") - (spacemacs/declare-prefix-for-mode mode "mb" "backend") - (spacemacs/declare-prefix-for-mode mode "mr" "refactor") - (spacemacs/declare-prefix-for-mode mode "mT" "toggle") - (spacemacs/declare-prefix-for-mode mode "mg" "goto") - (spacemacs/declare-prefix-for-mode mode "mG" "peek") - (spacemacs/declare-prefix-for-mode mode "mF" "folder") - (dolist (prefix '("mg" "mG")) - (spacemacs/declare-prefix-for-mode mode (concat prefix "h") "hierarchy") - (spacemacs/declare-prefix-for-mode mode (concat prefix "m") "members"))) + (unless (member mode lsp-layer--active-mode-list) + (push mode lsp-layer--active-mode-list) + (spacemacs/declare-prefix-for-mode mode "m=" "format") + (spacemacs/declare-prefix-for-mode mode "mh" "help") + (spacemacs/declare-prefix-for-mode mode "mb" "backend") + (spacemacs/declare-prefix-for-mode mode "mr" "refactor") + (spacemacs/declare-prefix-for-mode mode "mT" "toggle") + (spacemacs/declare-prefix-for-mode mode "mg" "goto") + (spacemacs/declare-prefix-for-mode mode "mG" "peek") + (spacemacs/declare-prefix-for-mode mode "mF" "folder") + (dolist (prefix '("mg" "mG")) + (spacemacs/declare-prefix-for-mode mode (concat prefix "h") "hierarchy") + (spacemacs/declare-prefix-for-mode mode (concat prefix "m") "members")))) (defun spacemacs/lsp-ui-doc-func () "Toggle the function signature in the lsp-ui-doc overlay"