c/c++ 补全

c++IDE打造 前前后后折腾了快一个月 总算大体上搞完了 今天投入使用 发现company-mode company-semantic 虽然启用了 semanticdb 代码也都parser完毕了

但是项目外部的系统库 例如boost 和 stl
部分提示 部分不提示 很是难受

所以想问问大家都是用什么来补全的

听过2个 一个是ycmd 一个是irony

mac下使用 请问大家 哪个比较简单并且补全效果好一点~~~

现在都是用 lsp-mode 或者 eglot , 这两个实现的是由微软等公司主导的 LSP 的客户端,是包括 Emacs, Vim,VScode 等等编辑器的未来。

具体到 C/C++/Objective-c 的补全可以使用 cquery 或者 ccls (ccls 的作者也在本论坛),具体怎么使用可以去看他们的 wiki

lsp-mode 听说现在不太好用啊。。。我没试过 你用过吗

用过,效果很不错,编译安装配置都比较简单

out

兄啊,鞋子合不合脚是要自己试的…

好的好的 谢各位大佬 我先去试试 lsp-mode

试过在回来

安装包lsp-mode 然后添加

(require 'lsp)
;; in case you are using client which is available as part of lsp refer to the
;; table bellow for the clients that are distributed as part of lsp-mode.el
(require 'lsp-clients)
(add-hook 'programming-mode-hook 'lsp)

安装包 cquery

(require 'cquery)
(setq cquery-executable "/path/to/cquery/build/release/bin/cquery")

programming-mode-hook是你实际的prog的mode的hook,比方说c++-mode-hook

我怎么记得只有prog-mode-hook

嗯嗯 我知道 我刚改过了。。刚下错了 cquery 要下一个客户端 还要下一个服务端。。 感觉也很复杂啊。。。跟我直接用irony 没什么区别啊。。

看 cquery 或者 ccls 的 wiki 啊

我以 cquery 为例子

打开终端(假设你已经安装好了 git 和 cmake, gcc 或者 clang)

git clone --recursive https://github.com/cquery-project/cquery.git
cd cquery
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=release -DCMAKE_EXPORT_COMPILE_COMMANDS=YES
cmake --build .
cmake --build . --target install

这样 cquery 就被编译好了,编译好的 cquery 会在 cquery/build/release/bin/ 目录下生成一个名为 cquery 的 二进制文件

然后安装 lsp-mode, 可以使用 emacs 自带的包管理来安装

M-x package-install [RET] lsp-mode [RET]

安装好之后在你的emacs 的配置文件里写下如下配置

;;; 如果 cquery 编译好之后的执行文件在 PATH 下的话,这条语句就不需要,
;;;  "/path/to/cquery/build/release/bin/cquery" 是 cquery 的位置
(setq cquery-executable "/path/to/cquery/build/release/bin/cquery")
(dolist (hook '(c-mode-hook c++-mode-hook))
  (add-hook hook
	    #'(lambda ()
		(require 'cquery)
		(lsp))))

还有一些其他可以方便使用的配套插件也可以安装上比如 lsp-ui 和 company-lsp

M-x package-install [RET] lsp-ui [RET]
M-x package-install [RET] company-lsp [RET]

配置 company-lsp

(push 'company-lsp company-backends)
1 个赞

好的 编译中 我先试试

我补充了一些内容,另外,我自己也在重新编译,好久没有更新过了

好的 我在编译了 但是卡在下载 Clang7.0.0 很久了。。。观察中

这个版本的 clang 比较大有 358M, 上个版本的 clang-llvm 6.0.1 只有 280 M,所以稍微耐心点好了(我差不多快编译好了)

看下来 好像lsp-mode lsp-ui + cquery 还不错。。 我看lsp-mode 好像还提到了 projectile 和 flycheck 是集成了他们的功能吗

编译出错了 难受

可以使用下面指令安装

M-x package-install [RET] projectile [RET]
M-x package-install [RET]  flycheck  [RET]

之前 flycheck 是当作依赖自动安装的,新版本应该去掉了,如果你使用的 emacs 的版本是 emacs 26.1 以上, lsp-mode 会启动 flymake 进行语法检测,如果你想要使用 flycheck并且手动安装了的话,可以使用下面的配置启用 flycheck

(setq lsp-prefer-flymake nil)

projectile 好像是用来检测项目的,emacs 自带了 project.el,看心情装吧

你之前的步骤是不是出错了?看看是不是缺少了什么东西,我已经编译成功了