Ccls Versions Save

C/C++/ObjC language server supporting cross references, hierarchies, completion and semantic highlighting

0.20240202

3 weeks ago

0.20230717

3 weeks ago

0.20220729

1 year ago

0.20210330

3 years ago

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

0.20201219

3 years ago

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

0.20190823.6

4 years ago

This release supports Clang 7~10.

LSP conformance

  • Support null as initializationOptions
  • Set declarationProvider in server capabilities. Some client may need this capability to enable textDocument/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.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. #387
  • Some macro diagnostics were lost because Note::concerned was not propagated to Diag::concerned #391
  • index.onChange: true support non-existent files #443
  • textDocument/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 .ccls in #384
  • .ccls: support CUDA files with the %cu directive
  • compilationDatabaseDirectory can 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::getName on Arch Linux #487

0.20190314.4

4 years ago

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

0.20180913.1

4 years ago

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

Experimental index.onChange: true, index.multiVersion: true and cacheDirectory: "" https://github.com/MaskRay/ccls/wiki/Initialization-options

0.20180521.1

4 years ago

0.20181024.2

5 years ago

Requests

  • textDocument/documentLink #include are represented as hyperlinks in vscode
  • textDocument/foldingRange
  • $ccls/setSkippedRanges -> $ccls/publishSkippedRanges
  • $ccls/publishSemanticHighlighting -> $ccls/publishSemanticHighlight
  • Uniquify textDocument/typeDefinition result

Message handling has been refactored.

Others

  • Support *.cu CUDA 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 ~/llvm without starting the language server