Come posso eseguire Emacs grafici per Mac OSX in modalità demone?


24

Forma abbreviata: voglio eseguire la versione di Emacs per Mac OSX disponibile su http://emacsformacosx.com/ come demone, con client grafici e di testo che si collegano ad essa secondo necessità.

Nel dettaglio, ecco il flusso di lavoro che voglio:

  1. All'accesso, esegui /Applications/Emacs.app/Contents/MacOS/Emacs --daemonper avviare emacs come demone. So già come farlo .

  2. Quando eseguo emacs da un termnal locale, voglio uno di questi:

    1. Se corro emacsda un prompt dei comandi locale, apro un nuovo frame con il file selezionato.
    2. Se il numero 1 non è possibile, almeno se corro emacsclientdalla riga di comando, apro un nuovo frame con il file selezionato.
  3. Quando eseguo emacs da un terminale remoto, vorrei avviare un emacs in modalità testo, collegato al processo daemon.

  4. Se corro Emacs.appriutilizzare il demone emacs in esecuzione in background invece di avviare una nuova istanza e aprire una nuova finestra su di esso.

Finora, sono in grado di realizzare solo i numeri 1 e 2.2 di cui sopra, ma queste sono le parti facili. # 3 e # 4 sono le cose che sono più necessarie per far funzionare questo. Qualcuno sa come realizzare queste cose?


1
Per gli altri che trovano questa domanda: puoi anche usr M-x server-startper mettere un emacs avviato senza --daemon in modalità server. Buone domande, BTW.
dmckee,

1
... o inserisci i (server-start)tuoi .emacs in modo che inizi quando avvii emacsa
Doug Harris,

Qualcuno può spiegare come fare # 1? Lo trasformeresti in un elemento di accesso?
Charlie Flowers,

Risposte:


15
  1. Hai questo gestito
  2. Sì, ti consigliamo di utilizzare emacsclient. Per ottenere un nuovo frame, aggiungi l'opzione -c. Ho un alias per renderlo più veloce e dire a emacsclient di non attendere il ritorno del server emacs:

    alias em='emacsclient -n'
    
  3. emacsclient -nw
  4. Non sono sicuro di questo. Avvio Emacs una volta e carico sempre nuovi file all'interno di emacs o usando il mio emalias.

Aggiornare:

Dai un'occhiata a questo suggerimento che documenta come utilizzare Platypus per creare un wrapper per app attorno a emacsclient. È quindi possibile utilizzare "Apri con ..." per avviare utilizzando il nuovo wrapper per app.


Sì, questo è il vero trucco, non è vero? Perché quello che voglio è che tutte le chiamate aperte del sistema operativo utilizzino gli emacs in esecuzione, sia che operi all'interno di un terminale o in un contesto GUI. Continuerò a cercare.
Chris R,

Ho trovato un riferimento a Platypus e ho aggiornato la mia risposta.
Doug Harris,

6
Questo è risolto? Come hai fatto ad Emacs.app collegarsi al demone?
milkypostman

Voglio anche sapere la risposta alla domanda 4 :)
jkp

2

Sì, ecco una spiegazione abbastanza esauriente su come farlo bene. Ho provato diversi metodi per farlo funzionare bene, ma non meglio di quello che hanno descritto qui.

https://gist.github.com/304964

Saluti!


1
Il collegamento è morto
Nisba,

1

Per 4. inserisci questo nel tuo .emacs:

(setq ns-pop-up-frames nil)

La soluzione per creare un Mac .app (con Platypus) non funziona perché il Mac non aprirà la stessa applicazione due volte.


1
Se usi "open -n" puoi aprire una nuova istanza di un'applicazione anche se è già in esecuzione. Prova questo nel terminale: apri -n -a Emacs.app somefile.txt
Jörgen Lundberg

Sì, ma apre una nuova finestra, che non voglio
juanmirocks

Forse sto fraintendendo quello che vuoi, ma se non vuoi che crei una nuova finestra ma ne usi una esistente, salta '-n'.
Jörgen Lundberg,

Sì, non voglio creare una nuova finestra. open -a Emacs.appè certamente quello che faccio, ma per essere aperto nello stesso background di istanza / demone di un emacs esistente, devo scrivere (setq ns-pop-up-frames nil)nel mio .emacscome ho scritto nella mia risposta. Altrimenti crea comunque una nuova finestra, con o senza -n.
juanmirocks,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.