doom 如何禁用 company?

最近升级了doom, corfu不好用了, 索性就删了, 不知道是不是删了corfu的原因, 原来通过设置

  (setq company-global-modes '(not erc-mode circe-mode message-mode help-mode gud-mode vterm-mode c-mode c++-mode python-mode
                                   emacs-lisp-mode verilog-mode org-mode fundamental-mode special-mode ))

可以禁用company的, 现在也不好使了, 于是打算把company也删了, 但是竟然删不掉, doom 里面太多依赖company的包了, 无奈只好设置

(setq company-minimum-prefix-length 20
        company-idle-delay 10)

这个来避免触发company, 然而这个貌似会导致lsp-bridge补全的时候会卡,最终还是选择通过run-at-time 来禁止company

(dolist (hook (list
               'c-mode-common-hook
               'c-mode-hook
               'c++-mode-hook
               'verilog-mode-hook
               'emacs-lisp-mode-hook
               'lisp-mode-hook
               'python-mode-hook
               ))
  (add-hook hook '(lambda ()
                    (run-at-time 5 nil (lambda () (message "disable company") (company-mode -1))))))

不知道各位大佬有没有更好的办法?

(package! company :disable t)

这个可以不?从doom文档抄的

这个写一个 advice 把 compnay-mode 的定义给覆盖了, 不管Doom怎么设置, 让 company-mode 直接啥都不干, 这样最简单。

你直接把 init.el 里的 company 这个模块给注释掉即可。

然后如果你实在是在某些 mode 需要 company,自己装一个 company 就可以了。doom 的配置都会检查检查是否 (modulep! company) 的,所以 doom 的 company 的配置不会在你自己装的 company 里面启用。

直接在 init.el 里面注释掉 company 呢?

试过了, 没效果

这个也不管用

没用, 貌似是lsp有company后端, 会去require company

哈哈哈, 还是这个好

(advice-add #'company-mode :override '(lambda (x) (message "disabled company-mode")))

感谢大佬提醒

1 个赞

你这样就不用管其他插件怎么设置的, 反正 company-mode 不生效就好了, 简单直接。

你都用lsp-bridge了那当然要把doom init.el 里有关 lsp 的部分给注释掉。。。。。

还没有完全抛弃lsp :rofl: