Commit Graph

374 Commits

Author SHA1 Message Date
Fangrui Song
be8b1043a0 Add initialization option index.initialNoLinkage: false
By default, the background indexer doesn't handle names of no linkage.
They are indexed when their files are opened. This saves memory and
makes cache files smaller.
2019-10-24 18:37:55 -07:00
Fangrui Song
e8f40da198 Add initialization option index.name.suppressUnwrittenScope (default: false) 2019-10-24 18:37:55 -07:00
Fangrui Song
52180f1f1f Misc 2019-10-24 18:37:55 -07:00
Fangrui Song
baae464195 Change Pos::line from int16_t to uint16_t
This allows representing line 0 ~ 65535.
2019-10-24 18:37:55 -07:00
Fangrui Song
03df4085fb Make hover more detailed (e.g. include inheritance info) 2019-10-24 18:37:55 -07:00
Fangrui Song
ea852374a2 indexer: index TemplateTypeParmDecl and ParmVarDecl in declarations for clang >= 9
Index ParmVarDecl in declarations if index.parametersInDeclarations is true

And support some unhandled Decl::Kind
2019-10-24 18:37:55 -07:00
Fangrui Song
a833b0cb22 Add initialization option capabilities.* and index.maxInitializerLines
indexer.cc: use index.maxInitializerLines instead of kInitializerMaxLines

messages/initialize.cc: some ServerCapabilities are toggable:

