Merge pull request #114559 from HolonProduction/lsp/fix-performance-scene-loading-workspace-completion
LSP: Fix loading scene for every request on script file for workspace completion
This commit is contained in:
commit
56f3e2611d
8 changed files with 276 additions and 58 deletions
|
|
@ -148,6 +148,9 @@ Error GDScriptLanguageProtocol::on_client_connected() {
|
|||
|
||||
void GDScriptLanguageProtocol::on_client_disconnected(const int &p_client_id) {
|
||||
clients.erase(p_client_id);
|
||||
if (clients.is_empty()) {
|
||||
scene_cache.clear();
|
||||
}
|
||||
EditorNode::get_log()->add_message("[LSP] Disconnected", EditorLog::MSG_TYPE_EDITOR);
|
||||
}
|
||||
|
||||
|
|
@ -269,6 +272,8 @@ void GDScriptLanguageProtocol::poll(int p_limit_usec) {
|
|||
on_client_connected();
|
||||
}
|
||||
|
||||
scene_cache.poll();
|
||||
|
||||
HashMap<int, Ref<LSPeer>>::Iterator E = clients.begin();
|
||||
while (E != clients.end()) {
|
||||
Ref<LSPeer> peer = E->value;
|
||||
|
|
@ -315,6 +320,7 @@ void GDScriptLanguageProtocol::stop() {
|
|||
peer->connection->disconnect_from_host();
|
||||
}
|
||||
|
||||
scene_cache.clear();
|
||||
server->stop();
|
||||
}
|
||||
|
||||
|
|
@ -447,6 +453,8 @@ void GDScriptLanguageProtocol::lsp_did_open(const Dictionary &p_params) {
|
|||
|
||||
client->managed_files[path] = document;
|
||||
client->parse_script(path);
|
||||
|
||||
scene_cache.request_load(path);
|
||||
}
|
||||
|
||||
void GDScriptLanguageProtocol::lsp_did_change(const Dictionary &p_params) {
|
||||
|
|
@ -492,6 +500,8 @@ void GDScriptLanguageProtocol::lsp_did_close(const Dictionary &p_params) {
|
|||
|
||||
/// A close notification requires a previous open notification to be sent.
|
||||
ERR_FAIL_COND_MSG(!was_opened, "LSP: Client is closing file without opening it.");
|
||||
|
||||
scene_cache.unload(path);
|
||||
}
|
||||
|
||||
void GDScriptLanguageProtocol::resolve_related_symbols(const LSP::TextDocumentPositionParams &p_doc_pos, List<const LSP::DocumentSymbol *> &r_list) {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue