Come posso emacsclient -a '' -ncreare un nuovo frame solo se non ce n'è già uno?
Il problema con la -cbandiera è che crea sempre una nuova cornice. Il problema senza di esso è che se non ci sono frame aperti, si aprirà nella riga di comando.
Se riesco a verificare se esiste un frame Emacs aperto dalla shell, posso chiamare con o senza a -cseconda di quello per ottenere il comportamento che desidero. Provai:
$ emacsclient -a '' --eval '(frames-on-display-list)'
(#<frame F1 0xba2740>)
Ottengo sempre lo stesso risultato.
Potrei usare file temporanei o pgrep, ma quegli approcci sono molto inclini agli errori.
Questo è simile a questa domanda , ma non è un duplicato, dal momento che l'OP era soddisfatto della necessità di avere un frame aperto prima di chiamare emacsclient.
elisp,basheshrisposte.