LuaLS / LuaLS/lua-language-server
Support 'textDocument/diagnostic' method and 'diagnosticProvider' capability
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
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- 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