1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-26 02:57:36 +00:00

LanguageServers: Support calling SetFileContent with not-yet open files

Also, use dbgln_if
This commit is contained in:
Itamar 2021-03-05 20:59:02 +02:00 committed by Andreas Kling
parent 6f7ef4ec65
commit 4223f03b2b

View file

@ -75,30 +75,24 @@ void ClientConnection::handle(const Messages::LanguageServer::FileOpened& messag
void ClientConnection::handle(const Messages::LanguageServer::FileEditInsertText& message) void ClientConnection::handle(const Messages::LanguageServer::FileEditInsertText& message)
{ {
#if CPP_LANGUAGE_SERVER_DEBUG dbgln_if(LANGUAGE_SERVER_DEBUG, "InsertText for file: {}", message.file_name());
dbgln("InsertText for file: {}", message.file_name()); dbgln_if(LANGUAGE_SERVER_DEBUG, "Text: {}", message.text());
dbgln("Text: {}", message.text()); dbgln_if(LANGUAGE_SERVER_DEBUG, "[{}:{}]", message.start_line(), message.start_column());
dbgln("[{}:{}]", message.start_line(), message.start_column());
#endif
m_filedb.on_file_edit_insert_text(message.file_name(), message.text(), message.start_line(), message.start_column()); m_filedb.on_file_edit_insert_text(message.file_name(), message.text(), message.start_line(), message.start_column());
m_autocomplete_engine->on_edit(message.file_name()); m_autocomplete_engine->on_edit(message.file_name());
} }
void ClientConnection::handle(const Messages::LanguageServer::FileEditRemoveText& message) void ClientConnection::handle(const Messages::LanguageServer::FileEditRemoveText& message)
{ {
#if CPP_LANGUAGE_SERVER_DEBUG dbgln_if(LANGUAGE_SERVER_DEBUG, "RemoveText for file: {}", message.file_name());
dbgln("RemoveText for file: {}", message.file_name()); dbgln_if(LANGUAGE_SERVER_DEBUG, "[{}:{} - {}:{}]", message.start_line(), message.start_column(), message.end_line(), message.end_column());
dbgln("[{}:{} - {}:{}]", message.start_line(), message.start_column(), message.end_line(), message.end_column());
#endif
m_filedb.on_file_edit_remove_text(message.file_name(), message.start_line(), message.start_column(), message.end_line(), message.end_column()); m_filedb.on_file_edit_remove_text(message.file_name(), message.start_line(), message.start_column(), message.end_line(), message.end_column());
m_autocomplete_engine->on_edit(message.file_name()); m_autocomplete_engine->on_edit(message.file_name());
} }
void ClientConnection::handle(const Messages::LanguageServer::AutoCompleteSuggestions& message) void ClientConnection::handle(const Messages::LanguageServer::AutoCompleteSuggestions& message)
{ {
#if CPP_LANGUAGE_SERVER_DEBUG dbgln_if(LANGUAGE_SERVER_DEBUG, "AutoCompleteSuggestions for: {} {}:{}", message.location().file, message.location().line, message.location().column);
dbgln("AutoCompleteSuggestions for: {} {}:{}", message.location().file, message.location().line, message.location().column);
#endif
auto document = m_filedb.get(message.location().file); auto document = m_filedb.get(message.location().file);
if (!document) { if (!document) {
@ -113,13 +107,16 @@ void ClientConnection::handle(const Messages::LanguageServer::AutoCompleteSugges
void ClientConnection::handle(const Messages::LanguageServer::SetFileContent& message) void ClientConnection::handle(const Messages::LanguageServer::SetFileContent& message)
{ {
dbgln_if(LANGUAGE_SERVER_DEBUG, "SetFileContent: {}", message.file_name());
auto document = m_filedb.get(message.file_name()); auto document = m_filedb.get(message.file_name());
if (!document) { if (!document) {
dbgln("file {} has not been opened", message.file_name()); m_filedb.add(message.file_name(), message.content());
return; VERIFY(m_filedb.is_open(message.file_name()));
} else {
const auto& content = message.content();
document->set_text(content.view());
} }
auto content = message.content(); VERIFY(m_filedb.is_open(message.file_name()));
document->set_text(content.view());
m_autocomplete_engine->on_edit(message.file_name()); m_autocomplete_engine->on_edit(message.file_name());
} }