2010-07-13 8 views
7

Ich benutze einen Emacs-Daemon, um meine Emacs-Sitzung zu erhalten, auch wenn ich den Rechner neu starten muss, auf dem ich meinen X-Server laufen lasse oder wenn ich möchte von einer anderen Maschine auf dieselbe Sitzung zugreifen. Das funktioniert sehr gut, aber beim Wiederherstellen einer Sitzung würde ich gerne einfach "emacsclient --create-frame --no-wait" ausführen, um eine Verbindung zum Daemon herzustellen, ohne eine neue Datei zu öffnen. Es lässt mich nicht ohne Angabe eines Dateinamens davonkommen.Wie kann ich Emacsclient nur ein Fenster für einen vorhandenen Emacs Daemon öffnen, ohne eine neue Datei zu öffnen

Ich habe versucht mit --eval, um eine Funktion auszuführen, anstatt eine Datei zu öffnen, aber das Fenster verschwindet nur, wenn die Auswertung abgeschlossen ist.

(Emacs 23.1 via updates auf Debian GNU/Linux 5.0.)

+0

Ich denke, diese Frage ist besser geeignet für http://superuser.com/ –

+0

Vielen Dank für die berücksichtigen umfassende Antworten, vor allem, um nicht darauf hinzuweisen, dass ich nur ahnungslos war! Es scheint, dass ich falsch war zu sagen, dass "emacsclient --create-frame --no-wait" nicht funktioniert aufgrund des fehlenden Dateinamens. Ich muss mir eine Mischung aus Emacs und Emacsclient Versionen (Emacsclient von V22 scheint den Dateinamen zu verlangen, aber es macht Sinn in dieser Version.) –

Antwort

11

Aus der Hilfe von emacsclient haben Sie einige Optionen. Erstens ist die bereits erwähnte, die emacsclient -c ist. Das wird versuchen, einen mit dem Emacs-Daemon assoziierten Rahmen zu erzeugen. Der Vorteil ist, dass, wenn DISPLAY nicht gesetzt ist, Emacs im Terminal geöffnet werden.

Das bringt uns zur nächstbesten Option (besonders wenn Sie sich remote anmelden): emacsclient -t, die emacs dazu zwingt, sich im Terminalmodus zu öffnen, selbst wenn DISPLAY eingestellt ist.

Denken Sie auch daran, dass Sie die Anzeige auch über die Befehlszeile einstellen können. Ich benutze dies oft, wenn ich mich von VNC aus anmelde. Der vollständige Befehl emacsclient -d DISPLAY -c

2

emacsclient -n -e "(make-frame)"

Die -n Flag bedeutet, dass die emacsclient wartet nicht, und die Instanz emacs zerstört nicht den Rahmen.

5

emacsclient -c funktioniert für mich.

+0

Hmm. Das tut es auch für mich. Ich bin mir sicher, dass es nicht funktioniert hat, als ich es bei zwei früheren Gelegenheiten versucht habe, aber jetzt kann ich es nicht reproduzieren. :( –

2

wäre, wenn Sie Emacs von der Kommandozeile verwenden, möchten Sie vielleicht auch emacsclient -t