Так как emacsclient может обрабатывать длительное время загрузки пакетов с большой долей уверенности, я действительно хочу сохранить хотя бы один процесс emacs, и большую часть времени только один процесс emacs , открыть как фоновый процесс и лучше скрыть графический интерфейс.
Прямо сейчас я определил следующую функцию в .bashrc:
emc ()
{
if [[ $# -eq 0 ]]; then
emacs --eval "(suspend-frame)" &
return
fi
args=($*);
setsid emacsclient -c -e "(find-file \"${args[*]}\")"
}
А также иметь следующую строку в .bashrc:
emc
Поэтому каждый раз, когда я открываю оболочку, у меня будет новый процесс emacs.
Проблема в том, что после открытия многих оболочек у меня будет много дополнительных ненужных процессов emacs. Тем не менее, я хочу поддерживать только один процесс emacs все время от запуска, лучше скрыть графический интерфейс .
emacsclient
gui
phonycollectibles
источник
источник
emacs --eval "(suspend-frame)"
а неemacs --daemon
( emacswiki.org/emacs/EmacsAsDaemon ). Есть ли причина, по которой вы решили не вызывать emacs в качестве демона? Вы можете использовать что-то вроде,pgrep -U `whoami` emacs || emacs --daemon &
чтобы убедиться, что оно работает.Ответы:
Я делаю это, запуская демон emacs при входе в систему. Где вы разместите эту команду, зависит от вашего менеджера рабочего стола. Я использую
i3
, который настроен для запуска сценария при входе в систему, который включает в себя следующее:При этом emacs всегда работает в фоновом режиме, и я открываю новый клиент с
emacsclient -c -n
привязкой к удобному связыванию клавиш в оконном менеджере. Если вы работаете в терминале, вам нужно всего лишь простой псевдоним , какalias emc='emacsclient'
, возможно , с-n
,-c
или-t
аргументы, в зависимости от того, как вы его используете.Изучите опции для emacsclient в руководстве: ( (emacs) Опции emacsclient , доступные из Emacs через
C-h r m emacsclient options <enter>
). Вы можете использовать этот-a
флаг для автоматического запуска демона emacs, если он еще не запущен, и-c
или-t
для открытия нового фрейма или терминального клиента, вместо повторного использования существующего (в том же сеансе):источник
Если вы используете операционную систему, в которой используется диспетчер служб systemd (который в настоящее время включает большинство дистрибутивов GNU / Linux), то лучшим решением может быть использование systemd для запуска демона Emacs при загрузке. Вы можете сделать это, создав файл
$HOME/.config/systemd/user/emacs.service
со следующим содержимым:Затем вы должны запустить сервис и установить его автоматический запуск для всех будущих загрузок:
Теперь вы можете использовать
emacsclient
как обычно. Если вы обычно запустить его с-n
,-c
или-t
вариантов, вы можете установить псевдоним в вашей оболочке. Вы также можете установить переменные окруженияEDITOR
и / или так, как вам нравится. Например, в Bash вы можете добавить в свой файл следующее:VISUAL
emacsclient
.bashrc
Если вам когда-нибудь понадобится остановить демон Emacs, вы можете сделать это следующим образом:
И если вы хотите навсегда остановить его запуск при загрузке:
источник
То, как я это делаю, очень похоже на предыдущий ответ, определив псевдоним в моем .bashrc для
emacs --daemon
Помимо этого, у меня есть сочетание клавиш
ctrl-alt-E
дляemacsclient -c
. Когда я хочу начать работать с emacs, я открываю терминал,ds
печатаю и вызываю каждый экземпляр emacsclient с помощью своего ярлыка.Надеюсь, это кому-нибудь поможет.
источник