(重新设计)中英文混打:OS输入法管理包 smart-input-source

我刚才试了下 company 的补全是没有问题的, auto-complete才会有这个高度问题

好了,你这个操作騒啊,内联的时候直接替我把末尾的$给加上了?

对的。如果是再全文最后一个字符的位置,
而且,后面没有换行符,那么自动给你加上。

我一会给加个开关,可选关闭。

win7 + emacs26.3 + RIME+im-select.exe 表现完美!!!如果各个平台都表现完美,gayhub上怎么也得拿500颗星星吧。等稳定了可以把中文说明也搞一下

感谢大佬 :+1: :+1: :+1:

基本上没有什么大的功能计划了,只是一些小fix了。

@BlindingDark

你自己无需fork以保留这个PR了:

最新版,我加了两个变量。
现在,要啥都有。

1 个赞

报告:

org-capture 写完内容C-c C-c 后。

回到原来的文件,如果原来的文件是汉语,normal模式仍然是汉语。

C-c C-c 之前,是汉语输入法,还是英语输入法?
是根据这个来的。
跟是不是normal 模式没有关系。
然后 exit insert state的时候,会自动切英语。
如果C-c C-c 从insert切换到了normal,
那就是先自动切英语,然后自动恢复C-c C-c前的汉语。

如果是这种情况的话,我想一个办法,可以让你控制。

=====配置不兼容更新=====

配置中
所有的 smart-input-source-inline-english-*
都需要去掉english,变成smart-input-source-inline-*

原因是,
增加了个可选特性(默认关闭):
英文上下文中,SPC SPC 激发在线中文区域。 两者可以同时启用。

;; 默认是t
(setq-default smart-input-source-inline-with-english t)
;; 默认是nil,而且prog-mode不建议开启
(setq-default smart-input-source-inline-with-other t)

evil下,想执行命令,一般需要切为normal模式。

normal模式下,一般不需要中文输入。

如果上面假设成立,可否硬性设置为:只要当前文件是normal模式,一概都改为英文状态?

谢谢!

可以加这个判断。

直接粗暴加判断,可能会使其他操作出现不期望的行为。
因此,我需要更清楚地知道你的操作过程:

  1. 原来的文件(记为a) 进入org-capture之前的:evil state,输入法
  2. 通过什么操作打开 org-capture的
  3. org-capture 通过什么操作退回到a的(C-c C-c)?
  4. 这个时候a是evil normal, 中文输入法

doom evil下正在用汉语编写a文件时,进入nomal模式,按SPC n n,进入org-capture,输入中文内容,完成输入后,C-c C-c,退回a文件。a文件仍是normal模式,输入法继续为中文模式。

在config里面加入下面的语句就行了

(push 'org-capture smart-input-source-preserve-save-triggers)

意思就是spc n n切换了buffer,这个时候,
应该在这命令前记住原来的buffer里面的input source

你要是打开smart-input-source-hint-mode的话,能看到下面的提示:

Loading /Users/mao/.site/init.el (source)...done
Doom loaded 230 packages across 58 modules in 1.761s
Smart-Input-Source-Preserve-Hint mode enabled
Loading /Users/mao/.emacs.d/.local/cache/recentf...done
Starting new Ispell process /usr/local/bin/ispell with default dictionary...
Undo-Fu-Session discarding undo data: file length mismatch
Clipboard pasted as level 4 subtree
!! cmd [org-capture] switched a.txt to CAPTURE-journal.org, add it to ‘save-triggers’?
Wrote /Users/mao/org/journal.org
"journal.org" 16L, 454C written
Smart-Input-Source-Preserve-Hint mode disabled

成功,原来这就是之前说的大杀器。谢谢

@chinhant
刚更新了一版,
hint mode以前会提示三个,
但有两个没有必要,
现在只提示一个。

@chinhant

'org-capture我加到默认值里了,
所以你自己的配置中可以删除了。

以后还有别的命令需要加入的话,
可以报给我。
如果足够通用,我会加到默认值里。

@goumao 如果只是想运行 prefix 命令(如 C-x、M-x 等)的时候,临时切换到英文,其它时候还是系统当前输入法, 可以支持么?

@opsnull

你开respect mode,别的不开。
不过 cusor color mode,我还是建议开的。

这样,C-x, M-x等的时候,自动切到英文。
返回的时候,
原来的buffer是什么输入法,就恢复到什么输入法。

这个包整的太复杂了,我试了第三次还是没搞懂怎么用。

我的用法: 一个快捷键切换local buffer的输入法状态,Emacs内置快捷键切换Buffer后,每个Buffer保持各自的输入法状态

完成这个需求要怎么设置?