Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remap file paths between LSP server and Vim #1524

Open
antekone opened this issue Jan 4, 2024 · 1 comment
Open

Remap file paths between LSP server and Vim #1524

antekone opened this issue Jan 4, 2024 · 1 comment

Comments

@antekone
Copy link

antekone commented Jan 4, 2024

I'm trying to use clangd installed in a podman container. I've configured it so that running the language server is done by the "podman run" commandline:

au User lsp_setup call lsp#register_server({ 'name': 'clangd', 'cmd': ['/usr/bin/podman', 'run', '-v', getcwd().':'.getcwd(), '--rm', '-i', 'a500dev', 'clangd-17', '--background-index', '--compile-commands-dir='.getcwd(), '--clang-tidy', '--query-driver=/opt/m68k-amigaos/bin/*'], 'allowlist': ['cpp'], })

But the (obvious) problem is that file paths for the system headers is different inside the container and in Vim.

I can mount any container's directory to anywhere on my host, with an exception that most of the time it will not be the same path, so I'm wondering: does vim-lsp support filename remapping from/to what the LSP generates/expects?

For example, some function that would convert a path sent to the LSP, and another function that would convert a path got from LSP? That would probably be enough for me (I think) to use an LSP installed inside podman container.

@kmARC
Copy link

kmARC commented Jun 19, 2024

Have you tried clangd's --path-mappings?

--path-mappings=<string>

Translates between client paths (as seen by a remote editor) and server paths (where clangd sees files on disk). Comma separated list of '<client_path>=<server_path>' pairs, the first entry matching a given path is used. e.g. /home/project/incl=/opt/include,/home/project=/workarea/project

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants