Re: Emacs не получается три раскладки
>>>>> Melleus writes:
M> Пытаюсь настроить в Emacs три раскладки. Переключение хочу по
M> следующему принципу: англ/(рус/укр), т.е. английский/кириллица и
M> если в кириллице, то две кириллиці между собой.
M> Придумал и поместил в .emacs такаую конструкцию:
M> (defun toggle-alternative-input-method()
M> "Toggles between russian and ukrainian input methods"
M> (interactive)
M> (if (eq current-input-method 'ukrainian-computer)
M> (activate-input-method 'russian-computer)
M> (if (eq current-input-method 'russian-computer)
M> (activate-input-method 'ukrainian-computer))
M> ))
M> (global-set-key "\C-x\\" 'toggle-alternative-input-method)
M> Не работает.
current-input-method имеет значением строку, поэтому сравнение с помощью
EQ с символом всегда будет ложно. Следует заменить выражения вида
> (eq current-input-method 'ukrainian-computer)
на
> (string= current-input-method "ukrainian-computer")
ну, и если поправить ошибки в логике, то требуемого можно достичь,
например таким образом:
> (defun toggle-alternative-input-method()
> "Toggles between russian and ukrainian input methods"
> (interactive)
> (cond
> ((or (null current-input-method)
> (string= current-input-method "ukrainian-computer"))
> (activate-input-method 'russian-computer))
> ((string= current-input-method "russian-computer")
> (activate-input-method 'ukrainian-computer))))
Хочу только заметить, что деактивирован input-method такой функцией быть
не может. т.е. из группы (рус/укр) в англ не переключиться никак.
Тоже пользуюсь емаксовой переключалкой, привык к переключению по C-\ и
C-u C-\ в случаях, когда нужно выбрать другой, отличный от
использованного последним input-method.
--
Dmitry Statyvka
Reply to: