show出你们的服务端C/C++项目开发配置

大家是怎么配置emacs使得有较好的C/C++开发体验的呢? 良好的开发体验一般如下:

  • 良好的缩进等基本格式控制
  • 基于语法的补全,或者基于文本tag补全也行

我目前使用的是ctags+citre+company进行补全,但感觉缩进这种有时候莫名其妙的。 想看看大家是咋配置的

  • 良好的缩进等基本格式控制 => clang-format
  • 基于语法的补全 => clangd

到emacs 这就是 lsp-mode+company

init.cc.el

我使用 eglot + citre,禁用了 eglot 的 flymake,因为我不需要这么重的语法检查。语法检查使用 clang-check,并且只有保存文件的时候才会检查。而且只显示当前文件的 error。主要原因是我的服务器的性能比较差,开全量检查不丝滑。

1 个赞

老哥觉得体验咋样

我试试lsp-mode的c++模式吧

语法检查clangd可以调clang-tidy模块

太重了,有点卡

刚刚使用了没多久,感觉补全是没什么问题的,语法检查够用了,虽然没有直接用language server的那么强大,但顺很多

多核能缓解卡顿情况吗,还是只看单核cpu、内存

处理一个文件的使用应该只用到一个核(猜测)。我的机器12核24线程。不过我的机器很便宜,二手的,单核不行。感觉我的笔记本都要比它流程很多。

Visual Studio

几个月之后再来更新自己的配置:

  • 能 vscode 的情况下就 vscode,然后配合 clangd,clang-format,cmake-tools 插件,基本就是一个丝滑
  • 在不能 vscode 的情况下(中间有一层 tmux),那么就 emacs,配合 lsp-mode(clangd) + company,debug 其实用 dap-mode 也可以,但是感觉没啥必要
    emacs29下 clangd 索引线程拉到24或者32,也是基本一个丝滑

emacs是个单线程程序*。多核对于解决lsp-mode, eglot的卡顿是没用的,因为它是不慢在lsp server的indexing上,而且卡在其它方面**。lsp-bridge通过rpc (remote procedure call)绕过了这个限制,可以试试。

`* https://www.reddit.com/r/emacs/comments/ghq1yx/lets_get_real_multithreading_into_emacs_by_hiring/ or A vision of a multi-threaded Emacs • Core Dumped

`** https://manateelazycat.github.io/emacs/2022/06/26/why-lsp-bridge-not-use-capf.html