>>>>> 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