2009-08-12 12 views
4

Ich habe kürzlich Emacs 23 (auf OS X Leopard) installiert und den Emacs-Server ausprobiert. Ich habe beide Möglichkeiten ausprobiert: (1) Setzen (Server-Start) in meine .emacs-Datei und (2) Ausführen von Emacs - Daemon am Terminal (in separaten Versuchen; nicht zur gleichen Zeit). In beiden Fällen, wenn ich einen Emacs-Frame bereits geöffnet habe und versuche, eine separate Datei im OS X-Terminal mit emacsclient -t, -tty oder -nw zu öffnen, wird die Datei immer in einem vorhandenen Frame und nicht im Terminal as geöffnet beschrieben:Emacs 23, Emacsclient Argumente?

http://www.gnu.org/software/emacs/manual/html_node/emacs/emacsclient-Options.html

http://emacs-fu.blogspot.com/2009/02/emacs-daemon.html

jedoch emacsclient -c wie erwartet funktioniert. Hast du irgendwelche Ideen was passieren könnte?

Vielen Dank! -Stephen

+0

Was passiert, wenn Sie die Haupt-Emacs mit "emacs -Q" starten und dann dort (Server-Start) ausführen und dann "emacsclient -nw" ausführen? – Yoo

+0

Danke für die Antwort! ... aber die gleiche Sache, emacsclient -nw somefile öffnet eine Datei im gleichen Rahmen, die emacs -Q erstellt ... – hatmatrix

+0

Sie könnten eine Antwort auf diese Mailing-Liste [email protected] bekommen, oder vielleicht einen Fehler von Emacs einreichen 'Mx report-emacs-bug'. –

Antwort

5

Dank allen für Ihre Anregungen und Antworten - Ich glaube, meine Lösung folgendes mein Bash_profile hinzuzufügen ist:

## --- emacs --- 
alias emacs='/Applications/Emacs.app/Contents/MacOS/Emacs' 

## --- emacs client --- 
## adapted from http://philipweaver.blogspot.com/2009/08/emacs-23.html 

# start a windowed frame 
alias ec="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n -c -a /Applications/Emacs.app/Contents/MacOS/Emacs" 

# start a terminal frame 
alias em="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -t -a /Applications/Emacs.app/Contents/MacOS/Emacs -nw" 

# do not start a new frame 
alias ea="/Applications/Emacs.app/Contents/MacOS/bin/emacsclient -n -a /Applications/Emacs.app/Contents/MacOS/Emacs" 

Ich habe versucht, Emacs --daemon und die Emacs.app mit Emacs-Client ersetzt. App-icon wie von

http://www.cubiclemuses.com/cm/articles/2009/07/30/emacs-23-for-os-x/

aber (1) der Dämon schien nicht viele meiner .emacs Anpassungen und (2) zu laden, wenn ich Emacs-Client beenden würde, es würde ganz verlassen Emacs und erzeugen Fehler. ..

Also meine Lösung ist die Verwendung der Bash Aliase wie oben definiert; füge die Zeile (server-start) zu meiner .emacs Datei hinzu und füge das Emacs.app Icon zu meinem OS X Dock hinzu, so dass ich entweder das Icon oder einen der Aliase benutzen kann, um emacs zu starten und neue Dateien zu öffnen In der laufenden Instanz kann ich auch die obigen Aliase oder Cx Cf (oder Cx b) in Emacs verwenden.

5

Sind Sie sicher, dass Sie die richtige Binärdatei "emacsclient" verwenden? Sie wollen /Applications/Emacs.app/Contents/MacOS/bin/emacsclient, und standardmäßig wird es NICHT in Ihrem Weg sein. Wenn Sie einfach eine leere emacsclient über die Befehlszeile aufrufen, erhalten Sie die emacsclient aus dem Emacs 22.1, die Apple liefert.

Wenn Sie emacsclient --version laufen und bekommen dies:

$ emacsclient --version 
emacsclient 22.1 

Sie sind nicht das Richtige zu bekommen.

+0

