История изменений
Исправление Zmicier, (текущая версия) :
Игнорировал раскладку для хоткеев, но не для ввода в буффер.
Так у Емакса для ввода собственные раскладки. Вот тут т. Hoodoo напоминает, что можно еще использовать emacsclient(1), но у меня примитивнее — оконный диспетчер просто пропускает клавиши смены раскладки насквозь, когда активно окно Емакса (и перехватывает сам в остальных).
Единственное — в Емаксе из коробки почему-то не к чему привязывать нормальные безусловное переключение, есть только круговое. Так что пригодится немного букв:
(defun set-default-input-method ()
"Activate `default-input-method' for the current buffer."
(interactive)
(unless current-input-method
(activate-input-method default-input-method)))
(defun unset-input-method ()
"Deactivate any input method for the current buffer."
(interactive)
(activate-input-method nil))
(defun isearch-activate-input-method (input-method)
"Switch to input method INPUT-METHOD for the isearch mode.
If some other input method is already active, turn it off first.
If INPUT-METHOD is nil, deactivate any current input method."
(let ((overriding-terminal-local-map nil))
(activate-input-method input-method))
(setq isearch-input-method-function input-method-function
isearch-input-method-local-p t)
(setq input-method-function nil)
(isearch-update))
(defun isearch-set-default-input-method ()
"Activate `default-input-method' for the isearch mode."
(interactive)
(isearch-activate-input-method default-input-method))
(defun isearch-unset-input-method ()
"Deactivate any input method for the isearch mode."
(interactive)
(isearch-activate-input-method nil))
И уже тогда можно:
(define-key global-map (kbd "<f13>") #'unset-input-method)
(define-key global-map (kbd "<S-f13>") #'set-default-input-method)
(define-key isearch-mode-map (kbd "<f13>") #'isearch-unset-input-method)
(define-key isearch-mode-map (kbd "<S-f13>") #'isearch-set-default-input-method)
Т.е. пишу я значит киррилицей и тут бах без всяких переключалок сохранился на C-ч-ы.
Так и делаю.
Исходная версия Zmicier, :
Игнорировал раскладку для хоткеев, но не для ввода в буффер.
Так у Емакса для ввода собственные раскладки. Вот тут т. Hoodoo напоминает, что можно еще использовать emacsclient(1), но у меня примитивнее — оконный диспетчер просто пропускает клавиши смены раскладки насквозь когда активно окно Емакса (и обрабатывает сам в остальных).
Единственное — в Емаксе из коробки почему-то не к чему привязывать нормальные безусловное переключение, есть только круговое. Так что пригодится немного букв:
(defun set-default-input-method ()
"Activate `default-input-method' for the current buffer."
(interactive)
(unless current-input-method
(activate-input-method default-input-method)))
(defun unset-input-method ()
"Deactivate any input method for the current buffer."
(interactive)
(activate-input-method nil))
(defun isearch-activate-input-method (input-method)
"Switch to input method INPUT-METHOD for the isearch mode.
If some other input method is already active, turn it off first.
If INPUT-METHOD is nil, deactivate any current input method."
(let ((overriding-terminal-local-map nil))
(activate-input-method input-method))
(setq isearch-input-method-function input-method-function
isearch-input-method-local-p t)
(setq input-method-function nil)
(isearch-update))
(defun isearch-set-default-input-method ()
"Activate `default-input-method' for the isearch mode."
(interactive)
(isearch-activate-input-method default-input-method))
(defun isearch-unset-input-method ()
"Deactivate any input method for the isearch mode."
(interactive)
(isearch-activate-input-method nil))
И уже тогда можно:
(define-key global-map (kbd "<f13>") #'unset-input-method)
(define-key global-map (kbd "<S-f13>") #'set-default-input-method)
(define-key isearch-mode-map (kbd "<f13>") #'isearch-unset-input-method)
(define-key isearch-mode-map (kbd "<S-f13>") #'isearch-set-default-input-method)
Т.е. пишу я значит киррилицей и тут бах без всяких переключалок сохранился на C-ч-ы.
Так и делаю.