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

大神,我怎么以启动就卡死了。 就一条message 在加载librime-emacs.so 然后卡死不动。 使用的最低配置 debian apt install librime-dev melpa install emacs-rime emacs-version 27.1 ./configure --with-module 本地 ibus-rime

对于喜欢瘦字体的用户来说,默认的 candidate_format 可能有些宽了

把函数覆盖之后解决了个人问题,还是希望官方可以支持自定义 :stuck_out_tongue_winking_eye:


卡死?是可以 C-g 几次出来的那种还是中断不了的?

c-g 出不来。之间卡死,只能kill 。应该是lib的问题。我重新换了个机器没问题了。回头去公司重新编译一个lib试试。

另外,怎么启动了emacs-rime 调用的还是系统的rime呢?怎么切换?

rime 是 cs 架构,是 librime 加一个前端,ibus-rime 或 emacs-rime 都是前端

在emacs 中使用的还是ibus-rime。怎么使用emacs-rime呢? 不知道怎么切换

Emacs 中有一个自己的输入法接口,emacs-rime 是基于这个来做的。所以你首先需要弄明白 emacs 的输入法怎么使用才可以。默认的切换按键是 C-\

@DogLooksGood 我这边emacs-rime 在中文下没法使用Ace-jump,请问下有办法设置吗? 我是用一个快捷键s-j激活Awesome-tab 的ace-jump,然后按字母。但是输入法还是中文状态,没法激活。

可以加个hook,切换时自动换成英文

:+1:感谢猫哥,加hook也算是一个临时方案了。
这个功能用的不算很多,只是有时开的buffer有点多的时候会用Ace-jump比较方便。

你帮我提个issue吧,明天我有空加一下。

多谢 :grin: 刚给 awesome-tab 提了这个issue

新加了一个 awesome-tab-ace-jump-hook

1 个赞

:+1:更新了hook,在中文状态下使用 awesome-tab-ace-jump时自动切换到英文。可以正常工作了。

修复了一个新出现的不能顶屏的 Bug。

加入了一个新的断言, rime-predicate-in-code-string-p ,在代码的字符串中。 主要考虑常有字符串用英文,注释用中文的情况。

这种情况下要在字符串中使用中文的话就需要 rime-force-enable 这个命令,个人绑定在了 M-j

2 个赞

@DogLooksGood 大神看看这个问题?

Debugger entered--Lisp error: (void-function home)
  home(65360)
  rime-send-keybinding()
  funcall-interactively(rime-send-keybinding)
  call-interactively(rime-send-keybinding nil nil)
  #f(compiled-function (cmd &optional record-flag keys special) "Execute CMD as an editor command.\nCMD must be a symbol that satisfies the `commandp' predicate.\nOptional second arg RECORD-FLAG non-nil\nmeans unconditionally put this command in the variable `command-history'.\nOtherwise, that is done only if an arg is read using the minibuffer.\nThe argument KEYS specifies the value to use instead of (this-command-keys)\nwhen reading the arguments; if it is nil, (this-command-keys) is used.\nThe argument SPECIAL, if non-nil, means that this command is executing\na special event, so ignore the prefix argument and don't clear it." #<bytecode 0x4345e62b>)(rime-send-keybinding nil nil nil)
  ad-Advice-command-execute(#f(compiled-function (cmd &optional record-flag keys special) "Execute CMD as an editor command.\nCMD must be a symbol that satisfies the `commandp' predicate.\nOptional second arg RECORD-FLAG non-nil\nmeans unconditionally put this command in the variable `command-history'.\nOtherwise, that is done only if an arg is read using the minibuffer.\nThe argument KEYS specifies the value to use instead of (this-command-keys)\nwhen reading the arguments; if it is nil, (this-command-keys) is used.\nThe argument SPECIAL, if non-nil, means that this command is executing\na special event, so ignore the prefix argument and don't clear it." #<bytecode 0x4345e62b>) rime-send-keybinding)
  apply(ad-Advice-command-execute #f(compiled-function (cmd &optional record-flag keys special) "Execute CMD as an editor command.\nCMD must be a symbol that satisfies the `commandp' predicate.\nOptional second arg RECORD-FLAG non-nil\nmeans unconditionally put this command in the variable `command-history'.\nOtherwise, that is done only if an arg is read using the minibuffer.\nThe argument KEYS specifies the value to use instead of (this-command-keys)\nwhen reading the arguments; if it is nil, (this-command-keys) is used.\nThe argument SPECIAL, if non-nil, means that this command is executing\na special event, so ignore the prefix argument and don't clear it." #<bytecode 0x4345e62b>) rime-send-keybinding)
  command-execute(rime-send-keybinding)
(case key-raw
  (home #xff50)
  (left #xff51)
  (up #xff52)
  (right #xff53)
  (down #xff54)
  (prior #xff55)
  (next #xff56)
  (delete #xffff)
  (t key-raw))

看起来是这里的问题,但是我这里好像没有错啊

我知道了,我用的emacs-mac,多半key不一样了

Update: 如果注释掉 home那行就没问题了。

这是 case 这个 macro 实现不同?

不清楚,该怎么查当前系统的key raw呢?有home为什么没有end?

Update: 今天调试了下,发现一个奇怪的现象:加载后如果再eval rime-send-keybinding 一次就没有问题了。