Демон Emacs замедляет работу - PullRequest
0 голосов
/ 30 апреля 2020

Недавно я установил services.emacs.enable = true; на моем configuration.nix. Я заметил, что во время выключения появляется раздражающее время ожидания. Вот что я вижу:

[  OK  ] Stopped X11 Server.
[  OK  ] Stopped Session 2 of user <myUsername>.
         Stopping Login Service.
         Stopping User Manager for UID 1001.
[  OK  ] Stopped Login Service.
[ ***  ] A stop job is running for User Manager for UID 1001 (1min 32s / 2min 3s)

Насколько я понимаю, для управления этими сервисами создан второй экземпляр systemd. Глядя на top, я вижу, что это порождает процессы pulseaudio и .emacs-26.3-wra. Выражения nix для службы Emacs действительно имеют атрибут execStop, но я подозреваю, что некоторые помехи recentf или некоторые другие функции в самом Emacs вызывают и предотвращают мгновенную смерть.

До включения службы Emacs я никогда была эта проблема, и, просто отключив ее, проблема исчезает. Я полагаю, что одним из способов грубого решения проблемы было бы поставить killall -9 .emacs-26.3-wra где-то в опциях, но я не уверен, где (уже пробовал на services.xserver.displayManager.sddm.stopScript, но безрезультатно.

Итак, мой вопрос, если не считать разветвления nixpkgs для изменения функции остановки или выполнения того же в Emacs, есть ли способ обеспечить немедленное завершение процесса Emacs? Я уже посмотрел и установил confirm-kill-emacs в значение ноль. Это мой текущий configuration.nix: configuration.nix . Я ни в коем случае не опытный пользователь. Так что ваша помощь будет принята с благодарностью: -)

1 Ответ

1 голос
/ 03 мая 2020

Так что для любого, кто натыкается на этот вопрос, я нашел эту проблему , которая описывает ту же ситуацию. Оказывается, это действительно проблема с Spacemacs, в частности, kill-emacs-hook и некоторым кодом очистки. После попытки использовать много разных подходов, единственный, который работал для меня, был один в потоке, добавив persp-mode к dotspacemacs-excluded-packages.

...