I use LazyVim, which includes several key mappings, for instance for searching in the root directory, that rely on the LSP client detecting the correct root directory. This is the function LazyVim uses: https://github.com/LazyVim/LazyVim/blob/a72a84972d85e5bbc6b9d60a0983b37efef21b8a/lua/lazyvim/util/init.lua#L56-L89
But it seems like the Copilot LSP server is reporting my home directory as the root directory for every file it attaches to. This is for instance the result of calling :LspInfo from a Makefile in one of my projects.
Language client log: /home/<user>/.local/state/nvim/lsp.log
Detected filetype: make
1 client(s) attached to this buffer:
Client: copilot (id: 1, bufnr: [26, 24])
filetypes:
autostart: false
root directory: /home/<user>
cmd: node /home/<user>/.local/share/nvim/lazy/copilot.lua/copilot/index.js
So when Copilot is the only LSP server attached to a file, I end up searching directly in my home directory instead of the project directory.
This is the default setup LazyVim uses for copilot, which I use: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/plugins/extras/coding/copilot.lua
If I disable the plugin, then everything works fine because lazyvim then just uses cwd.
Maybe it would be possible to expose a root_dir setting just like many of the servers in lspconfig do (https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md)?
A possible interface might be:
require('copilot').setup({
server_opts_overrides = {
root_dir = require("lspconfig.util").root_pattern(".git"),
},
})
Or I guess the server could just not report the root directory, or default to vim.loop.cwd(). I'm not sure exactly if that would work.
I use LazyVim, which includes several key mappings, for instance for searching in the root directory, that rely on the LSP client detecting the correct root directory. This is the function LazyVim uses: https://github.com/LazyVim/LazyVim/blob/a72a84972d85e5bbc6b9d60a0983b37efef21b8a/lua/lazyvim/util/init.lua#L56-L89
But it seems like the Copilot LSP server is reporting my home directory as the root directory for every file it attaches to. This is for instance the result of calling
:LspInfofrom aMakefilein one of my projects.So when Copilot is the only LSP server attached to a file, I end up searching directly in my home directory instead of the project directory.
This is the default setup LazyVim uses for copilot, which I use: https://github.com/LazyVim/LazyVim/blob/main/lua/lazyvim/plugins/extras/coding/copilot.lua
If I disable the plugin, then everything works fine because lazyvim then just uses cwd.
Maybe it would be possible to expose a
root_dirsetting just like many of the servers in lspconfig do (https://github.com/neovim/nvim-lspconfig/blob/master/doc/server_configurations.md)?A possible interface might be:
Or I guess the server could just not report the root directory, or default to
vim.loop.cwd(). I'm not sure exactly if that would work.