Releases: MaskRay/ccls
Release list
Christmas
workspace/didChangeWatchedFilesworks (tested on VSCode and coc.nvim) and file deletion will remove index symbols.cclsenhancement #171 added new directives%compile_commands.json%h%hpp%objective-c%objective-cpp-v=1dumps command line options of files for parsing- fuzzy_match: when the completion filter begins with a letter, builtin macros prefixed with an underscore will not be returned
- Support
textDocument/declarationandLocationLink[]return types. - Properly handle
"exit"#159 - Support
signatureHelp.signatureInformationparameterInformation.labelOffsetSupportcf. microsoft/language-server-protocol#640 - codeAction: fixed an incompatibility issue with VSCode
Completion
- More precise diagnostics/completion: an included file that has been changed does not need to be saved to take effect.
- Decreased
Content-Length:from 32K to 25K for some cases - On clang < 8, fixed
#include <completion for-I dir - Macros are categorized as
Text, instead ofInterface - Refactor and rename (
clang_complete.cc->sema_manager.cc) - C++17 deduction guide #173
Others
- Support multiple
-init=: "initializationOptions" from client are applied first, then-init=. Scalar options will be overridden while arrays will get concatenated
Patch versions
- 0.20181225.2 #182
textDocument/codeActionused incorrect range intersection - 0.20181225.3 #187 the new feature
%h %hppdidn't take effect - 0.20181225.4 #197 keys in
file->symbol2refcntcould be modified inmessage_handler.cc. Affected old releases. Tagged 0.20181010.1 0.20181024.1 0.20181111.2 0.20181225.4, respectively. - 0.20181225.6 make
project.cc:GetSearchDirsrecognizeclang.extraArgs; on Windows, normalize the drive letter used ing_config->cacheDirectory - 0.20181225.7 make
workspace/didChangeWatchedFilesconservative #184 (comment) - 0.20181225.8 bugfix: when neither
.cclsnorcompile_commands.jsonis specified,textDocument/didSavedid not trigger re-index. The fix for the old issue (a plethora of "not indexed" errors) didn't take effect - 0.20181225.9 #316 bugfix:
indexer.ccshouldn't usestd::shared_lockto guardroot2folderbeing concurrently written.
1111
-
Switched to Clang's native
#includecompletion if clang >= 8.include_completion.ccis kept for clang<8 -
Refactored message handlers, deleted related static constructors and removed many
lsprefixes from class/struct names. -
textDocument/referencesandworkspace/symbolget a new parametervector<string> folders;to return results confined in specified folders. -
hierarchical
textDocument/documentSymbollists member functions without definitions. -
Fixed
EnumConstantDecl's kind &EnumDecl's vars.$ccls/memberon scoped enumerations lists its enumeration constants. -
Fixed/worked around some preamble bugs
-
Fixed MSVC 2017 compatibility issues
-
tobik added a FreeBSD port
Success stories with ClickHouse, Linux, and v8
1024
Requests
textDocument/documentLink#includeare represented as hyperlinks in vscodetextDocument/foldingRange$ccls/setSkippedRanges->$ccls/publishSkippedRanges$ccls/publishSemanticHighlighting->$ccls/publishSemanticHighlight- Uniquify
textDocument/typeDefinitionresult
Message handling has been refactored.
Others
- Support
*.cuCUDA files -DSYSTEM_CLANG=off(default) downloads Clang 7.0.0 prebuilt archives from <releases.llvm.org> now (6.0.1 before)- Add ExtentRef; merge symbol2refcnt and outline2refcnt
- New command line option.
ccls -index ~/llvm=> index~/llvmwithout starting the language server
1010
New methods
textDocument/{formatting,onTypeFormatting,rangeFormatting}formatting/rangeFormatting can be used as replacement of the command line utilityclang-format$ccls/info: server status
Completion
- With clang>=7, completion items can replace
.with->or replace->with.The client-side support ofadditionalTextEditsis required. - preamble stat cache
- Some undesired candidates are blacklisted (e.g. destructors, injected class names)
Others
- Fixed hierarchical document symbol
- Redesigned index:
SymbolRef, Ref, Use, DeclRef. Decreased memory usage. - Fixed some issues applying
$ccls/memberon namespaces. anonymous namespaces/extern "C" are skipped, etc - Experimental workspace folders
- Increased stack size
- Revamped codeLens & codeAction
0x100
Lots of improvement
Hierarchies have been renamed to:
$ccls/call $ccls/member $ccls/inheritance
and are available for flattened view (read custom cross references sections on wiki/LanguageClient-neovim and wiki/Emacs)
Completion and diagnostics have been refactored from libclang to Clang C++.
New $ccls/navigate for semantic navigation
- https://www.reddit.com/r/emacs/comments/9dg13i/cclsnavigate_semantic_navigation_for_cc/
- https://www.reddit.com/r/vim/comments/9dg60x/cclsnavigate_semantic_navigation_for_cc/
Experimental index.onChange: true, index.multiVersion: true and cacheDirectory: ""
https://github.com/MaskRay/ccls/wiki/Initialization-options
DEFCON 26 CTF
Real World CTF
Nothing makes me feel more heartbroken: you solved ccls-fringe and left, with the # of its stargazers unchanged.
Maker Faire
0.20180521.1 filesystem.cc: deduplicate with UniqueID
Congratulations to Tea Deliverers
emacs-ccls is available at https://melpa.org/#/ccls
Arch Linux users may install aur/ccls-git archlinuxcn/ccls-git
20190823
This release supports Clang 7~10.
LSP conformance
- Support
nullasinitializationOptions - Set
declarationProviderin server capabilities. Some client may need this capability to enabletextDocument/declaration - Support non-numeric request ID #437
Misc
- Fix a double-free of llvm::MemoryBuffer when parsing fails #350
- Keep comments from system headers and improve
textDocument/hover#373 - Fix the conformance issue that
VersionedTextDocumentIdentifier.versionwas omitted. If one renames something spanning more than one document and some documents are not opened, the client may not apply thetextDocument/renamechange. #387 - Some macro diagnostics were lost because Note::concerned was not propagated to Diag::concerned #391
index.onChange: truesupport non-existent files #443textDocument/definition: don't jump to the type definition- Disable warnings and skip processed function bodies. This should provide massive performance improvement when indexing a project. I measured 2x improvement indexing ccls with 2 threads, more than 2x indexing llvm/clang/extra/lld/compiler-rt with 6 threads.
Project
- Fix some issues with hierarchical
.cclsin #384 .ccls: support CUDA files with the%cudirectivecompilationDatabaseDirectorycan be absolute. #466- Improve heuristics for files not described by
compile_commands.json"... but not so well for projects with separate include and source directories, e.g. "inc/long/path/to/my_file.h" and "src/long/path/to/my_file.cc" #441
Windows
- A Visual Studio 2017 STL bug prevented clang-cl from compiling ccls/src/utils.hh #371 #414
- If the file is re-saved before the previous indexing has complete, various ambiguous errors might occur. Fixing this by making opened files volatile #235 #453
Extension requests
$ccls/fileInfo: can optionally dump dependencies, includes and skipped_ranges
Patches
- 0.20190823.3 incorrect use of
clang::FileEntry::getNameon Arch Linux #487

