dev: merge from master

This commit is contained in:
Matt Nish-Lapidus 2024-08-27 09:52:50 -04:00
commit 06976a85a0
13 changed files with 58 additions and 39 deletions

View file

@ -13,9 +13,9 @@
;; ;;
;;; Commands ;;; Commands
(defcli-obsolete! ((build b)) (sync "--rebuild") "v3.0.0") (defcli-obsolete! ((build b)) (sync "--rebuild") "3.0.0")
(defcli-obsolete! ((purge p)) (gc) "v3.0.0") (defcli-obsolete! ((purge p)) (gc) "3.0.0")
;; TODO Rename to "doom gc" and move to its own file ;; TODO Rename to "doom gc" and move to its own file
(defcli! (gc) (defcli! (gc)

View file

@ -73,12 +73,14 @@ OPTIONS:
;; recompiled. This is necessary because Emacs byte-code is not ;; recompiled. This is necessary because Emacs byte-code is not
;; necessarily back/forward compatible across major versions, and many ;; necessarily back/forward compatible across major versions, and many
;; packages bake in hardcoded data at compile-time. ;; packages bake in hardcoded data at compile-time.
(pcase-let ((`(,old-version . ,old-host) (doom-file-read doom-cli-sync-info-file :by 'read :noerror t)) (pcase-let ((`(,old-version . ,hash)
(doom-file-read doom-cli-sync-info-file :by 'read :noerror t))
(to-rebuild nil)) (to-rebuild nil))
(when (and old-version (not (equal old-version emacs-version))) (when (and old-version (not (equal old-version emacs-version)))
(print! (warn "Emacs version has changed since last sync (from %s to %s)") old-version emacs-version) (print! (warn "Emacs version has changed since last sync (from %s to %s)") old-version emacs-version)
(setq to-rebuild t)) (setq to-rebuild t))
(when (and old-host (not (equal old-host (system-name)))) (when (and (integerp hash)
(not (equal hash (doom-sync--system-hash))))
(print! (warn "Your system has changed since last sync")) (print! (warn "Your system has changed since last sync"))
(setq to-rebuild t)) (setq to-rebuild t))
(when (and to-rebuild (not rebuild?) (not (doom-cli-context-suppress-prompts-p context))) (when (and to-rebuild (not rebuild?) (not (doom-cli-context-suppress-prompts-p context)))
@ -101,7 +103,8 @@ OPTIONS:
(run-hooks 'doom-after-sync-hook)) (run-hooks 'doom-after-sync-hook))
(when (or rebuild? (not (file-exists-p doom-cli-sync-info-file))) (when (or rebuild? (not (file-exists-p doom-cli-sync-info-file)))
(with-temp-file doom-cli-sync-info-file (with-temp-file doom-cli-sync-info-file
(prin1 (cons emacs-version (system-name)) (current-buffer)))) (prin1 (cons emacs-version (doom-sync--system-hash))
(current-buffer))))
t) t)
(remove-hook 'kill-emacs-hook #'doom-sync--abort-warning-h))) (remove-hook 'kill-emacs-hook #'doom-sync--abort-warning-h)))
@ -109,6 +112,9 @@ OPTIONS:
;; ;;
;;; Helpers ;;; Helpers
(defun doom-sync--system-hash ()
(sxhash (list doom-local-dir system-type system-configuration-features)))
(defun doom-sync--abort-warning-h () (defun doom-sync--abort-warning-h ()
(print! (warn "Script was abruptly aborted, leaving Doom in an incomplete state!")) (print! (warn "Script was abruptly aborted, leaving Doom in an incomplete state!"))
(print! (item "Run 'doom sync' to repair it."))) (print! (item "Run 'doom sync' to repair it.")))

View file

