LINUX.ORG.RU

emacsclient toggle-input-method


0

0

Можно ли заставить переключать раскладку в емакс из emacsclient. Что-то вроде: emacsclient -e '(toggle-input-method)'

Это, нужно для решения проблемы переключалки в emacs. Хотелось бы, чтобы была единая переключалка раскладки. Сейчас в stumpwm стоят следующие строки:


(defvar *keyboard-layout* :en)
(defcommand toggle-keyboard-layout () ()
  (cond 
    ((eq *keyboard-layout* :en)
       (setf *keyboard-layout* :ru)
       (message "^7* Selected keyboard layout:^2* ru")
       (run-shell-command "emacsclient -e '(toggle-input-method)'")
    )   
    ((eq *keyboard-layout* :ru)
       (setf *keyboard-layout* :en)
       (message "^7* Selected keyboard layout:^3* en")
       (run-shell-command "emacsclient -e '(toggle-input-method)'")
    )))

(define-key *top-map* (kbd "ISO_Next_Group") "toggle-keyboard-layout")

Соответственно после нажатия левого контрола (системная переключалка) хотелось бы, чтобы переключалось также раскладка в emacs. Но такого не происходит.

★★★★

Сейчас понял, что все равно не получится.

RCV ★★★★
() автор топика
Ответ на: комментарий от lazyklimm

Переключить раскладку в emacs получилось:

emacsclient --eval '(with-current-buffer «*scratch*» \(toggle-input-method))'

Теперь действительно раскладка в emacs и stumpwm переключается синхронно. В этом смысле первая часть проблемы решена. Но никакого профита я не получил. На русской раскладке: stumpwm в emacs все равно отсылает «С-ч» в место «C-x». Ибо раскладка русская. Где-то показывалось, как сделать чтобы stumpwm забывал про раскладку в данном конкретном окне. Но где, и было ли это вообще не помню. Ладно, буду думать дальше.

RCV ★★★★
() автор топика
Ответ на: комментарий от RCV

>Где-то показывалось, как сделать чтобы stumpwm забывал про раскладку в данном конкретном окне.

xxkb позволяет сделать, чтобы emacs не реагировал на системную переключалку.

Zubok ★★★★★
()

>emacsclient -e '(toggle-input-method)'

Странно. Вообще-то, раскладка должна переключаться, и у меня она переключается. То, что ты с буфером сделал — это какой-то изврат, но раз работает... Если что, то у меня Emacs22 без демонизации. У тебя, должно быть, Emacs23? Надо, чтобы кто-то попробовал.

Zubok ★★★★★
()
Ответ на: комментарий от Zubok

emacsclient -e '(toggle-input-method)'

24й демон, не работает

emacsclient --eval '(with-current-buffer «*scratch*» \(toggle-input-method))'

работает, но только в scratche -> профиту 0

xxkb позволяет сделать, чтобы emacs не реагировал на системную переключалку.

А можно с этого места поподробнее, а то ibus, собака, для моего старого ноута уж больно тяжел?

lazyklimm ★★★★★
()

я забил на все это траханье и переключаю раскладку в емаксе другими клавишами и меняю цвет курсора, чтобы не забыть.

(defun im-cursor-color-set nil 
  (set-cursor-color
   (if current-input-method 
       "red"
     "#fce94f")))
(add-hook 'post-command-hook 'im-cursor-color-set)

(global-set-key [?\s-/] 'toggle-input-method)
(define-key isearch-mode-map [?\s-/] 'isearch-toggle-input-method)

Zubchick
()
Ответ на: комментарий от lazyklimm

>А можно с этого места поподробнее, а то ibus, собака, для моего старого ноута уж больно тяжел?

А набери в google «xxkb emacs». Тут же и найдешь. :)

Zubok ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.