Kommentare
加了一些initialization options,參見ofollow,noindex">https://github.com/MaskRay/ccls/tree/master/src/config.h 。
-
cacheDirectory: ""
預設值為.ccls-cache
,索引時會在專案目錄下建立.ccls-cache
目錄放置cache檔案,再次開啟時無需重新索引。現在這個選項可以指定為空字串,使索引檔案放在記憶體中。
這個索引不要和ccls另外的全域性索引混淆了。全域性索引始終在記憶體中。開啟專案讀入索引檔案時,會把索引檔案合併到全域性索引。當一個文件修改時,需要把全域性索引中資料改文件的部分刪除,插入新的,因此每個文件留有一份記錄。
-
clang.excludeArgs: ["-fopenmp"]
可以用於排除僅GCC支援的選項、讓clang產生不想要的diagnostics的選項、產生索引問題的選項等。
-
diagnostics.onChange
diagnostics.onSave
預設diagnostics.onChange: true
,diagnostics.onSave
和diagnostics.onSave
為false,代表文件編輯時觸發diagnostics,儲存時則不會。 編輯時會用clang反覆parse,如果擔心效能問題,可以設定diagnostics.onChange: false
。
-
index.onChange: true
預設為false,設定為true可以即時索引,注意把cacheDirectory
設為空字串防止反覆讀寫檔案。
{ "cacheDirectory": "", "index": {"onChange": true} }
-
$ccls/navigate
可以用於namespace
了
之前無法知道namespace foo {}
中}
的位置,現在非definition的declaration表示為:
struct Reference { Range range; Usr usr; SymbolKind kind; Role role; }; struct Use : Reference { int file_id = -1; }; struct DeclRef : Use { Range extent; // 能表示namespace foo {}整個範圍 };
參見wiki中Emacs和LanguageClient-neovim頁面介紹。
另外之前textDocument/hover
作用在namespace foo
上不顯示名字,現在顯示了。
- indexer改進
conversion functionoperator int
的整個作為spelling range,之前只有operator
部分是。textDocument/documentHighlight
顯示不好看。
destructor~foo
整體作為spelling range了,之前只有~
部分。
C中常用的typedef struct {} foo;
寫法,原來anonymous struct沒有名字,現在表示為anon struct foo
(name for linkage purposes)。
indexer也能複用completion和diagnostics的preamble,加速索引。
修復了一個out-of-bands修改原始檔,載入索引檔案可能導致初始錯誤引用計數symbol2refcnt
修改的bug。pipeline的multiversion concurrency control真的超級粗糙,需要人來研究下……