Wie öffne ich eine Datei in einem existierenden Emacs-Prozess von der Kommandozeile aus?

13

Ich habe mehrere Skripte, die alle Apps und Dateien starten, die sich auf ein bestimmtes Projekt beziehen. Es werden jedoch mehrere Emacs-Instanzen gestartet, anstatt dass der aktuelle Emacs die angeforderten Dateien öffnet. Ich möchte lieber, dass der aktuelle Emacs einfach die Projekttextdateien in einem neuen Puffer öffnet.

Irgendwelche Ideen, wie ich das machen kann?

bev
quelle
Werfen Sie einen Blick auf meine Antwort stackoverflow.com/a/38655619/2450748 Obwohl 5 Jahre später :)
nexayq

Antworten:

20

M-x server-startFügen Sie in der Emacs-Sitzung emacsclient -n file1 file2 ...mit Dateien zu den vorhandenen Emacs hinzu. Es gibt zusätzliche Optionen, die Sie möglicherweise verwenden möchten, um z. B. -cdie Dateien in einem neuen Fenster (Rahmen) zu öffnen.

Geekosaurier
quelle
danke dood. Das muss ich wissen. Ich überprüfe noch nicht die richtige Antwort, weil ich gehört habe, dass Sie sie immer ein wenig offen halten sollten, damit andere die Möglichkeit haben, einen Beitrag zu leisten. Aber ich habe Ihre Antwort bereits in einige Skripte geschrieben.
12.
Normalerweise möchten Sie (server-start)Ihre .emacs-Datei einfügen, anstatt den Server manuell zu starten. Ich (and window-system (server-start))vermeide es, den Server zu starten, wenn ich Emacs in einem Terminal verwende.
cjm
In modernen Emacs ist es in einem Terminal genauso nützlich. siehe die -tOption.
Geekosaurier
@cjm - eigentlich starte ich den Server in meiner .emacs-Datei. Ich habe es einfach nicht benutzt :-)
bev
5

Tragen Sie (server-start)Ihre .emacsAkte ein.

Fügen Sie dies zu ~/.bashrc

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

dann myeditals Editor verwenden. Sie müssen die -cOption verwenden, um ein Fenster zu öffnen.

So können Sie dies tun:

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

oder

run-script #that uses myedit
myedit -c
Strg-Alt-Delor
quelle
Richard, danke für den Input. Ich rätsele immer noch ein paar Dinge mit deinem Drehbuch. Erstens, da emacsclient keine Option -c hat, gehe ich davon aus, dass es eine Bash-Sache ist, aber ich weiß es nicht. Zweitens, warum nicht Emacs als alternativen Editor einsetzen? Thanks
bev
# $ emacsclient --help .... Die folgenden OPTIONEN werden akzeptiert: ... -c, --create-frame Erstellt einen neuen Frame, anstatt zu versuchen, den aktuellen Emacs-Frame zu verwenden ... -a EDITOR, --alternate -editor = EDITOR Editor, auf den zurückgegriffen werden soll, wenn der Server nicht ausgeführt wird Wenn EDITOR die leere Zeichenfolge ist, starten Sie Emacs im
Dämonmodus
Sie müssen (und möchten wahrscheinlich auch nicht) Positionsparameter bei der Definition eines Alias ​​verwenden. Überlegen Sie, wie sich das alias foo='echo bar $*'System ausdehnt set quux; foo baz. Wenn Sie die Positionsparameter verwenden möchten, versuchen Sie es als Shell-Funktion:myedit() { emacsclient … "$@"; }
Chris Johnsen