在 spacemacs 自定义 layer 中的 lsp-ui 不能退出peek窗口。
重现步骤
开启 lsp-ui-mode:
(add-hook 'lsp-mode-hook 'lsp-ui-mode)
在 lsp-mode 打开 python文件,
M-x lsp-ui-peek-find-references
打开 peek 窗口。
预期结果
按 q 退出,关闭 peek 窗口
实际结果
按 q 退出,报错:
Debugger entered--Lisp error: (invalid-function (fn lsp-ui-peek--deactivate-keymap-fn))
(fn lsp-ui-peek--deactivate-keymap-fn)()
lsp-ui-peek-mode(-1)
lsp-ui-peek--abort()
funcall-interactively(lsp-ui-peek--abort)
call-interactively(lsp-ui-peek--abort nil nil)
command-execute(lsp-ui-peek--abort)
版本信息
Emacs: GNU Emacs 25.3.1
Spacemacs v.0.300.0 (develop)
OS: Manjaro 17.1.0 Hakoila
Kernel: x86_64 Linux 4.14.10-2-MANJARO
临时解决方法
在 (use-package lsp-ui) 中覆盖 lsp-ui-peek-mode:
(define-minor-mode lsp-ui-peek-mode
"Mode for lsp-ui-peek."
:init-value nil
(if lsp-ui-peek-mode
(setq lsp-ui-peek--deactivate-keymap-fn (set-transient-map lsp-ui-peek-mode-map t 'lsp-ui-peek--abort))
(progn
(funcall lsp-ui-peek--deactivate-keymap-fn)
(setq lsp-ui-peek--deactivate-keymap-fn nil))
))