Releases: MaskRay/ccls
0.20241108
- didOpen: sort index requests. In a large repository, when you open A/foo.cc, files under A/ will be indexed first.
- Support for LLVM 7, 8, and 9 has been dropped.
- LSP semantic tokens are now supported. See https://maskray.me/blog/2024-10-20-ccls-and-lsp-semantic-tokens usage (including rainbow semantic highlighting)
- textDocument/switchSourceHeader (LSP extension) is now supported.
0.20240505
For LLVM 19.1
0.20240202
Adapt llvm/llvm-project#74910: FileEntry::getName Based on a patch by @zsrkmyn
0.20230717
Disable -include b.hh => -include b.hh.{gch,pch} transition See https://maskray.me/blog/2023-07-16-precompiled-headers for the behavior.
0.20220729
Adapt llvmorg-15-init-7692-gd79ad2f1dbc2: PPCallbacks::InclusionDirec…
0.20210330
Fix short_name_size when getNameAsString does not return a prefix (#784)
20201219
This release supports Clang 7~11.
LSP
- Support 3.15.0
serverInfo
- Report index status via
$/progress
(WorkDoneProgressBegin/WorkDoneProgressReport/WorkDoneProgressEnd)
Project
- Better recursive
.ccls
files
Misc
- New initialization option
completion.placeholder
: change client.snippetSupport: false to drop(
and<
#412 - Infer -target and --driver-mode from argv[0] #511
- Support CMake variable
CLANG_LINK_CLANG_DYLIB
(some distributions use this to providelibclang-cpp.so
instead oflibclang*.a
orlibclang*.so
. This option is needed to link againstlibclang-cpp.so
) textDocument/documentSymbol
: support unopened files #548- Disable PCH reading (the Clang library ccls links against may be different from the compiler. The compiler generated PCH files may cause ccls to error due to mismatching PCH versions)
- indexer: log the number of errors and the first diagnostic
- indexer: set the kind of static data members to Field instead of Var #593
- Support workspace as a symlink and symlinks with workspace #639
Pi Day
0.20190823.6 is newer than this one!
Building 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.
Customization
- New initialization option
index.maxInitializerLines
. Made some
ServerCapabilities
toggable. - Initialization option
cacheDirectory
was renamed tocache.directory
#278 - New initialization option
cache.hierarchicalPath
to work around NAME_MAX
limitation: store cache files as$directory/a/b/c.cc.blob
instead of
$directory/a@b@c.cc.blob
#278 - New initialization option
cache.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 #219- Initialization option `compilationDatabaseCommand** works on Windows #220
Completion
- Enable documentation for signatureHelp
- Workaround for VSCode completion result sorting #210
- Rebuild preamble if its size changes #190
Index
- Support some unhandled Decl::Kind
- Index
TemplateTypeParmDecl
andParmVarDecl
in declarations for clang >= 9 - Line numbers can be
0~65535
(was:0~32767
) - Support multi-byte UTF-8 characters #268
- Decreased memory usage: "Change containers of Query*::Def fields from std::vector to ccls::Vec"
- New initialization option
index.initialNoLinkage: false
: by default, the background indexer doesn't handle names of no linkage. This saves a lot of memory.
Others
- Make
textDocument/hover
more detailed: When hovering on a class, ccls tries hard to get the definition and displaysstruct D : B {}
. It may display a forward declarationstruct D
before. - Normalize end-of-line sequences #293
- Log {Request,Notification}Message, and timestamp change due to dependency
textDocument/rename
: mitigate edits in the same place and edits in macro replacement #296- Use DiagnosticRelatedInformation in clients that support it #276
- In
textDocument/documentSymbol
, override declaration's range/selectionRange with definition's #309 - Better support when the workspace folder is a symlink #314
Christmas
workspace/didChangeWatchedFiles
works (tested on VSCode and coc.nvim) and file deletion will remove index symbols.ccls
enhancement #171 added new directives%compile_commands.json
%h
%hpp
%objective-c
%objective-cpp
-v=1
dumps 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/declaration
andLocationLink[]
return types. - Properly handle
"exit"
#159 - Support
signatureHelp.signatureInformationparameterInformation.labelOffsetSupport
cf. 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/codeAction
used incorrect range intersection - 0.20181225.3 #187 the new feature
%h %hpp
didn't take effect - 0.20181225.4 #197 keys in
file->symbol2refcnt
could 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:GetSearchDirs
recognizeclang.extraArgs
; on Windows, normalize the drive letter used ing_config->cacheDirectory
- 0.20181225.7 make
workspace/didChangeWatchedFiles
conservative #184 (comment) - 0.20181225.8 bugfix: when neither
.ccls
norcompile_commands.json
is specified,textDocument/didSave
did 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.cc
shouldn't usestd::shared_lock
to guardroot2folder
being concurrently written.
1111
-
Switched to Clang's native
#include
completion if clang >= 8.include_completion.cc
is kept for clang<8 -
Refactored message handlers, deleted related static constructors and removed many
ls
prefixes from class/struct names. -
textDocument/references
andworkspace/symbol
get a new parametervector<string> folders;
to return results confined in specified folders. -
hierarchical
textDocument/documentSymbol
lists member functions without definitions. -
Fixed
EnumConstantDecl
's kind &EnumDecl
's vars.$ccls/member
on 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