就连 基本的 while, if 都没有代码块生成了,有什么特别的配置吗?
我也是这个问题, 而且我不能补全private和protected成员函数
- 我的emacs是26.3
- spacemacs版本是:1aa0af2 2019-06-26 | Move indirect buffer key bindings to
SPC b N
prefix (HEAD -> develop) (syl20bnr),
排查两点:
-
你确定有snippets存在么?前段时间yasnippet更新后,就不再默认提供snippets了(好像分拆到一个独立包提供snippets)。你点菜单栏Yasnippet,看看是不是真的还有snippets存在。
-
你使用
yas-expand
试一下,是否可以展开snippet。如果可以,那就是你按键tab
或别的什么快捷键的绑定问题了。
注释掉下面的东西就可以自动补全了, 说明跟ccls是相关的
c-c++-backend 'lsp-ccls
c-c++-lsp-executable(file-truename "~/ccls/Release/ccls")
那你算是排查了第1点了,那第2点呢?如果可以,那就是按键绑定的问题而已(而并非冲突),你fix一下或者绑个新的就好了。
如果第二点不工作,你确认下yasnippet是不是在你的c++mode中正常加载了
你混淆了两件不同的事:
- yasnippet 不工作
- 自动补全不提供 yasnippet 项
看起来 ccls 独占了补全后端,你如果不喜欢这个设置,可以把 company-yasnippet
加回去。
这两个无法协同工作吗?
应该先确定问题在哪里。
-
打开文件,启动 lsp
-
参考 @oracleyue #3 楼的步骤确定 yasnippet 没有问题。
-
M-: (setq-local company-backends '((company-capf :with company-yasnippet)))
临时加入 yasnippet 补全后端。 -
输入 if 然后再
M-x company-indent-or-complete-common
看看补全里面有没有 yasnippet 项。
1 个赞