最近刚刚从spacemacs迁移到doom,发现用起来确实爽(除了一些快捷键需要重新习惯),但有个小问题我暂时找不到解决的方法,当我使用company补全的时候,无法显示来自于yasnippet的候选项。我在discord上向作者hlissner大神求助了,他给我的解决方案是,在config.el中添加
(after! org
(set-company-backend! 'org-mode '(company-capf :with company-dabbrev company-yasnippet)))
这么操作之后,在org-mode下我查看company-backends
的值,确实变成了
((company-capf :with company-dabbrev company-yasnippet)
company-dabbrev company-yasnippet company-ispell company-capf)
但是在输入的时候,并没有yasnippets的选项出现,我只能通过C-x C-s
的快捷键来唤起company-yasnippet
来实现snippets的补全。
类似的问题似乎在spacemacs里直接通过auto-completion
layer的auto-completion-enable-snippets-in-popup t
就可以完成,有没有高手知道在doom里面怎么实现类似的效果呢?
SPQR
2
这是我的,很久之前从exchange上抄过来的,原帖你应该能google到。另外你用了company应该是需要关掉auto-completion吧
(defun company-mode/backend-with-yas (backend)
"Add yasnippet to all company BACKEND."
(if (or
(not company-mode/enable-yas)
(and (listp backend) (member 'company-yasnippet backend)))
backend
(append (if (consp backend) backend (list backend))
'(:with company-yasnippet))))
(setq company-backends (mapcar #'company-mode/backend-with-yas company-backends))
)
我的是这样,可以显示 snippet的:
(after! org
(after! company
(set-company-backend! '(org-mode python-mode)
'(company-dabbrev :with company-yasnippet company-capf))))
你试试把 company-dabbrev company-yasnippet
的顺序换一下
惊了 居然这样就成功了?感觉和楼下的意思是类似的,但是真的搞不懂为啥换个顺序就能成……