LuaLS / LuaLS/lua-language-server

Support 'textDocument/diagnostic' method and 'diagnosticProvider' capability

Ouverte
#2,868 6 commentaires 6 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Langage dominant
Lua
Étoiles
4.4k
Forks
442
Métriques de merge des PR
Aucune PR mergée en 30 j

Description

### How are you using the lua-language-server?

Command Line

### Which OS are you using?

Linux

### What is the issue affecting?

Diagnostics/Syntax Checking

### Expected Behaviour

Server's capabilities contain the 'diagnosticProvider' and lua language server supports method "textDocument/diagnostic"

### Actual Behaviour

Server's capabilities don't contain the 'diagnosticProvider' and doesn't support method "textDocument/diagnostic"

### Reproduction steps

1. Get initialize response from server with capabilities
2. Check capabilities list
3. Send "textDocument/diagnostic" request

### Additional Notes

_No response_

### Log File

```
[06:38:37.231][info] [#0:/home/github/lua-language-server/main.lua:68]: Lua Lsp startup, root: /home/github/lua-language-server
[06:38:37.231][info] [#0:/home/github/lua-language-server/main.lua:69]: ROOT: /home/github/lua-language-server
[06:38:37.231][info] [#0:/home/github/lua-language-server/main.lua:70]: LOGPATH: /smsfw/log
[06:38:37.231][info] [#0:/home/github/lua-language-server/main.lua:71]: METAPATH: /home/github/lua-language-server/meta
[06:38:37.231][info] [#0:/home/github/lua-language-server/main.lua:72]: VERSION: 3.10.6
[06:38:37.264][debug][#0:script/pub/pub.lua:50]: Create brave: 1
[06:38:37.264][debug][#0:script/pub/pub.lua:50]: Create brave: 2
[06:38:37.264][debug][#0:script/pub/pub.lua:50]: Create brave: 3
[06:38:37.264][debug][#0:script/pub/pub.lua:50]: Create brave: 4
[06:38:37.264][info] [#0:script/proto/proto.lua:260]: Listen Mode: stdio
[06:38:37.265][info] [#0:script/service/service.lua:146]:
========= Medical Examination Report =========
--------------- Memory ---------------
Total: 2.237 MB
# 00 : 2.237 MB
# 01 : 0.000 MB
# 02 : 0.000 MB
# 03 : 0.000 MB
# 04 : 0.000 MB
--------------- Coroutine ---------------
Total: 0
Running: 0
Suspended: 0
Normal: 0
Dead: 0
--------------- Cache ---------------
Total: 1
Dead: 0
--------------- RPC ---------------
Holdon: 0
Waiting: 0
==============================================
[06:38:37.371][info] [#0:script/client.lua:657]: Client init {
capabilities = {
textDocument = {
diagnostic = {
dynamicRegistration = true
}
},
workspace = {
configuration = true,
didChangeConfiguration = {
dynamicRegistration = false
}
}
},
rootPath = "/smsfw",
rootUri = "file:///smsfw",
trace = "verbose"
}
[06:38:37.371][info] [#0:script/language.lua:137]: VSC language: nil
[06:38:37.371][info] [#0:script/language.lua:138]: LS language: en-us
[06:38:37.371][info] [#0:script/workspace/workspace.lua:38]: Workspace init root: file:///smsfw
[06:38:37.371][info] [#0:script/workspace/workspace.lua:42]: Log path: /smsfw/log/file_smsfw.log
[06:38:37.372][info] [#0:script/workspace/workspace.lua:48]: Workspace create: file:///smsfw
[06:38:37.372][debug][#0:script/provider/provider.lua:134]: Server init {
capabilities = {
codeActionProvider = {
codeActionKinds = { "", "quickfix", "refactor.rewrite", "refactor.extract" },
resolveProvider = false
},
codeLensProvider = {
resolveProvider = true
},
colorProvider = true,
completionProvider = {
resolveProvider = true,
triggerCharacters = { "\t", "\n", ".", ":", "(", "'", '"', "[", ",", "#", "*", "@", "|", "=", "-", "{", " ", "+", "?" }
},
definitionProvider = true,
documentFormattingProvider = true,
documentHighlightProvider = true,
documentOnTypeFormattingProvider = {
firstTriggerCharacter = "\n"
},
documentRangeFormattingProvider = true,
documentSymbolProvider = true,
executeCommandProvider = {
commands = { "lua.removeSpace", "lua.solve", "lua.jsonToLua", "lua.setConfig", "lua.getConfig", "lua.autoRequire" }
},
foldingRangeProvider = true,
hoverProvider = true,
implementationProvider = true,
inlayHintProvider = {
resolveProvider = true
},
offsetEncoding = "utf-16",
referencesProvider = true,
renameProvider = {
prepareProvider = true
},
semanticTokensProvider = {
full = true,
legend = {
tokenModifiers = { "declaration", "definition", "readonly", "static", "deprecated", "abstract", "async", "modification", "documentation", "defaultLibrary", "global" },
tokenTypes = { "namespace", "type", "class", "enum", "interface", "struct", "typeParameter", "parameter", "variable", "property", "enumMember", "event", "function", "method", "macro", "keyword", "modifier", "comment", "string", "number", "regexp", "operator", "decorator" }
},
range = true
},
signatureHelpProvider = {
triggerCharacters = { "(", "," }
},
textDocumentSync = {
change = 2,
openClose = true,
save = {
includeText = false
}
},
typeDefinitionProvider = true,
workspace = {
fileOperations = {
didRename = {
filters = { {
pattern = {
glob = "/smsfw/**",
options = {
ignoreCase = true
}
}
} }
}
},
workspaceFolders = {
changeNotifications = true,
supported = true
}
},
workspaceSymbolProvider = true
},
serverInfo = {
name = "sumneko.lua"
}
}
[06:38:37.574][info] [#0:script/provider/provider.lua:36]: Load config from specified /smsfw/test-luals-annotations/luarc.json
[06:38:37.574][info] [#0:script/provider/provider.lua:37]: {
["window.progressBar"] = false,
["window.statusBar"] = false
}
[06:38:37.574][debug][#0:script/filewatch.lua:53]: Watch add: /smsfw/test-luals-annotations/
[06:38:37.574][debug][#0:script/filewatch.lua:59]: fw.add /smsfw/test-luals-annotations/
[06:38:37.575][debug][#0:script/provider/provider.lua:274]: didOpen file:///smsfw/luals/test_scripts/sccp_ns.lua
[06:38:37.575][trace][#0:script/files.lua:288]: Set text: file:///smsfw/luals/test_scripts/sccp_ns.lua takes 9.9000000000002e-05 sec.
[06:38:37.575][debug][#0:script/provider/provider.lua:274]: didOpen file:///smsfw/luals/test_scripts/m3ua_ns.lua
[06:38:37.575][trace][#0:script/files.lua:288]: Set text: file:///smsfw/luals/test_scripts/m3ua_ns.lua takes 0.00022 sec.
[06:38:37.575][info] [#0:script/provider/provider.lua:49]: Load config from client file:///smsfw
[06:38:37.575][info] [#0:script/provider/provider.lua:50]: {
Lua = {
diagnostics = {
enable = true,
ignoredFiles = "Openned",
libraryFiles = "Openned"
},
workspace = {
checkThirdParty = "",
library = { "/smsfw/luals/library", "/smsfw/lua-core/luals_annotations/library" }
}
}
}
[06:38:37.676][info] [#0:script/provider/provider.lua:65]: Load config from client fallback
[06:38:37.676][info] [#0:script/provider/provider.lua:66]: {
Lua = {
diagnostics = {
enable = true,
ignoredFiles = "Openned",
libraryFiles = "Openned"
},
workspace = {
checkThirdParty = "",
library = { "/smsfw/luals/library", "/smsfw/lua-core/luals_annotations/library" }
}
}
}
[06:38:37.776][warn] [#0:script/proto/proto.lua:170]: Recieved unknown proto: textDocument/diagnostic
```

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Commencez dans script/proto/proto.lua, où le journal signale que la méthode textDocument/diagnostic est inconnue, et dans script/provider/provider.lua, où les capacités du serveur sont assemblées. Suivez le flux de diagnostic existant et le traitement des requêtes LSP. Le travail est terminé lorsque la réponse initialize annonce diagnosticProvider et que les requêtes textDocument/diagnostic sont prises en charge sans l’avertissement de protocole inconnu.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
lua
Domaine
backend-api-design, devtools
Type d'issue
Fonctionnalité
Difficulté
4/5
Temps estimé
3-5 jours
Activité
À l'abandon
Clarté
Plutôt claire
Accessibilité débutants
35/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.