Elisp-Dateien im Ladepfad werden beim Start von Emacs nicht geladen.
On November 19, 2020 by adminWas ist bei mir fehlgeschlagen?
(add-to-list "load-path "~/.emacs.d/others")
was hat bei mir funktioniert?
(mapc "load (file-expand-wildcards "~/.emacs.d/others/*.el"))
Funktionen, die in elisp-Dateien definiert sind, die @ ~/.emacs.d/others
liegen, wurden nicht geladen im ersten Fall.
Ist es also falsch anzunehmen, dass durch Hinzufügen von Ordnerpfaden zu load-path
die darunter liegenden * .el-Dateien geladen werden?
Kommentare
- Durch Hinzufügen zum Ladepfad werden keine Dateien geladen. Emacs wird nur dann mitgeteilt, wo nach Dateien gesucht werden soll, wenn Sie zum Laden aufgefordert werden.
- @Dan – Das scheint mir eine Antwort zu sein.
- Verwenden von
load
ist kein guter Ansatz. Aktualisieren Sie besser dieload-path
wie im ersten Snippet und verwenden Sie dannrequire
oderautoload
nach Bedarf . Schauen Sie sich noch besser das Paketuse-package
an. Dies wird dazu beitragen, das Laden der Pakete effizienter zu gestalten. - @kaushalmodi,
use-package
bietet Komfort beim Hinzufügen von (kleinem) Overhead. Ich ' weiß nicht, ob dies als effizienteres Laden von Paketen eingestuft werden kann. - @AndrewSwann: Ich habe jetzt eine etwas detailliertere Antwort basierend auf dem Kommentar veröffentlicht.
Antwort
Hinzufügen zur load-path
lädt keine Dateien. Stattdessen wird Emacs nur mitgeteilt, wo nach Dateien gesucht werden soll, wenn Sie aufgefordert werden, sie zu laden. Wie die Dokumentzeichenfolge angibt:
Dokumentation:
Liste der zu durchsuchenden Verzeichnisse zum Laden von Dateien. Jedes Element ist eine Zeichenfolge (Verzeichnisname) oder
nil
(Standardverzeichnis versuchen). Initialisiert basierend auf der Umgebungsvariablen EMACSLOADPATH, falls vorhanden, andernfalls standardmäßig in der Dateiepaths.h
angegeben, als Emacs erstellt wurde.
Wie aus den anderen Kommentaren hervorgeht, gibt es verschiedene Möglichkeiten, elisp-Bibliotheken und -Pakete zu laden, sobald sie sich auf der load-path
befinden. Sie können beispielsweise load
, autoload
, require
und use-package
.
Schreibe einen Kommentar