使用反馈:smart-input-source 挂 emacs-rime

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

我把输入法手工打开也不行。你那里没问题的话就是我自己的问题了。

你要不要先手工require或者一下rime?

会不会你rime没正常载入?

都可以用rime打字了,肯定已经载入了。

我用的wsl会不会有关系?

按理说,只和emacs有关,和外界是无关的

还是贴下配置吧。就这些,没起效。

(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打开之后就没有再自动关闭过。