Closed yaowjit closed 1 year ago
是我用了一个 1.66 版本的语法,忘记在 Cargo.toml 里限制最低版本了。现在发现好像没必要这么写,下个 commit 我会把这里修改一下,可以先把那一句修改成:
let settings = match serde_json::from_value::<Settings>(params) {
Ok(s) => s,
Err(e) => {
self.client.show_message(MessageType::ERROR, e).await;
return ;
}
};
应该就可以通过编译了
更新了一个版本,应该解决了,还修了其他的问题,方便的话可以尝试下
我这里基本可以用了, 不错不错。不过我这里还有几个小问题
rime-ls配置, 其实这里我用nvim-lspconfig封装了一下(项目成熟了可以接入进去),但这里先放上你的写法
local client_id = vim.lsp.start_client({
name = "rime-ls",
cmd = { vim.fn.stdpath("data") .. "/lazy/rime-ls/target/release/rime_ls" },
init_options = {
enabled = false, -- 初始关闭, 手动开启
shared_data_dir = "/usr/share/rime-data", -- rime 公共目录
user_data_dir = vim.fn.expand("~/.local/share/rime-ls"), -- 指定用户目录, 最好新建一个
log_dir = vim.fn.expand("~/.local/share/rime-ls/log"), -- 日志目录
max_candidates = 10,
trigger_characters = {},
},
})
vim.g.rime_ls_state = "off"
vim.api.nvim_create_autocmd("BufReadPost", {
pattern = "*",
callback = function()
vim.lsp.buf_attach_client(0, client_id)
vim.keymap.set("i", "<C-o>", function()
vim.lsp.buf.execute_command({ command = "toggle-rime" })
if vim.g.rime_ls_state == "on" then
vim.g.rime_ls_state = "off"
else
vim.g.rime_ls_state = "on"
end
end)
end,
})
cmp的配置
mapping = cmp.mapping.preset.insert({
......
-- rime-ls 空格上屏
["<Space>"] = cmp.mapping(function(fallback)
if cmp.visible() and vim.g.rime_ls_state == "on" then
cmp.mapping.confirm({ behavior = cmp.ConfirmBehavior.Replace })
cmp.close()
else
fallback()
end
end),
......
}),
rime-ls
的结果都是繁体的问题(昨天有人遇到了)
对于非rime用户,应该是没有配置文件的,我觉得有必要在rime-ls
的文档里说明一下这个问题:)在rime-ls
的用户目录,比如~/.local/share/rime-ls
,新建一个user.yaml文件,在里面添加以下内容
var:
option:
simplification: true
感谢反馈!
我的 cmp 配置是照抄 kickstart.nvim 的,按 Tab 键可以在候选项之间来回循环,vim 默认的补全行为对于 rime-ls 来说可能不那么好用。
我也是在这两天才发现:本来是希望实现了 LSP 就能够通用,但事实上发现不同编辑器对自动补全的实现方案是五花八门的,对用户体验影响非常大。通用的目标是很难实现了,只能保证主流编辑器的主流补全插件的某些配置是好用的🤣。
数字这个应该没办法,毕竟对代码补全来说并没有这样的需求,用代码补全做输入法算是歪门邪道,能实现用数字过滤已经是意外之喜了。
那rime-ls可以主要做和rime交互的功能,然后多留出接口,比如选字,翻页等,具体的补全行为和适配交给单独的插件来做
这个项目主要还是考虑以尽可能不需要额外插件为目标开发。如果考虑单独做插件其实更适合的方式是用熟悉的语言给 librime 的接口做一个 wrapper,然后在插件里调用功能。类似的插件也有一些,这样做 LSP 就不太必要了。
关于状态检测,我现在的解决方案可以参考 doc/nvim.md 的更新
后面讨论的内容有些偏题,我就先把这个 issue 关掉了,有其它问题可以再开新的。
发行版:
Debian testing
clang
: 14.0.6cargo
: 1.65.0librime-dev
: 1.7.3rime-ls
: 0.1.0 编译命令:cargo build --release
编译报错 输出: