clangd / coc-clangd

clangd extension for coc.nvim
Apache License 2.0
757 stars 34 forks source link

Header file not found, even though autocompletion works and include path is added correctly #667

Closed themightyoarfish closed 4 months ago

themightyoarfish commented 4 months ago

I don't know if this is a clangd problem or what, and I also cannot really provide a minimally reproducible example, because the problem does not appear when removing everything unrelated from the project.

Context: Cmake with compilation database, neovim v0.10.0-dev-1484+g0774d0cfe and coc.nvim version 0.0.82-e3f91b5e 2023-10-19 15:01:32 +0800.

The cmake setup includes some third party dependencies added via find_package(), nothing special here. Now when I open my header file, it includes these third-party headers, and clangd says

    1 #pragma once
    2
    3 #include <functional>
    4 #include <memory>
E  5 #include <rtc/peerconnection.hpp>     ■ 'rtc/peerconnection.hpp' file not found
    6 #include <string>
    7 #include <vector>
    8 #include <nlohmann/json.hpp>
…

When checking clangd log, I can see that the compiler command seems to get correctly created by using the corresponding cpp file

I[12:14:07.030] ASTWorker building file /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp version 1 with command inferred from /Users/rasmus/Documents/Projects/foobar/shared/psirtc/src/psirtc.cpp
[/Users/rasmus/Documents/Projects/foobar/build/shared/psirtc]
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --driver-mode=g++ -isystem /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include -isystem /Users/rasmus/Documents/Projects/foobar/deps/include -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -mmacosx-version-min=12.6 -c -std=gnu++20 -resource-dir=/Users/rasmus/.config/coc/extensions/coc-clangd-data/install/17.0.3/clangd_17.0.3/lib/clang/17 -- /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp

Note that /Users/rasmus/Documents/Projects/foobar/deps/include is the exact include path needed to find the third party headers, just as I include them in my hpp file. So the include path is correctly set up, but still I get "file not found".

Is this a clangd issue or a coc-clangd issue? What should I do to debug this? I could not reproduce the problem by copying the cmake project structure without any other content. I also tried not having the dependencies installed in the project root, also did not help. I'm royally confused at this point.

Logs

