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

(defun rime-sync ()
  "Sync Rime user data."
  (interactive)
  (if (not rime--lib-loaded)
      (error "You should enable rime before deploy")
     (rime-lib-sync-user-data)
     (rime-deploy)))
  emacs_defun(env, rime, sync_user_data, "rime-lib-sync-user-data", "Sync user data.", 0, 0);

不太可行,这个是调用外部函数的样子。

似乎是不太可能。

emacs-rime还是很好用的。惟一不方便的场景就是中英文混输时,如果需要连续输入两个英文单词时,第2个单词不太好输入。请问这个有什么最佳实践吗?比方说,输入“中文 make a test 测试” 这种。

我的配置

  (setq rime-disable-predicates
      '(rime-predicate-evil-mode-p
        rime-predicate-ace-window-p
        rime-predicate-hydra-p
        +rime-predicate-button-at-point-p
        ;;rime-predicate-after-ascii-char-p
        rime-predicate-after-alphabet-char-p
        rime-predicate-prog-in-code-p
        rime-predicate-punctuation-after-space-cc-p
        rime-predicate-punctuation-after-ascii-p
        rime-predicate-auto-english-p
        ))

inline模式啊

有什么推荐的inline配置吗?

(leaf rime
  :defvar rime-disable-predicates rime-inline-predicates
  :bind (:rime-mode-map
	 ("M-j" . rime-force-enable))
  :custom ((rime-user-data-dir . "~/.config/ibus/rime")
	   (default-input-method . "rime")
	   (rime-show-candidate . nil))
  :config
  (setq rime-disable-predicates '(meow-normal-mode-p
				  meow-motion-mode-p
				  meow-keypad-mode-p
				  rime-predicate-prog-in-code-p
				  rime-predicate-after-alphabet-char-p))
  (setq rime-inline-predicates '(rime-predicate-space-after-cc-p
				 rime-predicate-current-uppercase-letter-p)))

(add-hook 'org-mode-hook (lambda () (set-input-method "rime")))

这是我的配置。

@DogLooksGood 请教下狗哥windows 下加载不了模块是什么情况? emacs和环境是用scoop安装的,

scoop bucket add extras
scoop install git emacs ripgrep fd llvm

scoop install gcc
scoop bucket add wsw0108 https://github.com/wsw0108/scoop-bucket.git
scoop install librime

rime-compile-module Compile succeed! 正常,在编译目录下能正常找到生成的 librime-emacs.dll,但是切换输入法时加载失败。

手工加载模块(module-load "c:/Users/driftcrow/.emacs.d/.local/straight/build-27.2/rime/librime-emacs.dll") 显示(我使用的是doom-emacs 路径):

forward-sexp: Module could not be opened: "c:/Users/driftcrow/.emacs.d/.local/straight/build-27.2/rime/librime-emacs.dll", "ÕÒ²»µ½Ö¸¶¨µÄÄ£¿é¡£"

乱码解码后是: 找不到指定的模块。

https://github.com/DogLooksGood/emacs-rime/issues/64 中办法将librime的几个依赖dll 拷贝到 librime-emacs.dll 的同目录下错误信息依旧。

我并没有在 windows 上用的经验,大概帮不上忙,你需要等看有没有其它使用 windows 的人了。。

建议你通过 msys2 安装。我之前也试过 scoop的安装方式,折腾了很久没搞定。

@aqua0210 @DogLooksGood 好的,谢谢 :handshake:。下周上班再去Windows 上折腾MSYS2去,周末在家用的MAC上已经折腾好了 :grinning:

果然还是 MSYS2 好用些 ,直接按狗哥的说明 就 成功了,还有你给的链接说明 更详细些 :handshake:

@DogLooksGood 狗哥,感兴趣用 PopWeb 给emacs-rime写一个前端不?用 Popweb 有几个好处:

  1. Popweb本身自带窗口阴影,不用靠颜色对比来实现区域划分,这样整体背景色可以和Emacs保持一致
  2. Popweb内部用JavaScript或Qt来绘制,很好的控制窗口内 margin
  3. 甚至可以直接让用户自定义窗口内背景,实现输入法皮肤自定义的功能

Popweb本身的性能非常好,界面定制能力很强,如果能实现对rime的前端,表现力会比现在 frame 的效果要好很多。

1 个赞

最近稍微有点忙,等有时间了就搞。听起来不错的。

1 个赞

关于字体显示的问题,可以通过下面的设置,就可以正常显示 Emoji 和 HanaMin字体了。

(cl-loop for font in '("Segoe UI Emoji" "Apple Color Emoji" "Noto Color Emoji")
             when (find-font (font-spec :name font))
             return (set-fontset-font t 'unicode font nil 'append))

(dolist (font '("HanaMinA" "HanaMinB"))
  (when (find-font (font-spec :name font))
    (set-fontset-font t 'unicode font nil 'append)))

这是目前的我使用的字体设置

image

不知道 Windows Emacs 啥时候支持彩色 Emoji

rime可以通过lua获取当前时间的功能,即输入orq会输出当前日期,但是我在emacs里面用emacs-rime,输入org的话仍然显示org,请问在emacs里面可以实现这样的功能吗? 录制_2022_04_21_16_15_45_732

这个跟 emacs-rime 没关系,可能是你安装的 librime 没有支持 lua。你自己编译的话,需要加入lua插件支持。小狼豪默认是支持 lua 的,所以你可以看到日期。

不过我觉得在 Emacs 中插入日期有很多更好的方式,根本不需要用到输入法来输入。 我是用 Yasnippet ,只要在当前buffer 输入 dd 然后回车就搞定了,比如输入法方便多了,不管什么输入法都可以用。

想问一下emacs-rime与key-chord协作的问题,比如我把jk绑定给了evil-normal-state,但是在emacs-rime开启的情况下,jk会进入输入法而不是退出insert state,有没有什么好的解决方案?

"请教一下怎么修改 candidate 的数量,默认为5,我想改成9,谢谢~

这是关于 Rime 的问题,不是 emacs-rime 控制的。修改 default.custom.yaml 文件中的下面字段的值即可

patch:
  menu/page_size: 9

可以了!谢谢!从 fcitx-pinyin 转过来的,emacs-rime 确实好用。