每个输入前都会自动加一个字符,有没有人遇到过?

第一次打开 Emacs 的时候,会自动变成中文。

我就是 m1 的 macOS,第二条可以去掉了

会出现吗?M1是公司发的,那可能表示我在公司摸鱼的时间多 :grinning:

  1. x86 和 arm macOS都会出现。
  2. 只使用系统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 都没法输入中文了。:sweat:

现在主要用 apple 自带的拼音,好处是可以和手机同步词条。

输入中文没有任何问题啊,我没遇到过。就是这个连击很闹心,只能重启Emacs才能解决。估计底层API有bug

这个不知道应该向鼠须管(rime)还是向 Emacs 反馈问题。

我用搜狗拼音,Emacs 29 最新,照样频繁出现,回退到 27 版本才行。

29 有可能,bug比较多。我现在用28,非gccemacs,半个月了没出现一次连击。

我也试了下Emacs 28 加搜狗拼音的组合,bug 很快就能重现,看起来不是输入法的问题。(注:我用的 spacemas)

Mac emacs28 系统自动输入法 我是在用了sis包后出现这种bug 之前用都没问题

今天又出现了,尝试了

(unload-feature 'rime)
(unload-feature 'posframe)

问题还是依旧,lldb 看了下 Rime 相关线程还在,估计需要把 Rime 的 dynamic module 卸载掉,但 emacs 现在又没有 unload dynamic module 的功能,so 只能重启了。。。