smart-input-source-emacs
本身未做任何修改,
就把 emacs-rime
挂上了, 配置如下:
(setq smart-input-source-english nil)
(setq-default smart-input-source-other "rime")
(setq smart-input-source-do-get (lambda() current-input-method))
(setq smart-input-source-do-set (lambda(source) (set-input-method source)))
其它emacs内置输入法也是这样配置。
但是由于emacs-rime
功能比较强大和复杂,
而且和smart-input-source
有重叠,比如inline-english-region
这块。
所以,不清楚二者会不会有冲突。
特此新开一贴,收集使用反馈。
如有冲突,尽力解决。
2 个赞
@goumao 我这里没有生效。我把 rime-disable-predicates设为nil。smart-input-source的配置是结合你发的配置和readme上面的示例配置进行的。没有做进一步定制。在汉字后面加空格没有自动发生切换。在prog-mode里面也没有默认切换为英文。
我这里,rime没有做额外的配置,只有下面行:
(use-package rime
:custom
(default-input-method "rime"))
还是不行。我把多余的配置都删掉了。只剩下你这些。
话说你emacs什么版本,我没有default-input-method这个函数。我是emacs 28,spacemacs。
smart-input-source是elpa版。
只要上面一行就行了
而且那个应该是默认值,所以,那一行应该也是可以省略的
还是不行。下面这两个没有正确得到source id。
smart-input-source-do-get
smart-input-source-do-set
我把输入法手工打开也不行。你那里没问题的话就是我自己的问题了。
还是贴下配置吧。就这些,没起效。
(use-package rime
:init
(setq rime-user-data-dir "~/rime/"))
(use-package smart-input-source
:init
(progn
(setq smart-input-source-english nil)
(setq-default smart-input-source-other "rime")
(setq smart-input-source-do-get (lambda() current-input-method))
(setq smart-input-source-do-set (lambda(source) (set-input-method source))))
:config
(progn
(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-english-mode t)))
1 个赞
我对那个use-package
的:init
不熟,你都丢到:config
里面呢?
都改在config里面也没用。应该是我这边的问题。
之前就一直有设置输入法的问题。不知道怎么回事,默认输入法是rfc1345。设置了默认输入法也没用。一定要我手工选择rime作为输入法才行。我再找找吧。
问一句,进一个prog-mode然后进入insert-state,输入法默认是什么状态?
@goumao debug的话直接debug smart-input-source-switch?我加到debug-on-entry里面没反应,好像根本没触发。
没有默认。
你如果开了global-follow-context-mode
或者 给prog-mode
hook了 follow-context-mode
(这个是buffer local的),
那么会根据上下文来判断:
- 在英文上下文中,是英文输入法
- 在中文上下文中,是中文输入法。
你那个到底是什么问题呢?
rime正常么?
手工调用:
(set-input-method "rime")
可以切换输入法么?
我在scratch buffer里面手工调用set-input-method可以打开rime,正常输入中文,但是不自动切换输入法。rime打开之后就没有再自动关闭过。