Comment lancer emacs serveur uniquement si il n'est pas lancé?
Je voudrais utiliser emacsclient pour éditer des e-mails dans Mutt.
J'ai ajouté ceci dans .emacs
(server-start)
Et dans .muttrc j'ai ajouté
set editor="emacsclient -nw %s"
Il semble qu'ils travaillent.
Quand je commence une deuxième Emacs, il se plaint il y a déjà un serveur qui exécute il émet des erreurs. Comment assurez-vous de faire (server-start)
uniquement si le serveur n'est pas déjà commencé?
Grâce
Vous devez vous connecter pour publier un commentaire.
Emacs démon peut être démarré automatiquement de manière très simple. Il suffit d'ajouter ce de votre .bashrc/.zshrc/whatever
Maintenant, quand vous appelez
emacsclient
(à l'aide de--tty
ou--create-frame
) le serveur est démarré (avecemacs --daemon
) si ce n'est pas déjà en cours d'exécution.Je trouve aussi cette coque alias pratique:
Noter que depuis Emacs 23 c'est la meilleure façon d'utiliser Emacs en mode démon.
(start-server)
est désormais en grande partie obsolète.emacsclient -c
fonctionne aussi, et prend en charge graphique de clients. Cependant, comment feriez-vous pour l'ouverture d'un fichier dans un emacs cadre (disons, dans un autre terminal). Actuellement, j'ai un script bash appelée
qui vérifie pour voir si le premier argument est-o
(pour les autres) et s'exécuteemacsclient
sans-c
si elle n'. Est-il une meilleure façon, à l'aide de l'alias, que vous pouvez remplacer le-t
et provoquer un cadre existant pour ouvrir le fichier?$ e -o /path/to/file
pour envoyer le fichier à un autre emacs déjà en cours d'exécution ailleurs (ce qui est utile). Et il détecte le moment où il est exécuté à l'intérieur d'une coquille dans emacs (les résultats sont mauvais sinon!). Elle s'exécute toujours emacs dans un terminal, bien que vous pouvez facilement enlever le-nw
à la fin pour que cela change.(start-server)
est désormais en grande partie obsolète"? Je ne vois pas que mentionné dans la documentation la plus récente, ni nulle part ailleurs. Merci.Ce code, le serveur démarre seulement si elle n'est pas en cours d'exécution:
emacs --daemon
dit Cette plate-forme ne prend pas en charge le démon drapeau.emacs --funcall server-start
, mais je suis d'accord c'est mieux et les œuvres de la croix-plate-forme.Un peu de retard de réponse, mais ici, c'est la solution qui fonctionne pour moi. Chaque fois que je commence emacsclient, j'utilise
emacsclient -a '' -c
La-a ''
dit emacsclient pour tenter de se connecter à un serveur existant, et si aucun serveur n'existe, début puis on s'y connecter.-a ''
option est grande. Notez que-c
toujours créer une nouvelle image. Si souhaitez généralement de modifier le fichier existant dans les emacs cadre, de sorte que je omettez cette optionÉviter le problème ensemble via
dans n'importe quel environnement ou terminal, de sorte que Emacs fonctionne en arrière-plan. De cette façon
emacsclient
est toujours heureux comme il y a toujours un Emacs serveur de connexion.Cet être Emacs, il y a aussi une fonction qui démarre le serveur uniquement lorsque cela est nécessaire, mais je n'arrive pas à rappeler son nom en ce moment. J'utilise le
--daemon
option heureux très heureux moi-même.emacs --daemon
brille quand j'ai mis cela dans mon standard, les Applications de Démarrage Préf. dans Ubuntu/usr/bin/emacs --daemon
et chaque fois que je le démarrage de ma machine, je peux rapidement prendre flottant idée pour mon modèle de capture dans emacs en frappantSuper + I
(un raccourci clavier pouremacsclient -c --eval '(progn (org-capture) (delete-other-windows) (setq-local kill-buffer-hook (lambda () (delete-frame))))'
) et j'obtiens une belle emacs cadre pour me dire ce que gênant idées que vous voulez vous débarrasser de off de ma tête.