@ -89,7 +89,7 @@ list is returned as-is."
;; ;;
;;; Public library ;;; Public library
(define-obsolete-function-alias 'doom-enlist 'ensure-list "v3.0.0") (define-obsolete-function-alias 'doom-enlist 'ensure-list "3.0.0")
(defun doom-unquote (exp) (defun doom-unquote (exp)
"Return EXP unquoted." "Return EXP unquoted."

View file

@ -12,7 +12,7 @@ Emacs.")
(defvar doom-projectile-cache-purge-non-projects nil (defvar doom-projectile-cache-purge-non-projects nil
"If non-nil, non-projects are purged from the cache on `kill-emacs-hook'.") "If non-nil, non-projects are purged from the cache on `kill-emacs-hook'.")
(define-obsolete-variable-alias 'doom-projectile-fd-binary 'doom-fd-executable "v3.0.0") (define-obsolete-variable-alias 'doom-projectile-fd-binary 'doom-fd-executable "3.0.0")
(defvar doom-fd-executable (cl-find-if #'executable-find (list "fdfind" "fd")) (defvar doom-fd-executable (cl-find-if #'executable-find (list "fdfind" "fd"))
"The filename of the fd executable. "The filename of the fd executable.

View file

@ -56,7 +56,7 @@ And jumps to your `doom!' block."
(defmacro doom--if-compile (command on-success &optional on-failure) (defmacro doom--if-compile (command on-success &optional on-failure)
(declare (indent 2)) (declare (indent 2))
`(let ((default-directory doom-emacs-dir) `(let ((default-directory doom-emacs-dir)
(exec-path (cons doom-bin-dir exec-path))) (doom-bin (expand-file-name "doom" doom-bin-dir)))
;; Ensure the bin/doom operates with the same environment as this ;; Ensure the bin/doom operates with the same environment as this
;; running session. ;; running session.
(letenv! (("EMACS" (doom-path invocation-directory invocation-name)) (letenv! (("EMACS" (doom-path invocation-directory invocation-name))
@ -64,7 +64,7 @@ And jumps to your `doom!' block."
("DOOMDIR" doom-user-dir) ("DOOMDIR" doom-user-dir)
("DOOMLOCALDIR" doom-local-dir) ("DOOMLOCALDIR" doom-local-dir)
("DEBUG" (and doom-debug-mode "1"))) ("DEBUG" (and doom-debug-mode "1")))
(with-current-buffer (compile ,command t) (with-current-buffer (compile (format ,command doom-bin) t)
(let ((w (get-buffer-window (current-buffer)))) (let ((w (get-buffer-window (current-buffer))))
(select-window w) (select-window w)
(add-hook (add-hook
@ -77,7 +77,7 @@ And jumps to your `doom!' block."
,on-failure)) ,on-failure))
nil 'local)))))) nil 'local))))))
(defvar doom-reload-command "doom sync -B -e" (defvar doom-reload-command "%s sync -B -e"
"Command that `doom/reload' runs.") "Command that `doom/reload' runs.")
;;;###autoload ;;;###autoload
(defun doom/reload () (defun doom/reload ()
@ -141,7 +141,7 @@ imported into Emacs."
(doom-load-envvars-file doom-env-file) (doom-load-envvars-file doom-env-file)
(message "Reloaded %S" (abbreviate-file-name doom-env-file)))))) (message "Reloaded %S" (abbreviate-file-name doom-env-file))))))
(defvar doom-upgrade-command "doom upgrade -B --force" (defvar doom-upgrade-command "%s upgrade -B --force"
"Command that `doom/upgrade' runs.") "Command that `doom/upgrade' runs.")
;;;###autoload ;;;###autoload
(defun doom/upgrade () (defun doom/upgrade ()

View file

@ -31,8 +31,8 @@ playback.")
(format (format "%%%ds | %%s" +irc-left-padding) (format (format "%%%ds | %%s" +irc-left-padding)
(concat "*** " left) right)) (concat "*** " left) right))
(define-obsolete-variable-alias '+irc-notifications-watch-strings 'circe-notifications-watch-strings "v3.0.0") (define-obsolete-variable-alias '+irc-notifications-watch-strings 'circe-notifications-watch-strings "3.0.0")
(define-obsolete-variable-alias '+irc-time-stamp-format 'lui-time-stamp-format "v3.0.0") (define-obsolete-variable-alias '+irc-time-stamp-format 'lui-time-stamp-format "3.0.0")
;; ;;

View file

@ -140,7 +140,7 @@ TAB/S-TAB.")
(setq dabbrev-friend-buffer-function #'+dabbrev-friend-buffer-p (setq dabbrev-friend-buffer-function #'+dabbrev-friend-buffer-p
dabbrev-ignored-buffer-regexps dabbrev-ignored-buffer-regexps
'("\\` " '("\\` "
"\\(TAGS\\|tags\\|ETAGS\\|etags\\|GTAGS\\|GRTAGS\\|GPATH\\)\\(<[0-9]+>\\)?") "\\(?:\\(?:[EG]?\\|GR\\)TAGS\\|e?tags\\|GPATH\\)\\(<[0-9]+>\\)?")
dabbrev-upcase-means-case-search t) dabbrev-upcase-means-case-search t)
(add-to-list 'dabbrev-ignored-buffer-modes 'pdf-view-mode) (add-to-list 'dabbrev-ignored-buffer-modes 'pdf-view-mode)
(add-to-list 'dabbrev-ignored-buffer-modes 'doc-view-mode) (add-to-list 'dabbrev-ignored-buffer-modes 'doc-view-mode)

View file

@ -1,13 +1,5 @@
;;; editor/evil/config.el -*- lexical-binding: t; -*- ;;; editor/evil/config.el -*- lexical-binding: t; -*-
(defvar +evil-repeat-keys (cons ";" ",")
"The keys to use for universal repeating motions.
This is a cons cell whose CAR is the key for repeating a motion forward, and
whose CDR is for repeating backward. They should both be `kbd'-able strings.
Set this to `nil' to disable universal-repeating on these keys.")
(defvar +evil-want-o/O-to-continue-comments t (defvar +evil-want-o/O-to-continue-comments t
"If non-nil, the o/O keys will continue comment lines if the point is on a "If non-nil, the o/O keys will continue comment lines if the point is on a
line with a linewise comment.") line with a linewise comment.")

View file

@ -1,10 +1,5 @@
;;; editor/fold/autoload/hideshow.el -*- lexical-binding: t; -*- ;;; editor/fold/autoload/hideshow.el -*- lexical-binding: t; -*-
(defface +fold-hideshow-folded-face
`((t (:inherit font-lock-comment-face :weight light)))
"Face to hightlight `hideshow' overlays."
:group 'doom-themes)
;;;###autoload ;;;###autoload
(defun +fold-hideshow-haml-forward-sexp-fn (arg) (defun +fold-hideshow-haml-forward-sexp-fn (arg)
(haml-forward-sexp arg) (haml-forward-sexp arg)
@ -30,7 +25,8 @@
'empty-line 'empty-line
'vimish-fold-fringe)))) 'vimish-fold-fringe))))
(overlay-put (overlay-put
ov 'display (propertize " [...] " 'face '+fold-hideshow-folded-face)))) ov 'display (propertize +fold-ellipsis
'face '+fold-hideshow-folded-face))))
;; ;;

View file

@ -1,5 +1,22 @@
;;; editor/fold/config.el -*- lexical-binding: t; -*- ;;; editor/fold/config.el -*- lexical-binding: t; -*-
(defcustom +fold-ellipsis " [...] "
"The ellipsis to show for ellided regions (folds).
`org-ellipsis', `truncate-string-ellipsis', and `ts-fold-replacement' are set to
this."
:type 'string
:group '+fold)
(defface +fold-hideshow-folded-face
`((t (:inherit font-lock-comment-face :weight light)))
"Face to hightlight `hideshow' overlays."
:group 'doom-themes)
;;
;;; Global config
(when (modulep! :editor evil) (when (modulep! :editor evil)
;; Add vimish-fold, outline-mode & hideshow support to folding commands ;; Add vimish-fold, outline-mode & hideshow support to folding commands
(define-key! 'global (define-key! 'global
@ -18,9 +35,15 @@
"zd" #'vimish-fold-delete "zd" #'vimish-fold-delete
"zE" #'vimish-fold-delete-all))) "zE" #'vimish-fold-delete-all)))
(after! org
(setq org-ellipsis +fold-ellipsis))
(after! mule-util
(setq truncate-string-ellipsis +fold-ellipsis))
;; ;;
;; Packages ;;; Packages
(use-package! hideshow ; built-in (use-package! hideshow ; built-in
:commands (hs-toggle-hiding :commands (hs-toggle-hiding
@ -91,11 +114,5 @@
:when (modulep! :tools tree-sitter) :when (modulep! :tools tree-sitter)
:after tree-sitter :after tree-sitter
:config :config
;; we want to use our own face so we nullify this one to have no effect and (setq ts-fold-replacement +fold-ellipsis)
;; make it more similar to hideshows
(custom-set-faces! '(ts-fold-replacement-face :foreground unspecified
:box nil
:inherit font-lock-comment-face
:weight light))
(setq ts-fold-replacement " [...] ")
(global-ts-fold-mode +1)) (global-ts-fold-mode +1))

View file

@ -486,7 +486,8 @@ Made for `org-tab-first-hook'."
(evil-emacs-state-p)) (evil-emacs-state-p))
(or (and (bound-and-true-p yas--tables) (or (and (bound-and-true-p yas--tables)
(gethash major-mode yas--tables)) (gethash major-mode yas--tables))
(progn (yas-reload-all) t)) (with-memoization (get 'yas-reload-all 'reloaded)
(always (yas-reload-all))))
(yas--templates-for-key-at-point)) (yas--templates-for-key-at-point))
(yas-expand) (yas-expand)
t) t)

View file

@ -9,8 +9,15 @@
;;; Packages ;;; Packages
(use-package! rustic (use-package! rustic
:mode ("\\.rs\\'" . rust-mode)
:mode ("\\.rs\\'" . rustic-mode) :mode ("\\.rs\\'" . rustic-mode)
:preface :preface
;; HACK: `rust-mode' and `rustic' add entries to `auto-mode-alist', but
;; package load order makes which gets precedence unpredictable. By removing
;; them early, we rely on the `:mode' directives above to re-insert them
;; with the correct order.
(setq auto-mode-alist (assoc-delete-all "\\.rs\\'" auto-mode-alist))
;; HACK `rustic' sets up some things too early. I'd rather disable it and let ;; HACK `rustic' sets up some things too early. I'd rather disable it and let
;; our respective modules standardize how they're initialized. ;; our respective modules standardize how they're initialized.
(setq rustic-lsp-client nil) (setq rustic-lsp-client nil)

View file

@ -63,11 +63,11 @@ font.")
(defvar +ligatures-prog-mode-list nil (defvar +ligatures-prog-mode-list nil
"A list of ligatures to enable in all `prog-mode' buffers.") "A list of ligatures to enable in all `prog-mode' buffers.")
(make-obsolete-variable '+ligatures-prog-mode-list "Use `+ligatures-alist' instead" "v3.0.0") (make-obsolete-variable '+ligatures-prog-mode-list "Use `+ligatures-alist' instead" "3.0.0")
(defvar +ligatures-all-modes-list nil (defvar +ligatures-all-modes-list nil
"A list of ligatures to enable in all buffers.") "A list of ligatures to enable in all buffers.")
(make-obsolete-variable '+ligatures-all-modes-list "Use `+ligatures-alist' instead" "v3.0.0") (make-obsolete-variable '+ligatures-all-modes-list "Use `+ligatures-alist' instead" "3.0.0")
(defvar +ligatures-extra-alist '((t)) (defvar +ligatures-extra-alist '((t))
"A map of major modes to symbol lists (for `prettify-symbols-alist').") "A map of major modes to symbol lists (for `prettify-symbols-alist').")