Skip to content

Instantly share code, notes, and snippets.

@jiayulu
Forked from howl-anderson/.spacemacs
Created March 13, 2020 06:39
Show Gist options
  • Save jiayulu/3986a04702cf8ca7bb27c8ba4d4f069d to your computer and use it in GitHub Desktop.
Save jiayulu/3986a04702cf8ca7bb27c8ba4d4f069d to your computer and use it in GitHub Desktop.
Automatically switch to English keyboard when leaving insert/replace mode in Evil of Spacemacs. And when you enter insert/replace mode again, switch to whatever input method you used last time. Especially useful when you are using other language (non-english) to write content.
(defun dotspacemacs/user-config ()
(setq shell-file-name "/bin/bash")
; set default var lang_source for ibus arg
(setq lang_source "xkb:us::eng")
; what we do when enter insert mode
(add-hook 'evil-insert-state-entry-hook
(lambda ()
(shell-command (concat "ibus engine " lang_source))))
; what we do when enter normal mode from insert mode: always change to US keyboard
(add-hook 'evil-insert-state-exit-hook
(lambda ()
(setq lang_source (shell-command-to-string "ibus engine"))
(shell-command "ibus engine xkb:us::eng")))
; what we do when enter replace mode
(add-hook 'evil-replace-state-entry-hook
(lambda ()
(shell-command (concat "ibus engine " lang_source))))
; what we do when enter normal mode from replace mode: always change to US keyboard
(add-hook 'evil-insert-state-exit-hook
(lambda ()
(setq lang_source (shell-command-to-string "ibus engine"))
(shell-command "ibus engine xkb:us::eng")
)
)
)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment