C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting
Fix short_name_size when getNameAsString does not return a prefix (#784)
This release supports Clang 7~11.
serverInfo
$/progress
(WorkDoneProgressBegin/WorkDoneProgressReport/WorkDoneProgressEnd).ccls
filescompletion.placeholder
: change client.snippetSupport: false to drop (
and <
#412CLANG_LINK_CLANG_DYLIB
(some distributions use this to provide libclang-cpp.so
instead of libclang*.a
or libclang*.so
. This option is needed to link against libclang-cpp.so
)textDocument/documentSymbol
: support unopened files #548This release supports Clang 7~10.
null
as initializationOptions
declarationProvider
in server capabilities. Some client may need this capability to enable textDocument/declaration
textDocument/hover
#373VersionedTextDocumentIdentifier.version
was omitted. If one renames something spanning more than one document and some documents are not opened, the client may not apply the textDocument/rename
change. #387index.onChange: true
support non-existent files #443textDocument/definition
: don't jump to the type definition.ccls
in #384.ccls
: support CUDA files with the %cu
directivecompilationDatabaseDirectory
can be absolute. #466compile_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$ccls/fileInfo
: can optionally dump dependencies, includes and skipped_rangesclang::FileEntry::getName
on Arch Linux #487Building ccls requires at least clang 7. Support for Clang 6 was dropped. This release supports Clang 7, 8 and 9.
-DSYSTEM_CLANG=on
should not be used. clang/llvm auto-download mechanism was deleted.
-DUSE_SYSTEM_RAPIDJSON=on
is the default: use system rapidjson (instead of git submodule) if available.
-DLLVM_ENABLE_RTTI=
and -DUSE_SHARED_LLVM=
should not be used. Since #313, LLVMConfig.cmake
ClangConfig.cmake
are consulted to set sane values for the two variables.
index.maxInitializerLines
. Made some
ServerCapabilities
toggable.cacheDirectory
was renamed to cache.directory
#278cache.hierarchicalPath
to work around NAME_MAX
limitation: store cache files as $directory/a/b/c.cc.blob
instead of
$directory/a@[email protected]
#278cache.retainInMemory: 2
: change to 1 to avoid cache corruption if
the index file is changed after the initial load, which may happen if several
language clients open the same project and share the same cache directory #278-log-file=stderr
is the default #219TemplateTypeParmDecl
and ParmVarDecl
in declarations for clang >= 90~65535
(was: 0~32767
)index.initialNoLinkage: false
: by default, the background indexer doesn't handle names of no linkage. This saves a lot of memory.textDocument/hover
more detailed: When hovering on a class, ccls tries hard to get the definition and displays struct D : B {}
. It may display a forward declaration struct D
before.textDocument/rename
: mitigate edits in the same place and edits in macro replacement #296textDocument/documentSymbol
, override declaration's range/selectionRange with definition's #309Lots 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
Experimental index.onChange: true
, index.multiVersion: true
and cacheDirectory: ""
https://github.com/MaskRay/ccls/wiki/Initialization-options
textDocument/documentLink
#include
are represented as hyperlinks in vscodetextDocument/foldingRange
$ccls/setSkippedRanges
-> $ccls/publishSkippedRanges
$ccls/publishSemanticHighlighting
-> $ccls/publishSemanticHighlight
textDocument/typeDefinition
resultMessage handling has been refactored.
*.cu
CUDA files-DSYSTEM_CLANG=off
(default) downloads Clang 7.0.0 prebuilt archives from <releases.llvm.org> now (6.0.1 before)ccls -index ~/llvm
=> index ~/llvm
without starting the language server