I[12:23:56.862] clangd version 17.0.3 (https://github.com/llvm/llvm-project 888437e1b60011b8a375dd30928ec925b448da57)
I[12:23:56.863] Features: mac+grpc+xpc
I[12:23:56.863] PID: 45036
I[12:23:56.863] Working directory: /Users/rasmus/Documents/Projects/foobar
I[12:23:56.863] argv[0]: /Users/rasmus/.config/coc/extensions/coc-clangd-data/install/17.0.3/clangd_17.0.3/bin/clangd
I[12:23:56.863] argv[1]: --log=verbose
V[12:23:56.863] User config file is /Users/rasmus/Library/Preferences/clangd/config.yaml
I[12:23:56.863] Starting LSP over stdin/stdout
V[12:23:56.863] <<< {"id":0,"jsonrpc":"2.0","method":"initialize","params":{"capabilities":{"general":{"markdown":{"parser":"marked","version":"4.0.10"},"positionEncodings":["utf-16"],"regularExpressions":{"engine":"ECMAScript","version":"ES2020"},"staleRequestSupport":{"cancel":true,"retryOnContentModified":["textDocument/inlayHint","textDocument/semanticTokens/full","textDocument/semanticTokens/range","textDocument/semanticTokens/full/delta"]}},"textDocument":{"callHierarchy":{"dynamicRegistration":true},"codeAction":{"codeActionLiteralSupport":{"codeActionKind":{"valueSet":["","quickfix","refactor","refactor.extract","refactor.inline","refactor.rewrite","source","source.organizeImports"]}},"dataSupport":true,"disabledSupport":true,"dynamicRegistration":true,"honorsChangeAnnotations":false,"isPreferredSupport":true,"resolveSupport":{"properties":["edit"]}},"codeLens":{"dynamicRegistration":true},"colorProvider":{"dynamicRegistration":true},"completion":{"completionItem":{"commitCharactersSupport":true,"deprecatedSupport":true,"documentationFormat":["markdown","plaintext"],"insertReplaceSupport":true,"insertTextModeSupport":{"valueSet":[1,2]},"labelDetailsSupport":true,"preselectSupport":true,"resolveSupport":{"properties":["documentation","detail","additionalTextEdits"]},"snippetSupport":true,"tagSupport":{"valueSet":[1]}},"completionItemKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25]},"completionList":{"itemDefaults":["commitCharacters","editRange","insertTextFormat","insertTextMode"]},"contextSupport":true,"dynamicRegistration":true,"editsNearCursor":true,"insertTextMode":2},"declaration":{"dynamicRegistration":true,"linkSupport":true},"definition":{"dynamicRegistration":true,"linkSupport":true},"diagnostic":{"dynamicRegistration":true,"relatedDocumentSupport":true},"documentHighlight":{"dynamicRegistration":true},"documentLink":{"dynamicRegistration":true,"tooltipSupport":true},"documentSymbol":{"dynamicRegistration":true,"hierarchicalDocumentSymbolSupport":true,"labelSupport":true,"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"foldingRange":{"dynamicRegistration":true,"foldingRange":{"collapsedText":false},"foldingRangeKind":{"valueSet":["comment","imports","region"]},"lineFoldingOnly":true,"rangeLimit":5000},"formatting":{"dynamicRegistration":true},"hover":{"contentFormat":["markdown","plaintext"],"dynamicRegistration":true},"implementation":{"dynamicRegistration":true,"linkSupport":true},"inlayHint":{"dynamicRegistration":true,"resolveSupport":{"properties":["tooltip","textEdits","label.tooltip","label.location","label.command"]}},"inlineValue":{"dynamicRegistration":true},"linkedEditingRange":{"dynamicRegistration":true},"onTypeFormatting":{"dynamicRegistration":true},"publishDiagnostics":{"codeDescriptionSupport":true,"dataSupport":true,"relatedInformation":true,"tagSupport":{"valueSet":[1,2]},"versionSupport":true},"rangeFormatting":{"dynamicRegistration":true},"references":{"dynamicRegistration":true},"rename":{"dynamicRegistration":true,"honorsChangeAnnotations":true,"prepareSupport":true,"prepareSupportDefaultBehavior":1},"selectionRange":{"dynamicRegistration":true},"semanticTokens":{"augmentsSyntaxTokens":true,"dynamicRegistration":true,"formats":["relative"],"multilineTokenSupport":false,"overlappingTokenSupport":false,"requests":{"full":{"delta":true},"range":true},"serverCancelSupport":true,"tokenModifiers":["declaration","definition","readonly","static","deprecated","abstract","async","modification","documentation","defaultLibrary"],"tokenTypes":["namespace","type","class","enum","interface","struct","typeParameter","parameter","variable","property","enumMember","event","function","method","macro","keyword","modifier","comment","string","number","regexp","decorator","operator"]},"signatureHelp":{"contextSupport":true,"dynamicRegistration":true,"signatureInformation":{"activeParameterSupport":true,"documentationFormat":["markdown","plaintext"],"parameterInformation":{"labelOffsetSupport":true}}},"synchronization":{"didSave":true,"dynamicRegistration":true,"willSave":true,"willSaveWaitUntil":true},"typeDefinition":{"dynamicRegistration":true,"linkSupport":true},"typeHierarchy":{"dynamicRegistration":true}},"window":{"showDocument":{"support":true},"showMessage":{"messageActionItem":{"additionalPropertiesSupport":true}},"workDoneProgress":true},"workspace":{"applyEdit":true,"codeLens":{"refreshSupport":true},"configuration":true,"diagnostics":{"refreshSupport":true},"didChangeConfiguration":{"dynamicRegistration":true},"didChangeWatchedFiles":{"dynamicRegistration":true,"relativePatternSupport":true},"executeCommand":{"dynamicRegistration":true},"fileOperations":{"didCreate":true,"didDelete":true,"didRename":true,"dynamicRegistration":true,"willCreate":true,"willDelete":true,"willRename":true},"inlayHint":{"refreshSupport":true},"inlineValue":{"refreshSupport":true},"semanticTokens":{"refreshSupport":true},"symbol":{"dynamicRegistration":true,"resolveSupport":{"properties":["location.range"]},"symbolKind":{"valueSet":[1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26]},"tagSupport":{"valueSet":[1]}},"workspaceEdit":{"changeAnnotationSupport":{"groupsOnLabel":false},"documentChanges":true,"failureHandling":"undo","normalizesLineEndings":true,"resourceOperations":["create","rename","delete"]},"workspaceFolders":true}},"clientInfo":{"name":"coc.nvim","version":"0.0.82"},"initializationOptions":{"clangdFileStatus":true,"compilationDatabasePath":"/Users/rasmus/Documents/Projects/foobar/build","fallbackFlags":[]},"locale":"en_US","processId":45028,"rootPath":"/Users/rasmus/Documents/Projects/foobar","rootUri":"file:///Users/rasmus/Documents/Projects/foobar","trace":"off","workDoneToken":"aae909e1-41c8-4d07-99a8-872a732fbb06","workspaceFolders":[{"name":"foobar","uri":"file:///Users/rasmus/Documents/Projects/foobar"}]}}

I[12:23:56.863] <-- initialize(0)
V[12:23:56.863] Invoking /usr/bin/xcrun to find clang installation
V[12:23:56.869] Invoking /usr/bin/xcrun to find clang installation
I[12:23:56.875] --> reply:initialize(0) 12 ms
V[12:23:56.875] >>> {"id":0,"jsonrpc":"2.0","result":{"capabilities":{"astProvider":true,"callHierarchyProvider":true,"clangdInlayHintsProvider":true,"codeActionProvider":{"codeActionKinds":["quickfix","refactor","info"]},"compilationDatabase":{"automaticReload":true},"completionProvider":{"resolveProvider":false,"triggerCharacters":[".","<",">",":","\"","/","*"]},"declarationProvider":true,"definitionProvider":true,"documentFormattingProvider":true,"documentHighlightProvider":true,"documentLinkProvider":{"resolveProvider":false},"documentOnTypeFormattingProvider":{"firstTriggerCharacter":"\n","moreTriggerCharacter":[]},"documentRangeFormattingProvider":true,"documentSymbolProvider":true,"executeCommandProvider":{"commands":["clangd.applyFix","clangd.applyTweak"]},"foldingRangeProvider":true,"hoverProvider":true,"implementationProvider":true,"inactiveRegionsProvider":true,"inlayHintProvider":true,"memoryUsageProvider":true,"referencesProvider":true,"renameProvider":{"prepareProvider":true},"selectionRangeProvider":true,"semanticTokensProvider":{"full":{"delta":true},"legend":{"tokenModifiers":["declaration","definition","deprecated","deduced","readonly","static","abstract","virtual","dependentName","defaultLibrary","usedAsMutableReference","usedAsMutablePointer","constructorOrDestructor","userDefined","functionScope","classScope","fileScope","globalScope"],"tokenTypes":["variable","variable","parameter","function","method","function","property","variable","class","interface","enum","enumMember","type","type","unknown","namespace","typeParameter","concept","type","macro","modifier","operator","bracket","label","comment"]},"range":false},"signatureHelpProvider":{"triggerCharacters":["(",")","{","}","<",">",","]},"standardTypeHierarchyProvider":true,"textDocumentSync":{"change":2,"openClose":true,"save":true},"typeDefinitionProvider":true,"typeHierarchyProvider":true,"workspaceSymbolProvider":true},"serverInfo":{"name":"clangd","version":"clangd version 17.0.3 (https://github.com/llvm/llvm-project 888437e1b60011b8a375dd30928ec925b448da57) mac+grpc+xpc arm64-apple-darwin21.6.0; target=x86_64-apple-darwin21.6.0"}}}

V[12:23:56.876] <<< {"jsonrpc":"2.0","method":"initialized","params":{}}

I[12:23:56.876] <-- initialized
V[12:23:56.879] <<< {"jsonrpc":"2.0","method":"textDocument/didOpen","params":{"textDocument":{"languageId":"cpp","text":"#pragma once\n\n#include <functional>\n#include <memory>\n#include <rtc/peerconnection.hpp>\n#include <string>\n#include <vector>\n#include <nlohmann/json.hpp>\n\nvoid wat();\n","uri":"file:///Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp","version":1}}}

I[12:23:56.879] <-- textDocument/didOpen
I[12:23:56.880] Loaded compilation database from /Users/rasmus/Documents/Projects/foobar/build/compile_commands.json
V[12:23:56.880] Broadcasting compilation database from /Users/rasmus/Documents/Projects/foobar/build
I[12:23:56.880] --> window/workDoneProgress/create(0)
V[12:23:56.880] >>> {"id":0,"jsonrpc":"2.0","method":"window/workDoneProgress/create","params":{"token":"backgroundIndexProgress"}}

I[12:23:56.880] Enqueueing 4 commands for indexing
I[12:23:56.880] ASTWorker building file /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp version 1 with command inferred from /Users/rasmus/Documents/Projects/foobar/shared/psirtc/src/psirtc.cpp
[/Users/rasmus/Documents/Projects/foobar/build/shared/psirtc]
/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/c++ --driver-mode=g++ -isystem /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include -isystem /Users/rasmus/Documents/Projects/foobar/deps/include -arch arm64 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -mmacosx-version-min=12.6 -c -std=gnu++20 -resource-dir=/Users/rasmus/.config/coc/extensions/coc-clangd-data/install/17.0.3/clangd_17.0.3/lib/clang/17 -- /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp
V[12:23:56.880] <<< {"id":0,"jsonrpc":"2.0","result":null}

I[12:23:56.880] <-- reply(0)
I[12:23:56.880] --> $/progress
V[12:23:56.880] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"begin","percentage":0,"title":"indexing"}}}

