【问题标题】:Company Backends in GNU EmacsGNU Emacs 中的公司后端
【发布时间】:2017-07-07 19:45:47
【问题描述】:

在 Emacs 中,我安装了 MELPA company-irony-c-header 包。然后我在网上做了一些研究,显然为了配置包,我认为“激活”它的意思是,我必须添加这个:

(defun company-my-backend (command &optional arg &rest ignored)
  (interactive (list 'interactive))
  (case command
    (interactive (company-begin-backend 'company-my-backend))
    (prefix (when (looking-back "foo\\>") (match-string 0)))
    (candidates (when (equal arg "foo") (list "foobar" "foobaz" "foobarbaz")))
    (meta (format "This value is named %s" arg))))

进入一个叫做“后端”的东西(foo 代表我的文件名)。我完全不知道后端是什么,或者如何使用它。任何帮助将不胜感激。

【问题讨论】:

    标签: emacs backend


    【解决方案1】:

    A/来自official doc

    Company 是 Emacs 的文本完成框架。这个名字代表 “完成任何事情”。它使用可插拔的后端和前端来 检索并显示完成候选。

    这意味着“后端”是公司用来建议完成的信息来源(解析器、数据库...)。

    例如,对于 C/C++ 工作,我使用出色的 RTags。将此后端添加到公司已完成,谢谢:

    (push 'company-rtags company-backends)
    

    B/ 现在,对于您的问题,一个最小的 company-c-headers 工作示例是:

    (package-initialize)
    
    (require 'company)
    (require 'company-c-headers)
    
    (add-to-list 'company-backends 'company-c-headers)
    
    ;; system dirs (for include <...>)
    (add-to-list 'company-c-headers-path-system "/usr/include/c++/6")
    ;; (add-to-list 'company-c-headers-path-system "ANOTHER_SYSTEM_DIR")
    ;; -> use "gcc -E -Wp,-v -" to get the complete list
    
    ;; You can also define (for include "...")
    ;;(add-to-list 'company-c-headers-path-user "/home/YOUR_PROJECT")
    
    (add-hook 'c++-mode-hook 'company-mode)
    (add-hook 'c-mode-hook 'company-mode)
    

    保存这个文件testing_init.el并用

    启动emacs
    emacs -q --load "testing_init.el" your_prog.cpp
    

    现在如果你输入

     #include<...
    

    your_prog.cpp 文件中,公司应在输入第三个字符后触发自动补全。

    有很多很好的教程可以将 Emacs 配置为 C++ 编辑器。如果认为this one 是一个很好的起点。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-03-11
      • 2016-09-30
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多