这个就是最大问题,如果在开始输入类或者对象名时出现 snippet 是对的,但是我想补全成员函数或者属性,这时候来一大堆模板,你会奔溃的。。。
1 个赞
那不是添乱嘛
我认为在开始输入类或对象名的时侯出现 snippet 都是干扰。
简单的 snippet 例如 f if for 之类的,各个语言下都一样,早就熟记了。名称长/少用的 snippet,打开 helm/ivy 查询更省心 。因为 snippet 有 key 和 name 属性,通常我 key 用缩写,name 全称带注释,搜索的时侯就查找 name 里的关键字。
1 个赞
我也是用helm,常用的片段可以用hippie expand展开,也挺方便的
大家用过 Visual Studio 或者 VSCode 吗?尤其是 VS+VAX 的补全体验,真的是让人欲罢不能。里面同样也有 snippet template,非常智能。
2 个赞
老兄觉得有没可能用lsp智能控制company-yas?
不过可能要大改comapany
昨天我就说过这个了哈,没找到太好的思路。应该还是有办法的,就是不知道改造难度大不大。
可能需要给company给写个新后端,包含lsp和yas,然后内部自己调整控制。
直接改造company-lsp
?也许可行,需要研究下代码。但是,其他 mode 呢?比如 elisp。。。
lsp 不应该知道 company 的存在,要修改的话,只能在 company 这一端,我写了个简单的 advice 来阻止 company-yasnippet:
(define-advice company-yasnippet (:around (fn command &optional arg &rest ignore)
inhibit-when-entering-member-name)
(let* ((pt (car (bounds-of-thing-at-point 'word)))
(ch (char-before pt)))
(if (or (eql ch 32)
(eql pt (point-min))
(eql pt (point-at-bol)))
(funcall fn command arg ignore))))
输入类或对象名字的时侯就无法判断了,也只有敲键盘的人才知道想要补全什么吧。
@seagle0128 改造的任务就交给其大佬吧。
不是有company-lsp吗?知道两边的东东