Hier eine Adaption von Jouni Antwort, die eine Hilfsfunktion verwendet, die Sie anpassen können.
Ein Vorteil der Hilfsfunktion ist, dass Sie sie verfolgen können, wenn sie etwas Unerwartetes tut, weil es eine reine Funktion ist, also keinen Nebeneffekt in Ihren Ladepfad hat. Ich habe versucht, den Normal-Top-Level-Add-Subdirs-to-Load-Pfad verwenden, aber alles darin ist so Nebeneffekt und abhängig von unvorhersehbaren Sondervariablen, dass es einfacher war, etwas frisches zu schreiben, das sauber war. Beachten Sie, dass meine Antwort keine Inodes verwendet und daher weniger effizient ist.
Ein zweiter Vorteil dieses Ansatzes besteht darin, dass Sie damit bestimmen können, welche Dateien Sie ignorieren möchten.
(defun add-to-load-path-with-subdirs (directory &optional endp)
(let ((newdirs (lp-subdir-list directory)))
(if endp (setq load-path (append load-path newdirs))
(setq load-path (nconc newdirs load-path)))))
(defconst +lp-ignore-list+
(list "CVS" ".git" ".svn" ".." "."))
(defun lp-subdir-list (base &optional ignore)
(unless ignore
(setq ignore +lp-ignore-list+))
(let ((pending (list base))
(retval nil))
(while pending
(let ((dir (pop pending)))
(push dir retval)
(dolist (f (directory-files dir))
(let ((name (concat dir "/" f)))
(when (and (not (member f ignore))
(file-directory-p name))
(push name pending)
(push name retval))))))
(reverse retval)))
@Nicholas: Vielen Dank, dass für den Hinweis auf! –
Ich bin ziemlich neu in Lisp. Was bedeutet * in deinem Code? –
@Nicholas: Warum benutzt du den Stern? –