对的,我想要的就是这个功能,谢谢大佬0-0.
lambda!
是自动给你插入一个interactive
的,你这里没加就用来define-key不会报错的吗
还差一点,上面说的当候选项中有数字的时候认为是输入了那个数字。
并没有报错,可以直接用。
这个大佬也有相应的实现吗?
虽然现在的已经够用了,但是如果能应对特殊情况,那当然是更吼了。
company有,抄的abo abo的,lsp-bridge简单看了一下没找到怎么取得当前candidate list
(defun ora-company-number ()
"Forward to `company-complete-number'.
In these cases just insert the number:
1. the number is potentially part of the candidate
2. last character is a number "
(interactive)
(let* ((k (this-command-keys))
(re (concat "^" company-prefix k)))
(if (or (cl-find-if (lambda (s) (string-match re s))
company-candidates)
(> (string-to-number k)
(length company-candidates))
(looking-back "[0-9]"))
(self-insert-command 1)
(company-complete-number
(if (equal k "0")
10
(string-to-number k))))))
自己改 acm-keymap–quick-access-modifier 这个选项吧, 我发现只要是想输入数字的时候, 直接按数字补全都会各种冲突。
好的,谢谢大佬。
这个确实能难整到适应所有的情况。所以,我以前碰到数字都是在 Evil 模式下 esc 跳出补全,再快速切回来输入数学。
由于数字变量我本身碰到的情况并不多,所以对我而言还能接受。
数字开头也出补全,这个问题只有在elisp里面有,别的mode一串数字根本不会被lang server认为是一个symbol,1
开头的补全菜单也就永远是空
可以在elisp里面也禁用数字开头时的补全,代价是无法补全少量1
2
开头的函数(以及数字开头的变量,不过一般不会有人起变量的时候用数字开头吧)
只要语言本身支持就很难避免吧。我觉得像现在这样有设置方法就挺好的了,可以根据自己的需求选择是否安装。
函数我都写好了,先再用用吧,我感觉elisp写 1+ 或者 1- 的情况还很多。
写个数字加减法,确实很烦人。
我做了几个限制条件:
- 用户输入的必须是数字字符
- 用户输入的数字要小于等于补全菜单的长度
- 补全项接下来要输入的字符不能等于输入的数字
- 光标前不能是数字字符
只要符合着几个条件的, 就可以直接通过数字字符来选择候选词, 不符合条件的插入数字或者通过 Alt + Number 来辅助选择候选词。
@sbwcwso @JJPandari 两位可以更新试一下。
大佬辛苦,等我用完后再来回馈信息。
试用了一下,基本实现甚至超过了我的预期,因为 lsp-bridge-toggle-sdcv-helper
对于英语渣渣来说实在是太好用了
对于需要输入数学的情况,我现在碰到的情况只有汇编语言里面的寄存器,比如 R1
, R2
之类的,这种在 evil 下我一般会先按 Esc
进入 normal mode,再按 a
后就可以直接输入了。或者说如果需求比较大,我直接暂时关闭数字选词就 ok 了。
多谢大佬 , you save my life.