Archive for May 15, 2008

Emacs Multi-TTY

15.05.2008 19:38 | 2 comments | 0 pingbacks |

Разобрался с недавно затащенным в emacs23 Emacs Multi-TTY. Теперь можно подключаться к запущенному Emacs’у и создавать новые фреймы: как X11, так и VT.

Делается всё очень просто: при загрузке Emacs

   (server-start)
   

И создание новых фреймов:

   $ emacsclient -t  # TTY
   $ emacsclient -c # X11
   

Правда, после этих манипуляций оказывается, что у Emacs имеются per-frame (окошко операционной системы) и даже per-terminal (под terminal подразумевается как VT, так и X display) переменные, которые бы неплохо инициализировать при открытии нового фрейма на новом терминале, а не глобально при старте (как это все делают).

Per-frame — это, например, шрифт фрейма. Его можно задать в переменной default-frame-alist:

   (setq default-frame-alist
     '(...
      (font . "7x13")))
   

Per-terminal — это таблица глобального ремапа клавиш. К сожалению, пока что хука на создание нового терминала нет, поэтому приходится использовать хук на создание нового фрейма.

   (add-hook
     'after-make-frame-functions
     '(lambda (frame)
       (setq old-selected-frame (seleted-frame))
       (unwind-protect
         (progn
           (select-frame frame)
           ...
           (keyboard-translate ?C-q ?C-x))
         (select-frame-set-input-focus old-selected-frame))))