2012-04-23 10 views
9

Ich brauche einen Befehl, der ausgeführt wird, wenn ein neuer Frame in Emacs erstellt wird. Bisher habe ich after-make-frame-functions verwendet, aber dieser Hook wird nur für Frames aufgerufen, die von make-frame erstellt wurden. Ich brauche etwas, das ausgeführt wird, wenn der Befehl emacsclient -c ein neues Fenster erstellt.Emacs-Hook für neue Frames

Gibt es eine Möglichkeit, das zu erreichen?

Antwort

9

Ich habe einige Schwierigkeiten, Ihre Frage zu verstehen. Der Emacs-Server ruft make-frame auf, wenn ein neuer Frame erstellt werden muss. Daher sollte after-make-frame-functions auch in diesem Fall funktionieren. Also, was ist dein eigentliches Problem?

Soll die Funktion auch ausgeführt werden, wenn der Emacs-Server nicht einen neuen Frame erstellt? Wenn ja, versuchen Sie, Ihre Funktion zu server-switch-hook sowie after-make-frame-functions hinzuzufügen.

server-switch-hook ist eine Variable definiert in server.el.

Dokumentation: Hook run, wenn zu einem Puffer für den Emacs Server gewechselt wird.

+3

Ja, Ihr erster Absatz ist korrekt. Der Befehl, den ich ausführen wollte, funktioniert perfekt, wenn ich 'make-frame' mache, aber es funktionierte einfach nicht, wenn ein neuer Rahmen mit' emacsclient -c' erstellt wurde. Also nahm ich an, dass der Hook nicht vom Server aufgerufen wurde, als ich 'emacsclient -c' lief. Ich habe jetzt ein bisschen mehr Tests gemacht, und es stellt sich heraus, dass etwas mit meinem Befehl nicht stimmt. Entschuldigung für die sinnlose Frage. – Malabarba

+3

Kein Problem. [Rubber Enten-Debugging] (http://en.wikipedia.org/wiki/Rubber_duck_debugging) in Aktion! –

+2

Erstaunlich! Ich stelle Ihnen das Konzept der Meta-Gummiente vor, die durch Proxy debuggt, wo jemand - z. Ich selbst - findet jemanden mit dem exakt gleichen Problem auf SO und entdeckt das Problem tatsächlich nicht existiert. Ich danke Ihnen beiden. – leoger