Fangrui Song
836caba19b
ParameterInformation: use label: [number, number]
...
Don't bother checking signatureHelp.signatureInformationparameterInformation.labelOffsetSupport
2019-11-09 20:09:13 -08:00
Fangrui Song
49ae9e8912
Support textDocument/declaration & LocationLink
...
textDocument/{declaration,definition,typeDefinition} return either LocationLink[] or Location[]
Add an initialization option client.linkSupport . When it is false, ccls will return Location[] disregarding client's linkSupport.
`struct LocationLink` does not include originSelectionRange as it is wasteful.
2019-11-09 20:09:13 -08:00
Fangrui Song
e3133bea90
cmake_minimum_required 3.8; clean up
2019-11-09 20:09:13 -08:00
Fangrui Song
20e0beb9f3
Rendezvous after receiving "exit" notification ( #159 )
2019-11-09 20:09:13 -08:00
Fangrui Song
c06c2ca324
Support multiple -init=
...
Initialization options are applied (deserialized to the same object) in the following order:
* "initializationOptions" from client
* first -init=
* second -init=
* ...
Scalar options will be overridden but arrays will get concatenated, e.g.
ccls -log-file=/dev/stderr -index . -init='{"clang":{"extraArgs":["-DA"]}}' -init='{"clang":{"extraArgs":["-DB"]}}'
results in clang.extraArgs: ["-DA", "-DB"]
2019-11-09 20:09:13 -08:00
Leszek Swirski
25c8928121
Spin IncludeComplete's destructor until scanning completes ( #147 )
2019-11-09 20:09:13 -08:00
Fangrui Song
c941ca1bcd
query: fix UpdateUses when a new entity is seen; simplify {DeclRef,Use,Usr}Update
...
Thanks to Leszek Swirski
2019-11-09 20:09:13 -08:00
Fangrui Song
a47fb42e30
Refactor serializer
...
Delete virtual bases Reader & Writer
Delete unused MAKE_REFLECT_STRUCT_WRITER_AS_ARRAY
Merge serializers/{json,binary}.hh into serializer.{hh,cc}
MAKE_REFLECT_STRUCT => REFLECT_STRUCT
MAKE_REFLECT_TYPE_PROXY => REFLECT_UNDERLYING
2019-11-09 20:09:13 -08:00
Fangrui Song
a599aef482
Add ReplyOnce::NotReady and error if didOpen is not seen
...
Use IgnoringDiagConsumer to override default TextDiagnosticPrinter
2019-11-09 20:09:13 -08:00
Fangrui Song
9ad2450009
Refactor WorkingFiles and CompletionManager
...
* WorkingFiles::files : vector -> unordered_map
* Add timestamp to WorkingFile
* Rename "comp-preload" thread to "preamble"
* Rename CompletionManager to SemaManager as it is used by "diag" "comp" "preamble"
* Rename clang_complete.* to sema_manager.*
* Merge SemaManager::{preloads,sessions}
* Add initialization option session.maxNum
* In DiagnosticMain, if an included file was modified, cancel the DiagTask and create a PreambleTask instead. The task sets `from_diag` so as to trigger immediate DiagTask after the preamble is built.
2019-11-09 20:09:13 -08:00
Fangrui Song
b9369e055a
completion: use Text for Macro{Instantiation,Definition}
2019-11-09 20:09:13 -08:00
Fangrui Song
c6c234725a
Fix ComputeGuessScore and delete dead code
...
Thanks to CXuesong
2019-11-09 20:09:13 -08:00
Fangrui Song
65d856cf8a
Merge maybe.hh into utils.hh
2019-11-09 20:09:13 -08:00
Fangrui Song
880c515d64
Merge query.hh and query_util.hh
2019-11-09 20:09:13 -08:00
Fangrui Song
d6dd932e6d
Refactor Matcher to use pimpl and merge match.hh into utils.hh
2019-11-09 20:09:13 -08:00
Fangrui Song
38e87a0729
Make EmptyParam empty & rewrite LruCache
2019-11-09 20:09:13 -08:00
Fangrui Song
9603a73421
constexpr std::string_view -> const std::string_view
...
This works around gcc 7.2/clang rC347417 which have a bad interaction with libstdc++'s implementation of P0426
constexpr std::string_view also emits a string_view object in .rodata that cannot be optimized out by clang (which means larger object file size)
So use good old const.
2019-11-09 20:09:13 -08:00
Fangrui Song
7f8f68c0b2
codeAction: use codeActionProvider: CodeActionOptions and respect CodeActionParams::range
2019-11-09 20:09:13 -08:00
Fangrui Song
19d38bc1d2
Make DocumentLink::range narrower
...
Thanks to Riatre #135
2019-11-09 20:09:13 -08:00
Fangrui Song
0f0c328a91
completion: delete insertText; don't set filterText if it is the same as label
...
It decreases Content-Length: from 32K to 25K for the following case:
#include <bits/stdc++.h>
int main() { std::| }
Also
* make results deterministic when completion text is empty
* sort by newText, label, filterText
2019-11-09 20:09:13 -08:00
Fangrui Song
98be09cc2e
serializer: make visitor/vis value/v consistent
2019-11-09 20:09:13 -08:00
Fangrui Song
741d8f2130
Refactor ReplyOnce; error if InitializeParams.rootUri is null
2019-11-09 20:09:13 -08:00
Fangrui Song
8f442c6c35
indexer: handle DecltypeType and empty main file; diag: -Wno-unused-function for headers
...
Don't replace name with qualified name in Cls::*name
2019-11-09 20:09:13 -08:00
Fangrui Song
e27a5eaff9
.ccls: add %objective-c %objective-cpp
...
Also allow multiple directives on a line, e.g. %c %cpp -DFOO
2019-11-09 20:09:13 -08:00
Fangrui Song
46d3f075dc
Use clang::isIdentifierBody and clean up utils/working_files
2019-11-09 20:09:13 -08:00
Fangrui Song
95bba3ed15
hierarchicalDocumentSymbol: support SymbolKind::Function declaration and uniquify by range
...
Also ensure selectionRange is a subrange of range, otherwise VSCode won't show the item.
Use detailed_name for 'detail'
2019-11-09 20:09:13 -08:00
Fangrui Song
985f5ec4d3
Use SM.isWrittenInMainFile; suppress -Werror in preamble
...
SM.isWrittenInMainFile is to work around preamble bug: spurious err_pp_unterminated_conditional with circular #include
2019-11-09 20:09:13 -08:00
Fangrui Song
d9a31a72bd
hierarchicalDocumentSymbol: display member function declarations
2019-11-09 20:09:13 -08:00
Fangrui Song
aaa5008ec6
Fix some MSVC 2017 errors
...
Thanks to Dso Tsin!
2019-11-09 20:09:13 -08:00
Fangrui Song
d398e071dc
If clang >= 8, delete search path detection and use Sema::CodeCompleteIncludedFile
2019-11-09 20:09:13 -08:00
Fangrui Song
444f0db1f2
Work around relative --sysroot=
2019-11-09 20:09:13 -08:00
Fangrui Song
02a6f39559
Improve semantic highlight in templates
2019-11-09 20:09:13 -08:00
Fangrui Song
09669fff76
Reduce MAKE_REFLECT_STRUCT in lsp.hh
...
Position -> Pos; lsPosition -> Position
2019-11-09 20:09:13 -08:00
Fangrui Song
0d4f4b68c0
Remove ls
prefix from many LSP interfaces
...
Rename SymbolKind to Kind & lsSymbolKind to SymbolKind
Use textDocumentSync: TextDocumentSyncOptions
2019-11-09 20:09:13 -08:00
Fangrui Song
9a6851c6a5
Misc
2019-11-09 20:09:13 -08:00
Fangrui Song
353b398a73
Simplify and work around vscode _sortTextLow
2019-11-09 20:09:13 -08:00
Fangrui Song
857f41c247
project.cc: deduplicate more cases
2019-11-09 20:09:13 -08:00
Fangrui Song
c598f3ebbd
Fix EnumConstantDecl's kind & EnumDecl's vars
2019-11-09 20:09:13 -08:00
Fangrui Song
c8e57ee7b3
textDocument/references workspace/symbol: add folders
...
For textDocument/reference, base/excludeRole/role has been lifted from params.context.* to params.*
2019-11-09 20:09:13 -08:00
Fangrui Song
c4bf9c5d6a
Report InvalidParams for serialization error
2019-11-09 20:09:13 -08:00
Fangrui Song
c1422c7a8d
Simplify and better compatibility with encodings retaining the feature of low bytes being 1-byte characters
2019-11-09 20:09:13 -08:00
Fangrui Song
bbce333042
*.h -> *.hh
2019-11-09 20:09:13 -08:00
Fangrui Song
3cd0ee2fc7
Refactor message handler and namespace ccls
2019-11-09 20:09:11 -08:00
Fangrui Song
8fa853c321
Implement textDocument/documentLink
2019-11-09 20:03:28 -08:00
Fangrui Song
617cdd89de
Implement textDocument/foldingRange
2019-11-09 20:03:28 -08:00
Fangrui Song
4f8889c195
Deprioritize completion items with additionTextEdits
2019-11-09 20:03:28 -08:00
Fangrui Song
dc20ea3b33
Fix textDocument/implementation
2019-11-09 20:03:28 -08:00
Fangrui Song
66bf514b5f
Add command line option -index=root to index without starting language server
2019-11-09 20:03:28 -08:00
Fangrui Song
a56b6fb228
Improve DeducedType
2019-11-09 20:03:28 -08:00
Fangrui Song
18b47d3f5c
Improve extent of definition/declaration; uniquify typeDefinition
2019-11-09 20:03:28 -08:00
Fangrui Song
46cfd5504a
Simplify
2019-11-09 20:03:28 -08:00
Fangrui Song
5fbe4eac83
Add ExtentRef; merge symbol2refcnt and outline2refcnt
...
Fix hierarchical document symbol for namespaces when there are multiple declarations.
2019-11-09 20:03:28 -08:00
Fangrui Song
bc4dc6720b
Add pipeline::{Notify,Reply,ReplyError} and simplify message handling
...
Delete method.{cc,h}
Rename $ccls/setSkippedRanges to $ccls/publishSkippedRanges
Rename $ccls/publishSemanticHighlighting to $ccls/publishSemanticHighlight; stableId -> id
2019-11-09 20:03:28 -08:00
Fangrui Song
4a1eea75db
Misc changes to project
...
* Better LanguageId detection with clangDriver (e.g. .cu -> types::TY_CUDA)
* fallback when there is no .ccls or compile_commands.json
Also Hide clangTooling options from --help
2019-11-09 20:03:28 -08:00
Fangrui Song
40b47f9ca3
Adapt trunk change and write comments to PCH
2019-11-09 20:03:28 -08:00
Riatre Foo
ec71d4c6c0
Fix hierarchical document symbol
...
1. Fixed a bug on building document symbol tree: As sym2ds was updated in
place, nested funcs/types may be moved into children of another
lsDocumentSymbol before itself got processed.
2. Namespaces only have declarations, in the old implementation it wasn't included in the result, making the result less hierarchical. This
commit fixes this by including the declarations of a symbol if no
definitions found.
2019-11-09 20:03:28 -08:00
Fangrui Song
82deedf8c3
Add namespace alias clang::vfs = llvm::vfs to adapt D52783
...
vfs::x should be written as llvm::vfs::x to work around a [namepace.udir] bug before GCC 8 when namespace alias is used
2019-11-09 20:03:28 -08:00
Fangrui Song
7b19c87485
Namespace: improve indexer and don't trace bases in $ccls/member
2019-11-09 20:03:28 -08:00
Riatre Foo
3de62168c8
Fix additionalTextEdits -> textEdit hack for VS Code ( #89 )
...
* Fix additionalTextEdits -> textEdit hack for VS Code
Visual Studio Code filters the completion result according to
textEdit.range and filterText, if the textEdit.range overlaps with
existing text, we have to include it in filterText, otherwise it would
be filtered out.
* Fix has_open_paren in FilterCandidates
2019-11-09 20:03:28 -08:00
Fangrui Song
49dd0ed558
Support workspace folders
2019-11-09 20:03:28 -08:00
Fangrui Song
e352604ee4
Improve completion
...
blacklist some undesired candidates
additionalTextEdits if clang>=7
Use CodePatterns for preprocessor directive completion if there is a #
Prefer textEdit over insertText
2019-11-09 20:03:28 -08:00
Fangrui Song
a920e71711
Clean and update tests after Index* refactoring
2019-11-09 20:03:28 -08:00
Fangrui Song
2864f2c647
Use DeclRef spell to represent Use spell + Use extent
2019-11-09 20:03:28 -08:00
Fangrui Song
08b09bc1da
Redesign SymbolRef, Ref, Use
...
Remove lsLocationEx
2019-11-09 20:03:28 -08:00
Fangrui Song
0c5c3a11be
Add completion.maxNum: 100
2019-11-09 20:03:28 -08:00
Fangrui Song
8b2565fcd0
For $ccls/member, use unadjusted RecordDecl (if there is forward declaration) and handle ClassTemplateSpecialization
2019-11-09 20:03:28 -08:00
Fangrui Song
2592dd41dd
Add PreambleStatCache
2019-11-09 20:03:28 -08:00
Fangrui Song
31314555bb
Use pthread if defined(__unix__) || defined(__APPLE__)
2019-11-09 20:03:28 -08:00
firstlove
9a79b2ece1
regard conversion as method instead of constructor
2019-11-09 20:03:28 -08:00
Fangrui Song
3337d3de8c
Add $ccls/info
2019-11-09 20:03:28 -08:00
Fangrui Song
3c332b91de
Clean
2019-11-09 20:03:28 -08:00
Fangrui Song
fa2234c894
Use non-inferred entries and build preamble for .h; index on didOpen if no pending requests; documentHighlight
2019-11-09 20:03:28 -08:00
Fangrui Song
083a629f90
Rename some initialization options
...
* Delete index.enabled which can be achieved with index.blacklist: ['.']
* Move completion.include* to completion.include.*
* move largeFileSize to highlight.largeFileSize
2019-11-09 20:03:28 -08:00
Fangrui Song
8d61b1aadb
Revamp codeLens & codeAction
...
b.ref: references of bases
d.ref: references of derived
when b.ref > 0, don't display 0 ref or x bases
2019-11-09 20:03:28 -08:00
Fangrui Song
153e5c0dcc
Construct SourceManager with UserFilesAreVolatile
...
Prettify pipeline
2019-11-09 20:03:28 -08:00
Fangrui Song
7eacd2664f
Support textDocument/{formatting,onTypeFormatting,rangeFormatting}
2019-11-09 20:03:26 -08:00
Fangrui Song
ae19826411
Merge textDocument_did{Change,Close,Open,Save}.cc
2019-11-09 20:01:34 -08:00
Amos Bird
93b5fa198c
Update threaded_queue.h ( #82 )
...
https://en.cppreference.com/w/cpp/language/fold
2019-11-09 19:58:32 -08:00
Fangrui Song
cff6c4714c
Simplify semantic highlighting; improve hover of auto &&
2019-11-09 19:58:32 -08:00
Fangrui Song
a3b982f5d7
Add index.trackDependency and improve pipeline
2019-11-09 19:58:32 -08:00
Fangrui Song
d9541c3222
Add index.initial{Blacklist,Whitelist}
...
index.{blacklist,whitelist}: disable indexes thoroughly
index.initial{Blacklist,Whitelist}: disable initial loading. will still be indexed after opening
2019-11-09 19:58:32 -08:00
Fangrui Song
d5f4f22508
Add GetAdjustedDecl to adjust Decl's that are missed by clangIndex
2019-11-09 19:58:32 -08:00
Fangrui Song
3334b2c4b7
Remove clang_utils.*
2019-11-09 19:58:32 -08:00
Fangrui Song
3dea9486b9
Misc
...
Move using below #include to make preamble happy
textDocument/references: if no references, first line or last line => list where this file is included
malloc_trim() only if files have been indexed in last cycle
Intern: use CachedHashStringRef
2019-11-09 19:58:32 -08:00
Riatre Foo
dc4f45b018
Allow force disabling snippet via client.snippetSupport
2019-11-09 19:58:32 -08:00
Fangrui Song
f82a436536
documentSymbol: ignore TypeParameter
...
Reported by Riatre
2019-11-09 19:58:32 -08:00
Riatre Foo
3abbca6474
Include macros in completion result
2019-11-09 19:58:32 -08:00
Fangrui Song
e24079366b
Add kind to $ccls/member and iterate all QueryType::def
...
kind:2 => member functions
kind:3 => nested classes / namespace members
2019-11-09 19:58:32 -08:00
Fangrui Song
daa6fbf4b8
Misc
2019-11-09 19:58:32 -08:00
Fangrui Song
4ea0dee1c9
Fix spurious "Failed to index" errors
2019-11-09 19:58:32 -08:00
Fangrui Song
bf698b85d4
Publish diagnostics of inferred files and change diagnostics.{onChange,onOpen,onSave} from bool to debounce time
2019-11-09 19:58:32 -08:00
Riatre Foo
a5b8def411
Remove chunks with CK_Information kind from insertText. ( #78 )
...
Without this ccls inserts "size() const" in the following scenario:
std::string text;
text.si| <-- Trigger completion here and pick "size"
2019-11-09 19:58:32 -08:00
Fangrui Song
f0400fdcf2
Delete file_consumer.*
2019-11-09 19:58:32 -08:00
Fangrui Song
28401961ae
Simplify semantic highlighting
2019-11-09 19:58:32 -08:00
Fangrui Song
d9f0de4719
Clean up FileConsumer and improve pipeline
2019-11-09 19:58:32 -08:00
Fangrui Song
110023483a
Improve VarDef::type for textDocument/typeDefinition
2019-11-09 19:58:32 -08:00
Fangrui Song
569a7624a6
intern args
2019-11-09 19:58:32 -08:00
Fangrui Song
97e773081b
intern strings in dependencies and IndexInclude::resolved_path
2019-11-09 19:58:32 -08:00
Fangrui Song
1249eb1eb0
Simplify pipeline and fix race
2019-11-09 19:58:32 -08:00
Fangrui Song
cffc8c8409
Add hierarchicalDocumentSymbolSupport
2019-11-09 19:58:32 -08:00