Sorry, 可能之前描述问题不如 @yclin 清晰, 最近在恶补emacs的一些知识, 顺便看看cquery的源码, 希望以后能有所帮助.
cquery崩溃后, 是否有不重启emacs就使cquery重新运行的方法?).
M-x projectile-kill-buffers
,重新打开一个文件
有時候正常退出lsp--workspaces
沒有remhash
,需要(setq lsp--workspaces (make-hash-table :test #'equal)
我碰到這個情況了
- 使用 compile_commands.json 和 .cquery 有什么区别?
- 用什么工具生成 .cquery,还是只能手打+脑补?
- cquery 可以直接生成 .cquery_cached_index 而不启动编辑器吗?
使用 compile_commands.json 和 .cquery 有什么区别?
https://github.com/cquery-project/cquery/wiki/Getting-started#project-setup
推薦compile_commands.json
,如果難以生成則.cquery
用什么工具生成 .cquery,还是只能手打+脑补?
手打。
cquery 可以直接生成 .cquery_cached_index 而不启动编辑器吗?
需要一個language client,現在無已知好用的cli tool
遇到了个新问题…
我git pull
了cquery
之后, 发现已经使用了clang6.0
, 在执行
git submodule update --init && ./waf configure build --variant=debug
之后, 正常编译通过. (我的电脑本身没有装clang)
Setting top to : /home/allen/tools/cquery
Setting out to : /home/allen/tools/cquery/build
Checking for 'clang++' (C++ compiler) : not found
Checking for 'g++' (C++ compiler) : /usr/bin/g++
Checking for header stdio.h : yes
Checking for clang
Found extracted at build/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04
Checking for library clang : yes
Clang includes : ['/home/allen/tools/cquery/build/debug/lib/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04/include']
Clang library dir : ['/home/allen/tools/cquery/build/debug/lib/clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04/lib']
但是运行的时候, 却报告找不到clang5:
allen@Allen-PC:~/tools/cquery/build/release/bin$ ./cquery
./cquery: error while loading shared libraries: libclang.so.5: cannot open shared object file: No such file or directory
我不太确定时哪里连接的这个库…
ldd build/debug/bin/cquery
应该显示................clang+llvm-6.0.0-x86_64-linux-gnu-ubuntu-14.04/lib/libclang.so.6
哦, debug的版本build出来的路径不在release下了, 这个是我没仔细看编译结果的问题…
cquery 对所有派生自 c 的 mode 都有影响,比如 php-mode。当打开 .php 文件的时候,c-mode-hook 首先触发,然后启动 cquery,结果导致 php language server 反而没有启动。我目前的解决方案是:
(defun my/lsp-cquery-enable ()
(when (member major-mode '(c-mode cc-mode c++-mode objc-mode))
(set (make-variable-buffer-local 'company-backends) '(company-lsp))
(lsp-cquery-enable)))
(add-hook 'c-mode-hook #'my/lsp-cquery-enable)
是不是可以考虑像 irony 一样,增加一个 -supported-major-modes
,避免跟派生 mode 冲突:
你去发个PR吧。反正我不能merge了,也不想多碰这个项目了
你不是单干ccls了吗,怎么还鼓捣cquery
3月20+還對clangd抱有幻想,4月1日對cquery徹底失望,但又覺得xref還得靠自己,後來才弄的ccls
支持windows不,cquery补全有点慢啊。为什么qtcreator补全那么快,都是用的libclang,
file mode specificat ion erro (user-error could not find ccls project root) ccls 启动不了
重新编译的, 不能找到root 目录 然后连ccls服务也没有启动,按着 你的wiki 设置的
lsp-ccls-enable
調用ccls--get-root
查找項目根目錄。呼叫了(projectile-project-root)
,請確保這個正常返回
新建了一个 .projectile 文件正常了,你把默认的.ccls文件匹配改成了projectile了吗 ,看源码好像是
或者用.ccls-root
。.ccls
每個子目錄都可以用,影響期中的檔案。因此我不想讓.ccls
決定根目錄。
有些人專案的build directory放在同一級,有些build directory放在專案內(我用這一種)
llvm
release
include
llvm
Config
config.h
compile_commands.json
debug
compile_commands.json
如果把compile_commands.json
作爲根標記,config.h
的根就會標錯到llvm/release
了。因此與其設置多個規則,我就簡單地用projectile和.ccls-root
。這樣的壞處是:你下載一些archive比如musl-1.1.19.tar.gz
,解壓,如果裏面沒有.git
等projectile識別的標誌,就認不出根。
喔喔,我当时用json试的时候确实没有.git。