lsp-ui-peek-mode 在 spacemacs 自定义 layer 中出问题:不能退出peek窗口

在 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))
    ))
1 个赞