I[12:23:56.880] --> $/progress
V[12:23:56.880] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}

V[12:23:56.881] Driver produced command: cc1 -cc1 -triple arm64-apple-macosx12.6.0 -Wundef-prefix=TARGET_OS_ -Werror=undef-prefix -Wdeprecated-objc-isa-usage -Werror=deprecated-objc-isa-usage -fsyntax-only -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name psirtc.hpp -mrelocation-model pic -pic-level 2 -mframe-pointer=non-leaf -ffp-contract=on -fno-rounding-math -funwind-tables=1 -target-sdk-version=13.1 -fcompatibility-qualified-id-block-type-checking -fvisibility-inlines-hidden-static-local-var -target-cpu apple-m1 -target-feature +v8.5a -target-feature +aes -target-feature +crc -target-feature +dotprod -target-feature +fp-armv8 -target-feature +fp16fml -target-feature +lse -target-feature +ras -target-feature +rcpc -target-feature +rdm -target-feature +sha2 -target-feature +sha3 -target-feature +neon -target-feature +zcm -target-feature +zcz -target-feature +fullfp16 -target-abi darwinpcs -debugger-tuning=lldb -target-linker-version 820.1 -fcoverage-compilation-dir=/Users/rasmus/Documents/Projects/foobar/build/shared/psirtc -resource-dir /Users/rasmus/.config/coc/extensions/coc-clangd-data/install/17.0.3/clangd_17.0.3/lib/clang/17 -isystem /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include -isystem /Users/rasmus/Documents/Projects/foobar/deps/include -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk -internal-isystem /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/../include/c++/v1 -internal-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/usr/local/include -internal-isystem /Users/rasmus/.config/coc/extensions/coc-clangd-data/install/17.0.3/clangd_17.0.3/lib/clang/17/include -internal-externc-isystem /Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX13.1.sdk/usr/include -std=gnu++20 -fdeprecated-macro -fdebug-compilation-dir=/Users/rasmus/Documents/Projects/foobar/build/shared/psirtc -ferror-limit 19 -stack-protector 1 -fblocks -fencode-extended-block-signature -fregister-global-dtors-with-atexit -fgnuc-version=4.2.1 -fno-implicit-modules -fcxx-exceptions -fexceptions -fmax-type-align=16 -no-round-trip-args -D__GCC_HAVE_DWARF2_CFI_ASM=1 -x c++-header /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp
I[12:23:56.881] --> textDocument/clangd.fileStatus
V[12:23:56.881] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"parsing includes, running Update","uri":"file:///Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp"}}

