Wie kann man auf einem Mac eine Datei über die Befehlszeile öffnen und in einem vorhandenen Emacs-Fenster anzeigen lassen?

3

Wie öffne ich eine Datei über die Befehlszeile und lasse sie in einem der vorhandenen Fenster des vorhandenen Frames anzeigen, ansonsten in einem neuen Fenster eines neuen Frames? Das Standardverhalten ist, dass es in einem neuen Frame geöffnet wird. Ich benutze

GNU Emacs 23.4.1 (x86_64-apple-darwin10.8.0) vom 29.01.2012 auf beta.macosforge.org

Bearbeiten 1

Ich habe meiner Aliase-Definition nicht genug Aufmerksamkeit geschenkt. Ich benutze

alias emacs=open -a /Applications/Macports/Emacs.app

in meinem .bashrc. Wenn bei dieser Einstellung ein bereits geöffneter Emacs-Frame vorhanden ist und ein neuer Emacs über die Befehlszeile ( $ emacs foobar.txt) ausgeführt wird, wird ein neuer Frame geöffnet, und es werden sogar .emacs für diesen Frame geladen. Anschließend wird die Datei in einem der folgenden Ordner angezeigt Fenster des neuen Rahmens. (Meine .emacsEinstellung teilt den Rahmen automatisch in zwei Fenster auf.)

Computist
quelle

Antworten:

2

Sie geben nicht genau an, wie Sie eine Datei über die Befehlszeile öffnen, aber das Standardverhalten für emacsclientist genau das Gegenteil: Es wird ein Frame wiederverwendet. In der emacsclientDokumentation auf gnu.org wird die -cOption verwendet, um das Verhalten abzurufen , das Sie standardmäßig zu haben scheinen.

-cErstellen Sie einen neuen Grafikrahmen, anstatt einen vorhandenen Emacs-Rahmen zu verwenden. Emacs 23 kann einen Grafikrahmen auch dann erstellen, wenn er in einem Nur-Text-Terminal gestartet wurde, sofern eine Verbindung zu einem Grafikdisplay hergestellt werden kann. Wenn keine grafische Anzeige verfügbar ist, erstellt Emacs einen neuen Nur-Text-Terminal-Frame (siehe Frames). Wenn Sie ein Dateinamenargument weglassen, während Sie die Option '-c' angeben, zeigt der neue Frame den Puffer ' scratch ' an (siehe Puffer).

Ich kann bestätigen, dass dies auf meinem System funktioniert, das nur wenige Umdrehungen hinter sich hat: GNU Emacs 23.2.1 (x86_64-apple-darwin, NS apple-appkit-1038.29) of 2010-05-08 on black.local"

Ich würde überprüfen, ob Sie das verwenden emacsclient, das mit Ihrem Emac geliefert wurde, und ob Sie nicht versehentlich etwas senden -c.

ckhan
quelle
Es stellt sich heraus , dass ich aliased emacsmit alias emacs=open -a /Applications/Macports/Emacs.app. Wenn jedoch ein Emacs-Frame vorhanden ist und ein neuer über emacsdie Befehlszeile ausgeführt wird, wird ein neuer Frame geöffnet und sogar geladen .emacs.
Computist
1
@Computist, in der Tat, wenn Sie diesen Alias ​​verwenden. Sie starten einen neuen Emacs, es öffnet sich kein neuer Frame im laufenden Emacs. Ich würde die Verwendung von "emacsclient" empfehlen.
Lindydancer
@ Lindydancer, hast du einen genaueren Vorschlag, wie mein Alias ​​für die Verwendung geändert werden könnte emacsclient?
Computist
3

Ich benutze das:

emacs() {
/Applications/MacPorts/Emacs.app/Contents/MacOS/bin/emacsclient --alternate-editor=/Applications/MacPorts/Emacs.app/Contents/MacOS/Emacs $1 &
}

Mit emacsclient wird die von Ihnen angegebene Datei geöffnet. Wenn kein vorhandener Emacs-Server gefunden wird, wird ein neuer geöffnet.

In .emacs tun

(server-start) 

damit startet emacs auch einen server.

Crysreal
quelle