如何用代码关闭 lsp-bridge-mode

场景:

我在 xah-fly-keys 实现了一个 evil-escape 的功能, 但是当我按 kjbuffer 有了变化, 然后进入 command-mode 的时候

lsp-bridge 总是会弹出个提示… 效果如图:

此时我必须按一下左或者 esc 或者回车什么的才能关掉这个框, 这个框存在的时候是影响我的上下移动键的

所以我想在进入 command-mode 的时候关掉 lsp-bridge

但是代码执行 (global-lsp-bridge-mode) 或者 (lsp-bridge-mode) 或者 (lsp-bridge-mode nil/-1) 并没有用, M-x lsp-bridge-mode 却可以关掉…

然后看到 lsp-bridge-mode 的定义是个 minor-mode, 就比较奇怪, linum-mode 也是 minor-mode, 它就能直接用代码关掉啊

对了, 这个框可以被 C-g 关掉, C-g 调用的是 (keyboard-quit)

代码调用 (keyboard-quit) 是生效的, 但是不会触发关闭这个框的动作

哪个大佬给解释下这是怎么回事, interactive 的函数用键盘和代码触发不应该是一样的吗

难道是 (keyboard-quit) 是终止了动作但是不涉及 UI 变动?

定制这个选项 lsp-bridge/lsp-bridge.el at 0712a1fe86fe7c3acc9772259d769ec5a7422bfe · manateelazycat/lsp-bridge · GitHub

大佬, 这个是不是要自己定义一个函数来返回当前是否是 command-mode, 然后把这个函数放到 lsp-bridge-completion-popup-predicates 列表(我看检测 evil 的那个好像是这么用的)

我定义了一个检测函数, 没有效果

image

你怎么自定义的 lsp-bridge-completion-popup-predicates

粘贴一下配置代码?

不是直接加到这个列表里吗…

要用 setq

还是没用哈,我在想,有没有其他办法触发一下 UI 的函数

那就是你的条件函数写的有问题,按键的时候并没有触发你期望的条件

可是我用这两个 hooks 测试,在进入 insert-modecommand-mode 的时候都是会触发的啊

你要自己研究了,我没法用所有插件,也没法为所有插件提供支持,欢迎发补丁。

嗯, 多谢大佬了, 我再研究下