Skip to content

Commit

Permalink
doc: add blink.cmp
Browse files Browse the repository at this point in the history
- add example config for blink.cmp
- add TOC in cmp doc
  • Loading branch information
wlh320 committed Dec 21, 2024
1 parent dece1a3 commit 77bae01
Show file tree
Hide file tree
Showing 3 changed files with 78 additions and 1 deletion.
1 change: 1 addition & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ https://user-images.githubusercontent.com/14821247/213079440-f0ab2ddd-5e44-4e41-
2. 将编译好的二进制文件放在喜欢的目录下
3. 配置 LSP 客戶端, 例如:
- [Neovim + nvim-cmp](doc/nvim-with-cmp.md)
- [Neovim + blink.nvim](doc/nvim-with-blink.md)
- [Vim + coc.nvim](doc/vim.md)
- [Vscode](doc/vscode.md)
- [Helix](doc/helix.md)
Expand Down
57 changes: 57 additions & 0 deletions doc/nvim-with-blink.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,57 @@
# neovim + blink.cmp 配置示例

在此给出一些 `blink.cmp` 的相关配置注意事项(以 `blink.cmp v0.8.0` 为例):

## 开启 long_filter_text

`blink.cmp` 对于候选词的过滤比较严格,需要将 rime-ls 的 `long_filter_text` 配置设置为 `true`

## 修改默认的 LSP 过滤规则

`blink.cmp` 将 LSP 服务器提供的 Text 类型补全也过滤掉了,为了启用 rime-ls,需要修改相关配置:

```lua
sources = {
-- ...
providers = {
lsp = {
transform_items = function(_, items) return items end
}
},
-- ...
},

```

## 还原输入法体验

### 数字键直接上屏

可以通过 `blink.cmp` 提供的事件接口实现:

```lua
-- if the last character is a number (and its previous one is not),
-- and the only completion item is provided by rime-ls, accept it
require('blink.cmp.completion.list').show_emitter:on(function(event)
local items = event.items
if #items ~= 1 then return end
local line = event.context.line
local col = vim.fn.col('.') - 1
if line:sub(col - 1, col):match("%a%d") == nil then return end
local item = items[1]
local client = vim.lsp.get_client_by_id(item.client_id)
if (not client) or client.name ~= "rime_ls" then return end
require('blink.cmp').accept({ index = 1 })
end)

```

### 空格补全

作者本人习惯把 rime-ls 视为一个普通的补全来源,还是用默认的补全快捷键。

`blink.cmp` 也支持自定义 keymap,按下时执行自定义的函数,因此空格补全也是能做到的。

### 其他

TODO
21 changes: 20 additions & 1 deletion doc/nvim-with-cmp.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,26 @@
# neovim + nvim-cmp 配置示例

作者目前没有实现官方 neovim 插件,建议根据实际使用情况自行配置。

以 neovim + nvim-cmp 为例,下面给出一些可行的配置方法 (需填入正确的程序路径和 rime 需要的目录)。

- [neovim + nvim-cmp 配置示例](#neovim--nvim-cmp-配置示例)
- [初始化 rime-ls](#初始化-rime-ls)
- [为每个 buffer 开启一个 lsp server (不推荐)](#为每个-buffer-开启一个-lsp-server-不推荐)
- [基于 lspconfig 的全局 LSP 状态](#基于-lspconfig-的全局-lsp-状态)
- [按需调整 cmp 的排序](#按需调整-cmp-的排序)
- [状态栏显示](#状态栏显示)
- [特定 buffer 无法使用问题](#特定-buffer-无法使用问题)
- [通过 TCP 远程使用](#通过-tcp-远程使用)
- [还原输入法体验](#还原输入法体验)
- [选词功能](#选词功能)
- [中文标点](#中文标点)
- [输入过快补全列表消失](#输入过快补全列表消失)
- [五笔或者双形用户](#五笔或者双形用户)
- [顶字上屏](#顶字上屏)
- [完整配置](#完整配置)
- [使用其他用户开发的插件](#使用其他用户开发的插件)

# 初始化 rime-ls

## 为每个 buffer 开启一个 lsp server (不推荐)
Expand Down Expand Up @@ -421,7 +440,7 @@ end
(例如 `auto-pairs` 绑定 `<space>` 来在括号中插入两个空格),或者你自己绑定了一些功能,
如果你想同时保留两部分功能,你可以参考 <a href="#upload-word">选词功能</a> 部分的配置。

## <a id="upload-word"选词功能</a>
## <a id="upload-word">选词功能</a>

相关 issue :[用数字选词以后还需要一次空格才能上屏幕](https://github.com/wlh320/rime-ls/issues/20)

Expand Down

0 comments on commit 77bae01

Please sign in to comment.