LuaLS / LuaLS/lua-language-server

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

Aberta
#2,868 6 comentários 6 reações 0 responsáveis Ver no GitHub

Ninguém assumiu esta issue ainda.

Linguagem predominante
Lua
Estrelas
4.4k
Forks
442
Métricas de merge de PRs
Nenhum PR com merge em 30d

Descrição

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

Guia de contribuição

Abrir o guia de contribuição

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Direção de pesquisa

Comece em script/proto/proto.lua, onde o log relata o método textDocument/diagnostic desconhecido, e em script/provider/provider.lua, onde as capacidades do servidor são montadas. Rastreie o fluxo existente de diagnósticos e o tratamento de solicitações LSP. Está concluído quando a resposta de initialize anuncia diagnosticProvider e as solicitações textDocument/diagnostic são compatíveis sem o aviso de protocolo desconhecido.

Escrita pelo modelo de indexação a partir do texto da issue.

Avaliação

Stack de tecnologia
lua
Domínio
backend-api-design, devtools
Tipo de issue
Funcionalidade
Dificuldade
4/5
Tempo estimado
3-5 dias
Status de atividade
Estagnada
Clareza
Razoavelmente clara
Facilidade para iniciantes
35/100

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.