Danke ... Ich bekomme Emacsclient 23.1, so dass es nicht der Fall zu sein scheint – hatmatrix

2

Wenn Sie die Binärdatei Emacs.app installiert haben, sollten Sie die ausführbare Datei im Paket verwenden. Zum Beispiel:

$ /Applications/Emacs.app/Contents/MacOS/Emacs -nw 

Es gibt auch ein bin Verzeichnis innerhalb des Pakets:

$ cd /Applications/Emacs.app/Contents/MacOS/bin 
$ ls -la 
total 1488 
[email protected] 19 ayman admin  646 Aug 16 02:33 . 
[email protected] 5 ayman admin  170 Aug 16 02:33 .. 
[email protected] 1 ayman admin 39704 Aug 16 02:33 b2m 
[email protected] 1 ayman admin 236412 Aug 16 02:33 ctags 
lrwxr-xr-x 1 ayman admin  18 Aug 24 12:54 cvtmail -> ../libexec/cvtmail 
lrwxr-xr-x 1 ayman admin  21 Aug 24 12:54 digest-doc -> ../libexec/digest-doc 
[email protected] 1 ayman admin 122124 Aug 16 02:33 ebrowse 
[email protected] 1 ayman admin 72188 Aug 16 02:33 emacsclient 
[email protected] 1 ayman admin 232344 Aug 16 02:33 etags 
lrwxr-xr-x 1 ayman admin  19 Aug 24 12:54 fakemail -> ../libexec/fakemail 
[email protected] 1 ayman admin 7288 Aug 16 02:26 grep-changelog 
lrwxr-xr-x 1 ayman admin  15 Aug 24 12:54 hexl -> ../libexec/hexl 
lrwxr-xr-x 1 ayman admin  19 Aug 24 12:54 movemail -> ../libexec/movemail 
lrwxr-xr-x 1 ayman admin  18 Aug 24 12:54 profile -> ../libexec/profile 
[email protected] 1 ayman admin 3977 Aug 16 02:26 rcs-checkin 
lrwxr-xr-x 1 ayman admin  18 Aug 24 12:54 rcs2log -> ../libexec/rcs2log 
lrwxr-xr-x 1 ayman admin  21 Aug 24 12:54 sorted-doc -> ../libexec/sorted-doc 
lrwxr-xr-x 1 ayman admin  28 Aug 24 12:54 update-game-score -> ../libexec/update-game-score 
lrwxr-xr-x 1 ayman admin  17 Aug 24 12:54 vcdiff -> ../libexec/vcdiff 
$ 

Wenn Sie alle Befehlszeile tun, können Sie einfach aktualisieren Sie Ihre Terminal-Version mit MacPort:

$ sudo port install emacs-app 

, die zum Zeitpunkt dieser Buchung emacs-app @23.0.0_NS-9.0rc3_1 schiebt.

+0

Danke. Ich habe 'emacs' und 'emacsclient' den Alias ​​'emacs.app' durch Aliasbefehle in meiner Bash-Startup-Datei zugeordnet. Ich wollte keine doppelten Kopien von Emacs auf meinem Computer, aber das könnte der Weg sein, so dass ich mehrere Instanzen von Emacs über das Terminal öffnen kann ... – hatmatrix

1

Ich verwende nicht regelmäßig Emacs unter OS X, aber ich habe angefangen, emacs --daemon beim Starten des Boot-/Fenstermanagers zu starten und den Prozess im Hintergrund laufen zu lassen.Ist das keine Option?

ich folgendes Alias' in meiner * SHRC Dateien:

EDITOR='emacsclient -t' 
alias e='emacsclient -n' 
alias ew='emacsclient -c -n' 
alias et='emacsclient -t' 

Obwohl ich muss zugeben, dass ich meistens Emacs Rahmen von Bindungen in meinem Fenster-Manager laichen (man könnte so etwas wie Quickkeys oder Quicksliver betrachten), dass trigger: emacsclient -c -n oder emacs -n -e '(make-remember-frame)' die einen neuen org-remember frame auslöst ...

Hoffe, das hilft.

Verwandte Themen