cquery 补全卡顿

请教各位,为什么我的我用spacemacs 配置cquery补全会卡顿呢,延迟比较高.但是如果我用vscode配合cquery补全速度就是瞬间补全.同一份工程.感觉跟emacs 配置有关,我该如果改配置呢,有遇到这个问题的吗

我把这个值设为0,但是补全还是很慢。需要等待大概1.5秒,甚至2秒。

我昨天測了一下irony-server和ccls。

ccls用了一些clangd的技巧,服務端計算量小。 但irony-server延遲低,主要應該是通信傳輸數據上。 emacs JSON deserialization比較慢

irony-server 在client-side 排序 company如果啓用推薦的 (setq company-transformers nil company-lsp-cache-candidates nil),也會卡一點。

貌似就是json导致的,vscode下面快的很

那如何才能和vscode中一样快呢?

从 27 开始, emacs 有 json 的原生实现了

我现在用的就是27,也是卡得不要不要的

暂时弃坑emacs,我转投vscode了。

应该是cquery的锅,每次触发补全时,cquery的cpu都会高上那么一会儿

不知道是什么问题。但是cquery的确会让CPU占用率飙升。

而且打开的时间长了,eldoc和xref都会出问题。感觉光标的位置捕捉错误。只能重新打开emacs。

你們如果只想要補全,在乎延遲,不關心服務端fuzzy matching,請用基於libclang的 irony-mode

如果ycmd的:GoTo (單translation unit的find definition)的cross references就能滿足,不需要references,用 clangd

如果想要references,或者對clangd的記憶體佔用不滿意(clangd記憶體非常浪費),可以考慮ccls

但是在Windows、或者難以安裝GCC>7的Linux,不想要折騰編譯工具鏈的話,推薦cquery

今天給ccls實現了一個神器,index.multiVersion Home · MaskRay/ccls Wiki · GitHub 可以檢索一個檔案多次,即使有#ifdef保護,如果被索引兩次,也能把所有信息取出來。

3 个赞

今天在win10下,用neovim结合cquery搭建了个简单的,补全速度非常非常快,秒补全,看来速度慢也有可能是emacs的锅呀

看来是emacs的lsp客户端的问题.