Add :shadow parameter to package!
For to make replacing built-in packages easier.
This commit is contained in:
parent
6f49f2151e
commit
1884828d22
2 changed files with 21 additions and 12 deletions
|
@ -188,10 +188,20 @@ processed."
|
||||||
(error "Failed to read any packages"))
|
(error "Failed to read any packages"))
|
||||||
(dolist (package doom-packages)
|
(dolist (package doom-packages)
|
||||||
(cl-destructuring-bind
|
(cl-destructuring-bind
|
||||||
(name &key recipe disable ignore &allow-other-keys) package
|
(name &key recipe disable ignore shadow &allow-other-keys) package
|
||||||
(unless ignore
|
(unless ignore
|
||||||
(if disable
|
(if disable
|
||||||
(cl-pushnew name doom-disabled-packages)
|
(cl-pushnew name doom-disabled-packages)
|
||||||
|
(when shadow
|
||||||
|
(straight-override-recipe (cons shadow '(:local-repo nil)))
|
||||||
|
(let ((site-load-path (copy-sequence doom--initial-load-path))
|
||||||
|
lib)
|
||||||
|
(while (setq
|
||||||
|
lib (locate-library (concat (symbol-name shadow) ".el")
|
||||||
|
nil site-load-path))
|
||||||
|
(let ((lib (directory-file-name (file-name-directory lib))))
|
||||||
|
(setq site-load-path (delete lib site-load-path)
|
||||||
|
load-path (delete lib load-path))))))
|
||||||
(when recipe
|
(when recipe
|
||||||
(straight-override-recipe (cons name recipe)))
|
(straight-override-recipe (cons name recipe)))
|
||||||
(straight-register-package name)))))))
|
(straight-register-package name)))))))
|
||||||
|
@ -389,7 +399,7 @@ ones."
|
||||||
;;; Module package macros
|
;;; Module package macros
|
||||||
|
|
||||||
(cl-defmacro package!
|
(cl-defmacro package!
|
||||||
(name &rest plist &key built-in recipe ignore _type _pin _disable)
|
(name &rest plist &key built-in recipe ignore _type _pin _disable _shadow)
|
||||||
"Declares a package and how to install it (if applicable).
|
"Declares a package and how to install it (if applicable).
|
||||||
|
|
||||||
This macro is declarative and does not load nor install packages. It is used to
|
This macro is declarative and does not load nor install packages. It is used to
|
||||||
|
@ -426,6 +436,10 @@ Accepts the following properties:
|
||||||
inform help commands like `doom/help-packages' that this is a built-in
|
inform help commands like `doom/help-packages' that this is a built-in
|
||||||
package. If set to 'prefer, the package will not be installed if it is
|
package. If set to 'prefer, the package will not be installed if it is
|
||||||
already provided by Emacs.
|
already provided by Emacs.
|
||||||
|
:shadow PACKAGE
|
||||||
|
Informs Doom that this package is shadowing a built-in PACKAGE; the original
|
||||||
|
package will be removed from `load-path' to mitigate conflicts, and this new
|
||||||
|
package will satisfy any dependencies on PACKAGE in the future.
|
||||||
|
|
||||||
Returns t if package is successfully registered, and nil if it was disabled
|
Returns t if package is successfully registered, and nil if it was disabled
|
||||||
elsewhere."
|
elsewhere."
|
||||||
|
|
|
@ -1,12 +1,6 @@
|
||||||
;; -*- no-byte-compile: t; -*-
|
;; -*- no-byte-compile: t; -*-
|
||||||
;;; lang/org/packages.el
|
;;; lang/org/packages.el
|
||||||
|
|
||||||
;; Prevent built-in Org from playing into the byte-compilation of
|
|
||||||
;; `org-plus-contrib'.
|
|
||||||
(when-let (orglib (locate-library "org" nil doom--initial-load-path))
|
|
||||||
(setq load-path (delete (substring (file-name-directory orglib) 0 -1)
|
|
||||||
load-path)))
|
|
||||||
|
|
||||||
;; HACK A necessary hack because org requires a compilation step after being
|
;; HACK A necessary hack because org requires a compilation step after being
|
||||||
;; cloned, and during that compilation a org-version.el is generated with
|
;; cloned, and during that compilation a org-version.el is generated with
|
||||||
;; these two functions, which return the output of a 'git describe ...'
|
;; these two functions, which return the output of a 'git describe ...'
|
||||||
|
@ -27,10 +21,11 @@
|
||||||
:recipe (:host github
|
:recipe (:host github
|
||||||
:repo "emacs-straight/org-mode"
|
:repo "emacs-straight/org-mode"
|
||||||
:files ("*.el" "lisp/*.el" "contrib/lisp/*.el"))
|
:files ("*.el" "lisp/*.el" "contrib/lisp/*.el"))
|
||||||
:pin "220f2b0d93a6927eb673978c0042a1d4673e86aa")
|
:pin "220f2b0d93a6927eb673978c0042a1d4673e86aa"
|
||||||
;; ...And prevent other packages from pulling org; org-plus-contrib satisfies
|
;; Prevents built-in Org from sneaking into the byte-compilation of
|
||||||
;; the dependency already: https://github.com/raxod502/straight.el/issues/352
|
;; `org-plus-contrib', and inform other packages that `org-mode' satisfies the
|
||||||
(package! org :recipe (:local-repo nil))
|
;; `org' dependency: https://github.com/raxod502/straight.el/issues/352
|
||||||
|
:shadow 'org)
|
||||||
|
|
||||||
(package! avy)
|
(package! avy)
|
||||||
(package! htmlize :pin "49205105898ba8993b5253beec55d8bddd820a70")
|
(package! htmlize :pin "49205105898ba8993b5253beec55d8bddd820a70")
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue