С выходом Emacs-23.1 сразу же перешел на указанную версию любимой программы. Как известно одной из новых функций является возможность запуска Emacs в режиме демона. Дальнейшая работа производится с помощью emacsclient позволяющего подключаться к демону как в иксах, так и из консоли.
Теперь для полного выхода из Emacs (убийство демона) использую функцию
kill-emacs
. Но в таком случае не сохраняются открытые буферы и
сессия (desktop). Поэтому добавил в файл инициализации далее описанную функцию и
назначил на нее клавиши C-x c
:
(defun my-kill-emacs () (interactive) (save-some-buffers) (desktop-save-in-desktop-dir) (kill-emacs)) (global-set-key (kbd "C-x c") 'my-kill-emacs)
Для запуска Emacs в меню OpenBox добавил пункт выполняющий следующее:
emacsclient -c -a emacsdc
Где emacsdc - скрипт следующего содержания лежащий в папке ~/bin
,
которая добавлена в PATH
:
#!/bin/bash emacs --daemon && emacsclient -c
Таким образом при вызове Emacs из меню, в момент когда не включен демон, запускается собственно демон и сразу же открывается новый фрейм. Если же демон уже запущен, просто открывается фрейм, подключенный к демону. Из консоли же теперь можно запустить так:
emacsclient -t
P.S. Оказывается все намного проще! Не надо никаких скриптов придумывать. Запускать Emacs надо так:
emacsclient -c -a ""
P.P.S. Спасибо тов. Juev'у.
5 комментариев:
Еще бы не помешало:
(y-or-n-p "Quit editor? ")
от случайного закрытия.
Спасибо за совет. Хотя Emacs и так спрашивает:
The current server still has clients; delete them? (y or n)
Но это на стадии уже самого kill-emacs. Так что если добавить (y-or-n-p "Quit editor?") придется два раза "y" нажимать.
Как раз собирался уже поискать как его корректно закрывать в режиме демона... И тут ваша статья.
Спасибо большое!
Объясните, а чего все с 23-й верси так носятся с этими emacs --daemon? Я уже лет 8 пользуюсь gnuserv и gnuclient - тоже самое, только называния другие.
Думаю все носятся с этими emacs --daemon, потому что эта фича вошла в официальный релиз.
Отправить комментарий