wlh320 / rime-ls

A language server for Rime input method engine 通过 LSP 代码补全使用 Rime 输入法
BSD 3-Clause "New" or "Revised" License
198 stars 13 forks source link

Add Ubuntu CI #9

Closed eagleoflqj closed 1 year ago

eagleoflqj commented 1 year ago

你好,我对rime-ls十分感兴趣,想探索能否结合wasm做成一个跨平台的vscode扩展 我对rust、lsp、VSCode扩展完全不了解,对librime和wasm略知一二,现有项目https://github.com/LibreService/my_rime 交个PR,交个朋友😄

eagleoflqj commented 1 year ago

我的fork的CI结果:https://github.com/eagleoflqj/rime-ls/actions/runs/5227713723

wlh320 commented 1 year ago

你好,谢谢!我看到过你的在浏览器使用 rime 的项目,很酷。

我对 wasm 的了解不多,我觉得把 rime-ls 编译到 wasm 应该有一定的可行性。目前我看有下面三个问题需要解决:

  1. librime,参考你的项目应该是能够把它编译到 wasm 的。但如何在 rust 里调用还需要调研一下。我在项目里面用到的 rime 作者写的 librime 的 rust 包装库应该是不能直接支持这种情况。
  2. tower-lsp,这是 rust 里一个比较流行的 lsp 的库。我本来以为它是和 tokio 强相关所以不能 wasm 的,刚看了下他提供了一个 wasm 的 demo,所以这块也是有可能实现的,不过也需要大量调研看看怎么使用。
  3. 项目里的其他依赖我不清楚是否提供了 wasm 的支持,比如有些文件系统相关的库,这个也需要尝试下。

VSCode 插件的机制我也了解得不多,我之前尝试写过一个插件的 demo 只证明了能用,但使用体验这块还需要很大的优化。比如对候选菜单的个性化处理,配置项,以及像其他 lsp 插件那样自动下载 lsp server 的文件,这些机制我都不太清楚。如果你对这方面有兴趣,我认为还是需要优先实现一个使用本地 rime-ls 二进制的插件,后续再考虑全 wasm 的版本。

eagleoflqj commented 1 year ago

我认为还是需要优先实现一个使用本地 rime-ls 二进制的插件,后续再考虑全 wasm 的版本

同意,先搞定vscode再考虑wasm rust(说不定发现跨平台是个伪需求),不一口气搞两个未知领域

wlh320 commented 1 year ago

GitHub 的 CI/CD 这块我也不太熟悉。这个 CI 的作用是每次 push 之后检查下能不能正常编译吗?

我的经验仅限于之前在别的项目里搞过发版本自动编译 Release。这个项目有额外的依赖,感觉调试 workflows 太麻烦了,这次就没弄,都是在我自己电脑上编译的。

eagleoflqj commented 1 year ago

这个 CI 的作用是每次 push 之后检查下能不能正常编译吗

是的,完整的流程还应该在编译之前做lint,之后做test,但我对rust的了解为0,就只写了最基本/重要的编译部分了。 GitHub Actions可以作为一个source of truth,省去很多“为什么我编译不了”的问题。 既然支持macOS和Windows的编译那最好把它们的CI也加上(当然这是后话了)。 作为一个严肃项目(可能你不这么想233),构建的CI是标配,也方便PR的review。我是觉得不标准化就可惜了。

wlh320 commented 1 year ago

好的,感谢。我合一下这个 PR,先有一个基本的 CI。这个项目其实最近的开发比较停滞,我自己需要的功能基本都开发完了,而且最近的业余时间也不太多。后续开发有需要时我再研究下,在发下个版本时让 CI/CD 更完善些。

eagleoflqj commented 1 year ago

这个项目其实最近的开发比较停滞

没关系的,你更得太勤了反而不好跟进😂

主页看到CI绿勾了,爽!