自己定义这个变量:
(defvar sis-context-hooks
'(evil-insert-state-entry-hook)
"Hooks trigger the set of input source following context.")
自己定义这个变量:
(defvar sis-context-hooks
'(evil-insert-state-entry-hook)
"Hooks trigger the set of input source following context.")
emacs 原生模式也支持吗 ?
windows emacs daemon 启动会导致 crash 有人遇到过不?
使用github官网的配置
(sis-ism-lazyman-config "1033" "2052" 'im-select))
(sis-global-cursor-color-mode t) ; 不同语言输入法下光标颜色
;; enable the /respect/ mode
(setq sis-respect-evil-normal-escape t)
(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
和Evil配合时发现个问题:
1、在insert-state是中文输入状态,按ESC进入normal-state自动切换到英文正常,按i返回insert-state也被切换为英文了,而不是恢复先前的中文;
2、从emacs-state按C-z进入normal-state,没有自动切换到英文,是只识别ESC键吗?
3、Evil配置中增加 (defalias 'evil-insert-state 'evil-emacs-state) ,将insert-state替换为emacs-state后,要按2次ESC进入normal-state才会自动切英文。
环境:Windows 10, 原生GNU Emacs 28.2,无配置框架。
我们来排除一下
A. 首先,排除这种情况:
Tips:
spacemacs
, if it works in the hybrid
mode, some of the evil
related features may not work. Change to vim
mode instead.B. 进入insert mode是会自动根据上下文判断语言并自动切换的。如果你是在英文字母中按i,确实不会自动切换到中文。
sis中只处理了evil-insert-state
和evil-normal-state
,由evil自带的hook启动sis相关功能,见上文的代码链接。你用的这个evil-emacs-state
并没有牵涉到。
我抄官网的配置,和你这个差不多,发现从中文切到英文很容易,返回却不行。比如文本内容是“中文”,在后面输入空格,会自动切到英文,回删空格会自动切到英文,但如果不回删,只是移动光标,又不会自动切换了。
刚才验证了一下,确实是B这种情况。
那这条,从emacs-state按C-z进入normal-state,没有自动切换到英文,可能是什么原因造成?还需要在配置中再写一遍 (add-hook 'evil-insert-state-exit-hook #'sis-set-english)
吗?
我已经切换到了librime 配合rime 输入法了,macos 切换速度快有那种同步延迟。
evil-insert-state和evil-emacs-state是两个不同的state啊,你在evil-emacs-state相关的hook里加就行了
不清楚有哪些hook,示例一下?
在这里提的需求,sis中是否有实现?readme文档未提及。环境:Windows 10,GNU Emacs 28.2。
B这种情况,根据字符中英文状态自动切换输入法,设置(sis-global-inline-mode -1)
也不能禁用。
比如文本内容是“中文”,在后面输入空格,会自动切到英文
这个是inline mode,在中文中在线输入英文,完了再回到中文,整个过程不需要手工切换输入法。不少用户特别喜欢这个功能。你要是不喜欢的话,不开inline mode就行了。
其实英文中在线输入中文也可以,有相关的变量可以控制。
你如果不希望根据上下文自动切换人相应的输入法, 可以自己定制:
sis-context-fixed
:指定切换到某个固定的输入法,见
https://github.com/laishulu/emacs-smart-input-source/blob/fa795514cdeff7e3ab054fa8977997d99d49b1a5/sis.el#L126
2.sis-context-detectors
:用自己的上下文检测子,见
嗯,设置了(sis-global-inline-mode -1)
中英文输入中切换是禁用了,因为我在用的过程中发现是输完英文,移动光标到中文字符,它不会自动切到中文,就是变回英文很容易、变回中文难,不太适应。
从normal回到insert,有变量能控制不根据光标处字符直接恢复输入法吗?
如果你用GUI的话,可以用emacs mac-port,自带原生的输入法相关的api,不需要外部的切换工具,那个就很丝滑了。
brew tap railwaycat/emacsmacport
brew install emacs-mac --with-modules --with-rsvg --with-imagemagick --with-natural-title-bar
在实际用的时候,由insert-state回到normal-state就是正常的,由emacs-state回到normal-state不是马上自动切到英文,要在normal-state下多按一次esc才切换,奇怪。