arduino / arduino-language-server

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

[nvim+arduino-language-server] Lsp doesn't work with recommended configuration. #185

Closed GammaAJ closed 2 months ago

GammaAJ commented 2 months ago

Describe the problem

I'm suffering from this weird problem that I can't find any relevant information on the internet. It looks like the issue in #152, but the corresponding solution does not work. When I open an Arduino project, I get this information: Client 5 quit with exit code 2 and signal 0 I don't know what exit code 2 means and I can't find any piece of information about exit code of lsp's. The log is as below:


[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.308928 arduino-cli found at /usr/local/bin/arduino-cli\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.309102 clangd found at /Users/mac/.local/share/nvim/mason/bin/clangd\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.311195 \27[97mLS: : Initial board configuration: arduino:mbed_nano\27[0m\n19:35:02.311220 \27[97mLS: : arduino-language-server Version: 0.7.6 Commit: 9c2f44d Date: 2024-02-06T14:12:59Z\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.311245 \27[97mLS: : Language server temp directory: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server3690925152\27[0m\n19:35:02.311253 \27[97mLS: : Language server build path: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server3690925152/build\27[0m\n19:35:02.311265 \27[97mLS: : Language server build sketch root: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server3690925152/build/sketch\27[0m\n19:35:02.311269 \27[97mLS: : Language server FULL build path: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server3690925152/fullbuild\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.311546 IN Elapsed: 60.287µs\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.311907 \27[92mIDE --> LS REQU initialize 1\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.313254 \27[92m                initialize 1: \27[93mwrite-locked\27[0m\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.313541 \27[92m                initialize 1: \27[93mwrite-unlocked\27[0m\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.313777 \27[96mINIT --- : initializing workbench: file:///Users/mac/Code/Proj_Arduino/TestSketch\27[0m\n19:35:02.313805 \27[96mINIT --- : \27[93mread-locked\27[0m\27[0m\n19:35:02.313823 \27[96mINIT --- : \27[93mread-unlocked\27[0m\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.314299 \27[96mINIT --- : running: /usr/local/bin/arduino-cli --config-file /Users/mac/Library/Arduino15/arduino-cli.yaml compile --fqbn arduino:mbed_nano --only-compilation-database --source-override /var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/4011233441 --build-path /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server3690925152/fullbuild --format json /Users/mac/Code/Proj_Arduino/TestSketch\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.314532 \27[92m                initialize 1: initialization parameters: {\"capabilities\":{\"textDocumentSync\":{\"openClose\":true,\"change\":2,\"save\":{\"includeText\":true}},\"completionProvider\":{\"triggerCharacters\":[\".\",\"\\u003c\",\"\\u003e\",\":\",\"\\\"\",\"/\"],\"allCommitCharacters\":[\" \",\"\\t\",\"(\",\")\",\"[\",\"]\",\"{\",\"}\",\"\\u003c\",\"\\u003e\",\":\",\";\",\",\",\"+\",\"-\",\"/\",\"*\",\"%\",\"^\",\"\\u0026\",\"#\",\"?\",\".\",\"=\",\"\\\"\",\"'\",\"|\"],\"completionItem\":{}},\"hoverProvider\":{},\"signatureHelpProvider\":{\"triggerCharacters\":[\"(\",\",\"]},\"definitionProvider\":{},\"documentHighlightProvider\":{},\"documentSymbolProvider\":{},\"codeActionProvider\":{\"codeActionKinds\":[\"quickfix\",\"refactor\",\"info\"]},\"documentFormattingProvider\":{},\"documentRangeFormattingProvider\":{},\"documentOnTypeFormattingProvider\":{\"firstTriggerCharacter\":\"\\n\"},\"renameProvider\":{},\"executeCommandProvider\":{\"commands\":[\"clangd.applyFix\",\"clangd.applyTweak\"]},\"workspaceSymbolProvider\":{}},\"serverInfo\":{\"name\":\"arduino-language-server\",\"version\":\"0.7.6\"}}\27[0m\n19:35:02.314566 \27[32mIDE <-- LS RESP initialize 1\27[0m\n19:35:02.314679 OUT Elapsed: 10.579µs\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.315372 IN Elapsed: 650.82µs\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.315602 \27[92mIDE --> LS NOTIF initialized\27[0m\n19:35:02.315635 \27[92m                 initialized: Notification is not propagated to clangd\27[0m\n19:35:02.315660 IN Elapsed: 15.795µs\n19:35:02.315741 \27[92mIDE --> LS NOTIF textDocument/didOpen\27[0m\n"
[ERROR][2024-04-23 19:35:02] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:02.315830 \27[92m                 textDocument/didOpen: \27[93mwrite-locked\27[0m\27[0m\n19:35:02.315840 \27[92m                 textDocument/didOpen: (throttled: waiting for clangd)\27[0m\n19:35:02.315854 \27[92m                 textDocument/didOpen: \27[93munlocked (waiting clangd)\27[0m\27[0m\n"
[ERROR][2024-04-23 19:35:03] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:03.280467 \27[96mINIT --- : error starting clang: running /usr/local/bin/arduino-cli --config-file /Users/mac/Library/Arduino15/arduino-cli.yaml compile --fqbn arduino:mbed_nano --only-compilation-database --source-override /var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/4011233441 --build-path /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server3690925152/fullbuild --format json /Users/mac/Code/Proj_Arduino/TestSketch: exit status 1\27[0m\n"
[ERROR][2024-04-23 19:35:03] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:35:03.280518 \27[92m                 textDocument/didOpen: \27[93mlocked (waiting clangd)\27[0m\27[0m\n19:35:03.280527 \27[92m                 textDocument/didOpen: clangd startup failed: quitting Language server\27[0m\n"
[ERROR][2024-04-23 19:46:12] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:46:12.364086 \27[97mLS: : Initial board configuration: arduino:mbed_nano\27[0m\n19:46:12.364191 \27[97mLS: : arduino-language-server Version: 0.7.6 Commit: 9c2f44d Date: 2024-02-06T14:12:59Z\27[0m\n19:46:12.364215 \27[97mLS: : Language server temp directory: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server2513295749\27[0m\n19:46:12.364221 \27[97mLS: : Language server build path: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server2513295749/build\27[0m\n19:46:12.364225 \27[97mLS: : Language server build sketch root: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server2513295749/build/sketch\27[0m\n19:46:12.364229 \27[97mLS: : Language server FULL build path: /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server2513295749/fullbuild\27[0m\n19:46:12.364460 IN Elapsed: 52.923µs\n19:46:12.364697 \27[92mIDE --> LS REQU initialize 1\27[0m\n"
[ERROR][2024-04-23 19:46:12] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:46:12.365695 \27[92m                initialize 1: \27[93mwrite-locked\27[0m\27[0m\n19:46:12.365809 \27[92m                initialize 1: \27[93mwrite-unlocked\27[0m\27[0m\n19:46:12.366066 \27[96mINIT --- : initializing workbench: file:///Users/mac/Code/Proj_Arduino/TestSketch\27[0m\n19:46:12.366096 \27[96mINIT --- : \27[93mread-locked\27[0m\27[0m\n19:46:12.366113 \27[96mINIT --- : \27[93mread-unlocked\27[0m\27[0m\n19:46:12.366605 \27[96mINIT --- : running: /usr/local/bin/arduino-cli --config-file /Users/mac/Library/Arduino15/arduino-cli.yaml compile --fqbn arduino:mbed_nano --only-compilation-database --source-override /var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/1820680833 --build-path /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server2513295749/fullbuild --format json /Users/mac/Code/Proj_Arduino/TestSketch\27[0m\n19:46:12.366767 \27[92m                initialize 1: initialization parameters: {\"capabilities\":{\"textDocumentSync\":{\"openClose\":true,\"change\":2,\"save\":{\"includeText\":true}},\"completionProvider\":{\"triggerCharacters\":[\".\",\"\\u003c\",\"\\u003e\",\":\",\"\\\"\",\"/\"],\"allCommitCharacters\":[\" \",\"\\t\",\"(\",\")\",\"[\",\"]\",\"{\",\"}\",\"\\u003c\",\"\\u003e\",\":\",\";\",\",\",\"+\",\"-\",\"/\",\"*\",\"%\",\"^\",\"\\u0026\",\"#\",\"?\",\".\",\"=\",\"\\\"\",\"'\",\"|\"],\"completionItem\":{}},\"hoverProvider\":{},\"signatureHelpProvider\":{\"triggerCharacters\":[\"(\",\",\"]},\"definitionProvider\":{},\"documentHighlightProvider\":{},\"documentSymbolProvider\":{},\"codeActionProvider\":{\"codeActionKinds\":[\"quickfix\",\"refactor\",\"info\"]},\"documentFormattingProvider\":{},\"documentRangeFormattingProvider\":{},\"documentOnTypeFormattingProvider\":{\"firstTriggerCharacter\":\"\\n\"},\"renameProvider\":{},\"executeCommandProvider\":{\"commands\":[\"clangd.applyFix\",\"clangd.applyTweak\"]},\"workspaceSymbolProvider\":{}},\"serverInfo\":{\"name\":\"arduino-language-server\",\"version\":\"0.7.6\"}}\27[0m\n19:46:12.366796 \27[32mIDE <-- LS RESP initialize 1\27[0m\n19:46:12.366898 OUT Elapsed: 12.266µs\n"
[ERROR][2024-04-23 19:46:12] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:46:12.386399 IN Elapsed: 19.45502ms\n19:46:12.386734 \27[92mIDE --> LS NOTIF initialized\27[0m\n19:46:12.386805 \27[92m                 initialized: Notification is not propagated to clangd\27[0m\n19:46:12.386931 IN Elapsed: 103.042µs\n19:46:12.386990 \27[92mIDE --> LS NOTIF textDocument/didOpen\27[0m\n19:46:12.387077 \27[92m                 textDocument/didOpen: \27[93mwrite-locked\27[0m\27[0m\n19:46:12.387281 \27[92m                 textDocument/didOpen: (throttled: waiting for clangd)\27[0m\n19:46:12.387302 \27[92m                 textDocument/didOpen: \27[93munlocked (waiting clangd)\27[0m\27[0m\n"
[ERROR][2024-04-23 19:46:12] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:46:12.947036 \27[96mINIT --- : error starting clang: running /usr/local/bin/arduino-cli --config-file /Users/mac/Library/Arduino15/arduino-cli.yaml compile --fqbn arduino:mbed_nano --only-compilation-database --source-override /var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/1820680833 --build-path /private/var/folders/74/n7cv8hrx2_gbwbzqphkymnj80000gn/T/arduino-language-server2513295749/fullbuild --format json /Users/mac/Code/Proj_Arduino/TestSketch: exit status 1\27[0m\n"
[ERROR][2024-04-23 19:46:12] .../vim/lsp/rpc.lua:734    "rpc"   "/Users/mac/.local/share/nvim/mason/bin/arduino-language-server"    "stderr"    "19:46:12.947070 \27[92m                 textDocument/didOpen: \27[93mlocked (waiting clangd)\27[0m\27[0m\n19:46:12.947080 \27[92m                 textDocument/didOpen: clangd startup failed: quitting Language server\27[0m\n"

The project structure is as below:

└── TestSketch
    ├── .git
    ├── TestSketch.ino
    └── sketch.yaml

The .ino file has the same name as the root directory, and the lsp has no problem detecting the root directory.

My lsp config is as below:


local MY_FQBN = "arduino:mbed_nano"
local status_ok, lspconfig = pcall(require, "lspconfig")
if not status_ok then
    print("ERROR: Failed to load lspconfig")
    return
end
lspconfig.arduino_language_server.setup {
    cmd = {
        "arduino-language-server",
        "-cli", "/usr/local/bin/arduino-cli",
        "-cli-config", "/Users/mac/Library/Arduino15/arduino-cli.yaml",
        "-clangd", "/usr/bin/clangd",           -- I have also tried Mason's clangd, no use either.
        "-fqbn", MY_FQBN
    }
}

Version of arduino-cli:

$ arduino-cli version
arduino-cli  Version: 0.35.3 Commit: 95cfd654 Date: 2024-02-19T13:15:51Z

clangd version:

$ clangd --version
Apple clangd version 14.0.0 (clang-1400.0.29.202)
Features: mac+xpc
Platform: x86_64-apple-darwin22.6.0

clang version:

$ clang --version
Apple clang version 14.0.0 (clang-1400.0.29.202)
Target: x86_64-apple-darwin22.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

arduino-language-server version: 0.7.6 OS version: macOS Ventura 13.6.6 Any clue on how and why this had happened will be highly appreciated.

To reproduce

Use the configuration above and open an Arduino project properly generated by the arduino-cli.

Expected behavior

Client 5 quit with exit code 2 and signal 0

Arduino Language Server version

0.7.6

Arduino CLI version

0.35.3

Operating system

macOS

Operating system version

13.6.6

Additional context

No response

Issue checklist

GammaAJ commented 2 months ago

Turns out it's because of the -fqbn argument. In the above code I used arduino:mbed_nano from arduino-cli, but arduino-language-server doesn't recognize it. I changed the value to arduino:avr:nano, and also installed the arduino ide (it initialized a couple of things, don't know if that helped) and changed the order of arguments (put - clangd before -cli, don't know if that helped either), and the problem is gone. Sorry for any inconvenience caused by this issue. I'm closing it now.