Comment puis-je exécuter Emacs graphiques Mac OSX en mode démon?


24

Forme courte: je veux exécuter la version Mac OSX d'Emacs trouvée sur http://emacsformacosx.com/ en tant que démon, avec des clients graphiques et texte s'y connectant selon les besoins.

En détail, voici le workflow que je souhaite:

  1. Lors de la connexion, exécutez /Applications/Emacs.app/Contents/MacOS/Emacs --daemonpour démarrer emacs en tant que démon. Je sais déjà comment faire ça .

  2. Lorsque vous exécutez emacs à partir d'un terminal local, je veux l'un des deux:

    1. Si je cours à emacspartir d'une invite de commande locale, ouvrez un nouveau cadre avec le fichier sélectionné.
    2. Si # 1 n'est pas possible, au moins si je cours emacsclientdepuis la ligne de commande, ouvrez un nouveau cadre avec le fichier sélectionné.
  3. Lors de l'exécution d'emacs à partir d'un terminal distant, j'aimerais qu'un emacs en mode texte démarre, connecté au processus démon.

  4. Si je lance, Emacs.appréutilisez le démon emacs qui s'exécute en arrière-plan au lieu de démarrer une nouvelle instance et d'ouvrir une nouvelle fenêtre dessus.

Jusqu'à présent, je ne peux accomplir que # 1 et # 2.2 ci-dessus, mais ce sont les parties faciles. # 3 et # 4 sont les choses les plus nécessaires pour que cela fonctionne. Quelqu'un sait-il comment accomplir ces choses?


1
Pour ceux qui trouvent cette question: vous pouvez également utiliser M-x server-startpour mettre un emacs démarré sans --daemon en mode serveur. Bonnes questions, BTW.
dmckee

1
... ou mettez (server-start)votre .emacs pour qu'il démarre lorsque vous lancez emacsa
Doug Harris

Quelqu'un peut-il expliquer comment faire # 1? Souhaitez-vous simplement en faire un élément de connexion?
Charlie Flowers

Réponses:


15
  1. Vous avez géré cela
  2. Oui, vous voudrez utiliser emacsclient. Pour obtenir un nouveau cadre, ajoutez l'option -c. J'ai un alias pour le rendre plus rapide et pour dire à emacsclient de ne pas attendre le retour du serveur emacs:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. Je ne suis pas sûr de cela. Je démarre Emacs une fois et charge toujours de nouveaux fichiers dans emacs ou en utilisant mon emalias.

Mise à jour:

Découvrez cette astuce expliquant comment utiliser Platypus pour créer un wrapper d'application autour d'emacsclient. Vous pouvez ensuite utiliser "Ouvrir avec ..." pour lancer en utilisant votre nouveau wrapper d'application.


Ouais, c'est le vrai truc, non? Parce que ce que je veux, c'est que tous les appels ouverts du système d'exploitation utilisent les emacs en cours d'exécution, que j'opère dans un terminal ou dans un contexte GUI. Je continuerai de chercher.
Chris R

Trouvé une référence à Platypus et mis à jour ma réponse.
Doug Harris

6
Est-ce résolu? Comment avez-vous réussi à connecter Emacs.app au démon?
milkypostman

Je veux aussi connaître la réponse à la question 4 :)
jkp

2

Oui, voici une explication assez complète sur la façon de procéder correctement. J'ai essayé plusieurs méthodes pour le faire fonctionner correctement, mais pas mieux que ce qu'elles ont décrit ici.

https://gist.github.com/304964

À votre santé!


1
Le lien est mort
Nisba

1

Pour 4. mettez ceci dans votre .emacs:

(setq ns-pop-up-frames nil)

La solution de création d'un Mac .app (avec Platypus) ne fonctionne pas car Mac n'ouvrira pas deux fois la même application.


1
Si vous utilisez "open -n", vous pouvez ouvrir une nouvelle instance d'une application même si elle est déjà en cours d'exécution. Essayez ceci dans le terminal: open -n -a Emacs.app somefile.txt
Jörgen Lundberg

Oui, mais cela ouvre une nouvelle fenêtre, dont je ne veux pas
juanmirocks

Peut-être que je comprends mal ce que vous voulez, mais si vous ne voulez pas qu'il crée une nouvelle fenêtre mais utilise une fenêtre existante, sautez le '-n'.
Jörgen Lundberg

Oui, je ne veux pas créer de nouvelle fenêtre. open -a Emacs.appest certainement ce que je fais, mais pour être ouvert dans le même fond d'instance / démon d'un emacs existant, j'ai besoin d'écrire (setq ns-pop-up-frames nil)dans mon .emacscomme je l'ai écrit dans ma réponse. Sinon, il crée quand même une nouvelle fenêtre, avec ou sans -n.
juanmirocks
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.