原生输入法切换:smart-input-source ,配合evil使用更佳。

(print (executable-find smart-input-source-external-ism)) 是什么结果?

看上去不错, mac系统,在doom下怎么安装这个?我尝试这样安装报错,或者M-x 没有看到这个命令 smart-input-source-mode, 下面是我的安装方法

0、 在mac下先安装了 macism

1、在 .doom.d/packages.el 文件加入

(package! emacs-smart-input-source :recipe (:host github :repo “laishulu/emacs-smart-input-source”))

2、 在.doom.d/config.el 加入

(use-package emacs-smart-input-source)

运行报错:Error in private config: config.el, (file-missing Cannot open load file No such file or directory emacs-smart-input-source)

谢谢回复, 这个命令的结果指向了我的 ~/.local/bin/macism 路径, 但是按下escape从insert 转为normal模式时, 并没有从中文转为英文

现在MELPA还在审核,所以,没法直接安装。

你可以自己配置package,引用github 仓库, 但你要是对doom不熟悉的话, 可以把smart-input-source.el文件直接丢到自己的doom文件夹下, 然后在 config.el里面,

(load! "smart-input-source")
(add-hook! '(text-mode-hook prog-mode-hook)
           #'smart-input-source-mode)

我也是用doom的。 :grinning:

很乐意解决这些我自己的环境不会出现的问题。

  1. 你在命令行下,把系统输入法分别切到中文和英文,然后分别运行 macsim, 输出是什么样子的?
  2. macsim 后面跟前面的输出,可以正常切换到相应的输入法么?
  3. smart-input-source-mode 打开了么?

如果想安装emacs mac port,在GUI下使用原生API切换输入法的话,

brew tap railwaycat/emacsmacport
brew install emacs-mac --with-modules --with-rsvg --with-imagemagick --with-natural-title-bar

这个package的名字是smart-input-source, git 仓库的名字在前面加了个emacs- 很多emacs库都是这个样子的。

另外,你配置完doom的package之后, 还需要在shell中运行 doom sync 以同步仓库。

:+1: 多谢,安装成功!

汉字后面跟空格触发 inline english 区域… 一直使用英文输入法…回车,关闭 inline english 区域。但这时不会自动切换回中文?

@montychen 看情况。如果english region结束后:

  1. 光标到前面一个字母之间有空格(空格在之前的region里面还是外面无所谓), 那么会激活中文输入法。
  2. 如果光标后面本来就是英文(和光标之间可以有空格或者换行), 那么还是停留在英文输入法

我也在考虑这个问题,感觉这个规则还可以再改进一下: 多行之后还是英文的话,没必要停留在英文上。


规则更新::::

  1. 如果光标后面本来就是英文(和光标之间可以有空格[不含换行]), 那么还是停留在英文输入法

已经被melpa收录,现状可以按照普通melpa包的方式下载安装了。

已经有evil、开启smart-input-source-mode、配置好(setq smart-input-source-other-input-source "com.baidu.inputmethod.BaiduIM.wubi"),按esc离开insert模式后,并没有自动切换到英文输入法状态啊

@Pmacs 什么操作系统?什么emacs发行版,GUI还是Terminal模式? 请读一下 README 的 Install 部分

你这些配置,在Emacs Mac Port发行版运行于GUI模式的时候,应该是没问题的。

brew tap railwaycat/emacsmacport
brew install emacs-mac --with-modules --with-rsvg --with-imagemagick --with-natural-title-bar

只要不是这个情况,都需要多一些步骤。

只要是MacOS,无论是什么Emacs发行版,无论是GUI还是Terminal模式, 再装个macism就可以了。

brew tap laishulu/macism
brew install macism

如果是Linux下,用fcitx的话,README里面有配置,应该可以工作。 但是我没有相应的环境,因此没有测试过。

谢谢这么快的回复。 对这个输入法自动切换的东西还是挺期待的。

配置前已经看过README的install的。

  1. macOS 10.13.6 brew安装的GUI Emacs 27.0.90;
  2. 在GUI模式;
  3. 已经brew安装了macism 1.0.0;

感觉可能是macism要求的xcode版本不够、macism不能正常运行,我再试试。

你命令行下,macism可以正常工作么?

@Pmacs Emacs Mac Port (EMP) 是个发行版, 不是GNU 官方出的 emacs , 并不是说MacOS上的Emacs就是EMP。 类似的发行版 Emacs Plus,emacsformacosx,AquaMacs,XEmacs 也都不是EMP。

brew install emacs (是GNU原版)和 brew cask install emacs (是emacsformacosx版)出来的,都不是EMP。

下面这个才是EMP

brew tap railwaycat/emacsmacport
brew install emacs-mac --with-modules --with-rsvg --with-imagemagick --with-natural-title-bar

如果是EMP在GUI模式中使用的话,是不需要macism的。

谢谢耐心回复。

这些emacs的版本的区别大致了解的。

刚才更新了Xcode到10.1,brew install macism的macism仍然不能正常运行,需要自己编译安装才能在我这边运行(应该是macOS 10.13.6版本太低?)

但是,macism正常运行之后,org-mode里evil切换到insert模式后,还是在中文输入法的中文输入状态。 是init.el中的配置问题?

(use-package smart-input-source :ensure t :config

(setq smart-input-source-mode t)

(setq smart-input-source-external-ism “macism”)

(setq smart-input-source-english-input-source “com.apple.keylayout.ABC”)

(setq smart-input-source-other-input-source “com.baidu.inputmethod.BaiduIM.wubi”)

)

@Pmacs 这个mode是buffer local的,不是global mode

(use-package smart-input-source
  :config
  (setq smart-input-source-english-input-source
        "com.apple.keylayout.ABC")
  (setq smart-input-source-other-input-source
        "com.baidu.inputmethod.BaiduIM.wubi")
  (add-hook text-mode-hook #'smart-input-source-mode)
  (add-hook prog-mode-hook #'smart-input-source-mode))

另外,下列这个不用设置,是默认的。

(setq smart-input-source-external-ism “macism”)
1 个赞

谢谢!一直都是拿来能用就行,没去了解过mode的区别 :sweat_smile:

(add-hook 'text-mode-hook #'smart-input-source-mode)

(add-hook 'prog-mode-hook #'smart-input-source-mode)

@Pmacs 现在可以自动切换了么?

可以了的 :+1:。感谢感谢~

更新:

  1. 语言探测规则改进,此处代码注释更易懂。
  2. 加入了fcitxibus,以及用于Windows操作系统的im-select的配置说明