Come aprire un file in un processo emacs esistente dalla riga di comando?


14

Ho diversi script che lanceranno tutte le app e i file relativi a un progetto specifico. Ma avvierà più istanze di emacs, piuttosto che semplicemente far aprire i file richiesti agli attuali emacs. Preferirei che gli attuali emacs aprissero semplicemente i file di testo del progetto in un nuovo buffer.

Qualche idea su come posso farlo?


Dai un'occhiata alla mia risposta stackoverflow.com/a/38655619/2450748 Anche se 5 anni dopo :)
nexayq,

Risposte:


21

M-x server-startall'interno della sessione Emacs, quindi utilizzare emacsclient -n file1 file2 ...per aggiungere file agli Emacs esistenti. Esistono opzioni aggiuntive che potresti voler utilizzare, ad esempio -cper aprire i file in una nuova finestra (frame).


grazie scarabocchio. Questo è quello che devo sapere. Non sto ancora verificando la "risposta giusta", perché ho sentito che dovresti sempre tenerlo aperto per un po 'per dare agli altri la possibilità di contribuire. Ma ho già inserito la tua risposta in alcuni script.
bev

Normalmente, si desidera inserire (server-start)il file .emacs, anziché avviare manualmente il server. Uso (and window-system (server-start))per evitare di avviare il server se eseguo emacs in un terminale.
cjm

Nei moderni Emacs è altrettanto utile in un terminale; vedi l' -topzione.
Geekosaur,

@cjm - in realtà avvio il server nel mio file .emacs. Semplicemente non l'ho usato :-)
bev

5

Inserisci il (server-start)tuo .emacsfile.

Aggiungi questo a ~/.bashrc

alias myedit='emacsclient --alternate-editor="" --no-wait $*' #quotes intentionaly left blank

quindi utilizzare myeditcome editor. Dovrai usare l' -copzione per far apparire una finestra.

Quindi puoi farlo:

myedit -c a-file
run-script #that uses myedit

o

run-script #that uses myedit
myedit -c

Richard, grazie per l'input. Sto ancora sconcertando alcune cose con la tua sceneggiatura. Innanzitutto, poiché emacsclient non ha un'opzione -c, suppongo che sia una cosa bash, ma non lo so. Secondo, perché non mettere emacs come editor alternativo? Grazie
bev

# $ emacsclient --help .... Sono accettate le seguenti OPZIONI: ... -c, --create-frame Crea un nuovo frame invece di provare a usare l'attuale frame Emacs ... -a EDITOR, --alternate -editor = Editor EDITOR su cui eseguire il fallback se il server non è in esecuzione Se EDITOR è la stringa vuota, avvia Emacs in modalità demone e prova
a riconnetterti

Non è necessario (e, in effetti, probabilmente non lo si desidera) utilizzare i parametri posizionali nella definizione di un alias. Considera come si alias foo='echo bar $*'espande in set quux; foo baz. Se vuoi usare i parametri posizionali, provalo come una funzione shell:myedit() { emacsclient … "$@"; }
Chris Johnsen,
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.