V[12:23:56.881] Building first preamble for /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp version 1
V[12:23:56.947] BackgroundIndex: building version 1 after loading index from disk
V[12:23:56.997] BackgroundIndex: serving version 1 (27130566 bytes)
I[12:23:57.005] --> $/progress
V[12:23:57.005] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"report","message":"0/1","percentage":0}}}

I[12:23:57.005] --> $/progress
V[12:23:57.005] >>> {"jsonrpc":"2.0","method":"$/progress","params":{"token":"backgroundIndexProgress","value":{"kind":"end"}}}

V[12:23:57.080] <<< {"id":1,"jsonrpc":"2.0","method":"textDocument/documentLink","params":{"textDocument":{"uri":"file:///Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp"}}}

I[12:23:57.080] <-- textDocument/documentLink(1)
I[12:23:57.417] Built preamble of size 15511724 for file /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp version 1 in 0.54 seconds
I[12:23:57.417] --> workspace/semanticTokens/refresh(1)
V[12:23:57.417] >>> {"id":1,"jsonrpc":"2.0","method":"workspace/semanticTokens/refresh","params":null}

I[12:23:57.417] Indexing c++20 standard library in the context of /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp
V[12:23:57.417] <<< {"id":1,"jsonrpc":"2.0","result":null}

I[12:23:57.417] <-- reply(1)
V[12:23:57.428] indexed file AST for /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp version 1:
  symbol slab: 1 symbols, 4448 bytes
  ref slab: 1 symbols, 1 refs, 4248 bytes
  relations slab: 0 relations, 24 bytes
