Closed Kaiser-Yang closed 3 months ago
是 https://github.com/CopilotC-Nvim/CopilotChat.nvim 这个插件吗?我还没有用过。
在这个窗口里其他的 LSP server 能通过 cmp 来补全吗?
是 https://github.com/CopilotC-Nvim/CopilotChat.nvim 这个插件吗?我还没有用过。
在这个窗口里其他的 LSP server 能通过 cmp 来补全吗?
是这个插件,其他lsp能不能补全不清楚,因为这个我没有为markdown设置lsp,所以这个应该不会启动其他lsp,但是cmp的补全菜单是可以正常弹出的:
等我后面测试一下其他的lsp是否能够触发。
我也有这个问题,但是我觉得这个应该不是rime-ls的问题,我是自己写了lua,进入窗口 attach 一下 buffer 和 rime-ls 。
我也有这个问题,但是我觉得这个应该不是rime-ls的问题,我是自己写了lua,进入窗口 attach 一下 buffer 和 rime-ls 。
你解决这个问题了吗? 能分享一下代码片段吗?
https://github.com/rainzm/rainvim/blob/main/lua/plugins/lsp/rime_ls.lua
之前写得,最近没大在用copilot-chat了,你可以参考一下。
https://github.com/rainzm/rainvim/blob/main/lua/plugins/lsp/rime_ls.lua
之前写得,最近没大在用copilot-chat了,你可以参考一下。
我参考了你写的这一部分,然后我写出了下面的代码:
vim.api.nvim_create_autocmd('FileType', {
pattern = rime_ls_filetypes,
callback = function (env)
-- copilot cannot attach client automatically, we must attach manually.
local buf = env.buf
local filetype = vim.api.nvim_buf_get_option(buf, 'filetype')
if filetype == 'copilot-chat' then
local rime_ls_client = vim.lsp.get_clients({ name = 'rime_ls' })
if #rime_ls_client > 0 then
vim.lsp.buf_attach_client(buf, rime_ls_client[1].id)
end
end
end
})
但是这个代码修复了部分问题,如果我先打开一个其他的markdown
文件,然后我再打开copilot-chat
的窗口,那么此时输入法便可以在copilot-chat
中使用,但是如果我一开始直接打开copilot-chat
,此时输入法依然不能在copilot-chat
窗口中使用。也就是如果直接打开copilot-chat
不会启动任何的rime-ls
的client
。另外我尝试在lspconfig.rime_ls.setup
部分增加root_dir
选项,也是没有任何效果。
解决了,如果没有rime-ls
,启动一个便可以了:
vim.api.nvim_create_autocmd('FileType', {
pattern = rime_ls_filetypes,
callback = function (env)
-- copilot cannot attach client automatically, we must attach manually.
local rime_ls_client = vim.lsp.get_clients({ name = 'rime_ls' })
if #rime_ls_client == 0 then
vim.cmd('LspStart rime_ls')
rime_ls_client = vim.lsp.get_clients({ name = 'rime_ls' })
end
if #rime_ls_client > 0 then
vim.lsp.buf_attach_client(env.buf, rime_ls_client[1].id)
end
end
})
不过这样有个潜在的问题,会创建一个新的缓冲区。
这个做法似乎是最好的,但在我自己复现这个做法时发现nvim会将copilot开启的buffer识别成copilot-chat而不是markdown,我的解决方法是
vim.api.nvim_create_autocmd("FileType", {
pattern = "copilot-chat",
callback = function()
vim.cmd("setlocal filetype=markdown")
end,
})
把两个文件看作一种即可
当我打开一个copilot-chat的窗口的时候,通过
lspinfo
查看信息:我设置了文件类型为
markdown
和vimwiki
的时候自动启动,我检查了copilot-chat
打开的窗口文件类型为markdown
。