比如同时开启了company-etags和company-dabbrev时,会出来两个相同的函数名在列表里,可以去除重复的,只显示一个吗?
在 transformer 中实现:
(defun company/remove-duplicate-cands (cnads)
;; TODO
new-cands)
(add-to-list 'company-transformers #company/remove-duplicate-cands)
可以根据每个 candidate 的来源决定保留哪一个,例如:
来自 lsp:
#("foobar" 0 6 (lsp-completion-item #s(hash-table size 6...)))
来自 dabbrev:
#("foobar" 0 6 (company-backend company-dabbrev))
1 个赞
用你说的这个方式搞定了,完美。
(defun eye/company-remove-dups (candidates)
(let ((newseq))
(mapcar #'(lambda (c)
(if (not (member c newseq))
(add-to-list 'newseq c)))
candidates)
newseq))
(add-to-list 'company-transformers #'eye/company-remove-dups)
简化版
(add-to-list 'company-transformers #'delete-dups)
3 个赞
有效果,看来不需要自己另外写
1 个赞