V[12:23:57.428] Build dynamic index for main-file symbols with estimated memory usage of 11520 bytes
I[12:23:57.428] --> textDocument/publishDiagnostics
V[12:23:57.428] >>> {"jsonrpc":"2.0","method":"textDocument/publishDiagnostics","params":{"diagnostics":[{"code":"unused-includes","codeDescription":{"href":"https://clangd.llvm.org/guides/include-cleaner"},"message":"Included header functional is not used directly (fixes available)","range":{"end":{"character":21,"line":2},"start":{"character":0,"line":2}},"relatedInformation":[],"severity":2,"source":"clangd","tags":[1]},{"code":"unused-includes","codeDescription":{"href":"https://clangd.llvm.org/guides/include-cleaner"},"message":"Included header memory is not used directly (fixes available)","range":{"end":{"character":17,"line":3},"start":{"character":0,"line":3}},"relatedInformation":[],"severity":2,"source":"clangd","tags":[1]},{"code":"unused-includes","codeDescription":{"href":"https://clangd.llvm.org/guides/include-cleaner"},"message":"Included header string is not used directly (fixes available)","range":{"end":{"character":17,"line":5},"start":{"character":0,"line":5}},"relatedInformation":[],"severity":2,"source":"clangd","tags":[1]},{"code":"unused-includes","codeDescription":{"href":"https://clangd.llvm.org/guides/include-cleaner"},"message":"Included header vector is not used directly (fixes available)","range":{"end":{"character":17,"line":6},"start":{"character":0,"line":6}},"relatedInformation":[],"severity":2,"source":"clangd","tags":[1]}],"uri":"file:///Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp","version":1}}

