Ich verstehe, was das automatische Laden für Funktionen bewirkt (Registerdatei, die geladen werden soll, wenn eine solche Funktion aufgerufen oder ihre Dokumentationszeichenfolge abgerufen wird). Es ist jedoch nicht klar, wie die Autoload-Funktion in Verbindung mit Variablen und Makros verwendet wird.
Ich habe zwei Fragen:
Was passiert, wenn das Paket einen Parameter hat, der als Variable implementiert ist, die der Benutzer festlegen kann, der jedoch nicht automatisch geladen wird? Sollten solche Variablen automatisch geladen werden? Wenn dies nicht der Fall ist, stellt sich heraus, dass solche Variablen nicht vorhanden sind. Die Lisp-Umgebung weiß nichts über sie, einschließlich ihrer Standardwerte, bis eine automatisch geladene Funktion aus dem Paket verwendet wird (normalerweise nach dem Laden von Konfigurationsdateien). Wenn der Benutzer sie in seiner festlegt In ihrer Konfigurationsdatei wird eine nicht vorhandene Variable festgelegt. Was passiert genau, wenn der Wert der Variablen eine nicht leere Liste ist und der Benutzer den Wert verwendet
push
oderadd-to-list
ändert? Gehen Standardwerte verloren?Was passiert, wenn ein Makro automatisch geladen wird? Wann sollten wir ein Makro automatisch laden?
setq
bearbeitet werden können (dh es spielt keine Rolle, welche Werte sie zuvor hatten), können standardmäßig indefvar
oder indefcustom
Form angegeben werden. Bei Listen, die vom Benutzer erweitert werden können, ist es jedoch am besten, sieeval-after-load
richtig zu verwenden . Manchmal sind auch gute Standardeinstellungen gut, auch wenn sie die Form einer Liste haben ;-)