Commit Graph

378 Commits

Author SHA1 Message Date
Fangrui Song
cf997dc680 Adapt rL364464: clang::FrontendAction::Execute returns llvm::Error instead of bool 2019-06-27 03:24:20 -07:00
Fangrui Song
99930623ef Set RetainCommentsFromSystemHeaders to true
Note with -fretain-comments-from-system-headers, the .gch of bits/stdc++.h becomes larger by 1%, but that is fine.

And improve comment handling in textDocument/hover

Fix #373
2019-05-13 00:26:55 -07:00
Fangrui Song
b69f62c2bc Set RetainRemappedFileBuffers to true
Reported by David Welch in #350.

This fixes double-free of llvm::MemoryBuffer when parsing fails.
2019-05-13 00:26:55 -07:00
Fangrui Song
a41b976a77 Adapt clang rC357037: removal of setVirtualFileSystem 2019-05-13 00:26:55 -07:00
Fangrui Song
0846c12e89 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-05-13 00:26:55 -07:00
Fangrui Song
a0e76254de Add initialization option index.name.suppressUnwrittenScope (default: false) 2019-05-13 00:26:55 -07:00
Fangrui Song
ba68f49861 Misc 2019-05-13 00:26:55 -07:00
Fangrui Song
c4ab72500b Change Pos::line from int16_t to uint16_t
This allows representing line 0 ~ 65535.
2019-05-13 00:26:55 -07:00
Fangrui Song
43774f2c11 Make hover more detailed (e.g. include inheritance info) 2019-05-13 00:26:55 -07:00
Fangrui Song
048f1dc7a5 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-05-13 00:26:55 -07:00
Fangrui Song
3f6ece0a44 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-03-17 18:50:25 -07:00
Fangrui Song
8724985388 Compute CompletionItemKind from Declaration instead of CursorKind 2019-03-17 18:50:25 -07:00
Fangrui Song
0dbf6c89f1 Drop support for clang 6 2019-03-17 18:50:25 -07:00
Fangrui Song
e8cacf1efa Adjust FrontendOpts.Inputs[0] for inferred files 2019-03-17 18:50:25 -07:00
Fangrui Song
cbd36aeedb 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-03-17 18:50:25 -07:00
Fangrui Song
04e80544b9 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-01-12 00:40:49 +08:00
Fangrui Song
ab48663ca0 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-01-12 00:40:49 +08:00
Fangrui Song
5a723b489a Refactor Matcher to use pimpl and merge match.hh into utils.hh 2019-01-12 00:40:49 +08:00
Fangrui Song
f6fca76088 indexer: handle DecltypeType and empty main file; diag: -Wno-unused-function for headers
Don't replace name with qualified name in Cls::*name
2019-01-12 00:40:49 +08:00
Fangrui Song
8c73bbc3c7 Use clang::isIdentifierBody and clean up utils/working_files 2019-01-09 15:19:23 +08:00
Fangrui Song
63a510ac21 Use SM.isWrittenInMainFile; suppress -Werror in preamble
SM.isWrittenInMainFile is to work around preamble bug: spurious err_pp_unterminated_conditional with circular #include
2019-01-09 15:19:23 +08:00
Fangrui Song
11ba6b64ff Remove ls prefix from many LSP interfaces
Rename SymbolKind to Kind & lsSymbolKind to SymbolKind
Use textDocumentSync: TextDocumentSyncOptions
2019-01-09 15:19:23 +08:00
Fangrui Song
334557e9fe Fix EnumConstantDecl's kind & EnumDecl's vars 2019-01-09 15:19:23 +08:00
Fangrui Song
df20969788 *.h -> *.hh 2019-01-09 15:19:23 +08:00
Fangrui Song
ea1271a84e Refactor message handler and namespace ccls 2019-01-09 15:19:23 +08:00
Fangrui Song
ce1c7ec76a Improve DeducedType 2019-01-09 15:19:23 +08:00
Fangrui Song
119a05597d Improve extent of definition/declaration; uniquify typeDefinition 2019-01-09 15:19:23 +08:00
Fangrui Song
51081c3cd2 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-01-09 15:17:19 +08:00
Fangrui Song
c5ae521d36 Namespace: improve indexer and don't trace bases in $ccls/member 2019-01-09 15:17:19 +08: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
c7ee3d85f3 For $ccls/member, use unadjusted RecordDecl (if there is forward declaration) and handle ClassTemplateSpecialization 2018-10-03 00:42:02 -07:00
firstlove
8d49b44154 regard conversion as method instead of constructor 2018-10-01 20:49:49 -07:00
Fangrui Song
79373ba486 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
2018-09-30 11:46:34 -07:00
Fangrui Song
41fcc0272c Simplify semantic highlighting; improve hover of auto && 2018-09-25 11:57:42 -07:00
Fangrui Song
ce68028caf Add GetAdjustedDecl to adjust Decl's that are missed by clangIndex 2018-09-24 00:38:54 -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
Fangrui Song
7eb58bb5e1 Misc 2018-09-23 10:40:41 -07:00
Fangrui Song
6ea399559d Fix spurious "Failed to index" errors 2018-09-23 10:40:41 -07:00
Fangrui Song
4d76108d6b Delete file_consumer.* 2018-09-20 19:48:20 -07:00
Fangrui Song
f9bd84a975 Clean up FileConsumer and improve pipeline 2018-09-20 09:20:07 -07:00
Fangrui Song
f515b4b466 Improve VarDef::type for textDocument/typeDefinition 2018-09-20 01:08:33 -07:00
Fangrui Song
08645d64c1 intern args 2018-09-20 01:08:33 -07:00
Fangrui Song
525b6da1ac intern strings in dependencies and IndexInclude::resolved_path 2018-09-20 01:08:33 -07:00
Fangrui Song
763106c3d4 Simplify pipeline and fix race 2018-09-20 01:08:31 -07:00
Fangrui Song
14b73f0d6f Add hierarchicalDocumentSymbolSupport 2018-09-16 20:53:52 -07:00
Fangrui Song
6bca153ee3 Make $ccls/inheritanceHierarchy and textDocument/typeDefinition find declarations if definitions do not exist; spelling ranges of operator= 2018-09-13 14:55:24 -07:00
Riatre Foo
a607dcec24 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.
2018-09-12 17:01:52 -07:00
Fangrui Song
a7c1633b51 Misc 2018-09-11 20:22:49 -07:00