可不可以不使用项目根目录的概念呢?
当ccls直接打开当前或上层目录没有配置文件的代码时,ccls不索引。
当ccls直接打开当前或上层目录有配置文件的代码时,遵从最近的配置文件,缓存到所选配置文件所在的目录。
当ccls通过include打开代码时,无论是第一种情况还是第二种情况,ccls沿用原来的配置,缓存到原来的目录。
可不可以不使用项目根目录的概念呢?
当ccls直接打开当前或上层目录没有配置文件的代码时,ccls不索引。
当ccls直接打开当前或上层目录有配置文件的代码时,遵从最近的配置文件,缓存到所选配置文件所在的目录。
当ccls通过include打开代码时,无论是第一种情况还是第二种情况,ccls沿用原来的配置,缓存到原来的目录。
想问一下索引生成是否和这个设置有关,如果是已经存在的项目,怎么主动建立索引
這個就像<a href=xxx />
,但是難以知道Referer:
是什麼。lsp-ui-peek--goto-xref
用了hack,如果目標檔案沒有workspace,那麼繼承原檔案的workspace
@lemon0910 打開檔案後lsp-mode會啓動和major mode關聯的language server,自動在後臺索引。
提个问题 company-lsp 如何设置输入3个字符在开始补全 默认貌似一个字符就补全。custom-group 里没有找到
试试:
(company-minimum-prefix-length 3)
解决了 感谢
搞了半天都没什么反应,都不知道我错在哪里, 关键是不知道服务端有没有正常运行,怎么知道后端是否正常运行? 我系统是ubuntu 18.04 试了clangd作c++后端,感觉没反应,好像还是我的ggtags在起作用
我也有这个问题,想问一下后面您是怎么解决的呢?
不知道有没有人用过CMT MAKE,这套工具该怎么使用ccls呢?
还是company-tabnine牛逼,并且配置简单,如果你不用预览版的话也可以满足日常需要了 不过预览版还真是逆天了:slight_smile:
你还可以使用语法补全使得补全更为精准
在配置文件里限定后端,比如.cpp可以限定cquery或ccls
这个config_dir一般是在哪个目录
我的好像是是.config/TabNine下
~/.config/TabNine
好的,我试一下
这玩意要收费的呀
对我来说C++ LSP主要有两个问题:
一个是在header里修改了东西以后,include这个header的cpp里不能自动pick up这个改变,还是给我标错误,需要手工revert buffer一下才会好。这个是100%可以重现的。
另一个是在修改代码时经常会发生lsp似乎parse了不完整的代码行,也就是说代码本身是正确的,但是lsp可能没有正确的检测到修改的范围,所以incremental parse失败了,给我把没问题的代码标成错误的。也需要手工revert buffer一下才会好。这个不知道如何重现,但是经常发生。
@MaskRay 你觉得这些是lsp-mode的问题还是ccls的问题?
Refactor WorkingFiles and CompletionManager · MaskRay/ccls@ab48663 · GitHub 是記錄在 https://github.com/MaskRay/ccls/releases/tag/0.20181225.9 的改進。
In DiagnosticMain, if an included file was modified, cancel the DiagTask and create a PreambleTask instead. The task sets
from_diag
so as to trigger immediate DiagTask after the preamble is built.
你可以嘗試在 a.cc
裏寫#include "a.h"\nint foo() { return bar(); }
一開始a.h
是空的,a.cc
有diagnostic。往a.h
加int bar();
,再回到a.cc
,就看到diagnostic消失了。
如果滯留的話,可能是flycheck長期以來的問題
另一个是在修改代码时经常会发生lsp似乎parse了不完整的代码行,也就是说代码本身是正确的,但是lsp可能没有正确的检测到修改的范围,所以incremental parse失败了,给我把没问题的代码标成错误的。也需要手工revert buffer一下才会好。这个不知道如何重现,但是经常发生。
編輯太快導致的問題?這個我也覺得ccls是無辜的……
可能是aggressive-indent
的问题,代码修改太快幅度太大 (菜鸡RLS甚至会当场crash)
aggressive-indent-mode有人報告過問題……我不用它,也不知道怎麼修…… Aggressive-indent-mode incompatibility · Issue #30 · emacs-lsp/emacs-ccls · GitHub
我也觉得像是编辑太快导致eglot/lsp-mode没跟上(这两个都有同样的问题),但是不知道怎么能重现