Betriebssystem: OS X 10.9.5, Mavericks
GNU Emacs 24.3.1 (x86_64-apple-darwin13.1.0, Carbon Version 1.6.0 AppKit 1265.19) vom 03.04.2014 auf Rainers-MacBook-Pro-3.local
Ich habe Emacs über Homebrew von Railwaycat installiert und es funktioniert gut - keine Beschwerden. Ich benutze keine Emacs im Termoinal, und ich starte es normalerweise über die Anwendung.
Wie gesagt - ich bin soweit glücklich.
Ich habe nur eine Sache, die ich nicht richtig hinbekommen habe (was vorher unter Linux gut funktioniert hat):
- Holen Sie sich den Emacs-Daemon beim Login
- Verwenden von emacsclient zum Öffnen
- Schließen Sie emacsdaemon und speichern Sie alle Dateien nach dem Abmelden
Irgendwelche funktionierenden Rezepte, die mir dabei helfen könnten?
Informationen hinzugefügt
So starten Sie einen Emacs-Daemon beim Anmelden
Ich habe eine Automator-Anwendung erstellt, die den bash-Befehl ausführt
/usr/local/bin/emacs --daemon
und fügte es zu den Login Items hinzu, was gut funktioniert.
Verwendung des Daemons vom Terminal
Ich kann den Emacs-Daemon mit verwenden
emacsclient .bashrc
Dadurch wird .bashrc in einer Emacs-Terminalsitzung geöffnet.
Nutzung von der GUI
Jetzt bleibt die Frage: Wie kann ich es von der GUI aus nutzen?
Soweit ich den Emacsclient verstehe, kann ich einen Emacsclient nur öffnen, wenn ich eine zu öffnende Datei angegeben habe.
Ich möchte eine Emacsclient-Benutzeroberfläche öffnen und alle zuvor geöffneten Dateien öffnen ? Ist das möglich?
Ich fand heraus, dass ich verwenden kann
emacsclient -c
in einem Terminal zu tun, was ich will - aber kann ich das gleiche für die GUI tun?
quelle
emacsclient
ist für OS X keine App, sondern nurEmacs
eine (und nur dann, wenn sie auf diese Weise installiert wurde). Warum verwenden Sie nicht einfach die Systemtasten zum Auswählen einer geöffneten Anwendung / eines geöffneten Fensters? (Funktioniert nicht, wenn Emacs im Daemon-Modus gestartet wurde und noch kein Frame ("Fenster") vorhanden ist.)Antworten:
Es macht mir wirklich nichts aus, dass Emacs.app immer läuft, aber die Tatsache, dass ich das Fenster nicht schließen konnte, ohne den Emacs-Server versehentlich zu töten, war ärgerlich. Und selbst wenn Sie sich wirklich bemühen, das letzte Bild zu töten, können Sie dennoch nicht: "Versuch, das einzige sichtbare oder symbolisierte Bild zu löschen". ... Also betrügen wir.
Diese Lösung verbirgt nur Emacs (wie Command+ h), wenn Sie versuchen, das letzte Fenster durch Klicken auf die Schaltfläche Schließen zu schließen.
Fügen Sie Ihrem Emacs-Init irgendwo Folgendes hinzu:
Fügen Sie Emacs zu "Benutzer & Gruppen> Anmeldeobjekte" hinzu und aktivieren Sie das Kontrollkästchen "Ausblenden".
Dein Emacs Init muss auch
(start-server)
irgendwo anrufen .Ich benutze diesen
emacsclient
Wrapper, um Emacs zuerst nach vorne zu bringen:Probleme:
Durch Klicken auf das Emacs-Symbol im Dock wird manchmal zufällig ein neues Fenster erstellt. Aber nicht immer.Dies basiert auf der Antwort von @ noaham, in der vorgeschlagen wird, Emacs zu minimieren, und dieser Antwort, in der erklärt wird, wie versucht wird, das letzte Fenster zu schließen.
BEARBEITEN:
Beim Durchsuchen der Quelle habe ich die "Tastenbelegung" für
mac-apple-event-map
welche Anrufe gefundenmac-ae-reopen-application
.mac-ae-reopen-application
scheint nach sichtbaren und symbolisierten Frames zu suchen und muss irgendwie unseren versteckten verpassen. Dies ist möglicherweise ein Fehler.Die einfache Lösung besteht darin, die Schlüsselbindung in Ihrem Init einfach zu deaktivieren:
Dies führt einen neuen kleinen Fehler ein: Wenn Sie auf das Dock-Symbol klicken, wenn alle Fenster minimiert sind, wird eines davon nicht automatisch maximiert. Die richtige Lösung wäre, umzuschreiben
mac-ae-reopen-application
, aber ich kenne Emacs und Elisp kaum.quelle
Der Yamamoto Mitsuharu Port von Emacs unterstützt leider kein Multi-Tty (siehe diese Ausgabe ). Dies bedeutet, dass Sie den Emacs-Daemon nicht vom Terminal aus starten und mit Emacsclient ein GUI-Fenster starten können.
Folgendes mache ich: In meinem Init.el habe ich
(server-start)
und starte Emacs.app beim Login. Das Ärgernis dabei ist, dass sich ein Fenster öffnet, das ich manuell minimieren muss.Ich habe dann ein Bash-Skript
emacsc
mit folgendem NamenIch erstelle dann eine App mit Applescript, die folgendes enthält
Es ist wichtig, das
-n
Flag an emacsclient zu übergeben, da Sie sonst nur jeweils einen Client mit der emacsc-App öffnen können. Durch das Festlegen der Pfadvariablen wird sichergestellt, dass OS X die richtige Version von emacsclient findet.Wenn Sie Emacs zum "Aktivieren" auffordern, wird Ihr Client-Fenster im Vordergrund gestartet.
Wie gesagt, das Ärgernis ist, dass Sie das Emacs-Fenster beim Anmelden manuell minimieren müssen und es dann im Dock sitzen lassen müssen. Eine Möglichkeit, dies zu vermeiden, besteht darin, Emacs nach dem Anmelden automatisch "auszublenden", aber wenn es dann aktiviert wird, wird es wieder ausgeblendet.
quelle
Ich bin mir nicht sicher, inwiefern sich der Emacs von der regulären Hausgebräu-Formel unterscheidet, aber mit letzterer würden Sie das tun
ln -sfv /usr/local/opt/emacs/*.plist ~/Library/LaunchAgents
, was bei deremacs --daemon
Anmeldung ablaufen würde .Die Liste ist als HIER-Dokument in der Formel enthalten . Alles was Sie tun müssen, ist den Pfad zu Ihrer Emacs-App in der Zeile zu ändern
<string>#{opt_bin}/emacs</string>
.Übrigens können Sie Emacs auch als OS X-App mit Homebrew Emacs erhalten, wenn Sie es mit der
--cocoa
Option installieren . (Sie müssten auchbrew linkapps
danach ausgeführt werden, um ihn zu verknüpfen/Applications
, oder den Link selbst erstellen.quelle
Auf dem Mac werden Daemons zu 90% mit launchd verwaltet . Es kann sie auf vielen Triggern ausführen, einschließlich Benutzeranmeldung / -abmeldung. Es gibt eine hübsche Mac-Anwendung namens Lingon zum Anzeigen und Bearbeiten der verschiedenen Dinge, die von launchd verwaltet werden. Das Emacs-Wiki hat einige Erwähnungen dazu, einschließlich einer Beispiel- Konfigurationsdatei . Aber das sieht so aus, als würde es Ihr Anliegen nicht ansprechen, wie man den Daemon beim Abmelden herunterfährt.
quelle
Erstellen Sie eine AppleScript-Anwendung wie folgt:
Möglicherweise müssen Sie den Pfad anpassen, oder Sie können den Pfad vollständig weglassen. Sie können auch etwas Fantasiereicheres verwenden, um den Dämon zu starten, wenn er noch nicht ausgeführt wird.
quelle