Skip to content

Releases: MaskRay/ccls

Christmas

Choose a tag to compare

@MaskRay MaskRay released this 25 Dec 06:27
  • 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

Choose a tag to compare

@MaskRay MaskRay released this 12 Nov 02:45
  • 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

1024

Choose a tag to compare

@MaskRay MaskRay released this 09 Jan 07:36

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

1010

Choose a tag to compare

@MaskRay MaskRay released this 09 Jan 07:35

New methods

  • textDocument/{formatting,onTypeFormatting,rangeFormatting} formatting/rangeFormatting can be used as replacement of the command line utility clang-format
  • $ccls/info: server status

Completion

  • With clang>=7, completion items can replace . with -> or replace -> with . The client-side support of additionalTextEdits is 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/member on namespaces. anonymous namespaces/extern "C" are skipped, etc
  • Experimental workspace folders
  • Increased stack size
  • Revamped codeLens & codeAction

0x100

Choose a tag to compare

@MaskRay MaskRay released this 25 Oct 02:29

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

DEFCON 26 CTF

Choose a tag to compare

@MaskRay MaskRay released this 13 Aug 02:23

Real World CTF

Choose a tag to compare

@MaskRay MaskRay released this 01 Aug 04:09

Nothing makes me feel more heartbroken: you solved ccls-fringe and left, with the # of its stargazers unchanged.

Maker Faire

Choose a tag to compare

@MaskRay MaskRay released this 25 Oct 02:27
0.20180521.1

filesystem.cc: deduplicate with UniqueID

Congratulations to Tea Deliverers

Choose a tag to compare

@MaskRay MaskRay released this 14 May 02:13

emacs-ccls is available at https://melpa.org/#/ccls
Arch Linux users may install aur/ccls-git archlinuxcn/ccls-git

20190823

Choose a tag to compare

@MaskRay MaskRay released this 22 Apr 15:47

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