有空再研究下,windows的emacs就是msys2编译出来的,完全可以使用msys2编译的动链库。
librime 官方有提供 win 版的 release 下载,下载下来以后应该直接就可以编译 librime-emacs.dll 出来。如果是互通的
我听说 librime 是通过 vs 编译出来的。。。。
有个同学专门做过相关的研究,不过后来没有整理成脚本,所以没有包含到 liberime 中
啊?就是说必须要从 msys2 再编译一个吗。好吧,不太了解 windows 上面这些。
这样的话,我在msys2再编译一个librime应该可行。
恩,依赖都安装过了,直接make应该就可以了
emacs目前还需要自己的输入法框架/接口的一个原因是:一些平台,比如Linux上的输入法表现很糟糕,而且经常有变动。
比如搜狗输入法出现过在Emacs中输入乱码的情况;ibus输入法早期需要使用扩展包才能在Emacs中输入,后来一度出现在Emacs中输入无法光标跟随;最近一年左右,ibus在直接启动的Emacs中可以正常输入,但是在daemon-client模式启动的Emacs中正常的设置无法激活,需要在systemd管理的Emacs服务文件中单独添加环境变量才能正常,然而,这是需要管理员权限才能执行的操作,如果一台电脑有多人使用,此举并不安全。至于fcitx,虽然最近几年和Emacs之间没有闹过什么大毛病,但是它和Gnome桌面有兼容性问题,最典型的就是搜索框中无法输入,不确定这个问题现在是否被修正,如果这个问题仍然存在,那么对于Gnome用户而言,为了一个软件的正常使用,而忍受其他一些软件的不正常,显然也不是很好的体验。
另外的原因是可以充分自定义,实现一些某些情况下更方便的操作。
提了一个issue,关于同步的说明及可能的问题。
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
函数