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

我发现:
我这边 C-x, b是正常的。
但是C-x, o是错的

我先把我这里fix掉, 估计你那边的也会好。

明白了。

C-x, b是切换buffer
C-x, o是切换window
我这里,命令行other-window可以,
但是用鼠标点来切换window,也是不行的。

是因为我用C-x,o ,实际上是调用 aw-switch-to-window
而这个函数没有被我advice

当前的机制,
要把所有的这种切换手工加到 preserve-triggers里。

=====

我前面在实验底层机制,
但是那个必须要设计好,否则太影响性能,
因为很多切换是不必要的。

这个是通用的,看来问题可以归结为,切换buffer 不正常,切换window 已经正常了。

elpa更新后smart-input-source-20200623.725 ,evil插入都不自动切换中文了…嗨… 深度截图_选择区域_20200623222527

回退哪个版本啊?才是老版本…,功能越多反而不好…其他花哨功能没啥用,我只要中英文切换~ :rofl:

@smr1113

新版本的,有些函数和变量的名字改了。
你对着readme重新改一下配置。

(setq smart-input-source-english-input-source "1")
应该改成
(setq smart-input-source-english "1")

smart-input-source-do-get-input-source
应该改成
smart-input-source-do-get

感谢楼主这个中英文自动切换功能,平常的工作中能够需要进行大量的中英文混打, Insert 和 Normal模式的切换终于不用那么蛋疼了,

使用环境:

  • win10 2004
  • WSL2 Ubuntu
  • Emacs Gui版本
  • Ibus-Rime

刚才又使用今天最新git 版本,只有 C-x b 的时候不能记录输入法状态,C-x o 的时候正常,

C-x b 绑定 (ido-switch-buffer)

使用 M-x ido-switch-buffer 切换buffer的时候也可以记录输入法状态,只是使用这个绑定按键的时候不会记录

好吧,编程必须对接口稳定啊。。。叫我这都不敢update了。。。 :upside_down_face:

不是稳定版,是高强度开发版。

别急。那个没太多变化。

我本地有个改动特别大的,
感觉应该是终极版了

还在调试,还没push上去。

激动人心的时刻到来了!

配置中按需加入:

(push 'YOUR-COMMAND smart-input-source-preserve-save-triggers)
(push 'YOUR-COMMAND smart-input-source-preserve-M-x-commands)

当输入法不能正确恢复时,
直接在emacs中,
打开 smart-input-source-preserve-hint-mode
重做不能正确恢复输入法的操作, 然后打开message buffer
就能看到了哪些命令要push到那两个list中了。

等功能差不多稳定后,
我会收集常见的command加到默认值里去,
这样用户大体可以开箱即用。

不兼容性更改

smart-input-source-prefix-smart-input-source-preserve-开头的变量。

更新

(2020-06-24T16:36:44+08:00) 别急,有bug :joy:

迫不及待。。。 刚才试了下

(push 'ido-switch-buffer smart-input-source-preserve-save-triggers)
(push 'ido-switch-buffer smart-input-source-preserve-M-x-commands)

可以恢复输入法状态

但是 在中文状态 下 C-x b 的时候b 还是会被输入法截获,需要多按一次回车

中文buffer里 按下 M-x 也不会自动切换成英文输入

这次改bug就行了,
问题不大。

M-x我这里可以,
C-x, b,我这里第一次可以,后来就不行了
现在都是小问题了,容易搞定。

以前相当于在第二层搞
后来尝试在第一层搞
现在挪到第三层搞
需要手工配置那两个列表,
但是更可靠,而且无用的切换更少。

大问题都解决了,
剩下都是小问题。

:+1: :+1: :+1:争取节日前

你这个配置是错的。
这个是你的M-x所绑定的命令。
本package在这个命令起来时,会切换到english

你打开 smart-input-source-preserve-hint-mode 运行一下 M-x,能看到提示。

====

继续修正bug

C-x b 可以恢复输入法状态了 :+1: :+1:

M-x 后 不会自动切换到英文了

C-x o 时灵时不灵??

不明白什么意思 我的 M-x 是绑定的 smex 命令

(push ‘smex smart-input-source-preserve-M-x-commands)

按下M-x 不会自动切换回英文

开启 Smart-Input-Source-Preserve-Hint mode enabled

C-x o 没有信息输出,但是好像不能记忆状态

C-x b a buffer -> bbuffer -> C-x b 输出下面语句,但是现在这个快捷键是可以恢复输入法状态的


"!! cmd [ido-switch-buffer] opened minibuffer, add it to `M-x-commands'?"

"!! cmd [ido-switch-buffer] shift from buffer *scratch* to  *Minibuf-1*, add it to `save-triggers'?"


"!! cmd [ido-switch-buffer] opened minibuffer, add it to `M-x-commands'?"

"!! cmd [ido-switch-buffer] shift from buffer .emacs to  *Minibuf-1*, add it to `save-triggers'?"

还有bug,不多了,22:30之后我再调。

:+1: 调好了我给你测试