fix(server): Fix didChange and didOpen

This commit is contained in:
Myzel394 2025-03-03 21:43:16 +01:00 committed by Myzel394
parent ae840bb4ca
commit 34bc469f70
3 changed files with 32 additions and 39 deletions

View File

@ -6,7 +6,10 @@ import (
) )
func ClearDiagnostics(context *glsp.Context, uri protocol.DocumentUri) { func ClearDiagnostics(context *glsp.Context, uri protocol.DocumentUri) {
go context.Notify( // Diagnostics are sent synchronously, as sending them async
// could result in a race condition when we send diagnostics
// to the client.
context.Notify(
protocol.ServerTextDocumentPublishDiagnostics, protocol.ServerTextDocumentPublishDiagnostics,
protocol.PublishDiagnosticsParams{ protocol.PublishDiagnosticsParams{
URI: uri, URI: uri,

View File

@ -18,46 +18,39 @@ func TextDocumentDidChange(context *glsp.Context, params *protocol.DidChangeText
language := shared.Handler.GetLanguageForDocument(params.TextDocument.URI) language := shared.Handler.GetLanguageForDocument(params.TextDocument.URI)
content := params.ContentChanges[0].(protocol.TextDocumentContentChangeEventWhole).Text content := params.ContentChanges[0].(protocol.TextDocumentContentChangeEventWhole).Text
newLanguage, err := initFile(
context,
content,
params.TextDocument.URI,
"",
)
if err != nil { if _, found := shared.OpenedFiles[params.TextDocument.URI]; !found {
if common.ServerOptions.NoUndetectableErrors { // The file couldn't be initialized when opening it,
return nil // so we will try it again here
} else {
return err
}
}
if newLanguage != language { newLanguage, err := initFile(
language = newLanguage context,
content,
params.TextDocument.URI,
"",
)
params := &protocol.DidOpenTextDocumentParams{ if err != nil {
TextDocument: protocol.TextDocumentItem{ if common.ServerOptions.NoUndetectableErrors {
URI: params.TextDocument.URI, return nil
Text: content, } else {
Version: params.TextDocument.Version, return err
LanguageID: string(*language), }
},
} }
switch *language { if newLanguage != language {
case shared.LanguageFstab: language = newLanguage
return fstab.TextDocumentDidOpen(context, params)
case shared.LanguageSSHDConfig: params := &protocol.DidOpenTextDocumentParams{
return sshdconfig.TextDocumentDidOpen(context, params) TextDocument: protocol.TextDocumentItem{
case shared.LanguageSSHConfig: URI: params.TextDocument.URI,
return sshconfig.TextDocumentDidOpen(context, params) Text: content,
case shared.LanguageWireguard: Version: params.TextDocument.Version,
return wireguard.TextDocumentDidOpen(context, params) LanguageID: string(*language),
case shared.LanguageHosts: },
return hosts.TextDocumentDidOpen(context, params) }
case shared.LanguageAliases:
return aliases.TextDocumentDidOpen(context, params) return TextDocumentDidOpen(context, params)
} }
} }

View File

@ -61,9 +61,6 @@ func initFile(
uri protocol.DocumentUri, uri protocol.DocumentUri,
advertisedLanguage string, advertisedLanguage string,
) (*shared.SupportedLanguage, error) { ) (*shared.SupportedLanguage, error) {
println("Initializing the file")
println(advertisedLanguage)
println(uri)
language, err := utils.DetectLanguage(content, advertisedLanguage, uri) language, err := utils.DetectLanguage(content, advertisedLanguage, uri)
if err != nil { if err != nil {