今天Gentoo上试了试emacs-rime,说一下遇到的问题

比pyim快,但是迁移起来没pyim好,因为必须依赖外部的librime

速度根本感觉不到延迟,速度就和我用fcitx-rime差不多。

第一次切换到rime输入法的时候会进行编译,

但是编译的时候遇到了问题,它找不到emacs-module.h

我是gentoo跑emacs

find /usr/include -name 'emacs-module.h'
输出:
/usr/include/emacs-26/emacs-module.h

看了看lib.c的源码应该改成这样再编译:

23c23
> #include <emacs-26/emacs-module.h>
---
< #include <emacs-module.h>

然后重新编译就通过了。

1 个赞

那是因为你安装emacs的时候prefix指定的关系吧

Gentoo 的 emacs ebuild:

227     econf \
228         --program-suffix="-${EMACS_SUFFIX}" \
229         --includedir="${EPREFIX}"/usr/include/${EMACS_SUFFIX} \
230         --infodir="${EPREFIX}"/usr/share/info/${EMACS_SUFFIX} \
231         --localstatedir="${EPREFIX}"/var \
232         --enable-locallisppath="${EPREFIX}/etc/emacs:${EPREFIX}${SITELISP}" \

是EMACS_SUFFIX在起作用

我遇到同样的问题。最后做了个链接。

emacs-module 这个文件确实是一个问题,这个文件好像是在 ./configure 的时候生成的。

在不同的发行版上,这个文件的位置有所不同。

只能通过用户手动解决了,emacs也没有提供pkg-config 什么的

作者被 arch 惯坏了,最开始的版本就一个 gcc 直接编译,啥都能找到。 :no_mouth:

arch的包管理只安一个版本的Emacs 当然没有问题了。

Gentoo 提供了安多个版本Emacs的方法才放在非标准目录的.

事实上大多数发行都是Arch那种标准目录的。

我一般就是工具应用 emacs, urxvt, inkscape, firefox 之类的只装一套,其它的东西都是 docker。

可以试试设置rime-emacs-module-header-root

(when (string-match-p "gentoo" operating-system-release)
  (setq rime-emacs-module-header-root
        (concat "/usr/include/emacs-"
                (number-to-string emacs-major-version)
                (when (string-match-p "0.50" emacs-version)
                  "-vcs"))))
1 个赞

今天在这个问题上浪费了不少时间,最后在编译的librime/build下创建了include,把emacs-module.h丢进去才解决的。可以把这个issue加到项目描述里去,免得再有像我这样的小白走弯路