https://emacstalk.github.io/post/009/
网络不好的可以访问下面链接:
之前论坛内的相关讨论:
新增方法
w32-set-ime-open-status
,用于控制输入法切换,可以在 evil 切到 normal 模式时自动切到英文。社区内相关讨论[
这个方法很好,就是不知道 Mac 下是否也有同样的机制(RSI 在不远处召唤)
原生的emacs没有切换输入法的功能。Emacs Mac Port 有切换输入法的功能,但是只能把输入法从一个输入法换成另外一个,如从Rime切换成系统自带的英文输入法。没法像在windows中,一个输入法内切换中英文。我在emp的代码中没找到如何在一个输入法内切换中英文。
windows有非常详细的输入法api文档。macos很难找到文档,对开发人员实在是不友好。
那个 SLIME 问题解决了吗?
叹气ing,这一点太不友好
感觉没必要这么精细,能自动切换中英文输入法就很好了。切换同一个输入法内的中英文有什么优势?
macos中emacs有2个方法自动切换输入法:
用外部程序。论坛里的sis的程序macism GitHub - laishulu/macism: Command line MacOS Input Source Manager 。用evil的话,在mode切换时调用。这个方法有时候切换不了。我用了一段时间后放弃了。
参考emacs mac port的代码,修改emacs的代码。现在用的是这个方法。
好处是在windows上,能记住insert mode的中英文状态,从normal mode进入insert mode时状态会变成之前的中英文状态。
方便发个 diff 文件嘛?或者在那里能看到你的修改。
好的,在家里的黑苹果上,我回家找找。
明明是两个
不好意思,现在才回复你。macOS切换输入法的代码一直在我的HP笔记本的黑苹果上,今天刚搬到macbook air上,请查考 Update nsfns.m · georgealbert/emacs@608944d · GitHub
只改了src/nsfns.m
一个文件。只需要(mac-select-input-source)
函数即可。代码是从emacs-mac-port
上抄过来的,今天本来想参考MacVim
的代码改一下,学习了一下,有点麻烦。算了,有空再玩吧。
我是这样配置的:
(if (eq system-type 'darwin)
(progn
(defun emacs-ime-disable ()
;; (start-process "set-input-source" nil "/usr/local/bin/macism" "com.apple.keylayout.ABC"))
(mac-select-input-source "com.apple.keylayout.ABC"))
(defun emacs-ime-enable ()
;; (start-process "set-input-source" nil "/usr/local/bin/macism" "im.rime.inputmethod.Squirrel.Rime"))
(mac-select-input-source "im.rime.inputmethod.Squirrel.Rime"))
(add-hook 'evil-insert-state-entry-hook 'emacs-ime-enable)
(add-hook 'evil-insert-state-exit-hook 'emacs-ime-disable)
))
大陆妹还是最美
够硬核,好东西不怕晚,春节放假回去试试。
I nearly shocked