[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: