Welche "Nachfrage" haben Sie für Ihre "on demand"?
Wenn ein gegebener Befehl oder ein andere Funktion benötigt (oder Soft Bedürfnisse) eine gegebene Bibliothek, dann die Funktion selbst (require 'foo)
oder (require 'foo nil t)
verwenden kann. Die Bibliothek wird bei Bedarf von dieser Funktion geladen.
Beachten Sie auch, ob Sie die Datei möglicherweise mehrmals laden müssen, d. H. In einigen Situationen neu laden müssen, unabhängig davon, ob sie bereits geladen wurde oder nicht.
Für # 2, zum Beispiel, mein Code, der eine Bibliothek von Lisp-Makros verwendet, tritt icicles-mac.el
nicht nur require
verwenden, weil ich, dass sicherstellen möchten, wenn ein Benutzer erhält eine neue Version dieser Bibliothek (z. B. lädt eine neue Quellversion herunter und kompiliert sie in Byte), dann wird diese neue Version immer dann verwendet, wenn das Byte eine andere Bibliothek kompiliert, die sie benötigt. (Dies ist wichtig - wenn eine Bibliothek von Makros Änderungen, anderen Bibliotheken, die diese Makros verwenden in der Regel müssen nach dem Laden die neue Makros Datei neu kompiliert werden.) Dafür statt nur (require 'icicles-mac)
ich verwenden:
(eval-when-compile
(or (condition-case nil
(load-library "icicles-mac") ; Use load-library to ensure latest .elc.
(error nil))
(require 'icicles-mac))) ; Require, so can load separately if not on `load-path'.
Können Sie ein Beispiel geben, wie Sie das verwenden würden, was Sie mit 'autoload' nicht tun könnten? – Barmar
(könnte helfen) http://ergoemacs.org/emacs/elisp_library_system.html – AAAfarmclub