Add suppport for contrib category sub-directories

This commit is contained in:
syl20bnr 2014-11-10 22:26:11 -05:00
parent f1e1481839
commit b33cbba0b3
2 changed files with 22 additions and 5 deletions

View file

@ -45,6 +45,10 @@ initialize the extension.")
"Hash table of layers locations where the key is a layer symbol and the value
is its path.")
(defvar spacemacs-contrib-categories '()
"List of strings corresponding to category names. A category is a
sub-directory of the contribution directory.")
(defvar dotspacemacs-configuration-layer-path '()
"List of additional paths where to look for configuration layers.
Paths must have a trailing slash (ie. `~/.mycontribs/')"
@ -92,22 +96,34 @@ NOT USED FOR NOW :-)"
(push (cons sym (list :contrib contrib :dir dir :ext-dir ext-dir))
spacemacs-config-layers)))
(defun contribsys//get-contrib-category-dirs ()
"Return a list of all absolute paths to the contribution categories stored
in `spacemacs-contrib-categories'"
(mapcar
(lambda (d) (expand-file-name
(concat spacemacs-contrib-config-directory
(format "%s/" d))))
spacemacs-contrib-categories))
(defun contribsys/discover-contrib-layers ()
"Fill the hash table `spacemacs-contrib-layer-paths' where the key is the
layer symbol and the value is its path."
(mapc 'contribsys/discover-contrib-layers-in-dir
(cons spacemacs-contrib-config-directory
dotspacemacs-configuration-layer-path)))
(let ((cat-dirs (contribsys//get-contrib-category-dirs)))
(mapc 'contribsys/discover-contrib-layers-in-dir
(append (list spacemacs-contrib-config-directory)
cat-dirs
dotspacemacs-configuration-layer-path))))
(defun contribsys/discover-contrib-layers-in-dir (dir)
"Fill the hash table `spacemacs-contrib-layer-paths' where the key is the
layer symbol and the value is its path for all layers found in directory DIR."
(message "Looking for contribution layers in %s" dir)
(ignore-errors
(let ((files (directory-files dir nil nil 'nosort)))
(let ((files (directory-files dir nil nil 'nosort))
(filter-out (append spacemacs-contrib-categories '("." ".."))))
(dolist (f files)
(if (and (file-directory-p (concat dir f))
(not (member f '("." ".."))))
(not (member f filter-out)))
(progn
(message "-> Discovered contribution layer: %s" f)
(puthash (intern f) dir spacemacs-contrib-layer-paths)))))))

View file

@ -38,6 +38,7 @@
;; default configuration layer of spacemacs
(contribsys/declare-layer 'spacemacs)
;; configuration layers coming from `dotspacemacs-configuration-layers'
(setq-default spacemacs-contrib-categories '("usr" "lang"))
(contribsys/discover-contrib-layers)
(contribsys/declare-user-configuration-layers)
;; heavy lifting, load all packages and extensions