суббота, 7 мая 2011 г.

Как запускать Emacs в клиент-серверном режиме

Так как даже в англоязычном секторе Сети ни фига не понятно, как это сделать, пишу сам, для того случая, когда забуду, а понадобится.


Контекст

Начиная с Emacs 23, появилась возможность запускать его в режиме демона. Для этого вызываем его так:

$ emacs --daemon

Emacs запускается в фоне и становится точкой доступа для вызовов emacsclient. Теперь мы вместо запуска нового инстанса Emacs запускаем

$ emacsclient -c

Клиентская часть подключается к демону практически мгновенно, и демон хранит открытые буфера, историю правок, всё, самостоятельно. Память также расходуется только как бы на один инстанс Emacs. Короче, именно так должен работать Емакс на машине, где он используется в качестве основного и единственного текстового редактора.


Реализация

Теперь о том, как заменить дефолтный запуск Emacs в Debian Squeeze + KDE.


Вообще можно обойтись тем, что вместо

$ emacs
пользоваться
$ emacsclient --alternate-editor "" -c


Если в качестве alternate-editor указана пустая строка, emacsclient самостоятельно запустит демона emacs (!) и подконнектится к нему.


Однако, хочется гуёвых удобств.


По умолчанию в плазмоиде Kickoff (меню запуска приложений) находится пункт меню, запускающий Emacs в обычном режиме. Нажав на Kickoff правой лапой, можно добраться до "редактора меню", в котором найти пункт меню для Emacs, и заменить его строку вызова с ``emacs'' на вышеупомянутое ``emacsclient --alternate-editor "" -c.''


Это всё, никаких дополнительных телодвижений типа настройки автозапуска emacs --daemon не надо.