【问题标题】:Emacs company mode doesn't support auto completion for c++ STL functionsEmacs 公司模式不支持 C++ STL 函数的自动完成
【发布时间】:2021-08-28 01:40:44
【问题描述】:

我希望 emacs 自动完成 std​​ 函数,例如向量的 push_back

#include <vector>

using namespace std;

int main() {
  std::vector v;
  v.push_back(3);
}

但是,公司模式似乎不支持这个,当我输入 v. 和 hit 时,push_back 和其他向量函数没有出现在弹出窗口中。

我的公司模式配置如下:

(require-package 'company)
(require-package 'irony)
(require-package 'company-irony)
(require-package 'company-irony-c-headers)
(require-package 'company-quickhelp)
(require 'company)
(require 'irony)
(require 'company-irony)
(require 'company-irony-c-headers)
(require 'company-quickhelp)

(add-hook 'after-init-hook 'global-company-mode)
(add-hook 'c++-mode-hook 'irony-mode)
(add-hook 'c-mode-hook 'irony-mode)
(add-hook 'objc-mode-hook 'irony-mode)
(add-hook 'irony-mode-hook 'irony-cdb-autosetup-compile-options)
(add-hook 'irony-mode-hook #'irony-eldoc)
(add-hook 'after-init-hook 'company-quickhelp-mode)

(setq company-backends (delete 'company-semantic company-backends))
(add-to-list 'company-backends '(company-irony-c-headers
                                 company-irony
                                 company-clang
                                 company-yasnippet))

顺便说一句,我的平台是 Ubuntu 20.04,我已经通过 sudo apt-get 安装了 clang 和 cmake

【问题讨论】:

    标签: c++ emacs code-completion


    【解决方案1】:

    假设你已经安装了 irony-mode-server,试试 M-xirony-cdb-menu。如果这显示没有编译数据库,那么有几个选项可以告诉讽刺在哪里寻找包含(在文档中讨论)。 Irony 将根据编译数据库中的来源提供补全。

    在这些选项中,我在我的项目目录中使用了一个 .clang_complete 文件。要在您的示例中完成矢量,假设您使用的是 g++ 版本 9(将“9”替换为您的主要版本),以下简单的 .clang_complete 文件可能就足够了(根据需要添加 -I 条目以获取其他包含路径)

    .clang_complete

    -I/usr/include/c++/9
    -I/usr/include/x86_64-linux-gnu/c++/9
    

    【讨论】:

    • 是的,我的 emacs 没有编译数据库。这是根本原因。
    猜你喜欢
    • 2016-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-23
    • 1970-01-01
    • 2012-02-06
    • 1970-01-01
    • 2023-03-15
    相关资源
    最近更新 更多