应用的版本是mingw编译的,win10,emacs29.05,doom。并且是用mingw来启动的。我也奇怪。
我用emacs gui直接启动就没有问题了……怀疑是mingw这个启动方式造成的,感谢回复。我为了用emacs rime ,好像必须要mingw启动。
用 emacs-rime 不需要 mingw 启动,只是你开始编译 emacs-rime.dll 的时候需要从 mingw启动。
wsl的话你把magick clipboard: “x.png” 改成magick.exe clipboard: “x.png” 本身其实就是调用imagemagick的命令而已。
貌似我没有编译emacs-rime.dll这步,我是完全按照官方的安装说明操作的,如果不用mingw启动,调出emacs-rime时会显示 Wrong type argument: stringp, nil 。每次都是这样。
有的,只是你没注意到。第一次启动 Emacs-rime 的以后会自动执行。或者手动执行M-x, rime-compile-module
。
你可以参考我的做法。只用 mingw 来编译 Emacs,不用它的包管理器来安装 Emacs。
十分感谢!我先好好研究一下。
我应该没有落下任何一个步骤,但是只要不是用mingw64来启动emacs,打开rime还是会提示wrong type argument stringp nill 这是debug信息:
Debugger entered--Lisp error: (wrong-type-argument stringp nil)
rime--load-dynamic-module()
rime-activate("rime")
activate-input-method("rime")
#<subr toggle-input-method>(nil 1)
ad-Advice-toggle-input-method(#<subr toggle-input-method> nil 1)
apply(ad-Advice-toggle-input-method #<subr toggle-input-method> (nil 1))
toggle-input-method(nil 1)
funcall-interactively(toggle-input-method nil 1)
command-execute(toggle-input-method)
#<subr completing-read-default>("[-] Switch to project: " ("~/org/" "~/.emacs.d/") nil nil nil nil nil nil)
apply((#<subr completing-read-default> "[-] Switch to project: " ("~/org/" "~/.emacs.d/") nil nil nil nil nil nil))
vertico--advice(#<subr completing-read-default> "[-] Switch to project: " ("~/org/" "~/.emacs.d/") nil nil nil nil nil nil)
apply(vertico--advice #<subr completing-read-default> ("[-] Switch to project: " ("~/org/" "~/.emacs.d/") nil nil nil nil nil nil))
completing-read-default("[-] Switch to project: " ("~/org/" "~/.emacs.d/") nil nil nil nil nil nil)
completing-read("[-] Switch to project: " ("~/org/" "~/.emacs.d/") nil nil nil)
projectile-completing-read("Switch to project: " ("~/org/" "~/.emacs.d/") :action #f(compiled-function (project) #<bytecode 0x6a490aafe8f5cc9>))
projectile-switch-project(nil)
funcall-interactively(projectile-switch-project nil)
call-interactively(projectile-switch-project)
(lambda (_) (call-interactively (or (command-remapping #'projectile-switch-project) #'projectile-switch-project)))(#<marker (moves after insertion) at 1763 in *doom*>)
button-activate(#<marker (moves after insertion) at 1763 in *doom*> t)
push-button(1755 t)
push-button((mouse-2 (#<window 3 on *doom*> 1755 (276 . 423) 1546359 nil 1755 (32 . 26) nil (2 . 18) (0 . 0))))
funcall-interactively(push-button (mouse-2 (#<window 3 on *doom*> 1755 (276 . 423) 1546359 nil 1755 (32 . 26) nil (2 . 18) (0 . 0))))
command-execute(push-button)
你的 emacs-rime 安装目录下已经生成 librime-emacs.dll 这个文件了吗?
还有你的 Emacs 是如何安装的,用的什么版本?
把你自己的Emacs 路径加入到 mingw 的 .bashrc ? 下面的路径改为自己的安装路径即可。
export PATH="/D/Dev_Tools/emacs28-nativecomp/bin:$PATH"
然后你在 mingw 的终端执行 emacs --version
和 which emacs
看看,是否识别到了你安装的 Emacs。
第一次还是要从 mingw 环境启动 emacs,然后在 Emacs 中执行 M-x rime-compile-module。如果成功了,重启 Emacs(这时不需要从 Mingw 启动了),就可以正常使用了。
GNU Emacs 29.0.50 Development version 05c4e7bfbdc5 on master branch; build date 2022-08-1 这是emacs版本,我是用mingw64编译的,这个path我应该没有加,但是如果不正确的话,应该不能从mingw64启动emacs,也不会能够正常使用emacs-rime吧。compile我又手动做了一次,显示成功的。我是用的doom emacs,rime安装路径应该是.local/straight/repos/emacs-rime这里面吧,确实没有dll的文件。配置文件是.local/cache/rime。目前用mingw64启动的emacs是能够配置和正常使用rime的。
我没用过 doom,你已经能正常用 emacs-rime了,应该已经成功编译 dll了。