Emacs Lisp: Как добавить папку и все ее первые подпапки уровня к пути загрузки

15
задан Alexander Kojevnikov 21 October 2008 в 10:08
поделиться

4 ответа

(let ((base "~/Projects/emacs"))
  (add-to-list 'load-path base)
  (dolist (f (directory-files base))
    (let ((name (concat base "/" f)))
      (when (and (file-directory-p name) 
                 (not (equal f ".."))
                 (not (equal f ".")))
        (add-to-list 'load-path name)))))
17
ответ дан 1 December 2019 в 01:24
поделиться

Я предлагаю, чтобы Вы использовали subdirs.el

5
ответ дан 1 December 2019 в 01:24
поделиться

Вот что-то, что я использую в своем .emacs:

(let* ((my-lisp-dir "~/.elisp/")
       (default-directory my-lisp-dir)
       (orig-load-path load-path))
  (setq load-path (cons my-lisp-dir nil))
  (normal-top-level-add-subdirs-to-load-path)
  (nconc load-path orig-load-path))

При рассмотрении описания для normal-top-level-add-subdirs-to-load-path это несколько умно о выборе который каталоги исключить.

10
ответ дан 1 December 2019 в 01:24
поделиться

Это моя взломанная версия: P

(defun add-to-list-with-subdirs (base exclude-list include-list)
  (dolist (f (directory-files base))
 (let ((name (concat base "/" f)))
   (when (and (file-directory-p name)
     (not (member f exclude-list)))
  (add-to-list 'load-path name)
  (when (member f include-list)
   (add-to-list-with-subdirs name exclude-list include-list)))))
  (add-to-list 'load-path base))

Это добавит все каталоги первого уровня из базы и исключит те из списка exclude, в то время как для каталогов в списке include он будет также добавьте все каталоги первого уровня этого каталога.

(add-to-list-with-subdirs "~/.emacs.d" '("." ".." "backup") '("vendor" "my-lisp"))
2
ответ дан 1 December 2019 в 01:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: