不行,还是复现,insert 状态下手动(C-\)切换,esc 到 normal 状态还是 emacs-rime。
配置:
(use-package sis
:quelpa (sis :fetcher github :repo "laishulu/emacs-smart-input-source")
:hook ((after-init . sis-global-respect-mode)
(text-mode . sis-follow-context-mode)
(text-mode . sis-inline-mode))
:config
(sis-ism-lazyman-config nil "rime" 'native)
(setq-default sis-inline-tighten-head-rule 0
sis-inline-tighten-tail-rule 1))
Version: 20200727.2124
不过好像 normal 下 C-\ 切换到 emacs-rime 也不影响光标移动等使用。
ps 我知道了,你是不是又魔改了一种切换方式,貌似是没更新 doom modeline 的状态
goumao
852
并没有。
就是很直观的机制
下面是我的配置
(use-package! sis
:init
:config
(sis-ism-lazyman-config nil "chinese-cns-tsangchi" 'native)
(sis-global-respect-mode t)
(sis-global-inline-mode t)
(sis-global-follow-context-mode t)
(sis-global-cursor-color-mode t))
(global-set-key (kbd "C-x i") #'toggle-input-method)
对,我去看了下代码也没有,你用 doom modeline 没有这个问题么
goumao
854
我机子上没有emacs-rime
, 我用的emacs内置的chinese-cns-tsangchi
不知道这个是啥,我瞧瞧去。
这个冲突?
我看了下 current-input-method 的值,normal 下为 nil,应该是切换过来了。
但是 doom modeline 还是显示的 rime 图标,不知道哪里的问题,睡起来再看了
goumao
856
我看了下,doom 的modeline我开着呢。
- 你看下光标颜色改了么?
- 你看下如果布偶用rime,用我说的那个内置输入法,有没有这个问题?
==== 更新 ====
@Voleking
重现了,
我想起来了,
我看过evil相关的代码,
是evil做了一些magic
我看我这边能不能解决吧。
goumao
857
=== 更新 2 ===
我把evil这块的功能屏蔽了,
让sis来管
现在我这边测试,这块是没问题的。
emacle
858
进入 *About GNU Emacs*
buffer 不是默认英文
没有使用 evil 的 原生 Emacs
- 进入
*scratch*
buffer里,切换成中文输入法
- 按
C-h C-a
(对应命令about-emacs
),进入 *About GNU Emacs*
buffer
-
*About GNU Emacs*
buffer 输入法状态为中文!!!不是默认英文
- 在
*About GNU Emacs*
buffer 里按 C-h
v
时 也不正常
这个可能就是 C-h
按下后另一种边缘情况吧,C-h
C-a
跟 C-h
v
一样处理了,返回输入法状态了
goumao
859
这个是预期的行为,*
开头的buffer,除了*New
和*Scratch
开头的,都不做前缀处理。
当然,这块,用户可以自己定制。
谢谢你的详细步骤,我试试看能不能复现。
goumao
864
谢谢你的线索。
我刚才看了几个小时emacs自己的fancy-about-screen
的代码,也没看出原因。
回头看到这块,稍微不那么盲目了。
我这边也是在不断载入图片
emacle
865
原因找到了没?
我 修改 sis--preserve-post-command-handler
函数强制 about-emacs 命令后设置en成功,
但是if条件结束位置不同,会有不同影响
(defun sis--preserve-post-command-handler ()
"Handler for `post-command-hook' to preserve input source."
;; (setq this-command sis--real-this-command)
(when sis-log-mode
(message "post@[%s]: [%s]@key [%s]@cmd [%s]@buf [%s]@override."
sis--prefix-handle-stage
(this-command-keys)
sis--real-this-command
(current-buffer)
sis--prefix-override-map-enable))
(if (string= this-command "about-emacs")
(sis-set-english) ;; if 若在此处结束,就不能设置成en,貌似与下边代码冲突,会被下边代码覆盖?
(pcase sis--prefix-handle-stage
(; current is prefix stage
'prefix
(setq sis--prefix-handle-stage 'sequence))
(; current is sequence stage
'sequence
(cond
(; still in progress
(minibufferp)
(setq sis--prefix-handle-stage 'sequence))
(; key sequence is canceled
(not sis--real-this-command)
(when sis-log-mode (message "Key sequence canceled."))
(sis--to-normal-stage t))
(; end key sequence
t
(when sis-log-mode (message "Key sequence ended."))
(sis--to-normal-stage t))))
(; current is normal stage
'normal
(let ((restore (or (not (eq sis--buffer-before-command (current-buffer)))
(memq sis--real-this-command
sis-preserve-restore-triggers))))
(sis--to-normal-stage restore))))))
edit
好像也不行,会不会是因为 C-h
C-a
这个序列问题?
在中文状态下,C-h
时会进入英文,再按下C-a
时 会打开新about Gnu Emacs buffer,这时序列结束,导致在AboutGnu Emacs buffer输入法恢复成中文?
goumao
866
跟这个没关系。
你直接用M-:eval (fancy-about-screen)
,
问题是一样的。
问题在于这里:
(fancy-about-screen)
命令执行前后,
current-buffer
都是 a.txt
,
但之后就会变成 About GNU Emacs
,
我一直没找到什么语句让current buffer变了。
这些代码都和sis无关。
emacle
867
确实很奇怪,按下 C-h
C-e
这个序列,结果是正常的
C-h
C-a
这个序列确实挺特殊的
goumao
868
不是因为快捷键,你绑定到其它快捷键上也是一样的。
上一条回复我解释了。
你M-x
执行 about-emacs
,一样有问题。
如果新建一个文件,进入evil的insert模式,输入法此刻是英文的。我看readme中有sis-respect-start的默认值是英文的。如果我想进入insert模式输入法是中文的,需要怎么改啊?