V[12:23:57.428] ASTWorker running DocumentLinks on version 1 of /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp
I[12:23:57.428] --> reply:textDocument/documentLink(1) 348 ms
V[12:23:57.428] >>> {"id":1,"jsonrpc":"2.0","result":[{"range":{"end":{"character":21,"line":2},"start":{"character":9,"line":2}},"target":"file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c%2B%2B/v1/functional"},{"range":{"end":{"character":17,"line":3},"start":{"character":9,"line":3}},"target":"file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c%2B%2B/v1/memory"},{"range":{"end":{"character":33,"line":4},"start":{"character":9,"line":4}},"target":"file:///Users/rasmus/Documents/Projects/foobar/deps/include/rtc/peerconnection.hpp"},{"range":{"end":{"character":17,"line":5},"start":{"character":9,"line":5}},"target":"file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c%2B%2B/v1/string"},{"range":{"end":{"character":17,"line":6},"start":{"character":9,"line":6}},"target":"file:///Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include/c%2B%2B/v1/vector"},{"range":{"end":{"character":28,"line":7},"start":{"character":9,"line":7}},"target":"file:///Users/rasmus/Documents/Projects/foobar/deps/include/nlohmann/json.hpp"}]}

I[12:23:57.428] --> textDocument/clangd.fileStatus
V[12:23:57.428] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp"}}

V[12:23:57.482] <<< {"id":2,"jsonrpc":"2.0","method":"textDocument/inlayHint","params":{"range":{"end":{"character":0,"line":10},"start":{"character":0,"line":0}},"textDocument":{"uri":"file:///Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp"}}}

I[12:23:57.482] <-- textDocument/inlayHint(2)
V[12:23:57.482] ASTWorker running InlayHints on version 1 of /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp
I[12:23:57.482] --> reply:textDocument/inlayHint(2) 0 ms
V[12:23:57.482] >>> {"id":2,"jsonrpc":"2.0","result":[]}

I[12:23:57.483] --> textDocument/clangd.fileStatus
V[12:23:57.483] >>> {"jsonrpc":"2.0","method":"textDocument/clangd.fileStatus","params":{"state":"idle","uri":"file:///Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp"}}

V[12:23:57.497] indexed preamble AST for /Users/rasmus/Documents/Projects/foobar/shared/psirtc/include/psirtc/psirtc.hpp version 1:
  symbol slab: 13459 symbols, 3696048 bytes
  ref slab: 0 symbols, 0 refs, 128 bytes
  relations slab: 594 relations, 17432 bytes
V[12:23:57.524] Build dynamic index for header symbols with estimated memory usage of 8606660 bytes
I[12:23:58.248] Indexed c++20 standard library: 11926 symbols, 2107 filtered
V[12:23:58.279] Build dynamic index for header symbols with estimated memory usage of 9863520 bytes

System information Clangd version (from the log, or clangd --version):

