暫時的解決方案是:勾選「自動切換到文稿的輸入法」。
如果不勾選這個,那麼切換到emacs之前的程序的輸入法,會帶到emacs中,造成nomal狀態的中文狀態。
暫時的解決方案是:勾選「自動切換到文稿的輸入法」。
如果不勾選這個,那麼切換到emacs之前的程序的輸入法,會帶到emacs中,造成nomal狀態的中文狀態。
你自己可以写一个minor mode,
在latex中启用这个mode
在这个mode中,
加一个post-command-hook,
当检测到输入的字符是$
后,调用 sis-set-english
但是,其中有一个小坑。
在中文输入法中,你输入 $
,实际上得到的应该是¥
,
所以,更为正确的做法是:
当检测到输入的字符是¥
后,
将¥
改成$
,并调用 sis-set-english
谢谢。我去试试。
系统:macos 11.1
emacs: gccemacs@28 原生按键
平时使用没有主动切换中英文 (指 中文后面两个空格 不会切换英文 , 英文后面两个空格不会切换中文 ) sis-switch
偶尔不起作用
(sis-global-respect-mode t)
开启后 上下文<spc><spc>
无作用 不会主动切换中英文
配置如下
(use-package sis
:init
;; `C-s/r' 默认优先使用英文 必须在 sis-global-respect-mode 前配置
(setq sis-respect-go-english-triggers
(list 'isearch-forward 'isearch-backward) ; isearch-forward 命令时默认进入en
sis-respect-restore-triggers
(list 'isearch-exit 'isearch-abort)) ; isearch-forward 恢复, isearch-exit `<Enter>', isearch-abor `C-g'
:config
(sis-ism-lazyman-config
;; English input source may be: "ABC", "US" or another one.
"com.apple.keylayout.ABC"
;; "com.apple.keylayout.US"
;; Other language input source: "rime", "sogou" or another one.
;; "im.rime.inputmethod.Squirrel.Rime"
"com.sogou.inputmethod.sogou.pinyin")
;; enable the /cursor color/ mode 中英文光标颜色模式
(sis-global-cursor-color-mode t)
;; enable the /respect/ mode buffer 输入法状态记忆模式
;; (sis-global-respect-mode t)
;; enable the /follow context/ mode for all buffers
(sis-global-follow-context-mode )
;; enable the /inline english/ mode for all buffers
(sis-global-inline-mode t) ; 中文输入法状态下,中文后<spc>自动切换英文,结束后自动切回中文
;; (global-set-key (kbd "<f9>") 'sis-log-mode) ; 开启日志
;; 特殊定制
(setq sis-do-set
(lambda(source) (start-process "set-input-source" nil "macism" source "50000")))
(setq sis-default-cursor-color "green yellow" ; 英文光标色
sis-other-cursor-color "#FF2121" ; 中文光标色
;; sis-inline-tighten-head-rule 'all ; 删除头部空格,默认1,删除一个空格,1/0/'all
sis-inline-tighten-tail-rule 'all ; 删除尾部空格,默认1,删除一个空格,1/0/'all
sis-inline-with-english t ; 默认是t, 中文context下输入<spc>进入内联英文
sis-inline-with-other t) ; 默认是nil,而且prog-mode不建议开启, 英文context下输入<spc><spc>进行内联中文
;; 特殊 buffer 禁用 sis 前缀,使用 Emacs 原生快捷键 setqsis-prefix-override-buffer-disable-predicates
(setq sis-prefix-override-buffer-disable-predicates
(list 'minibufferp
(lambda (buffer) ; magit revision magit的keymap是基于text property的,优先级比sis更高。进入 magit 后,disable sis的映射
(sis--string-match-p "^magit-revision:" (buffer-name buffer)))
(lambda (buffer) ; special buffer,所有*打头的buffer,但是不包括*Scratch* *New, *About GNU等buffer
(and (sis--string-match-p "^\*" (buffer-name buffer))
(not (sis--string-match-p "^\*About GNU Emacs" (buffer-name buffer))) ; *About GNU Emacs" 仍可使用 C-h/C-x/C-c 前缀
(not (sis--string-match-p "^\*New" (buffer-name buffer)))
(not (sis--string-match-p "^\*Scratch" (buffer-name buffer))))))) ; *Scratch* 仍可使用 C-h/C-x/C-c 前缀
)
sis-global-follow-context-mode
已经改名了,inline-mode
控制的,和respect-mode
无关respect-mode
不会影响inline-mode
。你是升级emacs到gccemacs@28之后才有这个问题的么?
emacs下,普通的emacs-plus有这个现象么?
brew tap d12frosted/emacs-plus
brew install emacs-plus
谢谢您的即时回复 , 我还没有在非gcc版本尝试,刚接触sis ,觉得很不错的一个设计 , 工作不忙的情况下可以试试 ,
@goumao 大佬,请教一个关于 sis 更新光标颜色的问题。
在 emacs buffer 中一切都正常。但是如果切换到其他应用再切回来时,光标颜色的更新会有延迟,这时会造成误判,本来是英文输入法,会让用户以为是其他输入法。
我希望 Emacs 焦点激活时,立即更新光标颜色,应该怎么设置?
这个。。。。
之前不是这样的么?
失策失策,
就一行代码的事~~~
我看看
之前已经有了相关的代码,
在当前输入法发生变化的时候,
自动改变光标颜色。
但是如果切换到其他应用再切回来时,光标颜色的更新会有延迟
我有点印象,
这块是因为emacs自带的after-focus-change-function
这个函数,
emacs检测到focus change时没有那么快,有一定的delay
你是不是操作太快了?
等等。。。。
发现一个逻辑上的漏洞。
在外边切换输入法之后。
最后这个when 不成立,
但是实际上已经发生变化了。
我知道怎么fix了。
等我更新提交,你再看看。
我也遇到了这个问题。中文输入后,切到Normal mode,再切回到insert mode时,rime会是英文输入,要多按下SHIFT才能切成中文。用搜狗作为中文输入就没有这个问题。看上去是rime配置的问题,但没找到地方。
@driftcrow 你是怎么解决这个问题的?
没解决,现在没有用SIS,直接用emacs-rime了,但也有问题不好弄
如果是 macOS 上面的 Rime ,可以看一下这个 issue :
@driftcrow 我搞定这个问题了。方法是编辑~/Library/Rime/squirrel.custom.yaml
文件:
增加如下内容:
patch:
app_options:
org.gnu.Emacs:
ascii_mode: false
这样sis切回中文时RIME就正常了。
感谢告知。因为有Windows 上使用WSL运行emacs 的GUI版,不能使用系统输入法,目前多平台直接使用emacs-rime,感觉 很流畅,和evil配合很舒适。
嗯。我只用mac,所以感觉sis比emacs-rime要好用些。主要是不会和系统的RIME输入法混淆。emacs-rime时我经常会搞错目前是用哪个输入法在输入(emacs-rime还是鼠须管)。而用sis时,就很简单,切换的是同一个输入法。
sis也可以挂emacs内置输入法(当然含emacs-rime),
不过好像没什么人这么用。