Демон Emacs, не удаляющий сокет

Я прокручиваю Emacs

emacs --daemon

команда, которая настраивает файл сокета /tmp/emacs100/server чтобы emacsclient связался через. Когда я уничтожаю сервер как:

emacsclient --eval "(kill-emacs)"

файл сокета остается, препятствуя тому, чтобы я работал emacs --daemon снова. То же самое происходит, когда я пробую M-x kill-emacs из Emacs. С другой стороны, когда я пробую:

M-x server-force-delete

Из Emacs я получаю высказывание сообщения:

No connection file "/tmp/emacs1000/server

Какие-либо идеи, что идет не так, как надо? Как я запускаю и закрываю emacs сервер гладко?

2
задан 30.08.2013, 18:41

3 ответа

я встретился с той же проблемой, по-видимому

(setq delete-by-moving-to-trash nil)

зафиксируйте это...

0
ответ дан 12.12.2019, 07:09

Я выполняю emacs 23.1.1, и у меня просто есть эта строка в моем .emacs

;; Start Emacs server
(server-start)

и у меня никогда не было проблемы с липкими файлами сокета.

И emacsclient работает приятно.

0
ответ дан 12.12.2019, 07:09

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

(defmacro bypass-trash-in-function (fun)
  "Set FUN to always use normal deletion, and never trash.

Specifically, the value of `delete-by-moving-to-trash' will be
set to nil inside FUN, so any deletions that happen inside FUN or
any functions called by it will bypass the trash."
  `(defadvice ,fun (around no-trash activate)
     "Ignore `delete-by-moving-to-trash' inside this function.

See `bypass-trash-in-function' for more information."
     (let (delete-by-moving-to-trash)
       ad-do-it)))

Затем примените тот макрос к каждой из трех функций сервера, которые имеют delete-file где угодно в их теле:

;; Any server function that may delete the server file should never
;; move it to trash instead.
(mapc (lambda (fun) (eval `(bypass-trash-in-function ,fun)))
      '(server-start server-sentinel server-force-delete))

Теперь можно установить delete-by-moving-to-trash к чему-либо Вам нравится.

0
ответ дан 12.12.2019, 07:09

Теги

Похожие вопросы