создать псевдоним Emacs, который начинается в фоновом режиме? - PullRequest
5 голосов
/ 17 февраля 2010

У меня есть псевдоним в bash, который запускает emacsclient, если демон emacs уже запущен, и запускает emacs в противном случае. Однако, в случае запуска свежего экземпляра emacs, могу ли я запустить его в фоновом режиме, чтобы я все еще мог использовать этот терминал (или закрыть его)? В моем профиле bash у меня есть

alias ec="/usr/bin/emacsclient.emacs-snapshot -n -c -a /usr/bin/emacs-snapshot"

И я могу быть в терминале и набрать

$ ec newfile

Если emacs-демон еще не запущен, есть ли псевдоним, который я могу создать, чтобы строка выше соответствовала

$ emacs newfile &

вместо

$ emacs newfile

(Я должен также упомянуть, что я использую Linux Ubuntu, и emacs-snapshot назначен псевдониму 'emacs').

Большое спасибо!

Ответы [ 2 ]

5 голосов
/ 17 февраля 2010

Вместо прямого вызова /usr/bin/emacs-snapshot напишите сценарий, который вызывает /usr/bin/emacs-snapshot в фоновом режиме, а затем возвращает:

#!/bin/sh
case $# in
  0) /usr/bin/emacs-snapshot &
  *) /usr/bin/emacs-snapshot "$@" &
esac

Тогда вы вызываете сценарий обычным способом; он запустит фоновый процесс emacs и немедленно вернется.

Если вы хотите получить фантазию, вы можете использовать /bin/bash и disown процесс после esac (получите pid с $!).

2 голосов
/ 25 мая 2012

Хотя это не прямой ответ на ваш вопрос, это более элегантный способ «запустить emacs deamon или запустить emacsclient в противном случае». Создайте следующий псевдоним: alias emacs=emacsclient -c -a "". По состоянию на man emacsclient:

-a, --alternate-editor = РЕДАКТОР ... Если значением EDITOR является пустая строка, запустите `emacs --daemon ', чтобы запустить Emacs в режиме демона, и попытаться подключиться к нему.

...