如何禁止Emacs的company-mode在类成员访问运算符后自动弹出补全窗口
问题原因
你修改的company-semantic-begin-after-member-access和company-clang-begin-after-member-access是Semantic、Clang这两个C/C++专属补全后端的配置项,Python开发场景下Elpy调用的是company-elpy或者company-capf后端,因此这两项配置不会生效。
按下类成员访问运算符后仍弹出补全窗口,是因为Company内置了标点触发补全的独立逻辑,优先级高于你设置的company-idle-delay、company-minimum-prefix-length全局配置。
解决方法
在company的config配置块中新增company-on-punctuation-delay nil配置即可,若仍有问题可同时关闭Elpy自带的自动补全开关,修改后的完整配置如下:
(use-package company :ensure t :hook (prog-mode . company-mode) :config (setq company-idle-delay nil ;; 符合预期生效,不会主动触发补全 company-on-punctuation-delay nil ;; 禁止所有标点(.、->、::等)触发自动补全 elpy-company-autocomplete nil ;; 可选:关闭Elpy强制自动补全逻辑 company-semantic-begin-after-member-access nil company-clang-begin-after-member-access nil company-minimum-prefix-length 3 company-selection-wrap-length 1 company-selection-wrap-around t) (evil-collection-define-key 'insert 'company-mode-map (kbd "C-n") 'company-complete)) ;; 手动触发补全
修改后重启Emacs或重新加载配置即可生效,仅会在你按下C-n时弹出补全窗口。
内容的提问来源于stack exchange,提问作者Adaskos07
相关产品推荐
相关产品推荐

