欢迎尝试 emacs-rime,计划中功能已全部完成。

有个同学专门做过相关的研究,不过后来没有整理成脚本,所以没有包含到 liberime 中

啊?就是说必须要从 msys2 再编译一个吗。好吧,不太了解 windows 上面这些。

这样的话,我在msys2再编译一个librime应该可行。

恩,依赖都安装过了,直接make应该就可以了

emacs目前还需要自己的输入法框架/接口的一个原因是:一些平台,比如Linux上的输入法表现很糟糕,而且经常有变动。

比如搜狗输入法出现过在Emacs中输入乱码的情况;ibus输入法早期需要使用扩展包才能在Emacs中输入,后来一度出现在Emacs中输入无法光标跟随;最近一年左右,ibus在直接启动的Emacs中可以正常输入,但是在daemon-client模式启动的Emacs中正常的设置无法激活,需要在systemd管理的Emacs服务文件中单独添加环境变量才能正常,然而,这是需要管理员权限才能执行的操作,如果一台电脑有多人使用,此举并不安全。至于fcitx,虽然最近几年和Emacs之间没有闹过什么大毛病,但是它和Gnome桌面有兼容性问题,最典型的就是搜索框中无法输入,不确定这个问题现在是否被修正,如果这个问题仍然存在,那么对于Gnome用户而言,为了一个软件的正常使用,而忍受其他一些软件的不正常,显然也不是很好的体验。

另外的原因是可以充分自定义,实现一些某些情况下更方便的操作。

提了一个issue,关于同步的说明及可能的问题。

1 个赞

win10 wsl下编译如下:

➜  rime git:(bdab9d1) ✗ make lib
gcc lib.c -o librime-emacs.so -fPIC -O2 -Wall -shared -lrime
lib.c: In function ‘inline_ascii’:
lib.c:369:18: error: ‘RimeApi {aka struct rime_api_t}’ has no member named ‘user_config_open’; did you mean ‘config_open’?
   if(!rime->api->user_config_open("build/default.yaml", conf)) {
                  ^~~~~~~~~~~~~~~~
                  config_open
Makefile:29: recipe for target 'lib' failed
make: *** [lib] Error 1

安提示修改后可以编译

diff --git a/lib.c b/lib.c
index d1f26b7..3cf1292 100644
--- a/lib.c
+++ b/lib.c
@@ -366,7 +366,7 @@ inline_ascii(emacs_env *env, ptrdiff_t nargs, emacs_value *args, void *data) {

   RimeConfig *conf = malloc(sizeof(RimeConfig));

-  if(!rime->api->user_config_open("build/default.yaml", conf)) {
+  if(!rime->api->config_open("build/default.yaml", conf)) {
     free(conf);
     return nil;
   }
(END)

继续设置

      (setq rime--module-path "~/.emacs.d/.cache/quelpa/build/rime/librime-emacs.so")

嗯,可以用起来了

很可能和使用的 librime 的版本有关,当前的版本是有的

可能是版本的关系:

➜  ~ apt-cache show librime-dev
Package: librime-dev
Architecture: amd64
Version: 1.2.9+dfsg2-1
Priority: extra
Section: universe/libdevel
Source: librime
Origin: Ubuntu

http://mirrors.163.com/ubuntu/pool/universe/libr/librime/ 有人发了这个链接,这里面的不是在源里面么?我自己 docker 试 ubuntu 也是 1.2.9,是不是要添加这个网易的源。

添加了一些功能的文档。

C_INCLUDE_PATH=/Users/bob/.emacs.d/librime/dist//include/ gcc lib.c -o librime-emacs.so/ -fPIC -O2 -Wall -L /Users/bob/.emacs.d/librime/dist//lib/ -Wl,-rpath /Users/bob/.emacs.d/librime/dist//lib/ -lrime
Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [lib] Error 1

更新了下代码,Mac 下报这个错

已经提了个pr修复了啊,看起来你的 rime.el 没有更新的样子

昨天晚上可以用,后来更新了下就不行了,代码是最新的,感觉是最近几个提交引入的…

有人搞定了Emacs-rime 在Windows 10 下使用吗?

你看一下 rime.el 里第 753 行附近有没有用到 file-name-as-directory 函数

似乎你的pr加的/引入了这个问题?

我 pr 是取掉这个函数的,我在 mac 和 arch 里都测试过了啊

对了,你的 rime.el 是不是编译成 .elc 了?