#  Еmacs как демон
Andrew Lobanov (tavern,1) → All  –  06:32:59 2020-08-05

Давно знал о сабжевой возможности, но никогда не пользовался. А тут попробовал в очередной раз и мне очень понравилось.

Дело в том, что у меня значительно разбух .emacs и время запуска, соответственно, стало неудобоваримым. Всё это усугубляется тем, что порой я запускаю несколько экземляров (например, как редактор в цезии) и длительный запуск утомляет.

Суть проста: экземпляр emacs запускается в режиме демона без пользовательского интерфейса. Последний запускается в виде клиента и потому стартует очень быстро.

Запустить emacs в качестве демона очень просто:

====
$ emacs --daemon
====


Для запуска клиента с графическим фреймом и всеми возможностями графической версии достаточно просто выполнить

====
$ emacsclient -c
====


Если же хочется запустить клиент в терминале, то

====
$ emacsclient -nw
====


Вот и всё. Но есть ещё тонкости некоторых настроек, которые перестают работать в режиме демона и клиента. У меня проявились две: не подхватился шрифт и не выключался scrollbar.

Обе проблемы решились весьма просто.

====
(setq default-frame-alist '((font . "Iosevka-12")))
====


И проблема с шрифтом решена.

Scrollbar же я убрал не так красиво, но вполне действенно. В ~/.Xdefaults добавил строчку

====
emacs.verticalScrollBars: false
====


Теперь в фреймах отсутствует scrollbar.

Возможность эта достаточно известна, но вдруг кому-нибудь покажется полезным иметь emacs всегда запущенным, а пользовательский интерфейс вызывать по необходимости.

Что удобно, открытые буферы и их состояние, запущенные elisp-программы не зависят от клиента и выполняются демоном. Можно хранить состояние между вызовами интерфейса. Можно открыть несколько фреймов emacs и работать в них одновременно, если по какой-либо причине неудобно использовать окна emacs в одном фрейме. И самое главное -- молниеносный запуск клиента. Теперь писать в секту сторонним редактором стало очень удобно и быстро.