fork了cquery => ccls emacs-ccls

另外,当文件有L"中文"这样的字符串的时候,text highlight的位置不太正常。

还是就是貌似和cqeury一样,当server启动好久之后,buffer里的操作就变得有点卡了。

安装 libstdc++-7-dev 之后编译通过。

我在~/bin/ccls放了一個wrapper,指向編譯好的executable

#!/bin/sh
exec ~/Dev/Util/ccls/release/ccls "$@" --log-file=/tmp/cc.log

ccls-executable保持預設值ccls不動

/tmp/cc.log能看到日誌,裏面有沒有對該xxx.hpp有更詳細描述?

借问一下, 现在ccls和cquery具体有什么差异了? 最近cquery用起来感觉有点不太好了, 比如已知的头文件补全问题, 以及语法解析有点慢等. 切换的话, 想先了解一下…

ccls 最新版本打个 tag 吧。

https://github.com/MaskRay/ccls/releases/tag/0.20180521 cmake加了zlib,改善了列目錄,沒太大區別

另,aur/ccls-git archlinuxcn/ccls-git用的clang 6.0.0-1 (-DSYSTEM_CLANG=on)已知是壞的,等6.0.1再看看有沒有好轉。差別我列了一個表格https://github.com/MaskRay/ccls/blob/master/README.md

cquery爲什麼最近不太好了。我知道他們加了compiler.h compiler.cc檢測編譯器種類……在clang -v -xc++檢測系統include path的道路上越走越遠。這些改動我很不喜歡,但客觀地說我不覺得會造成使用問題。

系統include path補全,如果用.ccls的話可以

  • print '%clang\n%cpp -std=gnu++14\n-isystem/usr/include' > .ccls
  • (setq ccls-extra-init-params '(:clang (:extraArgs ["-isystem", "/usr/include"])))

cquery的问题我最近用起来主要的就是这几个:

  1. 头文件补全不支持模糊匹配, 甚至连大小写都要严格相同.
  2. 我现在的工程还没有划分路径, 所以还不太确定不同路径下的头文件能不能补全出来, 以前是不可以的.
  3. 语法分析效率感觉比以前低很多, 做一个改动有时要隔很久才能翻转flycheck的错误. 补全有时也要隔很久才能跳出conditions. 当然我也不太确实这是不是我自己配置的锅…

对,这个功能一点用没有。写个launcher脚本都比它智能。

我刚写了个 $ccls/includes 用来抓所有的includes,然而 lsp--send-request 一直返回nil , lsp--send-notification 可以工作。不知道是不是什么地方有 content length 限制。

另:这个 } else if (params.command == "ccls._insertInclude") { 是打算实现一样的功能吗?

只是我當時批量替換的。這個功能應該交給clang-include-fixer,或者未來集大成的clangd。

游标停在函数上eldoc总是不显示提示 , 现在开着ccls 还要开 irony-eldoc

另外我用 ccls-file-info 找到include path 添加到 company-c-header 写个函数 ,不知道怎么 在ccls startup 完成后自动执行,现在都是手动运行,在mode hook 里运行会出错

原来如此。最近ccls在clickhouse的表现突然变好了,大部分源文件都能很精确的跳转以及错误提示。然而头文件依然不行,跳转随缘,零错误提示。

因爲你的eldoc-documentation-function不是lsp-ui-doc--eldoc,或是lsp-mode的eldoc。否則不應該顯示不出來。我好奇irony會多什麼功能。

emacs-ccls只是個lsp-mode的adapter,lsp-mode初始化確實比較複雜的。我elisp水平也不高,沒深入鑽研。

lsp-ui 已经安装了符号跳转定义/引用 ,flycheck 都有提示,but 函数参数提示,大部分都没有,就是在 echo area 提示函数名参数,lsp的hover 悬停 提示,printf(format… ,arg1,arg2) 这样的 ,之前是有的并且是彩色的,但是不总有,后来就一直用的irony-eldoc 提示,而没有用 ccsl/cquery的这个功能

我今天给$ccls/memberHierarchy加了成员变量offset,之前并没有注意到这个API。 https://zhuanlan.zhihu.com/p/37433634

Diagnostics

M-x lsp-capabilities LSP workspace is initialized correctly
M-: xref-backend-functions is (lsp--xref-backend) for cross references
M-: completion-at-point-functions is (lsp-completion-at-point) for completion

多半是lsp-mode/lsp-ui的eldoc-documentation-function被哪个插件覆盖掉了