documentOnTypeFormattingProvider.firstTriggerCharacter
foldingRangeProvider
workspace.workspaceFolders.supported
2019-10-24 18:37:55 -07:00
Fangrui Song
520991c009 Compute CompletionItemKind from Declaration instead of CursorKind 2019-10-24 18:37:55 -07:00
Fangrui Song
a7b2ce5c1f Drop support for clang 6 2019-10-24 18:37:55 -07:00
Fangrui Song
70e0eec831 Adjust FrontendOpts.Inputs[0] for inferred files 2019-10-24 18:37:55 -07:00
Fangrui Song
d430cb8ff9 Handle file deletion and register workspace/didChangeWatchedFiles
* In the "initialized" callback, send client/registerCapability with DidChangeWatchedFilesRegistrationOptions
* In workspace/didChangeWatchedFiles callback, call pipeline::Index
* In pipeline::Index, add a `deleted` status
2019-10-24 18:37:55 -07:00
Fangrui Song
cc11d30dad 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-10-24 18:37:55 -07:00
Fangrui Song
d49119b364 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-10-24 18:37:55 -07:00
Fangrui Song
bf6fc50b54 Refactor Matcher to use pimpl and merge match.hh into utils.hh 2019-10-24 18:37:54 -07:00
Fangrui Song
008b1762c1 indexer: handle DecltypeType and empty main file; diag: -Wno-unused-function for headers
Don't replace name with qualified name in Cls::*name
2019-10-24 18:37:54 -07:00
Fangrui Song
c2cf488114 Use clang::isIdentifierBody and clean up utils/working_files 2019-10-24 18:37:54 -07:00
Fangrui Song
2e16b3c6bb Use SM.isWrittenInMainFile; suppress -Werror in preamble
SM.isWrittenInMainFile is to work around preamble bug: spurious err_pp_unterminated_conditional with circular #include
2019-10-24 18:37:54 -07:00
Fangrui Song
50736827ca Remove ls prefix from many LSP interfaces
Rename SymbolKind to Kind & lsSymbolKind to SymbolKind
Use textDocumentSync: TextDocumentSyncOptions
2019-10-24 18:37:54 -07:00
Fangrui Song
041ce5b6f1 Fix EnumConstantDecl's kind & EnumDecl's vars 2019-10-24 18:37:54 -07:00
Fangrui Song
e3a2f1a9a8 *.h -> *.hh 2019-10-24 18:37:54 -07:00
Fangrui Song
67eb1e6b23 Refactor message handler and namespace ccls 2019-10-24 18:37:53 -07:00
Fangrui Song
a1094c0897 Improve DeducedType 2019-10-24 18:37:35 -07:00
Fangrui Song
610798f634 Improve extent of definition/declaration; uniquify typeDefinition 2019-10-24 18:37:35 -07:00
Fangrui Song
5fb2407685 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-10-24 18:37:35 -07:00
Fangrui Song
56c70ad1fd Namespace: improve indexer and don't trace bases in $ccls/member 2019-10-24 18:37:35 -07:00
Fangrui Song
53e6a15f34 Use DeclRef spell to represent Use spell + Use extent 2019-10-24 18:37:35 -07:00
Fangrui Song
fc4b5b00c0 Redesign SymbolRef, Ref, Use
Remove lsLocationEx
2019-10-24 18:37:35 -07:00
Fangrui Song
46c99cda02 For $ccls/member, use unadjusted RecordDecl (if there is forward declaration) and handle ClassTemplateSpecialization 2019-10-24 18:37:35 -07:00
firstlove
334e4f32ac regard conversion as method instead of constructor 2019-10-24 18:37:35 -07:00
Fangrui Song
0273c59ac7 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-10-24 18:37:35 -07:00
Fangrui Song
058ac08621 Simplify semantic highlighting; improve hover of auto && 2019-10-24 18:37:35 -07:00
Fangrui Song
5b7758a6ca Add GetAdjustedDecl to adjust Decl's that are missed by clangIndex 2019-10-24 18:37:35 -07:00
Fangrui Song
35cba6d49c Remove clang_utils.* 2019-10-24 18:37:35 -07:00
Fangrui Song
395e9d8724 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-10-24 18:37:35 -07:00
Fangrui Song
176039fe35 Misc 2019-10-24 18:37:35 -07:00
Fangrui Song
5a8b36c997 Fix spurious "Failed to index" errors 2019-10-24 18:37:35 -07:00
Fangrui Song
056d6d8093 Delete file_consumer.* 2019-10-24 18:37:35 -07:00
Fangrui Song
96a1d86074 Clean up FileConsumer and improve pipeline 2019-10-24 18:37:35 -07:00
Fangrui Song
e4ab3d44e9 Improve VarDef::type for textDocument/typeDefinition 2019-10-24 18:37:35 -07:00
Fangrui Song
24a8b53813 intern args 2019-10-24 18:37:35 -07:00
Fangrui Song
b4aa666860 intern strings in dependencies and IndexInclude::resolved_path 2019-10-24 18:37:35 -07:00
Fangrui Song
b08e59e8e1 Simplify pipeline and fix race 2019-10-24 18:37:35 -07:00
Fangrui Song
9616e5a2fe Add hierarchicalDocumentSymbolSupport 2019-10-24 18:37:35 -07:00
Fangrui Song
57d7d76ba0 Make $ccls/inheritanceHierarchy and textDocument/typeDefinition find declarations if definitions do not exist; spelling ranges of operator= 2019-10-24 18:37:34 -07:00
Riatre Foo
3c5ab61762 Normalize paths on Windows
1. Normalize paths in LSP document URIs and project root to forward
slash and uppercase drive letters.
2. Normalize paths in compile_commands.json to forward slash and
uppercase drive letters.
3. Normalize paths from directory listing to forward slash. (Drive
letter should be same as input dir path, which is already uppercase
since path of project root dir is normalized)
4. Add llvm::sys::path::convert_to_slash after certain llvm::sys::path
and llvm::fs calls.
2019-10-24 18:37:30 -07:00
Fangrui Song
7149851ea2 Misc 2019-10-24 01:13:24 -07:00
Fangrui Song
bfe5693983 Make CXXConversion references wider; use getTypedefNameForAnonDecl; improve CXXDestructor CXXConversion spell 2019-10-24 01:13:24 -07:00
Fangrui Song
0ae7d9d0a4 Reuse preamble (built by "comp-preload") in indexer 2019-10-24 01:13:24 -07:00
Fangrui Song
b8c0b5ad9e Support empty cacheDirectory and fix cache load 2019-10-24 01:13:24 -07:00
Fangrui Song
c067f6edb2 Implement index.onChange: true; enable spell checking for diagnostics 2019-10-24 01:13:24 -07:00