Skip to content

Releases: MaskRay/ccls

0.20241108

09 Nov 05:01
Compare
Choose a tag to compare
  • didOpen: sort index requests. When you open A/B/foo.cc, files under "A/B/" and "A/" will be prioritized during the initial indexing process, leading to a quicker response time.
  • Support for older these LLVM versions 7, 8, and 9 has been dropped.
  • LSP semantic tokens are now supported. See usage guide 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

30 Sep 04:56
Compare
Choose a tag to compare

For LLVM 19.1

0.20240202

19 Apr 20:12
Compare
Choose a tag to compare
Adapt llvm/llvm-project#74910: FileEntry::getName

Based on a patch by @zsrkmyn

0.20230717

19 Apr 20:12
Compare
Choose a tag to compare
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

29 Jul 18:10
Compare
Choose a tag to compare
Adapt llvmorg-15-init-7692-gd79ad2f1dbc2: PPCallbacks::InclusionDirec…

0.20210330

06 Apr 17:03
Compare
Choose a tag to compare

Fix short_name_size when getNameAsString does not return a prefix (#784)

20201219

25 Oct 22:27
Compare
Choose a tag to compare

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 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 #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

22 Apr 06:48
Compare
Choose a tag to compare

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 to cache.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@[email protected] #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 and ParmVarDecl 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 displays struct D : B {}. It may display a forward declaration struct 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

25 Dec 06:27
Compare
Choose a tag to compare
  • 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 and LocationLink[] 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 of Interface
  • 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 in message_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 recognize clang.extraArgs ; on Windows, normalize the drive letter used in g_config->cacheDirectory
  • 0.20181225.7 make workspace/didChangeWatchedFiles conservative #184 (comment)
  • 0.20181225.8 bugfix: when neither .ccls nor compile_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 use std::shared_lock to guard root2folder being concurrently written.

1111

12 Nov 02:45
Compare
Choose a tag to compare
  • 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 and workspace/symbol get a new parameter vector<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