c++ - Emacs 公司模式不支持 C++ STL 函数的自动完成
问题描述
我希望 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,我已经通过安装 clang 和 cmakesudo apt-get
解决方案
假设您已经安装了 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
推荐阅读
- nunit-3.0 - Win Server 2012 上的 NUnit3-Console.exe 没有 TestFixtures
- image - ffmpeg-从不同文件夹中的图像制作视频
- batch-file - 制作一个创建特定 vbs 文件的批处理文件
- python - 如何对具有匹配值的子列表进行分组
- css - 在网页上绘制 3 个垂直条带
- jquery - 从两个选择选项值中获取价值
- sms - 如何在 Google Voice 中批量归档多条消息、语音邮件或电话?
- laravel-5.6 - 如果用户被授权,则返回附加列 - API
- java - Java Web 启动错误:访问被拒绝 ("java.util.PropertyPermission" "*" "read,write")
- c - 将 return 0 与 void main() 一起使用?