diff --git a/CHANGELOG.md b/CHANGELOG.md index 500768c..204ad91 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,26 @@ +# v0.3.0 + +## Fix + +- 解决某些编辑器无法连续输入的问题: + - 为 Zed 和 Helix 增加配置项 `long_filter_text` + - 为 Zed 增加配置项 `show_filter_text_in_label` +- 在查找补全串开头的时候应该从右到左搜索 (Thanks to TwIStOy in #21 ) +- 解决使用 dashmap 的一个死锁 (#16) + +## Feat + +- 增加 Dockerfile 方便通过 TCP 使用 (Thanks to Zwlin98 in #17) + +## Doc + +- 完善 macOS 下编译的文档 (Thanks to evpeople in #25) + +## Chore + +- 增加 Release 的编译脚本, 通过 `cargo-zigbuild` 和 `cargo-xwin` 交叉编译其他平台 + + # v0.2.4 ## Fix diff --git a/README.md b/README.md index aea9f90..d0123b8 100644 --- a/README.md +++ b/README.md @@ -30,11 +30,11 @@ https://user-images.githubusercontent.com/14821247/213079440-f0ab2ddd-5e44-4e41- 1. 下载 Release 或自己从源码编译 2. 将编译好的二进制文件放在喜欢的目录下 3. 配置 LSP 客戶端, 例如: - - [neovim + nvim-cmp](doc/nvim.md) - - [vim + coc.nvim](doc/vim.md) - - [vscode](doc/vscode.md) - - [helix](doc/helix.md) - - [zed](doc/zed.md) + - [Neovim + nvim-cmp](doc/nvim.md) + - [Vim + coc.nvim](doc/vim.md) + - [Vscode](doc/vscode.md) + - [Helix](doc/helix.md) + - [Zed](doc/zed.md) 4. 像配置其他 Rime 输入法一样在 rime-ls 的用户目录进行配置 5. 輸入拼音, 就可以看到补全提示 6. 可以通过修改 rime-ls 的配置项控制补全行为 diff --git a/doc/helix.md b/doc/helix.md index 2c76652..ea47469 100644 --- a/doc/helix.md +++ b/doc/helix.md @@ -1,7 +1,8 @@ # helix 配置示例 -helix 自带了对 LSP 的支持,但目前使用 rime-ls 还存在一些小问题, -现在属于勉强能用的状态,使用体验不太好。 +helix 自带 LSP 支持,只需要修改配置文件 + +为了更好的用户体验,需要 rime-ls v0.3.0 及之后版本,并且配置 `config.long_filter_text = true` ## 使用方法 diff --git a/doc/nvim.md b/doc/nvim.md index dbe60e8..ac8cc76 100644 --- a/doc/nvim.md +++ b/doc/nvim.md @@ -1,8 +1,10 @@ # neovim 配置示例 -以 neovim + nvim-cmp 为例 +作者目前没有实现官方 neovim 插件,建议根据实际使用情况自行配置。 -在配置文件中添加如下配置 (填入正确的程序路径和 rime 需要的目录): +以 neovim + nvim-cmp 为例,下面给出一些可行的配置方法 (须填入正确的程序路径和 rime 需要的目录): + +## 为每个 buffer 开启一个 lsp server (不推荐) ```lua local start_rime = function() @@ -44,6 +46,10 @@ vim.api.nvim_create_autocmd('BufReadPost', { ``` +以上配置进入文件便开启 LSP, 用快捷键切换是否开启补全 + +## 按需调整 cmp 的排序 + cmp 会对补全候选进行排序, 为了更好的使用体验, 还需要配置 nvim-cmp @@ -74,84 +80,45 @@ cmp.setup { } ``` -以上配置进入文件便开启 LSP, 用快捷键切换是否开启补全 - ## 状态栏显示 since v0.1.2, 可以参考以下配置在 lualine 显示 rime-ls 的当前状态: ```lua -local M = {} -function M.setup_rime() - -- maintain buffer only status - vim.b.rime_enabled = false - local toggle_rime = function(client_id) - vim.lsp.buf_request(0, 'workspace/executeCommand', - { command = "rime-ls.toggle-rime" }, - function(_, result, ctx, _) - if ctx.client_id == client_id then - vim.b.rime_enabled = result - end +-- toggle rime +vim.b.rime_enabled = false +local toggle_rime = function(client_id) + vim.lsp.buf_request(0, 'workspace/executeCommand', + { command = "rime-ls.toggle-rime" }, + function(_, result, ctx, _) + if ctx.client_id == client_id then + vim.b.rime_enabled = result end - ) - end - - -- setup rime-ls - local start_rime = function() - local client_id = vim.lsp.start_client({ - name = "rime-ls", - cmd = { 'rime_ls' }, - init_options = { - enabled = false, - shared_data_dir = "/usr/share/rime-data", - user_data_dir = "~/.local/share/rime-ls", - log_dir = "~/.local/share/rime-ls", - max_candidates = 10, -- [v0.2.0 后不再有用] 与 rime 的候选数量配置最好保持一致 - trigger_characters = {}, - schema_trigger_character = "&" -- [since v0.2.0] 当输入此字符串时请求补全会触发 “方案选单” - }, - }); - if client_id then - vim.lsp.buf_attach_client(0, client_id) - vim.keymap.set('n', '', function() toggle_rime(client_id) end) - vim.keymap.set('i', '', function() toggle_rime(client_id) end) end - end - - -- auto start - vim.api.nvim_create_autocmd({ 'BufReadPost', 'BufNewFile' }, { - callback = function() - start_rime() - end, - pattern = '*', - }) + ) +end - -- update lualine - local function rime_status() - if vim.b.rime_enabled then - return 'ㄓ' - else - return '' - end +-- update lualine +local function rime_status() + if vim.b.rime_enabled then + return 'ㄓ' + else + return '' end - - require('lualine').setup({ - sections = { - lualine_x = { rime_status, 'encoding', 'fileformat', 'filetype' }, - } - }) end -return M -``` - -例如存为 `lua/rime.lua` ,然后在 `init.lua` 里 `require('rime').setup_rime()` +require('lualine').setup({ + sections = { + lualine_x = { rime_status, 'encoding', 'fileformat', 'filetype' }, + } +}) +``` -## 全局状态 +## 基于 lspconfig 的全局 LSP 状态 -以上配置比较简陋,对每个 buffer 开启一个 LSP server 实例,如果希望保持一个全局的输入法状态,可以参考以下配置, +如果希望保持一个全局的输入法状态,可以参考以下配置, 给 lspconfig 添加一个 custom server: ```lua @@ -319,3 +286,10 @@ require('lspconfig').rime_ls.setup { } ``` +## 使用其他用户开发的插件 + +目前没有官方实现的 neovim 插件,但已有用户将相关功能封装成了插件,例如: + +- [liubianshi/cmp-lsp-rimels](https://github.com/liubianshi/cmp-lsp-rimels) + +也可参考 issue 里其他用户的配置片段。 diff --git a/doc/vim.md b/doc/vim.md index 2dfc34e..6024dfe 100644 --- a/doc/vim.md +++ b/doc/vim.md @@ -1,6 +1,8 @@ # vim 配置示例 +目前没有现成插件,建议根据实际使用情况自行配置。 + 以 vim + coc.nvim 为例, 在 `coc-settings.json` 里加入如下配置 (填入正确的程序路径和 rime 需要的目录): diff --git a/doc/zed.md b/doc/zed.md index ae7e399..a36d220 100644 --- a/doc/zed.md +++ b/doc/zed.md @@ -4,11 +4,10 @@ > 只在最新版 Zed (v0.133.7) 的 linux 版本测试过。 Zed 添加 LSP 服务需要写插件, -可以参考 [zed-ext-rime-ls](https://github.com/wlh320/zed-ext-rime-ls) -的实现。 +可以参考 [zed-ext-rime-ls](https://github.com/wlh320/zed-ext-rime-ls) 的实现。 使用方法是 `git clone` 下来,通过 Install Dev Extension 安装。 -可以在 Zed 的 Settings 里面覆盖默认的 `initialization_options`设置。 +可以在 Zed 的 Settings 里面覆盖默认的 `initialization_options` 设置。