web-dev-qa-db-fra.com

Comment démarrer Emacs Server uniquement s'il n'est pas démarré?

J'aimerais utiliser EmacsClient pour modifier des courriels en mutt.

J'ai ajouté cela dans .emacs

(server-start)

Et dans .muttrc j'ai ajouté

set editor="emacsclient -nw %s"

Il semble qu'ils travaillent. Lorsque je démarre un deuxième emacs, il se plaint Il y a déjà un serveur en cours d'exécution afin qu'il utilise des erreurs. Comment vous assurer de faire (server-start) Seulement si le serveur n'est pas déjà démarré?

Merci

45
Meng Lu

Le démon Emacs peut être démarré automatiquement de manière très simple. Il suffit d'ajouter ceci à votre .bashrc/.zshrc/peu importe

export ALTERNATE_EDITOR=""

Maintenant, lorsque vous invoquez emacsclient (en utilisant soit --tty ou --create-frame) Le serveur sera démarré (avec emacs --daemon) Si ce n'est pas déjà en cours d'exécution.

Je trouve aussi cet alias Shell Handy:

alias e='emacsclient --tty'

Notez que depuis que EMACSS 23, c'est le moyen préféré d'utiliser Emacs en mode Daemon. (start-server) est maintenant principalement obsolète.

50
Bozhidar Batsov

Ce code commence le serveur uniquement s'il ne s'exécute pas:

(load "server")
(unless (server-running-p) (server-start))
61
Philipp

Un peu de réponse tardive, mais voici la solution qui fonctionne pour moi. Chaque fois que je commence EmacsClient, j'utilise emacsclient -a '' -c Les -a '' Indique EmacsClient à tenter de se connecter à un serveur existant, et si aucun serveur n'existe, commencez-y, puis connectez-le.

12
Eldritch Cheese

Évitez le problème alloueur via

emacs --daemon

dans n'importe quel coquille ou terminal de sorte que EMACS fonctionne à l'arrière-plan. De cette façon emacsclient est toujours heureux car il y a toujours un serveur EMACS à se connecter.

Ceci étant EMACS, il existe également une fonction qui commence le serveur uniquement si nécessaire, mais je ne peux pas vous rappeler tout ce nom maintenant. Je utilise le --daemon option heureusement heureux moi-même.

7