Was ist der Zweck der Emacs-Funktion (eval-and-compile ...)?

8

Ich kann die Dokumentation lesen, also frage ich nicht nach einem Ausschneiden und Einfügen.

Ich versuche die Motivation für diese Funktion zu verstehen.

Wann würde ich es benutzen wollen?

    
Cheeso 25.05.2010, 12:32
quelle

1 Antwort

8

Die Dokumentation im Emacs-Lisp-Handbuch hat einige Beispielsituationen, die Ihre Frage zu beantworten scheinen (im Gegensatz zur Doc-Zeichenfolge).

Wenn Sie sich den Emacs-Quellcode ansehen, wird eval-and-compile verwendet, um den Compiler zu beruhigen, Makros / Funktionen während der Kompilierung (und Auswertung) verfügbar zu machen oder um merkmals- / versionsspezifische Varianten von Makros / Funktionen während der Kompilierung verfügbar zu machen.

Eine hilfreiche Anwendung, die ich gefunden habe, war ezimage.el . Dort wurde eine if -Anweisung in eval-and-compile eingefügt, um Makros bedingt zu definieren, abhängig davon, ob das Paket in Emacs oder XEmacs kompiliert / ausgewertet wurde und ob ein bestimmtes Feature vorhanden war. Indem Sie diese Bedingung in eval-and-compile einschließen, aktivieren Sie die entsprechende Makroverwendung während der Kompilierung. Eine ähnliche Situation kann in mwheel.el gefunden werden.

Ähnlich, wenn Sie eine Funktion über fset definieren und diese während der Kompilierung verfügbar haben möchten, müssen Sie den Aufruf von fset mit eval-and-compile umbrechen lassen, da sonst das Symbol - & gt; Die Funktionszuordnung ist erst verfügbar, wenn die Datei ausgewertet wurde (weil die Kompilierung eines Aufrufs von fset nur die Zuweisung optimiert, die jedoch nicht ). Warum solltest du diese Aufgabe während der Kompilierung haben? Um den Compiler zu beruhigen. Hinweis: Dies ist nur meine Neuformulierung dessen, was in der elisp Dokumentation ist.

Ich habe viele Anwendungen im Emacs-Code bemerkt, die Aufrufe von require nur umschlossen haben, was beim Lesen der Dokumentation überflüssig wird. Ich weiß nicht, wie ich das erklären soll.

    
Trey Jackson 25.05.2010, 16:08
quelle

Tags und Links