Разобрался с недавно затащенным в 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))))
Добавить комментарий
Comments
Вот оно — решение проблемы вывода calendar, который не имеет отдельного face и выводится default-ным.
А, так это всегда можно было. C-x 5 2 и M-x frame-set-font