LSP: Don't respond to non-GDScript files #103186
Open
+20
−0
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Background
When an LSP client saves, Godot's LSP server receives a
textDocument/didSave
notification. Depending on how the LSP client is implemented, it may send this notification for any file, not necessarily only GDScript files. Godot's LSP server wouldn't do any checking on the file type received from this notification, so it would send back syntax errors for whatever file was saved.According to the LSP spec, unless the server has previously sent
TextDocumentSaveRegistrationOptions
, the LSP client should send thetextDocument/didSave
notification for all files saved. See: the LSP spec and zed-industries/zed/pull/19183. (Can someone more familiar with LSP spec confirm this?)Godot's LSP mostly uses static registrations during initialization for its LSP server capabilities, but
TextDocumentSaveRegistrationOptions
is only available as a dynamic registration. This makes implementing the fix that way a bit uglier than just checking file types when receiving notifications.Fix
We will now check for a file being a valid GDScript file, via the language ID or file extension, before processing it any further. While this fix was specifically for the
textDocument/didSave
notification, I added checks for other related notifications as well.