1
0
Fork 0

LSP: Don't respond to non-GDScript files

This commit is contained in:
Luis Martinez 2025-02-22 10:31:22 -06:00
parent 394508d26d
commit ba30adfa02
2 changed files with 20 additions and 0 deletions

View File

@ -64,6 +64,9 @@ void GDScriptTextDocument::_bind_methods() {
void GDScriptTextDocument::didOpen(const Variant &p_param) {
lsp::TextDocumentItem doc = load_document_item(p_param);
if (!is_valid_gd_file(doc)) {
return;
}
sync_script_content(doc.uri, doc.text);
}
@ -74,6 +77,10 @@ void GDScriptTextDocument::didClose(const Variant &p_param) {
void GDScriptTextDocument::didChange(const Variant &p_param) {
lsp::TextDocumentItem doc = load_document_item(p_param);
if (!is_valid_gd_file(doc)) {
return;
}
Dictionary dict = p_param;
Array contentChanges = dict["contentChanges"];
for (int i = 0; i < contentChanges.size(); ++i) {
@ -86,6 +93,9 @@ void GDScriptTextDocument::didChange(const Variant &p_param) {
void GDScriptTextDocument::willSaveWaitUntil(const Variant &p_param) {
lsp::TextDocumentItem doc = load_document_item(p_param);
if (!is_valid_gd_file(doc)) {
return;
}
String path = GDScriptLanguageProtocol::get_singleton()->get_workspace()->get_file_path(doc.uri);
Ref<Script> scr = ResourceLoader::load(path);
@ -96,6 +106,10 @@ void GDScriptTextDocument::willSaveWaitUntil(const Variant &p_param) {
void GDScriptTextDocument::didSave(const Variant &p_param) {
lsp::TextDocumentItem doc = load_document_item(p_param);
if (!is_valid_gd_file(doc)) {
return;
}
Dictionary dict = p_param;
String text = dict["text"];
@ -133,6 +147,11 @@ lsp::TextDocumentItem GDScriptTextDocument::load_document_item(const Variant &p_
return doc;
}
bool GDScriptTextDocument::is_valid_gd_file(const lsp::TextDocumentItem &p_doc) {
// LanguageId isn't always set, but check it for good practice
return p_doc.languageId == "gdscript" || p_doc.uri.ends_with(".gd");
}
void GDScriptTextDocument::notify_client_show_symbol(const lsp::DocumentSymbol *symbol) {
ERR_FAIL_NULL(symbol);
GDScriptLanguageProtocol::get_singleton()->notify_client("gdscript/show_native_symbol", symbol->to_json(true));

View File

@ -60,6 +60,7 @@ protected:
private:
Array find_symbols(const lsp::TextDocumentPositionParams &p_location, List<const lsp::DocumentSymbol *> &r_list);
lsp::TextDocumentItem load_document_item(const Variant &p_param);
bool is_valid_gd_file(const lsp::TextDocumentItem &p_doc);
void notify_client_show_symbol(const lsp::DocumentSymbol *symbol);
public: