Refactor module deprecation checks in doom!

Also changes the structure of doom-obsolete-modules, and adds :feature
version-control to it.
This commit is contained in:
Henrik Lissner 2018-06-21 22:17:15 +02:00
parent 60779c9aed
commit ff7823bfc9
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395

View file

@ -11,12 +11,14 @@
"A list of module root directories. Order determines priority.") "A list of module root directories. Order determines priority.")
(defconst doom-obsolete-modules (defconst doom-obsolete-modules
'(((:emacs . electric-indent) . (:emacs . electric))) '(((:emacs electric-indent) (:emacs electric))
((:feature version-control) (:emacs vc) (:ui vc-gutter)))
"An alist of deprecated modules, mapping deprecated modules to an optional new "An alist of deprecated modules, mapping deprecated modules to an optional new
location (which will create an alias). Each CAR and CDR is a (CATEGORY . location (which will create an alias). Each CAR and CDR is a (CATEGORY .
MODULE). E.g. MODULES). E.g.
((:emacs . electric-indent) . (:emacs . electric)) ((:emacs . electric-indent) . (:emacs electric))
((:feature . version-control) (:emacs vc) (:ui . vc-gutter))
A warning will be put out if these deprecated modules are used.") A warning will be put out if these deprecated modules are used.")
@ -253,20 +255,24 @@ to least)."
(make-hash-table :test #'equal (make-hash-table :test #'equal
:size (if modules (length modules) 100) :size (if modules (length modules) 100)
:rehash-threshold 1.0)) :rehash-threshold 1.0))
category category init-forms config-forms)
init-forms config-forms) (while modules
(dolist (m modules) (let ((m (pop modules)))
(cond ((keywordp m) (setq category m)) (cond ((keywordp m) (setq category m))
((not category) (error "No module category specified for %s" m)) ((not category) (error "No module category specified for %s" m))
((let* ((module (if (listp m) (car m) m)) ((catch 'doom-modules
(let* ((module (if (listp m) (car m) m))
(flags (if (listp m) (cdr m)))) (flags (if (listp m) (cdr m))))
(when-let* ((new (assoc (cons category module) doom-obsolete-modules))) (when-let* ((new (assoc (list category module) doom-obsolete-modules)))
(if-let* ((newkey (cdr new))) (let ((newkeys (cdr new)))
(message "Warning: the %s module has been moved to %s" (if (null newkeys)
(list category module) (message "Warning: the %s module is deprecated" key)
(list (setq category (car newkey)) (message "Warning: the %s module is deprecated. Use %s instead."
(setq module (cdr newkey)))) (list category module) newkeys)
(message "Warning: the %s module is deprecated" key))) (push category modules)
(dolist (key newkeys)
(setq modules (append key modules)))
(throw 'doom-modules t))))
(let ((path (doom-module-locate-path category module))) (let ((path (doom-module-locate-path category module)))
(if (not path) (if (not path)
(message "Couldn't find the %s %s module" category module) (message "Couldn't find the %s %s module" category module)
@ -277,7 +283,7 @@ to least)."
init-forms) init-forms)
(push `(let ((doom--current-module ',key)) (push `(let ((doom--current-module ',key))
(load! "config" ,path t)) (load! "config" ,path t))
config-forms)))))))) config-forms))))))))))
`(let (file-name-handler-alist) `(let (file-name-handler-alist)
(setq doom-modules ',doom-modules) (setq doom-modules ',doom-modules)
,@(nreverse init-forms) ,@(nreverse init-forms)