¿Cómo puedo ejecutar Emacs gráficos para Mac OSX en modo demonio?

24

Forma corta: quiero ejecutar la versión para Mac OSX de Emacs que se encuentra en http://emacsformacosx.com/ como un demonio, con clientes gráficos y de texto que se conectan según sea necesario.

En detalle, aquí está el flujo de trabajo que quiero:

  1. Al iniciar sesión, ejecute /Applications/Emacs.app/Contents/MacOS/Emacs --daemonpara iniciar emacs como demonio. Ya se como hacer esto .

  2. Al ejecutar emacs desde un terminal local, quiero cualquiera de estos:

    1. Si ejecuto emacsdesde un símbolo del sistema local, abra un nuevo marco con el archivo seleccionado.
    2. Si el número 1 no es posible, al menos si ejecuto emacsclientdesde la línea de comando, abra un nuevo marco con el archivo seleccionado.
  3. Cuando ejecuto emacs desde una terminal remota, me gustaría que se iniciara un modo de texto emacs, conectado al proceso del demonio.

  4. Si ejecuto, Emacs.appreutilizo el demonio emacs que se está ejecutando en segundo plano en lugar de comenzar una nueva instancia y abrir una nueva ventana en él.

Hasta ahora, puedo lograr solo el número 1 y el número 2.2 anteriores, pero esas son las partes fáciles. # 3 y # 4 son las cosas que más se necesitan para que esto funcione. ¿Alguien sabe cómo lograr estas cosas?

Chris R
fuente
1
Para otros que encuentren esta pregunta: también puede usar M-x server-startpara poner un emacs iniciado sin --daemon en modo servidor. Buenas preguntas, por cierto.
dmckee 02 de
1
... o coloque (server-start)sus .emacs para que comience cuando inicie emacsa
Doug Harris
¿Alguien puede explicar cómo hacer el # 1? ¿Lo convertirías en un elemento de inicio de sesión?
Charlie Flowers
1
@Charlie Flowers emacswiki.org/emacs/EmacsAsDaemon#toc5
Colin

Respuestas:

15
  1. Tienes esto manejado
  2. Sí, querrás usar emacsclient. Para obtener un nuevo marco, agregue la opción -c. Tengo un alias para hacerlo más rápido y decirle a emacsclient que no espere a que vuelva el servidor de emacs:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. No estoy seguro de esto. Inicio Emacs una vez y siempre cargo nuevos archivos dentro de emacs o usando mi emalias.

Actualizar:

Echa un vistazo a este consejo que documenta cómo usar Platypus para crear un contenedor de aplicaciones alrededor de emacsclient. A continuación, puede usar "Abrir con ..." para iniciar usando su nuevo contenedor de aplicaciones.

Doug Harris
fuente
Sí, ese es el verdadero truco, ¿no? Porque lo que quiero es que todas las llamadas abiertas del sistema operativo utilicen los emacs en ejecución, ya sea que opere dentro de un terminal o un contexto GUI. Seguiré buscando
Chris R
Encontré una referencia al ornitorrinco y actualicé mi respuesta.
Doug Harris el
66
¿Esto está resuelto? ¿Cómo conseguiste que Emacs.app se conectara al demonio?
milkypostman
También quiero saber la respuesta a la pregunta 4 :)
jkp
2

Sí, aquí hay una explicación bastante completa sobre cómo hacer esto bien. Intenté varios métodos para que funcione bien, pero no mejor que lo que describieron aquí.

https://gist.github.com/304964

¡Aclamaciones!

Espiga
fuente
1
El enlace está muerto
Nisba
1

Para 4. pon esto en tu .emacs:

(setq ns-pop-up-frames nil)

La solución de crear un Mac .app (con Platypus) no funciona porque Mac no abrirá la misma aplicación dos veces.

juanmirocks
fuente
1
Si usa "open -n" puede abrir una nueva instancia de una aplicación incluso si ya se está ejecutando. Pruebe esto en la terminal: abra -n -a Emacs.app somefile.txt
Jörgen Lundberg
Sí, pero abre una nueva ventana, que no quiero
Juanmirocks
Tal vez estoy malinterpretando lo que quiere, pero si no quiere que cree una nueva ventana pero use una existente, omita el '-n'.
Jörgen Lundberg
Sí, no quiero crear una nueva ventana. open -a Emacs.appCiertamente es lo que hago, pero para ser abierto en el mismo fondo instancia / daemon de un emacs existente, necesito escribir (setq ns-pop-up-frames nil)en mi .emacscomo escribí en mi respuesta. De lo contrario, crea una nueva ventana de todos modos, con o sin -n.
juanmirocks