Open 416207298 opened 1 year ago
如果说的是补全后删掉,从之前的起始位置重新输入相同的拼音,发现不能触发补全,这个确实是这个版本引入的已知 bug,是我在判断输入状态时有些问题,我会尝试在下个版本修复。
可以试一下 Release v0.2.1 或者编译最新的 master 。我这边没有复现不能再次触发的问题。如果还是存在问题,提供下环境信息,比如编辑器,补全插件,配置等
可能是我没有表达清楚,我录了一段gif,是更新到 Release v0.2.1 之后的;
环境是:ubuntu20.04,运行在WSL2 编辑器:nvim0.9.0 补全插件:coc coc配置:
"languageserver": {
"clangd": {
"command": "clangd",
"rootPatterns": [
"compile_flags.txt",
"compile_commands.json",
".git"
],
"filetypes": [
"c",
"cc",
"cpp",
"c++",
"objc",
"objcpp",
"h",
"hpp"
]
},
"rime-ls": {
"command": "/usr/local/bin/rime_ls",
"filetypes": [
"text",
"md"
],
"initializationOptions": {
"enabled": true,
"shared_data_dir": "/usr/share/rime-data", // rime 公共目录
"user_data_dir": "~/.local/share/rime-ls", // 指定用户目录,最好新建一个
"log_dir": "~/.local/share/rime-ls", // 日志目录
"max_candidates": 9, // [v0.2.0 后不再有用] 与 rime 的候选数量配置最好保持一致
"trigger_characters": [], // 为空表示全局开启
"schema_trigger_character": "&" // [since v0.2.0] 当输入此字符串时请求补全会触发 “方案选单”
}
}
},
.......
收到,我再确认下。之前也许是我自己对 coc 做的其他配置导致没有复现这个问题。
我没有完全一样的环境,试了一下 WSL2 + kali 和直接安装的 Ubuntu 20.04,都是 neovim nightly ,用的是 coc.nvim 的推荐配置,还是没有复现出来。我推测原因是 coc.nvim 的某些配置项或者其他插件会对补全的触发条件有影响,如果方便的话你可以通过修改自己的 nvim 配置尝试下
好的,那我用minimal配置调试一下。
我在init.vim
里只配置了Plugin coc和官方的coc配置,还是无法连续补全。
这个问题确实比较棘手,我找了一台机器装了个 WSL2,还是没能复现这个问题。
记录了一下我的复现过程: https://gist.github.com/wlh320/d33391bb9fef0e2ce97f58726e70323b
我猜测可能是依赖的这些插件、软件等在某些特殊版本的组合下会触发这个问题。
用emacs 29.1 company
+ eglot
是一样的现象,另外发现在 3748398e72a629184d30dadb3618c9657213da64 之后,逗号(,
)强制触发补全自动选择第一个,其他的候选字没有了,但是 3748398e72a629184d30dadb3618c9657213da64 之前的版本都可以显示。
(use-package company
:hook
(after-init . global-company-mode)
:custom
(company-minimum-prefix-length 1)
(company-tooltip-align-annotations t)
(company-selection-wrap-around t)
(company-show-quick-access t))
(use-package eglot :hook (text-mode . eglot-ensure) :config (add-to-list 'eglot-server-programs `(text-mode . ("/path/to/rime-ls/target/debug/rime_ls"))))
[Screencast from 2023-12-30 22-36-21.webm](https://github.com/wlh320/rime-ls/assets/15247421/b43d1287-6f93-4638-aa79-a36406b74355)
另外, emacs 用户可以尝试下 https://github.com/DogLooksGood/emacs-rime ,毕竟 rime-ls 用的是 LSP ,还是会有一定的局限性,比如第一个问题我猜就是因为 LSP 是为了代码补全设计,所以很多编辑器在实现时不会把紧跟中文的英文当作可以补全的对象。
最近的更新对 helix,zed,Qt creator 都做了适配。目前这几个编辑器通过 rime-ls 新加的额外配置项都可以正常连续输入了。
上面几个编辑器都是因为补全边界判断导致的,我不清楚 emacs 这边是什么情况,有可能是一样的原因。如果愿意可以再试试
补全了一次后,直接输入就不再能触发补全了,需要输入一个“空格”之后才可以。