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

谢谢 好了,emacs 这个错误捕捉 看不懂。 magit 没问题 C-x b 等都正常 :+1: :+1: :+1:

Saving file c:/Users/John/Desktop/a/a.txt...
Wrote c:/Users/John/Desktop/a/a.txt
Mark set
Default directory for buffer <a.txt> is missing, now set to ’~’

所以,这两个问题都解决了? :grinning:

对 暂没有发现别的问题

从 melpa package-install 安装包后 ,启动Emacs出现 下面错误, 直接使用git version的时候没有错误,怀疑是编译elc后出现的问题??

Error (use-package): smart-input-source/:config: Symbol’s function definition is void: -auto-refresh-mode

这是你配置里忘了加前缀吧

最新版也复现了。

输入 :%s/某甲/某乙/g 时,我并不是从头至尾输入的,而是先输入:%s///g,然后切换倒中文,输入「某甲、某乙」,此时状态是中文,然后执行后,自动回到正文中。

此时是evil normal模式,是中文状态。

终于做进去了:smart-input-source-ism-lazyman-config

找到原因了,会解决的。

我今天又elpa安装了一下,这次 smart-input-source-20200716.1719/smart-input-source.el 文件没有被编译elc,启动正常。如果编译成elc的话就会出错,感觉是因为里面使用 names 包的缘故,编译时找不到时前缀,导致后缀的名称(如 -auto-refresh-mode)不能被识别

你是quelpa 安装吧?
多个用户报告,会有问题。
直接git,或者melpha,都没问题。

我知道git 没问题,因为没有编译成elc文件,就不会出问题,我用melpa安装的,有时候会自动编译成elc就会出问题,

另外我试了下 smart-input-source-ism-lazyman-config

在 :init 字段使用 (smart-input-source-ism-lazyman-config "1033" "2052" 'im-select)
会出错,感觉还是因为 names 包的问题,变量/函数没有找到

我用原来的配置,感觉也不是很懒人,就是变量名长了点 :stuck_out_tongue: ,可以考虑将 smart-input-source 弄个alias 如 sis,看着短小点

;; commit d9ac047
(use-package smart-input-source
  :init
  (setq smart-input-source-external-ism "im-select.exe"
	smart-input-source-english "1033"		       ; 英文
	smart-input-source-other "2052"			       ; 中文
	smart-input-source-default-cursor-color "green yellow" ; 英文光标色
	smart-input-source-other-cursor-color "magenta" ; 中文光标色
	smart-input-source-inline-tighten-tail-rule 'all ; 删除尾部空格,默认1,删除一个空格,1/0/'all
	smart-input-source-inline-with-english t ; 默认是t, 中文context下输入<spc>进入内联英文
	smart-input-source-inline-with-other t) ; 默认是nil,而且prog-mode不建议开启, 英文context下输入<spc><spc>进行内联中文
  :config
  (smart-input-source-global-cursor-color-mode t)
  (smart-input-source-global-respect-mode t)
  (smart-input-source-global-follow-context-mode t)
  (smart-input-source-global-inline-mode t)
  )

我研究一下,可能这就是quelpa出问题的原因。

我记得,melpa编译elc也不会出问题啊,你这会出问题?

我一直在后悔呢~~~想给改成sis

刚才将sis,names,termiXXX 都删除了 ,重新mepla安装,还是会出问题, 进入 elpa/sis 里将 .elc 文件删掉就没问题

感觉使用 names 后,代码看着怪怪的,干脆全替换了 :stuck_out_tongue:,省掉这个依赖,并且这时可以将个别需要配置的长变量改成别名形式不就省事一些

这个是个bug
不关evil normal的事。
不应该出现的。
从minibuffer退出来,应该恢复之前的输入法
已经fix了。

捉bug不容易捉全。

建议:无论执行任何命令,在焦点回到正文之时,先判断是否为normal模式。如果是,则必然是英文状态。

现在就是这样的。
你描述的规则,只是现在的设计的一个子集。

你去执行命令之前,必然要先到normal模式,normal模式就是英文的。
然后呢,现在你执行任何命令(不局限于你的替换的场景)结束之后,
都会恢复原文档的输入法,当然就是英文的。

如果有问题,那就是有bug,就必须要从根上解决掉。

试试我的,现在差inline mode和鼠标颜色 imbot.el --- an input method management bot - #2,来自 QiangF

做个简化版的动机在什么地方呢?

其实主要是方便修改