第一次打开 Emacs 的时候,会自动变成中文。
我就是 m1 的 macOS,第二条可以去掉了
会出现吗?M1是公司发的,那可能表示我在公司摸鱼的时间多 。
- x86 和 arm macOS都会出现。
- 只使用系统Rime也会出现。
我是这样配置 sis 的,不会出现第一次打开 Emacs 自动变成中文的情况。
(use-package sis
:config
;; For MacOS
(when *sys/mac*
(setq sis-english-source "com.apple.keylayout.ABC")
(setq sis-other-source "im.rime.inputmethod.Squirrel.Rime"))
(when *sys/wsl*
(setq sis-english-source "1033")
(setq sis-other-source "2052")
(setq sis-do-get (lambda ()
(sis--ensure-dir
(string-trim (shell-command-to-string "im-select.exe")))))
(setq sis-do-set (lambda(source)
(sis--ensure-dir
(call-process "/bin/bash" nil t nil "-c" (concat "im-select.exe " source)))))
(setq sis-external-ism "im-select.exe"))
(add-hook 'focus-out-hook #'sis-set-other)
(add-hook 'focus-in-hook #'sis-set-english)
;; (sis-global-respect-mode t)
;; enable the /context/ mode for all buffers
(sis-global-context-mode t)
;; enable the /inline english/ mode for all buffers
(sis-global-inline-mode t)
)
那是因为你加了这两个 hook。这个我之前也试过,这会有一个问题,你的切换焦点的时候就会更改 Emacs 输入法的状态,在其他程序切换到 Emacs 时就永远是英文了。
我希望的效果是:如果我将当前 buffer切换为中文后,切换到其他程序,再切换回来,我的 buffer 还是中文。只有在我重启Emacs 的时候,才会强制切换到英文。所以我才会需要 hammerspoon 来解决。
也许这样就可以:
(add-hook 'after-init-hook #'sis-set-english)
Rime 和 emacs-rime 用户,之前用 doom-emacs 时候偶尔遇到,后来自己撸(抄)了一个简单的配置,没发生过了。
我以前有个基本复现的方法,就是刚打开 emacs 后疯狂的 c-p, c-n 然后有时候会突然卡一下,之后输入就会出问题。
感觉在跑的慢的电脑上更容易复现(说的就是你,公司发的丐中丐 mbp!)
之后用二分法,去掉了 vertico-posframe 没有问题了。
如果用 rime 也有问题的话可能也是 posframe 的问题,但是我自己 rime 是输出到了 minibuffer 所以没有影响。
我换了 emacs-rime(非系统rime) 以后再也没有出现过
确认是Rime和Emacs冲突所致。用了搜狗拼音一周了,一次也没出现过。。。
你说的 Rime 是指 emacs-rime 中的 Rime 还是 鼠须管中的 rime?
我使用的系统Rime
这个输入法在 Emacs 中兼容性是差点。我的系统 rime 现在在 Emacs 都没法输入中文了。
现在主要用 apple 自带的拼音,好处是可以和手机同步词条。
输入中文没有任何问题啊,我没遇到过。就是这个连击很闹心,只能重启Emacs才能解决。估计底层API有bug
这个不知道应该向鼠须管(rime)还是向 Emacs 反馈问题。
我用搜狗拼音,Emacs 29 最新,照样频繁出现,回退到 27 版本才行。
29 有可能,bug比较多。我现在用28,非gccemacs,半个月了没出现一次连击。
我也试了下Emacs 28 加搜狗拼音的组合,bug 很快就能重现,看起来不是输入法的问题。(注:我用的 spacemas)
今天又出现了,尝试了
(unload-feature 'rime)
(unload-feature 'posframe)
问题还是依旧,lldb 看了下 Rime 相关线程还在,估计需要把 Rime 的 dynamic module 卸载掉,但 emacs 现在又没有 unload dynamic module 的功能,so 只能重启了。。。