这说明yas设置没问题,下一步是m-x company-yas,这是检查com yas的设置,按照company的逻辑,有些设置下,前边的backend找到了,就不会再找备用的,具体参考com的说明
你那个with,如果我没记错,就是设置备用,或者是排到最后
这说明yas设置没问题,下一步是m-x company-yas,这是检查com yas的设置,按照company的逻辑,有些设置下,前边的backend找到了,就不会再找备用的,具体参考com的说明
你那个with,如果我没记错,就是设置备用,或者是排到最后
你要往下拖呀,yas提供的补全没在下边?
拉到底也没有for的snippet
嗯 看了下 好像是这个问题
代码片段这块和vim比弱了。。
如果vim用的挺好 为什么还要用emacs呢
这其实是个company对yasnippet的补全支持问题,和yasnippet本身倒关系不大。
之所以支持很基本,没有你截图中vim那么炫酷,主要还是使用群体的问题,我猜。估计和我类似,因为yasnippet比company出现早,很多人是不用company作yansippet key的补全的,因为如果常用的major mode下snippets太多了,会搞得补全列表很乱,而且早习惯了基本不用key补全(偶尔忘了也可以点菜单栏查下,最多多个重名key用complete-symbol在minibuffer里选选),于是开发者也不花时间搞好它了。所以补全的界面支持的确没有snippet移植到vim上那么好,而且emacs得自己整合,并不是默认的(好像complete-symbol对重名key是默认支持的(不重名直接tab补全snippet内容了),而auto-complete或company都得自己另设)。
不知道是不是想要这样的效果:
配置:
(yc/defmacro yc/add-company-backends-with-yasnippet (&rest backends)
`(set (make-local-variable 'company-backends)
(push ',(append backends '(company-yasnippet :separate)) company-backends)))
(use-package lsp-mode
:custom
(lsp-enable-indentation nil)
(lsp-auto-configure nil)))
(defun yc/lsp-adv (&rest args)
"Advice for 'lsp': update company backends, and enable flyckcheck."
;; functions to run after lsp...
(lsp-ui-flycheck-enable t)
(yc/add-company-backends-with-yasnippet company-lsp)
(flycheck-mode 1))
(advice-add 'lsp :after #'yc/lsp-adv)
这是 lsp
启用后, company-backends
的值:
((company-lsp company-yasnippet :separate) (company-keywords company-dabbrev-code company-yasnippet :separate) (company-files company-dabbrev company-abbrev :with company-yasnippet))
玩腻了。完了几年vim了插件也了几个了。
这就很麻烦,不是很清楚emacs的api,但是这几天配置的过程,代码片段需要和补全comgpany结合配置才能使用,vim只需要接管omi就可以 不管你有没有补全 snippet都可以用。两个东西互不干涉的。在emacs里这2个耦合度太高了。
差不多是这样的。
company-lsp-enable-snippet 这个设置放在init里试试 加点log,补全的时候把backends也打出来,看看实际补全的时候到底生效了没
company-lsp-enable-snippet 这个东西是加载server返回的snippet与yasnippet无关吧?lsp我去年就开始研究了。只不过之前一直用vim。所以这个设置不应该影响yasnippet 2个东西。不管在vim还是emacs。