arduino / arduino-language-server

An Arduino Language Server based on Clangd to Arduino code autocompletion
GNU Affero General Public License v3.0
118 stars 11 forks source link

Panic: unimplemented request: `workspace/semanticTokens/refresh` #125

Open kittaakos opened 1 year ago

kittaakos commented 1 year ago

Describe the problem

I am playing with the LS to support multiple running language servers per workspace.

I see the following error:

Panic: unimplemented request: workspace/semanticTokens/refresh

goroutine 22 [running]:
runtime/debug.Stack()
    /usr/local/go/src/runtime/debug/stack.go:24 +0x65
github.com/arduino/arduino-language-server/streams.CatchAndLogPanic()
    /home/build/streams/panics.go:14 +0x74
panic({0x4634b40, 0xc00030b770})
    /usr/local/go/src/runtime/panic.go:838 +0x207
go.bug.st/lsp.(*Client).requestDispatcher(0xc000432090, {0x4849750, 0xc00028cac0}, {0x4844020, 0xc00000eaf8}, {0xc000042f80, 0x20}, {0xc00028f088, 0x4, 0x8}, ...)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/client.go:199 +0x9fd
go.bug.st/lsp/jsonrpc.(*Connection).handleIncomingRequest(0xc000174000, 0xc000254dc0)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/jsonrpc/jsonrpc_connection.go:153 +0x2bb
go.bug.st/lsp/jsonrpc.(*Connection).handleIncomingData(0xc000174000, {0xc000041740, 0x52, 0x52})
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/jsonrpc/jsonrpc_connection.go:128 +0x167
go.bug.st/lsp/jsonrpc.(*Connection).Run(0xc000174000)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/jsonrpc/jsonrpc_connection.go:119 +0x98
go.bug.st/lsp.(*Client).Run(...)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/client.go:83
github.com/arduino/arduino-language-server/ls.(*ClangdLSPClient).Run(...)
    /home/build/ls/lsp_client_clangd.go:86
github.com/arduino/arduino-language-server/ls.(*INOLanguageServer).InitializeReqFromIDE.func1.1()
    /home/build/ls/ls.go:201 +0x5b
created by github.com/arduino/arduino-language-server/ls.(*INOLanguageServer).InitializeReqFromIDE.func1
    /home/build/ls/ls.go:199 +0x4b0

panic: unimplemented request: workspace/semanticTokens/refresh [recovered]
    panic: unimplemented request: workspace/semanticTokens/refresh

goroutine 22 [running]:
github.com/arduino/arduino-language-server/streams.CatchAndLogPanic()
    /home/build/streams/panics.go:15 +0x145
panic({0x4634b40, 0xc00030b770})
    /usr/local/go/src/runtime/panic.go:838 +0x207
go.bug.st/lsp.(*Client).requestDispatcher(0xc000432090, {0x4849750, 0xc00028cac0}, {0x4844020, 0xc00000eaf8}, {0xc000042f80, 0x20}, {0xc00028f088, 0x4, 0x8}, ...)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/client.go:199 +0x9fd
go.bug.st/lsp/jsonrpc.(*Connection).handleIncomingRequest(0xc000174000, 0xc000254dc0)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/jsonrpc/jsonrpc_connection.go:153 +0x2bb
go.bug.st/lsp/jsonrpc.(*Connection).handleIncomingData(0xc000174000, {0xc000041740, 0x52, 0x52})
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/jsonrpc/jsonrpc_connection.go:128 +0x167
go.bug.st/lsp/jsonrpc.(*Connection).Run(0xc000174000)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/jsonrpc/jsonrpc_connection.go:119 +0x98
go.bug.st/lsp.(*Client).Run(...)
    /go/pkg/mod/go.bug.st/lsp@v0.0.0-20220701124835-c1977441be8c/client.go:83
github.com/arduino/arduino-language-server/ls.(*ClangdLSPClient).Run(...)
    /home/build/ls/lsp_client_clangd.go:86
github.com/arduino/arduino-language-server/ls.(*INOLanguageServer).InitializeReqFromIDE.func1.1()
    /home/build/ls/ls.go:201 +0x5b
created by github.com/arduino/arduino-language-server/ls.(*INOLanguageServer).InitializeReqFromIDE.func1
    /home/build/ls/ls.go:199 +0x4b0

To reproduce

Install the VS Code extension from my fork: https://github.com/kittaakos/vscode-arduino-tools/tree/multi-ls-support/build-artifacts

Expected behavior

It does not throw.

Arduino Language Server version

0.7.1

Arduino CLI version

0.25.0

Operating system

macOS

Operating system version

12.3.1

Additional context

No response

Issue checklist

GiorgosXou commented 5 months ago

In my case, the solution for Astronvim was:

          config.capabilities.textDocument.semanticTokens = vim.NIL
          config.capabilities.workspace.semanticTokens = vim.NIL
      arduino_language_server = { --  https://github.com/williamboman/nvim-lsp-installer/tree/main/lua/nvim-lsp-installer/servers/arduino_language_server | https://discord.com/channels/939594913560031363/1078005571451621546/threads/1122910773270818887
        on_new_config = function (config, root_dir)
          local my_arduino_fqbn = { -- arduino-cli core install arduino:... 
            ["/home/xou/Desktop/xou/programming/hardware/arduino/nano"]  = "arduino:avr:nano", -- arduino-cli board listall
            ["/home/xou/Desktop/xou/programming/hardware/arduino/uno" ]  = "arduino:avr:uno" ,
          }
          local DEFAULT_FQBN = "arduino:avr:uno"
          local fqbn = my_arduino_fqbn[root_dir]
          if not fqbn then
            -- vim.notify(("Could not find which FQBN to use in %q. Defaulting to %q."):format(root_dir, DEFAULT_FQBN))
            fqbn = DEFAULT_FQBN
          end
          config.capabilities.textDocument.semanticTokens = vim.NIL
          config.capabilities.workspace.semanticTokens = vim.NIL
          config.cmd = {         --  https://forum.arduino.cc/t/solved-errors-with-clangd-startup-for-arduino-language-server-in-nvim/1019977
            "arduino-language-server",
            "-cli-config" , "~/arduino15/arduino-cli.yaml", -- just in case it was /home/xou/.arduino15/arduino-cli.yaml 
            "-cli"        , "/usr/bin/arduino-cli", -- 2023-06-26 ERROR | "Runs" if I set a wrong path
            "-clangd"     , "/usr/bin/clangd",
            "-fqbn"       , fqbn
          }
        end
      },