Use `package-install-upgrade-build-in' to upgrade Org
This commit is contained in:
parent
9ca8fd039e
commit
1f57ae3a74
78
README.org
78
README.org
@ -199,13 +199,9 @@ that *Emacs is a self-documenting editor.*
|
|||||||
:END:
|
:END:
|
||||||
|
|
||||||
The =user-init-file= header requires =cl-lib= and sets Emacs options. It
|
The =user-init-file= header requires =cl-lib= and sets Emacs options. It
|
||||||
consists of two parts in listing [[lst:1st-setopt-call]], and [[lst:2nd-setopt-call]] in
|
consists of three parts in listing [[lst:1st-setopt-call]], [[lst:2nd-setopt-call]], and
|
||||||
order to limit the length of the listings for exporting to LaTeX.
|
[[lst:2nd-setopt-call]] in order to limit the length of the listings for exporting
|
||||||
|
to LaTeX.
|
||||||
The [[info:elisp#Quoting][quoting (info)]] and the [[info:elisp#Backquote][backquote (info)]] pages explain how to understand the
|
|
||||||
~'~ (quote), ~`~ (backquote), ~,~ (substitute) and ~@,~ (splice) in in listing
|
|
||||||
[[lst:1st-setopt-call]] and [[lst:2nd-setopt-call]]. A tutorial of how to use those
|
|
||||||
reader macros is the [[https://mullikine.github.io/posts/macro-tutorial/][didactic emacs-lisp macro example]].
|
|
||||||
|
|
||||||
The [[info:emacs#Init File][init file (info)]] does not load the ~custom-file~ in spite of the
|
The [[info:emacs#Init File][init file (info)]] does not load the ~custom-file~ in spite of the
|
||||||
recommendation of [[info:emacs#Saving Customizations][saving customizations (info)]].
|
recommendation of [[info:emacs#Saving Customizations][saving customizations (info)]].
|
||||||
@ -264,8 +260,8 @@ recommendation of [[info:emacs#Saving Customizations][saving customizations (inf
|
|||||||
(add-to-list 'initial-frame-alist '(width . 180)))
|
(add-to-list 'initial-frame-alist '(width . 180)))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
#+caption[Set the second set of Emacs options]:
|
#+caption[Set the second set of Emacs options: pin packages to archives]:
|
||||||
#+caption: Set the second set of Emacs options.
|
#+caption: Set the second set of Emacs options: pin packages to archives.
|
||||||
#+name: lst:2nd-setopt-call
|
#+name: lst:2nd-setopt-call
|
||||||
#+begin_src emacs-lisp -n :results silent
|
#+begin_src emacs-lisp -n :results silent
|
||||||
(setopt
|
(setopt
|
||||||
@ -276,16 +272,17 @@ recommendation of [[info:emacs#Saving Customizations][saving customizations (inf
|
|||||||
("melpa" . "https://melpa.org/packages/")
|
("melpa" . "https://melpa.org/packages/")
|
||||||
("melpa-stable" . "https://stable.melpa.org/packages/")
|
("melpa-stable" . "https://stable.melpa.org/packages/")
|
||||||
("nongnu" . "https://elpa.nongnu.org/nongnu/"))
|
("nongnu" . "https://elpa.nongnu.org/nongnu/"))
|
||||||
;; Pin packages to GNU ELPA for info or stability.
|
package-install-upgrade-built-in t
|
||||||
|
;; Pin packages to GNU ELPA for info for stability.
|
||||||
package-pinned-packages '((auctex . "gnu")
|
package-pinned-packages '((auctex . "gnu")
|
||||||
(compat . "gnu")
|
(compat . "gnu")
|
||||||
(consult . "gnu-devel")
|
(consult . "gnu-devel")
|
||||||
(embark . "gnu-devel")
|
(embark . "gnu-devel")
|
||||||
(embark-consult . "gnu-devel")
|
(embark-consult . "gnu-devel")
|
||||||
|
(eldoc . "nongnu")
|
||||||
(engrave-faces . "gnu-devel")
|
(engrave-faces . "gnu-devel")
|
||||||
(hyperbole . "gnu-devel")
|
(hyperbole . "gnu-devel")
|
||||||
(marginalia . "gnu-devel")
|
(marginalia . "gnu-devel")
|
||||||
(org . "gnu-devel")
|
|
||||||
(osm . "gnu-devel")
|
(osm . "gnu-devel")
|
||||||
(parsebib . "melpa-stable")
|
(parsebib . "melpa-stable")
|
||||||
(queue . "gnu")
|
(queue . "gnu")
|
||||||
@ -293,10 +290,38 @@ recommendation of [[info:emacs#Saving Customizations][saving customizations (inf
|
|||||||
(spinner . "gnu")
|
(spinner . "gnu")
|
||||||
(xr . "gnu")
|
(xr . "gnu")
|
||||||
(vertico . "gnu-devel"))
|
(vertico . "gnu-devel"))
|
||||||
package-selected-packages '(async ; asynchroneous processing
|
package-selected-packages '(async debbugs no-littering))
|
||||||
debbugs ; access the GNU bug tracker
|
#+end_src
|
||||||
no-littering ; keep `user-emacs-directory' clean
|
|
||||||
org))
|
#+caption[Set the third set of Emacs options: upgrade build in Org]:
|
||||||
|
#+caption: Set the third set of Emacs options: upgrade build in Org.
|
||||||
|
#+name: lst:3rd-setopt-call
|
||||||
|
#+begin_src emacs-lisp
|
||||||
|
;; Enable `package-install-upgrade-build-in' to upgrade Org.
|
||||||
|
;; Disable upgrading other packages by pinning them to "nongnu".
|
||||||
|
(setopt package-install-upgrade-built-in t
|
||||||
|
package-pinned-packages
|
||||||
|
(cl-union '((bind-key . "nongnu")
|
||||||
|
(eglot . "nongnu")
|
||||||
|
(erc . "nongnu")
|
||||||
|
(external-completion . "nongnu")
|
||||||
|
(faceup . "nongnu")
|
||||||
|
(jsonrpc . "nongnu")
|
||||||
|
(let-alist . "nongnu")
|
||||||
|
(map . "nongnu")
|
||||||
|
(ntlm . "nongnu")
|
||||||
|
(org . "gnu-devel") ; Upgrade!
|
||||||
|
(python . "nongnu")
|
||||||
|
(project . "nongnu")
|
||||||
|
(seq . "nongnu")
|
||||||
|
(soap-client . "nongnu")
|
||||||
|
(so-long . "nongnu")
|
||||||
|
(svg . "nongnu")
|
||||||
|
(use-package . "nongnu")
|
||||||
|
(use-package-ensure-system-package . "nongnu")
|
||||||
|
(verilog-mode . "nongnu")
|
||||||
|
(xref . "nongnu"))
|
||||||
|
package-pinned-packages :key #'car))
|
||||||
#+end_src
|
#+end_src
|
||||||
|
|
||||||
* [[info:emacs#Package Installation][Install the selected packages (info)]]
|
* [[info:emacs#Package Installation][Install the selected packages (info)]]
|
||||||
@ -304,18 +329,20 @@ recommendation of [[info:emacs#Saving Customizations][saving customizations (inf
|
|||||||
:CUSTOM_ID: sec:install-selected-packages
|
:CUSTOM_ID: sec:install-selected-packages
|
||||||
:END:
|
:END:
|
||||||
|
|
||||||
[[info:emacs#Package Installation][Emacs installs packages]] from archives on the internet. This setup uses three
|
[[info:emacs#Package Installation][Emacs installs packages]] from archives on the internet. This setup uses five
|
||||||
archives:
|
archives:
|
||||||
1. The [[https://elpa.gnu.org/][GNU Emacs Lisp Package Archive]]
|
1. The [[https://elpa.gnu.org/][GNU Emacs Lisp Package Archive]].
|
||||||
2. The [[https://elpa.nongnu.org/][NonGNU Emacs Lisp Package Archive]].
|
2. The [[https://elpa.gnu.org/devel/index.html][Development Emacs Lisp Package Archive]].
|
||||||
3. The [[https://melpa.org/#/][Milkypostman's Emacs Lisp Package Archive (MELPA)]] with its official
|
3. The [[https://elpa.nongnu.org/][NonGNU Emacs Lisp Package Archive]].
|
||||||
|
4. The [[https://melpa.org/#/][Milkypostman's Emacs Lisp Package Archive (MELPA)]] with its official
|
||||||
[[https://www.mirrorservice.org/sites/melpa.org/packages/][mirror]] in case [[https://downforeveryoneorjustme.com/melpa.org][is Melpa.org down?]] tells [[https://melpa.org/#/][MELPA]] is down for everyone.
|
[[https://www.mirrorservice.org/sites/melpa.org/packages/][mirror]] in case [[https://downforeveryoneorjustme.com/melpa.org][is Melpa.org down?]] tells [[https://melpa.org/#/][MELPA]] is down for everyone.
|
||||||
|
5. The [[https://stable.melpa.org/#/getting-started][Stable Milkypostman's Emacs Lisp Package Archive]].
|
||||||
|
|
||||||
The code in listing [[lst:install-selected-packages]] assumes that the package
|
The code in listing [[lst:install-selected-packages]] assumes that the package
|
||||||
system is in a *virgin* state if the package [[https://github.com/emacscollective/no-littering][no-littering]] is not present:
|
system is in a *virgin* state if the package [[https://github.com/emacscollective/no-littering][no-littering]] is not present:
|
||||||
1. It installs and loads [[https://github.com/emacscollective/no-littering][no-littering]] after ensuring refreshing of the
|
1. It installs and loads [[https://github.com/emacscollective/no-littering][no-littering]] after ensuring refreshing of the
|
||||||
contents of available packages.
|
contents of available packages.
|
||||||
2. It installs [[https://elpa.gnu.org/devel/org.html][Org (GNU-devel ELPA archive)]] early to shadow the built-in package
|
2. It upgrades the build in Org package.
|
||||||
while preventing collisions between the snapshot and built-in packages.
|
|
||||||
3. It calls src_emacs-lisp{(package-install-selected-packages)} to check the
|
3. It calls src_emacs-lisp{(package-install-selected-packages)} to check the
|
||||||
installation status of all packages in
|
installation status of all packages in
|
||||||
src_emacs-lisp{package-selected-packages} and to install the missing packages
|
src_emacs-lisp{package-selected-packages} and to install the missing packages
|
||||||
@ -337,14 +364,7 @@ the contents of packages and allows to update packages to the latest version.
|
|||||||
;; Install and require `no-littering'.
|
;; Install and require `no-littering'.
|
||||||
(package-install 'no-littering)
|
(package-install 'no-littering)
|
||||||
(require 'no-littering)
|
(require 'no-littering)
|
||||||
;; Stolen from (find-function-other-window 'eglot-upgrade-eglot):
|
(package-upgrade 'org)
|
||||||
(defun shadow-builtin-by-install (pkg)
|
|
||||||
(unless (bound-and-true-p package-archive-contents)
|
|
||||||
(package-refresh-contents))
|
|
||||||
(package-install (cadr (assoc pkg package-archive-contents))))
|
|
||||||
;; Shadow built-in `org' by installing `org'.
|
|
||||||
;; Note (package-reinstall 'org) deletes the shadowing `org'.
|
|
||||||
(shadow-builtin-by-install 'org)
|
|
||||||
;; Install the selected packages.
|
;; Install the selected packages.
|
||||||
(package-install-selected-packages)))
|
(package-install-selected-packages)))
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user