lsp-bridge 如何直接用数字选择候选项

现在只能用快捷键 A + 2 之类的进行选择,可是这些已经被分配给其它命令了。如果直接输入数字 2 就能选择第 2 个候选项呢?

可以提交一个issue, 我最近很忙, 应该很好实现。

都支持模糊匹配了,感觉这个意义不大。随便按个字母,都比按快捷键+数字容易。

是只按数字键实现选择,快捷键加数字现在就是支持的。是我问题描述不清吗?

谢谢大佬,等我加了 issue 再回来 @ 你。

抱歉没看清楚。

但是这样如何区分候选项中本来就有数字的情况?

一般的变量名很少有含有数字情况(就我接触到的 Python 和 C ) 。如果确实碰到了,那就干脆取消候选,直接输入。 与直接按数字候选带来的收益相比,这点例外所消耗的时间我觉得是可以忍受的。

可能 latex 会有较多的例外,这种我觉得可以分 mode 使用不同的设置来解决?

我以前用 company 就是直接用数字候选的(虽然我是直接抄的大佬的代码,不知道是他特殊设置的,还是 company 本身就支持)。输入一些长的单词或变量,节省的时间还是很可观的。

大佬,已添加 issue,如果需要完善请直接 @ 我.

另外,顺便请教一下另外一个不太相关问题。现在 search-word 时,要输入许多词才会出现相应的候选词。比如我输入 a, 可能候选里面只会出现 ab 而不出现 abc,只有再次输入 b 时,才会出现 abc。 请问这个特性有没有选项可以更改,看文档没有找到相应的选项。

如果输入了foo而candidate中有foo399这样的选项,在接下来输入3的时候不选择第三个而是输入(变成foo3)。之前company我抄的abo abo和chenbin的实现


(setq acm-enable-quick-access t) ; only decides whether indexes are shown

(dotimes (i 10)
    (general-define-key
     :keymaps 'acm-mode-map
     (number-to-string i) 'acm-complete-quick-access)
    (general-define-key
     :keymaps 'acm-mode-map
     (format "M-%d" i) (eval `(lambda! (insert ,(number-to-string i))))))

对,应该输入优先。

大佬,这段代码我直接运行报错了。lambda ! 是不是有什么问题?

lambda!抄自doom,general-...是general.el的功能,你要用内置的lambdadefine-key改造一下,或者跟我一样抄下doom&引入general

这个时 search_word 做了一些设计, 就是手指头停下来才让后端去搜索单词, 没有做实时一变化就搜索单词。

acm可以做一下判断, 如果 index 和接下来输入候选词的字符如果是一样就输入数字, 如果不一样就选择候选词, 同时 Alt + 数字是可以一直选择的。

这样大多数语言都可以快速通过数字来选择候选词,就和输入法的体验差不多。

1 个赞

原来如此,改成下面这样原生的 emacs 就能用了。

(setq acm-enable-quick-access t) ; only decides whether indexes are shown

(dotimes (i 10)
    (general-define-key
     :keymaps 'acm-mode-map
     (number-to-string i) 'acm-complete-quick-access)
    (general-define-key
     :keymaps 'acm-mode-map
     (format "M-%d" i) (eval `(lambda() (insert (number-to-string i))))))

谢谢大佬,已经完全达到我预期的需求了。

大佬,这个是基于性能上的考虑设计成这样的吗?

能否做成选项,从而在 prog mode 启用,而在 org-mode 下不启用。我之前用 company ,抄得大佬的配置,好像就是这个实现思路,在 org-mode 下从直接显示所有的单词,而在prog-mode下,只有在注释中才开始搜索单词,这样对于我这种英语渣来说可以省不少输入时间。

你是要输入英文单词,还是要补全buffer里的单词。

输入英文单词。

直接用 lsp-bridge-toggle-sdcv-helper 命令吧。