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

好了, 当前buffer 中文时, C-h v 进入 help buffer 那个也变成默认英文了

就差 C-x o C-x b C-h v 激活输入法,但是不输入中文时,用户可以使用任何Emacs快捷键而不被输入法吃掉了, 期待。。 :+1::+1::+1:

加了个 smart-input-source-switch函数。
可以手动切换了。

嗯。放心,不会超过两天。

这个方案越来越好用了。刚在Windows系统通过im-select.exe配置成功。
请问下如果我希望根据当前输入法状态设置光标的颜色能做到吗? 比如红色代表英文输入法,黄色代表中文输入法。这样我在全屏状态下就可以根据光标颜色识别当前的输入状态了。

1 个赞

本package自己切换的话,很容易实现。
如果是你通过系统切换的话,本package是不知道的,
但可以搞成这样:

  1. 你不操作超过5秒,就自动读取系统的输入法状态。
  2. 你不通过系统切换输入法,自己绑定快捷键通过本package切换输入法,执行 smart-input-source-switch
1 个赞

我觉得你说的方案可行,通过smart-input-source-switch 切换也挺好。

我这里使用了 auto-complete 补全, 不知道这是什么情况,时不时会出现下面这种情况, inline-english 标记在补全时特别长且宽?

other

哈哈,怎么配置的啊,能参考一下不。

我记下了,抽空本地复现一下,然后解决。

我知道什么时候出现了, 光标位置在中文最后一行且最后一个汉字的时候, inline英文时,触发补全的时候才会出现, 注意左边的 fringe other

我这里不能复现:

我这里就是 有一会儿没一会儿的 现在又完全正常 , 还是刚才的同样的buffer 不知道到底哪儿引起的,你是用的 auto-complete 吗 我没有用 posframe这样的额外包

我不清楚。我company就是doom自带的配置。
我刚才看了下,doom也没有配置posframe啥的。

我先记下了,
等功能都实现了,我来研究到底是什么冲突了。

我打开 white-space 看了看发现是文件换行符?的问题,当我光标在最后一行 C-n 的时候默认进入到下一行但是没有加入换行结束符? ,这样我录入汉字的时候文件结尾 才会触发这个问题,正常情况下是有$这个换行结束标记的。 有时候是 C-k 在结尾的时候把 换行符给kill掉才出现的, 这种情况怎么才能避免 有个就是想kill掉最后一行多余的空格导致这个标记被删除了, other

OK。找到问题,那一定能搞定。
不过这个优先级低一些,我先放一放。

我就是参考的emacle的配置改成适配自己的。 你从github把smart-input-source的仓库下载下来放到你Emacs的load-path下,然后用下面这段代码就能正常运行了。还要下载一个im-select.exe 文件,直接丢到你的emacs 安装目录的bin下就行,不然你得自己要设置下环境变量,只要命令行能找到它就OK。

(require 'smart-input-source)

(when (eq system-type 'windows-nt)
  (setq smart-input-source-external-ism "im-select.exe")
  (setq smart-input-source-english "1033")
  (setq-default smart-input-source-other "2052"))

(smart-input-source-global-auto-english-mode t)
(smart-input-source-global-preserve-mode t)

(dolist (hook '(text-mode-hook prog-mode-hook org-mode-hook))
  (add-hook hook #'smart-input-source-follow-context-mode))

(dolist (hook '(text-mode-hook prog-mode-hook org-mode-hook))
  (add-hook hook #'smart-input-source-inline-english-mode))

真的感谢,我去试试。话说1033 2052这两个值是怎么知道的。

你在CMD终端执行im-select.exe 命令,就可以获得当前输入法的代码,切换输入法再执行一次就得到另一个值。
我这里英文是1033,中文(rime)是2052.

另外提醒一下,中文语言中只保留一个中文输入法,不然im-select.exe没法正常工作。

image

1 个赞

我咋执行之后得到的是个0。 IMG_2020-06-19_17-12-41