clangd version 17.0.3 (https://github.com/llvm/llvm-project 888437e1b60011b8a375dd30928ec925b448da57)
Features: mac+grpc+xpc
Platform: arm64-apple-darwin21.6.0; target=x86_64-apple-darwin21.6.0

clangd extension version (from :CocInfo):

## versions

vim version: NVIM v0.10.0-dev-1484+g0774d0cfe
node version: v21.0.0
coc.nvim version: 0.0.82-e3f91b5e 2023-10-19 15:01:32 +0800
coc.nvim directory: /Users/rasmus/.cache/dein/repos/github.com/neoclide/coc.nvim
term: tmux
platform: darwin

## Log of coc.nvim

2024-04-16T12:23:56.852 INFO (pid:45028) [plugin] - coc.nvim initialized with node: v21.0.0 after 123
2024-04-16T12:23:56.857 INFO (pid:45028) [services] - LanguageClient clangd state change: stopped => starting
2024-04-16T12:23:56.858 INFO (pid:45028) [language-client-index] - Language server "clangd" started with 45036
2024-04-16T12:23:56.876 INFO (pid:45028) [services] - LanguageClient clangd state change: starting => running
2024-04-16T12:23:56.879 INFO (pid:45028) [services] - service clangd started
2024-04-16T12:23:59.605 INFO (pid:45028) [attach] - receive notification: runCommand [ 'workspace.showOutput' ]
2024-04-16T12:24:02.658 INFO (pid:45028) [attach] - receive notification: runCommand [ 'workspace.showOutput' ]
2024-04-16T12:24:40.643 INFO (pid:45028) [attach] - receive notification: checkJsonExtension []
2024-04-16T12:25:07.495 INFO (pid:45028) [attach] - receive notification: showInfo []

Operating system:

MacOS

Coc config:

{
    "clangd.arguments" : ["--log=verbose"],
    "clangd.compilationDatabasePath": "${cwd}/build",
    "list.normalMappings": {
        "<C-c>": "do:exit"
    },
    "list.insertMappings": {
        "<C-c>": "do:exit"
    },
    "clangd.path": "~/.config/coc/extensions/coc-clangd-data/install/17.0.3/clangd_17.0.3/bin/clangd",
}
fannheyward commented 4 months ago

Very clear bug report!

But unfortunately, the file not found issue is clangd's work. coc.nvim + coc-clangd is LSP client, what it did:

  1. detect the project root, find the compilation database, and setup necessary configurations
  2. launch clangd server when you open C/CPP files
  3. communication with the server from LSP protocol

The clangd server reports file not found issue, published to client, and client displayed it.

fannheyward commented 4 months ago

Ping @sam-mccall @HighCommander4 for the help

themightyoarfish commented 4 months ago

I found that removing this block from my neovim config fixed the issue

lua <<EOF
require("lspconfig").clangd.setup({
  on_attach = function()
    vim.call('LspAttached')
  end
})
EOF

I don't remember where i copied this from and don't know what the purpose is, but maybe this helps someone else.

themightyoarfish commented 4 months ago

Actually this is part of config to set up keymappings, which now of course no longer work

call dein#add('neovim/nvim-lspconfig')
function! LspAttached() abort
  " LSP actions
  nnoremap <buffer> K <cmd>lua vim.lsp.buf.hover()<cr>
  nnoremap <buffer> gd <cmd>lua vim.lsp.buf.definition()<cr>
  nnoremap <buffer> gD <cmd>lua vim.lsp.buf.declaration()<cr>
  nnoremap <buffer> gi <cmd>lua vim.lsp.buf.implementation()<cr>
  nnoremap <buffer> go <cmd>lua vim.lsp.buf.type_definition()<cr>
  nnoremap <buffer> gr <cmd>lua vim.lsp.buf.references()<cr>
  " conflicts with compile shortcut
  " nnoremap <buffer> <C-k> <cmd>lua vim.lsp.buf.signature_help()<cr>
  nnoremap <buffer> <leader><C-r> <cmd>lua vim.lsp.buf.rename()<cr>
  nnoremap <buffer> <leader><C-n> <cmd>lua vim.lsp.buf.code_action()<cr>
  xnoremap <buffer> <F4> <cmd>lua vim.lsp.buf.range_code_action()<cr>

  " Diagnostics
  nnoremap <buffer> gl <cmd>lua vim.diagnostic.open_float()<cr>
  nnoremap <buffer> [d <cmd>lua vim.diagnostic.goto_prev()<cr>
  nnoremap <buffer> ]d <cmd>lua vim.diagnostic.goto_next()<cr>

endfunction

lua <<EOF
require("lspconfig").clangd.setup({
  on_attach = function()
    vim.call('LspAttached')
  end
})
EOF

sigh.

fannheyward commented 4 months ago

You're mixed using coc.nvim and nvim's builtin LSP client, you shouldn't use them at same time.

@sam-mccall @HighCommander4 you can ignore this, sorry to boring you.