【问题标题】:Emacs company-mode completion not workingEmacs公司模式完成不起作用
【发布时间】:2016-09-30 23:15:44
【问题描述】:

我几天前才开始使用 emacs,但在设置公司模式时遇到了麻烦。我使用 package-install 安装了公司模式,并在我的 .emacs 文件中添加了以下内容:-

(require 'company)
(add-hook 'after-init-hook 'global-company-mode)

然而,当我转到 haskell 模式时,当我在关键字上等待几秒钟时,根本不会弹出公司模式完成(与球拍模式一样)。我可以安装一些可能会弄乱或与公司模式冲突的东西吗? 此外,当我尝试手动调用 company-complete 时,它​​只是说“找不到完成”。

编辑:尝试了自动完成作为替代方案,当我按下 Tab 时,代码完成不起作用,但是当我在一个单词上调用自动完成时,它可以工作。

Edit2:自动完成工作。 https://i.imgur.com/Vn4f2GX.png 看起来 flyspell-mode 与自动完成冲突。但是,让公司模式发挥作用并不走运。 非常感谢任何帮助。

【问题讨论】:

  • 因为你是通过package.el安装的,所以不需要(require 'company)。另外,我认为没有必要使用after-init-hook 而不是普通的(global-company-mode 1)。当然,这对您的问题没有任何影响。如果你去*scratch* 并输入(doli 你会得到公司插入的一些完成(你应该)?如果是这样,问题可能只是不支持 Haskell/Racket 补全。
  • 哦,这次我确实完成了。看起来是这样的imgur.com/Hr4yNTV 这是它应该看起来的样子吗?
  • 另外,我可以自动完成以使用 haskell 和球拍模式,但是在使用自动完成模式时我不能打开 flyspell 次要模式。有什么解决方法吗?我想使用 flyspell-prog-mode 来找出我的 cmets 中的任何拼写错误。好吧,我可以没有它,但我想使用它。
  • 试试ac-flyspell-workaround
  • 我猜 Haskell/Racket 和 Company 的问题是 Company 没有找到任何完成源。理想情况下,完成的来源应该由主要模式提供,因此它可用于标准的completion-at-point M-TAB 完成以及公司和其他一些可能的完成。如果没有,您可能会在某个地方找到一些提供完成源的 company-haskell 和/或 company-racket 包。我建议您使用 haskell 模式和球拍模式提交错误报告,要求他们添加适当的 completion-at-point-function

标签: macos emacs


【解决方案1】:

我在haskell 中为company-mode 工作没有太多麻烦。 我所要做的就是将公司后端添加到我的 .emacs 中:-

(add-to-list 'company-backends 'company-dabbrev-code) 
  (add-to-list 'company-backends 'company-yasnippet)
  (add-to-list 'company-backends 'company-files)

并获取包intero,它增加了company-mode 对haskell 的支持。像这样:-

(add-hook 'haskell-mode-hook 'company-mode)
(add-hook 'haskell-mode-hook 'intero-mode))

至于racket-mode,我在我的 .emacs 中添加了这个:-

  (defun my-racket-mode-hook () 
    (set (make-local-variable 'company-backends)
         '((company-capf company-dabbrev-code)))
    (company-quickhelp-mode 0))
  (add-hook 'racket-mode-hook 'my-racket-mode-hook)
  (add-hook 'racket-mode-hook 'company-mode)
  (add-hook 'racket-repl-mode-hook 'my-racket-mode-hook)
  (add-hook 'racket-repl-mode-hook 'company-mode)

【讨论】:

    猜你喜欢
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-15
    • 1970-01-01
    • 2013-10-09
    • 2012-02-06
    • 2012-06-02
    相关资源
    最近更新 更多