Supponendo che un server Emacs sia in esecuzione, voglio emacsclient <file>
creare un nuovo frame (come -c
) quando non esiste un frame esistente o riutilizzare un frame esistente quando ce n'è uno. In altre parole, voglio il -c
solo quando non esiste un frame esistente. È possibile?Creare o riutilizzare il frame della GUI Emacs esistente
risposta
ho risolto il mio problema con una serie di script di shell.
my_emacs
#!/bin/sh
emacs24-x [email protected] 1> /dev/null 2> /dev/null &
potrebbe essere necessario cambiare emacs24-x a qualcosa che punti al tuo emacs X11.
my_emacsclient
#!/bin/sh
emacsclient [email protected] 1> /dev/null 2> /dev/null || my_emacs
Aggiungi entrambi i file PATH tramite ~/bin o simili.
Nei miei .emacs ho anche aggiunto le linee seguiti
(load "server")
(unless (server-running-p) (server-start))
cambiare anche alcune variabili di ambiente e opzionalmente aggiungere un alias
export ALTERNATE_EDITOR="my_emacs"
export EDITOR="my_emacsclient -n"
export SUDO_EDITOR="my_emacsclient"
...
alias e="$EDITOR"
Quando si esegue e
nella shell dovrebbe creare o resuse una cornice GUI esistente. Inoltre, l'esecuzione di e <filename>
apre quel file in una cornice; puoi anche passare altre bandiere come -n
a e
.
Per lo stesso comportamento in altre applicazioni (ad esempio il gestore di file), è necessario modificare anche il file .desktop di Emacs (per me è /usr/share/applications/emacs24.desktop
) per eseguire my_emacs
.
Potrebbe anche essere una buona idea cambiare emacs
a my_emacsclient
tramite il sistema alternativo in distribuzioni basate su Debian (?).
Per chiunque possa utilizzare la mia configurazione. Non è perfetto e ha alcuni difetti ereditari. Ad esempio, se provi a "sudo -e
emacsclient <file>
fa quello che vuoi.
Se si desidera aprire una cornice senza specificare un file, è necessario utilizzare -c
.
Non esattamente. Se non esiste un frame della GUI, 'emacsclient
Si potrebbe desiderare di provare `emacsclient --display "$ DISPLAY"" per forzare la creazione di una cornice grafica, se non v'è ancora uno.
Mh, ancora non funziona per me. Apre una cornice terminale per me. –
@Renke: Che cosa significa "echo" DISPLAY = $ DISPLAY "ti dico? – Stefan
'DISPLAY =: 0.0' come previsto, credo. –
Ecco la mia soluzione:
Nei tuoi emacs file di avvio (ad esempio: ~/.emacs/init.el), assicurarsi di avere le seguenti righe:
;; start emacs server, if it's not already running:
(require 'server)
(unless (server-running-p) (server-start))
Quindi, aggiungere il seguente al vostro file ~/.bashrc:
function e()
{
emacsclient "[email protected]" -a "emacs"
}
per stabilire una linea di base, assicurarsi di chiudere tutte le istanze di Emacs e uccidere il demone emacs se si ha attualmente in esecuzione.
Quindi, dalla riga di comando, 'sorgente' il ~ /.il file bashrc:
source ~/.bashrc
Infine, usare 'e' per modificare un file:
e Foobar.java &
e notes.txt &
- 1. Emacs - emacsclient o nuovo frame?
- 2. Impostazioni solo per GUI/Terminal emacs
- 3. Come chiudere un frame gui emacsclient senza uccidere il server
- 4. Emacs: GUI con emacs --daemon non carica correttamente i font
- 5. Frammenti Android devo riutilizzare 1 frammento o creare nuove istanze?
- 6. Emacs artist-mode (no gui)
- 7. come controllare se emacs nel frame o nel terminale?
- 8. Best practice con le viste Backbone: riutilizzare o creare?
- 9. Creare un nuovo SQLCommand o riutilizzare lo stesso
- 10. Java può riutilizzare le risorse GUI di sistema non disposte?
- 11. GUI Handcode o utilizzare lo strumento gui-designer
- 12. Alternative della GUI Java
- 13. windows emacs, distribuire la larghezza attraverso il frame
- 14. diff tra frame e finestra in emacs
- 15. OpenCV aggiunge il frame al file video esistente (.avi)?
- 16. Best practice: riutilizzare componenti o scrivere duplicati
- 17. riutilizzare sql con vista o funzione
- 18. Riutilizzare l'oggetto XMLHttpRequest o crearne uno nuovo?
- 19. Django Rest Framework aggiornamento POST se esistente o creare
- 20. Posso riutilizzare una stringa di connessione esistente nella configurazione della sessione di SQL Session?
- 21. XML o XUL sono il futuro della costruzione della GUI Java?
- 22. Come integrare il loop principale di Boost.Asio nella struttura della GUI come Qt4 o GTK
- 23. Test della GUI AIR
- 24. Apprendimento della GUI con programmazione GTK + 2 o GTK + 3?
- 25. Un metodo per creare una semplice GUI
- 26. Alterazione della dimensione del carattere per il minibuffer Emacs separatamente da emacs predefinito?
- 27. Il rilevamento della finestra di Emacs è già diviso
- 28. Consigli architetturali sull'implementazione della logica della GUI
- 29. Emacs: come posso creare un nuovo buffer "vuoto" ogni volta che creo un nuovo frame?
- 30. Come posso creare emacsclient basta aprire una finestra per un demone emacs esistente senza aprire un nuovo file
Non è quello che tralasciando '-c' fa comunque? Significa un semplice 'emacsclient yourfile.ext' dovrebbe aprirsi in un frame esistente se ce n'è uno, e se non ce n'è uno dovrebbe crearne uno. –