cmake_minimum_required 3.8; clean up

This commit is contained in:
Fangrui Song 2018-12-13 20:58:13 -08:00
parent 20e0beb9f3
commit e3133bea90
5 changed files with 23 additions and 28 deletions

View File

@ -1,4 +1,4 @@
cmake_minimum_required(VERSION 3.1) cmake_minimum_required(VERSION 3.8)
project(ccls LANGUAGES CXX) project(ccls LANGUAGES CXX)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/) list(APPEND CMAKE_MODULE_PATH ${CMAKE_SOURCE_DIR}/cmake/)

View File

@ -438,8 +438,8 @@ void MessageHandler::textDocument_completion(CompletionParam &param,
ReplyOnce &reply) { ReplyOnce &reply) {
static CompleteConsumerCache<std::vector<CompletionItem>> cache; static CompleteConsumerCache<std::vector<CompletionItem>> cache;
std::string path = param.textDocument.uri.GetPath(); std::string path = param.textDocument.uri.GetPath();
WorkingFile *file = wfiles->GetFile(path); WorkingFile *wf = wfiles->GetFile(path);
if (!file) { if (!wf) {
reply.NotReady(true); reply.NotReady(true);
return; return;
} }
@ -449,9 +449,8 @@ void MessageHandler::textDocument_completion(CompletionParam &param,
// It shouldn't be possible, but sometimes vscode will send queries out // It shouldn't be possible, but sometimes vscode will send queries out
// of order, ie, we get completion request before buffer content update. // of order, ie, we get completion request before buffer content update.
std::string buffer_line; std::string buffer_line;
if (param.position.line >= 0 && if (param.position.line >= 0 && param.position.line < wf->buffer_lines.size())
param.position.line < file->buffer_lines.size()) buffer_line = wf->buffer_lines[param.position.line];
buffer_line = file->buffer_lines[param.position.line];
clang::CodeCompleteOptions CCOpts; clang::CodeCompleteOptions CCOpts;
CCOpts.IncludeBriefComments = true; CCOpts.IncludeBriefComments = true;
@ -487,7 +486,7 @@ void MessageHandler::textDocument_completion(CompletionParam &param,
std::string filter; std::string filter;
Position end_pos = param.position; Position end_pos = param.position;
Position begin_pos = Position begin_pos =
file->FindStableCompletionSource(param.position, &filter, &end_pos); wf->GetCompletionPosition(param.position, &filter, &end_pos);
#if LLVM_VERSION_MAJOR < 8 #if LLVM_VERSION_MAJOR < 8
ParseIncludeLineResult preprocess = ParseIncludeLine(buffer_line); ParseIncludeLineResult preprocess = ParseIncludeLine(buffer_line);

View File

@ -143,11 +143,15 @@ void MessageHandler::textDocument_signatureHelp(
std::string path = param.textDocument.uri.GetPath(); std::string path = param.textDocument.uri.GetPath();
Position begin_pos = param.position; Position begin_pos = param.position;
if (WorkingFile *file = wfiles->GetFile(path)) { WorkingFile *wf = wfiles->GetFile(path);
std::string completion_text; if (!wf) {
reply.NotReady(true);
return;
}
{
std::string filter;
Position end_pos = param.position; Position end_pos = param.position;
begin_pos = file->FindStableCompletionSource(param.position, begin_pos = wf->GetCompletionPosition(param.position, &filter, &end_pos);
&completion_text, &end_pos);
} }
SemaManager::OnComplete callback = SemaManager::OnComplete callback =

View File

@ -336,21 +336,19 @@ std::optional<int> WorkingFile::GetIndexPosFromBufferPos(int line, int *column,
index_lines, is_end); index_lines, is_end);
} }
Position Position WorkingFile::GetCompletionPosition(Position pos, std::string *filter,
WorkingFile::FindStableCompletionSource(Position position, Position *replace_end_pos) const {
std::string *existing_completion, int start = GetOffsetForPosition(pos, buffer_content);
Position *replace_end_pos) const {
int start = GetOffsetForPosition(position, buffer_content);
int i = start; int i = start;
while (i > 0 && isIdentifierBody(buffer_content[i - 1])) while (i > 0 && isIdentifierBody(buffer_content[i - 1]))
--i; --i;
*replace_end_pos = position; *replace_end_pos = pos;
for (int i = start; for (int i = start;
i < buffer_content.size() && isIdentifierBody(buffer_content[i]); i++) i < buffer_content.size() && isIdentifierBody(buffer_content[i]); i++)
replace_end_pos->character++; replace_end_pos->character++;
*existing_completion = buffer_content.substr(i, start - i); *filter = buffer_content.substr(i, start - i);
return GetPositionForOffset(buffer_content, i); return GetPositionForOffset(buffer_content, i);
} }

View File

@ -50,16 +50,10 @@ struct WorkingFile {
// Also resolves |column| if not NULL. // Also resolves |column| if not NULL.
std::optional<int> GetIndexPosFromBufferPos(int line, int *column, std::optional<int> GetIndexPosFromBufferPos(int line, int *column,
bool is_end); bool is_end);
// Returns a relatively stable completion position (it jumps back until there // Returns the stable completion position (it jumps back until there is a
// is a non-alphanumeric character). // non-alphanumeric character).
// Position GetCompletionPosition(Position pos, std::string *filter,
// The out param |is_global_completion| is set to true if this looks like a Position *replace_end_pos) const;
// global completion.
// The out param |existing_completion| is set to any existing completion
// content the user has entered.
Position FindStableCompletionSource(Position position,
std::string *existing_completion,
Position *replace_end_pos) const;
private: private:
// Compute index_to_buffer and buffer_to_index. // Compute index_to_buffer and buffer_to_index.