Commit Graph

406 Commits

Author SHA1 Message Date
Fangrui Song
c724779627 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.
2018-12-28 12:35:33 -08:00
Fangrui Song
df095b60bd completion: use Text for Macro{Instantiation,Definition} 2018-12-28 12:35:33 -08:00
Fangrui Song
935117af76 Merge query.hh and query_util.hh 2018-12-28 12:35:33 -08:00
Fangrui Song
44075382a9 Refactor Matcher to use pimpl and merge match.hh into utils.hh 2018-12-28 12:35:33 -08:00
Fangrui Song
27201f72d5 codeAction: use codeActionProvider: CodeActionOptions and respect CodeActionParams::range 2018-12-28 12:35:32 -08:00
Fangrui Song
7d0f8989a0 Make DocumentLink::range narrower
Thanks to Riatre #135
2018-12-20 00:28:12 -08:00
Fangrui Song
544610c959 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
2018-12-20 00:28:12 -08:00
Fangrui Song
301b5c32ce serializer: make visitor/vis value/v consistent 2018-12-20 00:28:12 -08:00
Fangrui Song
05b30265e5 Refactor ReplyOnce; error if InitializeParams.rootUri is null 2018-12-20 00:28:12 -08:00
Fangrui Song
da31c7d608 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'
2018-12-20 00:27:34 -08:00
Fangrui Song
1ab10322ec hierarchicalDocumentSymbol: display member function declarations 2018-12-11 15:04:00 -08:00
Fangrui Song
f37ef4f48b If clang >= 8, delete search path detection and use Sema::CodeCompleteIncludedFile 2018-12-11 15:04:00 -08:00
Fangrui Song
adcf713e23 Work around relative --sysroot= 2018-12-11 15:04:00 -08:00
Fangrui Song
8f9e1c4ae4 Reduce MAKE_REFLECT_STRUCT in lsp.hh
Position -> Pos; lsPosition -> Position
2018-12-11 15:04:00 -08:00
Fangrui Song
8a68dfbf8f Remove ls prefix from many LSP interfaces
Rename SymbolKind to Kind & lsSymbolKind to SymbolKind
Use textDocumentSync: TextDocumentSyncOptions
2018-12-11 15:04:00 -08:00
Fangrui Song
6787f0129b Simplify and work around vscode _sortTextLow 2018-12-11 15:04:00 -08:00
Fangrui Song
c7c5abd40c textDocument/references workspace/symbol: add folders
For textDocument/reference, base/excludeRole/role has been lifted from params.context.* to params.*
2018-12-11 15:04:00 -08:00
Fangrui Song
93371b9b3b Simplify and better compatibility with encodings retaining the feature of low bytes being 1-byte characters 2018-12-11 15:04:00 -08:00
Fangrui Song
7817821959 *.h -> *.hh 2018-12-11 15:04:00 -08:00
Fangrui Song
77e1f354fd Refactor message handler and namespace ccls 2018-12-11 15:03:56 -08:00
Fangrui Song
323d2ec8bf Implement textDocument/documentLink 2018-10-24 20:14:53 -07:00
Fangrui Song
e2478c8083 Implement textDocument/foldingRange 2018-10-24 17:48:44 -07:00
Fangrui Song
9b8947f304 Deprioritize completion items with additionTextEdits 2018-10-24 17:48:44 -07:00
Fangrui Song
6fc35ab866 Fix textDocument/implementation 2018-10-24 17:48:42 -07:00
Fangrui Song
e101e4782d Add command line option -index=root to index without starting language server 2018-10-22 22:34:49 -07:00
Fangrui Song
5814fbb4e5 Improve extent of definition/declaration; uniquify typeDefinition 2018-10-19 10:14:51 -07:00
Fangrui Song
5f98d5b993 Simplify 2018-10-16 01:14:43 -07:00
Fangrui Song
f8a6f75ff5 Add ExtentRef; merge symbol2refcnt and outline2refcnt
Fix hierarchical document symbol for namespaces when there are multiple declarations.
2018-10-16 01:14:43 -07:00
Fangrui Song
53632bd920 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
2018-10-16 01:14:43 -07:00
Fangrui Song
705ed77a85 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
2018-10-16 01:14:43 -07:00
Riatre Foo
ccfabb9c72 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.
2018-10-15 22:49:12 -07:00
Fangrui Song
e29056b2db Namespace: improve indexer and don't trace bases in $ccls/member 2018-10-10 00:20:12 -07:00
Riatre Foo
c857be476f 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
2018-10-09 15:39:03 -07:00
Fangrui Song
31921a90b0 Support workspace folders 2018-10-08 12:46:30 -07:00
Fangrui Song
ed180692c9 Improve completion
blacklist some undesired candidates
additionalTextEdits if clang>=7
Use CodePatterns for preprocessor directive completion if there is a #
Prefer textEdit over insertText
2018-10-08 12:45:55 -07:00
Fangrui Song
8c2170172d Use DeclRef spell to represent Use spell + Use extent 2018-10-04 17:16:39 -07:00
Fangrui Song
6ec032c2a0 Redesign SymbolRef, Ref, Use
Remove lsLocationEx
2018-10-04 17:16:34 -07:00
Fangrui Song
38feb8d277 Add completion.maxNum: 100 2018-10-04 00:13:50 -07:00
Fangrui Song
29f05d96fb Use pthread if defined(__unix__) || defined(__APPLE__) 2018-10-02 17:51:36 -07:00
Fangrui Song
da07cb2da4 Add $ccls/info 2018-10-01 16:56:53 -07:00
Fangrui Song
84984c6c27 Use non-inferred entries and build preamble for .h; index on didOpen if no pending requests; documentHighlight 2018-10-01 16:56:50 -07:00
Fangrui Song
da704521b5 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
2018-09-30 11:44:24 -07:00
Fangrui Song
a127ca9b02 Support textDocument/{formatting,onTypeFormatting,rangeFormatting} 2018-09-28 10:18:04 -07:00
Fangrui Song
05109b6fa4 Merge textDocument_did{Change,Close,Open,Save}.cc 2018-09-27 22:16:42 -07:00
Fangrui Song
41fcc0272c Simplify semantic highlighting; improve hover of auto && 2018-09-25 11:57:42 -07:00
Fangrui Song
8f40c0c244 Remove clang_utils.* 2018-09-23 20:34:40 -07:00
Fangrui Song
854225bd30 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
2018-09-23 20:34:38 -07:00
Riatre Foo
32f7d148ca Allow force disabling snippet via client.snippetSupport 2018-09-23 11:32:57 -07:00
Fangrui Song
71e9835b8c documentSymbol: ignore TypeParameter
Reported by Riatre
2018-09-23 10:44:08 -07:00
Riatre Foo
e320ce42ab Include macros in completion result 2018-09-23 10:40:41 -07:00