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
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.