From 3643c4dadd53e26d20bfaa38c33526854093e66a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 30 Mar 2024 11:49:07 -0400 Subject: [PATCH 01/50] fix(cli): void-function directory-empty-p error directory-empty-p was introduced in 28.1, but Doom still supports 27.1, so 27.x users would see this error when running any bin/doom command that clones packages. Fix: #7779 Amend: 1fa8d3a4b992 --- lisp/cli/packages.el | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lisp/cli/packages.el b/lisp/cli/packages.el index 7c1290101..a89e5f87e 100644 --- a/lisp/cli/packages.el +++ b/lisp/cli/packages.el @@ -339,8 +339,7 @@ list remains lean." ;; invocations, it will assume indicates a successful ;; clone (causing load errors later). (let ((try 0)) - (while (or (not (file-directory-p repo-dir)) - (directory-empty-p repo-dir)) + (while (not (file-directory-p (doom-path repo-dir ".git"))) (when (= try 3) (error "Failed to clone package")) (print! "Failed to clone %S, trying again (attempt #%d)..." package (1+ try)) From a84462133dfbc632804198ab27cdc9f591ce97c0 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 1 Apr 2024 13:16:36 -0400 Subject: [PATCH 02/50] fix(neotree): don't use all-the-icons Fixes 'Package `all-the-icons' isn't installed' error when opening neotree. Ref: #7664 --- modules/ui/neotree/config.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/neotree/config.el b/modules/ui/neotree/config.el index 4f46167b9..37148773b 100644 --- a/modules/ui/neotree/config.el +++ b/modules/ui/neotree/config.el @@ -15,7 +15,7 @@ neo-mode-line-type 'none neo-window-width 30 neo-show-updir-line nil - neo-theme 'icons + neo-theme 'nerd neo-banner-message nil neo-confirm-create-file #'off-p neo-confirm-create-directory #'off-p From 5589722c8e5179b52469ef6b5372c89ff462fac4 Mon Sep 17 00:00:00 2001 From: yuhan0 Date: Mon, 1 Apr 2024 19:49:03 +0800 Subject: [PATCH 03/50] fix(popup): fix typo in local variable name --- modules/ui/popup/autoload/popup.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/ui/popup/autoload/popup.el b/modules/ui/popup/autoload/popup.el index aa31fac2a..3a8a9e61e 100644 --- a/modules/ui/popup/autoload/popup.el +++ b/modules/ui/popup/autoload/popup.el @@ -106,7 +106,7 @@ the buffer is visible, then set another timer and try again later." (param (if (memq side '(left right)) 'window-width 'window-height))) - (setq list (assq-delete-all 'size alist)) + (setq alist (assq-delete-all 'size alist)) (setf (alist-get param alist) size)) (setf (alist-get 'window-parameters alist) parameters) From 230c82fc9590cfa056f6d1b3798af41e38144fea Mon Sep 17 00:00:00 2001 From: carehabit <165479941+carehabit@users.noreply.github.com> Date: Tue, 2 Apr 2024 01:30:10 +0800 Subject: [PATCH 04/50] docs: remove unintended repetition Signed-off-by: carehabit --- lisp/doom-lib.el | 2 +- modules/lang/graphql/README.org | 2 +- modules/lang/org/config.el | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lisp/doom-lib.el b/lisp/doom-lib.el index 9f996d3e7..fd6f34967 100644 --- a/lisp/doom-lib.el +++ b/lisp/doom-lib.el @@ -936,7 +936,7 @@ VARIABLES is a list of variable settings of the form (VAR VALUE), where VAR is the name of the variable (a string) and VALUE is its value (also a string). -The previous values will be be restored upon exit." +The previous values will be restored upon exit." (declare (indent 1) (debug (sexp body))) (unless (consp variables) (error "Invalid VARIABLES: %s" variables)) diff --git a/modules/lang/graphql/README.org b/modules/lang/graphql/README.org index 7a6952545..e09e32f00 100644 --- a/modules/lang/graphql/README.org +++ b/modules/lang/graphql/README.org @@ -91,7 +91,7 @@ query GetContinents($continentCode: String!) { With this module, there are 3 ways to view schemas: + =+graphql-doc-open-config= which uses a local [[https://github.com/jimkyndemeyer/graphql-config-examples][=.graphqlconfig=]] file to seed endpoints to query + =graphql-doc= which prompts you to select an endpoint based on ones added manually by =graphql-doc-add-api= -+ =graphql-doc-open-url= which prompts to to manually enter an endpoint url ++ =graphql-doc-open-url= which prompts to manually enter an endpoint url When using the doc viewer, there are a few bindings for navigating around. diff --git a/modules/lang/org/config.el b/modules/lang/org/config.el index ffbfbb19b..bc2b720b8 100644 --- a/modules/lang/org/config.el +++ b/modules/lang/org/config.el @@ -1188,7 +1188,7 @@ between the two." :hook (org-mode . org-eldoc-load) :init (setq org-eldoc-breadcrumb-separator " → ") :config - ;; HACK Fix #2972: infinite recursion when eldoc kicks in in 'org' or 'python' + ;; HACK Fix #2972: infinite recursion when eldoc kicks in 'org' or 'python' ;; src blocks. ;; TODO Should be reported upstream! (puthash "org" #'ignore org-eldoc-local-functions-cache) From 142f28eb9a32fe0218de8d0d120bf186bbad1a87 Mon Sep 17 00:00:00 2001 From: 45mm <45mm.cartridge421@slmail.me> Date: Mon, 25 Mar 2024 14:23:39 +0000 Subject: [PATCH 05/50] fix(fold): properly support outline-minor-mode - Make `+fold/close-all` work for outline-minor-mode. - Distinguish between `zo` and `zO` for outline-minor-mode alone, by binding `zO` to a new function `+fold/open-rec`. `zO` will now trigger `outline-show-subtree` in outline-minor-mode, while `zo` will only trigger `outline-show-branches`, keeping the subheadings folded. This matches the behavior in org-mode. - Fix a bug in `+fold/open-all`, introduced in 7b9d00d6616d67cbc92765bb9da0dd0d2d9e9581, that makes it only operate on vimish-fold folds. Note that outline-minor-mode is still not enabled by default anywhere. These changes are only to prevent incorrect behavior for users who decide to turn it on themselves. --- modules/editor/fold/autoload/fold.el | 24 ++++++++++++++++++++---- modules/editor/fold/config.el | 2 +- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/modules/editor/fold/autoload/fold.el b/modules/editor/fold/autoload/fold.el index 1052374bb..8e3e8cf34 100644 --- a/modules/editor/fold/autoload/fold.el +++ b/modules/editor/fold/autoload/fold.el @@ -78,6 +78,18 @@ Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds." ((+fold--hideshow-fold-p) (+fold-from-eol (hs-toggle-hiding))) ((+fold--ts-fold-p) (ts-fold-toggle))))) +;;;###autoload +(defun +fold/open-rec () + "Recursively open the folded region at point. + +Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds." + (interactive) + (save-excursion + (cond ((+fold--vimish-fold-p) (vimish-fold-unfold)) + ((+fold--outline-fold-p) (outline-show-subtree)) + ((+fold--hideshow-fold-p) (+fold-from-eol (hs-show-block))) + ((+fold--ts-fold-p) (ts-fold-open))))) + ;;;###autoload (defun +fold/open () "Open the folded region at point. @@ -87,7 +99,7 @@ Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds." (save-excursion (cond ((+fold--vimish-fold-p) (vimish-fold-unfold)) ((+fold--outline-fold-p) - (outline-show-children) + (outline-show-branches) (outline-show-entry)) ((+fold--hideshow-fold-p) (+fold-from-eol (hs-show-block))) ((+fold--ts-fold-p) (ts-fold-open))))) @@ -111,7 +123,7 @@ Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds." (list (if current-prefix-arg (prefix-numeric-value current-prefix-arg)))) (cond ((+fold--ts-fold-p) (ts-fold-open-all)) - ((featurep 'vimish-fold) + ((and (featurep 'vimish-fold) (+fold--vimish-fold-p)) (vimish-fold-unfold-all)) ((save-excursion (+fold--ensure-hideshow-mode) @@ -138,8 +150,12 @@ Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds." (+fold--ensure-hideshow-mode) (hs-life-goes-on (if (integerp level) - (hs-hide-level-recursive (1- level) (point-min) (point-max)) - (hs-hide-all))))))) + (progn + (outline--show-headings-up-to-level (1+ level)) + (hs-hide-level-recursive (1- level) (point-min) (point-max))) + (hs-hide-all) + (when (fboundp 'outline-hide-sublevels) + (outline-show-only-headings)))))))) ;;;###autoload (defun +fold/next (count) diff --git a/modules/editor/fold/config.el b/modules/editor/fold/config.el index c30b5a80e..e1f7dc21c 100644 --- a/modules/editor/fold/config.el +++ b/modules/editor/fold/config.el @@ -6,7 +6,7 @@ [remap evil-toggle-fold] #'+fold/toggle [remap evil-close-fold] #'+fold/close [remap evil-open-fold] #'+fold/open - [remap evil-open-fold-rec] #'+fold/open + [remap evil-open-fold-rec] #'+fold/open-rec [remap evil-close-folds] #'+fold/close-all [remap evil-open-folds] #'+fold/open-all) (after! evil From dd95f8fb3d7cd50c8b6a76abc9aa9723a4cb7773 Mon Sep 17 00:00:00 2001 From: Sean Farley Date: Mon, 4 Dec 2023 21:54:38 -0800 Subject: [PATCH 06/50] feat(common-lisp): add more sly packages Might as well? --- modules/lang/common-lisp/config.el | 5 +++++ modules/lang/common-lisp/packages.el | 3 +++ 2 files changed, 8 insertions(+) diff --git a/modules/lang/common-lisp/config.el b/modules/lang/common-lisp/config.el index e24ffcbb5..8f866be0c 100644 --- a/modules/lang/common-lisp/config.el +++ b/modules/lang/common-lisp/config.el @@ -174,3 +174,8 @@ :defer t :init (add-to-list 'sly-contribs 'sly-asdf 'append)) + +(use-package! sly-stepper + :defer t + :init + (add-to-list 'sly-contribs 'sly-stepper)) diff --git a/modules/lang/common-lisp/packages.el b/modules/lang/common-lisp/packages.el index 07c972ca4..00d0923d5 100644 --- a/modules/lang/common-lisp/packages.el +++ b/modules/lang/common-lisp/packages.el @@ -3,6 +3,9 @@ (when (package! sly :pin "ed17d2c2bd7aead0fbb09c3d22861c80a522a097") (package! sly-asdf :pin "6f9d751469bb82530db1673c22e7437ca6c95f45") + (package! sly-quicklisp :pin "34c73d43dd9066262387c626c17a9b486db07b2d") + (package! sly-stepper :recipe (:host github :repo "joaotavora/sly-stepper" + :files (:defaults "*.lisp" "*.asd"))) (package! sly-macrostep :pin "5113e4e926cd752b1d0bcc1508b3ebad5def5fad") (package! sly-repl-ansi-color :pin "b9cd52d1cf927bf7e08582d46ab0bcf1d4fb5048") (package! sly-overlay :pin "916b50297a1f3bb110f840b89b8717d194623e5f")) From 1176aaae0b8b5bd1ccabb7871ad156ede320553a Mon Sep 17 00:00:00 2001 From: Sean Farley Date: Mon, 18 Dec 2023 19:41:52 -0800 Subject: [PATCH 07/50] feat(mu4e): use built-in notifications instead of mu4e-alert Now that mu4e has its own notification feature since 1.10 (and as of this commit version 1.12 is already out), we can just use that. Much less code to maintain. Closes: https://github.com/doomemacs/doomemacs/issues/6896 --- modules/email/mu4e/config.el | 75 +--------------------------------- modules/email/mu4e/packages.el | 2 - 2 files changed, 1 insertion(+), 76 deletions(-) diff --git a/modules/email/mu4e/config.el b/modules/email/mu4e/config.el index f4f6d9c5b..072309620 100644 --- a/modules/email/mu4e/config.el +++ b/modules/email/mu4e/config.el @@ -75,6 +75,7 @@ is non-nil." (setq mu4e-get-mail-command "offlineimap -o -q"))) (setq mu4e-update-interval nil + mu4e-notification-support t mu4e-sent-messages-behavior 'sent mu4e-hide-index-messages t ;; configuration for sending mail @@ -671,77 +672,3 @@ See `+mu4e-msg-gmail-p' and `mu4e-sent-messages-behavior'.") (`refile (mu4e-action-retag-message msg "-\\Inbox")) (`flag (mu4e-action-retag-message msg "+\\Starred")) (`unflag (mu4e-action-retag-message msg "-\\Starred")))))))) - -;; -;;; Alerts - -(use-package! mu4e-alert - :after mu4e - :config - (setq doom-modeline-mu4e t) - - (mu4e-alert-enable-mode-line-display) - (mu4e-alert-enable-notifications) - - (when (version<= "1.6" mu4e-mu-version) - (defadvice! +mu4e-alert-filter-repeated-mails-fixed-a (mails) - "Filters the MAILS that have been seen already\nUses :message-id not :docid." - :override #'mu4e-alert-filter-repeated-mails - (cl-remove-if (lambda (mail) - (prog1 (and (not mu4e-alert-notify-repeated-mails) - (ht-get mu4e-alert-repeated-mails - (plist-get mail :message-id))) - (ht-set! mu4e-alert-repeated-mails - (plist-get mail :message-id) - t))) - mails))) - - (when (featurep :system 'linux) - (mu4e-alert-set-default-style 'libnotify) - - (defvar +mu4e-alert-bell-cmd '("paplay" . "/usr/share/sounds/freedesktop/stereo/message.oga") - "Cons list with command to play a sound, and the sound file to play. -Disabled when set to nil.") - - (setq mu4e-alert-email-notification-types '(subjects)) - (defun +mu4e-alert-grouped-mail-notification-formatter-with-bell (mail-group _all-mails) - "Default function to format MAIL-GROUP for notification. -ALL-MAILS are the all the unread emails" - (when +mu4e-alert-bell-cmd - (start-process "mu4e-alert-bell" nil (car +mu4e-alert-bell-cmd) (cdr +mu4e-alert-bell-cmd))) - (if (> (length mail-group) 1) - (let* ((mail-count (length mail-group)) - (first-mail (car mail-group)) - (title-prefix (format "You have %d unread emails" - mail-count)) - (field-value (mu4e-alert--get-group first-mail)) - (title-suffix (format (pcase mu4e-alert-group-by - (`:from "from %s:") - (`:to "to %s:") - (`:maildir "in %s:") - (`:priority "with %s priority:") - (`:flags "with %s flags:")) - field-value)) - (title (format "%s %s" title-prefix title-suffix))) - (list :title title - :body (s-join "\n" - (mapcar (lambda (mail) - (format "%s%s • %s" - (cond - ((plist-get mail :in-reply-to) "⮩ ") - ((string-match-p "\\`Fwd:" - (plist-get mail :subject)) " ⮯ ") - (t "  ")) - (truncate-string-to-width (or (caar (plist-get mail :from)) - (cdar (plist-get mail :from))) - 20 nil nil t) - (truncate-string-to-width - (replace-regexp-in-string "\\`Re: \\|\\`Fwd: " "" - (plist-get mail :subject)) - 40 nil nil t))) - mail-group)))) - (let* ((new-mail (car mail-group)) - (subject (plist-get new-mail :subject)) - (sender (caar (plist-get new-mail :from)))) - (list :title sender :body subject)))) - (setq mu4e-alert-grouped-mail-notification-formatter #'+mu4e-alert-grouped-mail-notification-formatter-with-bell))) diff --git a/modules/email/mu4e/packages.el b/modules/email/mu4e/packages.el index 6e0aa3fda..1d2642782 100644 --- a/modules/email/mu4e/packages.el +++ b/modules/email/mu4e/packages.el @@ -3,5 +3,3 @@ (when (modulep! +org) (package! org-msg :pin "0b65f0f77a7a71881ddfce19a8cdc60465bda057")) - -(package! mu4e-alert :pin "6beda20fc69771f2778f507c4a9e069dbaf1b628") From 1598444bd9aa2d5fb702a44fdce7d7b17164d2d4 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 1 Apr 2024 13:34:37 -0400 Subject: [PATCH 08/50] docs(corfu): disabling auto-completion Close: #7749 Co-authored-by: 45mg <45mg@users.noreply.github.com> --- modules/completion/corfu/README.org | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/modules/completion/corfu/README.org b/modules/completion/corfu/README.org index 541510cb5..4bbea003b 100644 --- a/modules/completion/corfu/README.org +++ b/modules/completion/corfu/README.org @@ -203,6 +203,14 @@ A few variables may be set to change behavior of this module: Whether to enable Corfu in the minibuffer. See its documentation for additional tweaks. +** Turning off auto-completion +To disable idle (as-you-type) completion, unset ~corfu-auto~: +#+begin_src emacs-lisp +;;; in $DOOMDIR/config.el +(after! corfu + (setq corfu-auto nil)) +#+end_src + ** Adding CAPFs to a mode To add other CAPFs on a mode-per-mode basis, put either of the following in your ~config.el~: From 22fa4ccac715a6e0b6c180ef1966779a58ac5703 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 1 Apr 2024 13:44:25 -0400 Subject: [PATCH 09/50] tweak(vertico): consult-dir: use projectile --- modules/completion/vertico/config.el | 3 +++ 1 file changed, 3 insertions(+) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index 1c88689c1..de12d0449 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -206,6 +206,9 @@ orderless." "C-x C-d" #'consult-dir "C-x C-j" #'consult-dir-jump-file)) :config + ;; DEPRECATED: Remove when Doom core replaces projectile with project.el + (setq consult-dir-project-list-function #'consult-dir-projectile-dirs) + (when (modulep! :tools docker) ;; TODO: Replace with `tramp-container--completion-function' when we drop ;; support for <29 From ea4792ccd215c4b153373da9551dc94557067f9a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 1 Apr 2024 13:47:12 -0400 Subject: [PATCH 10/50] docs: bump 29.2 -> 29.3 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 0da6c941b..6367189bc 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,7 @@ [Install](#install) • [Documentation] • [FAQ] • [Screenshots] • [Contribute](#contribute) ![Made with Doom Emacs](https://img.shields.io/github/tag/doomemacs/doomemacs.svg?style=flat-square&label=release&color=58839b) -![Supports Emacs 27.1–29.2](https://img.shields.io/badge/Supports-Emacs_27.1–29.2-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white) +![Supports Emacs 27.1–29.3](https://img.shields.io/badge/Supports-Emacs_27.1–29.3-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white) ![Latest commit](https://img.shields.io/github/last-commit/doomemacs/doomemacs/master?style=flat-square) ![Build status: master](https://img.shields.io/github/workflow/status/doomemacs/doomemacs/CI/master?style=flat-square) [![Discord Server](https://img.shields.io/discord/406534637242810369?color=738adb&label=Discord&logo=discord&logoColor=white&style=flat-square)][Discord] @@ -99,7 +99,7 @@ Check out [the FAQ][FAQ] for answers to common questions about the project. # Prerequisites - Git 2.23+ -- Emacs 27.1–29.2 (**Recommended: 29.2 + +- Emacs 27.1–29.3 (**Recommended: 29.3 + [native-comp](https://www.emacswiki.org/emacs/GccEmacs)**) - [ripgrep] 11.0+ - GNU `find` From 392fe88ed00311c129d56cc0f3d62fbb9e813f4f Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 1 Apr 2024 13:59:41 -0400 Subject: [PATCH 11/50] fix(lib): sudo-{this,save}-file: file path for indirect clones If the buffer is an indirect clone, it may not have a buffer-file-name. Also changes the command to throw an error if the current file has no file path *and* is not a dired buffer. --- lisp/lib/files.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/lisp/lib/files.el b/lisp/lib/files.el index 088463293..022be0003 100644 --- a/lisp/lib/files.el +++ b/lisp/lib/files.el @@ -495,16 +495,17 @@ If FORCE-P, overwrite the destination file if it exists, without confirmation." (interactive) (find-file (doom--sudo-file-path - (or buffer-file-name + (or (buffer-file-name (buffer-base-buffer)) (when (or (derived-mode-p 'dired-mode) (derived-mode-p 'wdired-mode)) - default-directory))))) + default-directory) + (user-error "Cannot determine the file path of the current buffer"))))) ;;;###autoload (defun doom/sudo-save-buffer () "Save this file as root." (interactive) - (let ((file (doom--sudo-file-path buffer-file-name))) + (let ((file (doom--sudo-file-path (buffer-file-name (buffer-base-buffer))))) (if-let (buffer (find-file-noselect file)) (let ((origin (current-buffer))) (copy-to-buffer buffer (point-min) (point-max)) From c6fc0e5bc018efc7ee8174dbbec8cff28644ad54 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Mon, 1 Apr 2024 15:45:09 -0400 Subject: [PATCH 12/50] fix(cli): don't delete repos beyond $DOOMLOCALDIR Doom makes multiple attempts to re-clone repos if they failed the first time, however, if a user provides a :local-repo and that location isn't a git repo, Doom assumes this it is the result of a failed clone, and so deletes it to "try" again (which will fail). This can result in lost work. This prevents this from happening to packages/repos outside of $DOOMLOCALDIR (all packages under $DOOMLOCALDIR must be git repos). Fix: #7785 Amend: 3643c4dadd53 Amend: 1fa8d3a4b992 --- lisp/cli/packages.el | 50 +++++++++++++++++++++----------------------- 1 file changed, 24 insertions(+), 26 deletions(-) diff --git a/lisp/cli/packages.el b/lisp/cli/packages.el index a89e5f87e..2f81d22b5 100644 --- a/lisp/cli/packages.el +++ b/lisp/cli/packages.el @@ -315,38 +315,36 @@ list remains lean." (doom-packages--cli-recipes-update)) (condition-case-unless-debug e (let ((straight-vc-git-post-clone-hook - (cons (lambda! (&key repo-dir commit) + (cons (lambda! (&key commit) (print-group! (if-let (pin (cdr (assoc package pinned))) (print! (item "Pinned to %s") pin) (when commit - (print! (item "Checked out %s") commit)))) - ;; HACK: Line encoding issues can plague - ;; repos with dirty worktree prompts - ;; when updating packages or "Local - ;; variables entry is missing the - ;; suffix" errors when installing them - ;; (see #2637), so have git handle - ;; conversion by force. - (when (and doom--system-windows-p (stringp repo-dir)) - (let ((default-directory repo-dir)) - (when (file-in-directory-p default-directory straight-base-dir) - (straight--process-run "git" "config" "core.autocrlf" "true"))))) + (print! (item "Checked out %s") commit))))) straight-vc-git-post-clone-hook))) (straight-use-package (intern package)) - ;; HACK: Straight can sometimes fail to clone a repo, - ;; leaving behind an empty directory which, in future - ;; invocations, it will assume indicates a successful - ;; clone (causing load errors later). - (let ((try 0)) - (while (not (file-directory-p (doom-path repo-dir ".git"))) - (when (= try 3) - (error "Failed to clone package")) - (print! "Failed to clone %S, trying again (attempt #%d)..." package (1+ try)) - (delete-directory repo-dir t) - (delete-directory build-dir t) - (straight-use-package (intern package)) - (cl-incf try)))) + (when (file-in-directory-p repo-dir straight-base-dir) + ;; HACK: Straight can sometimes fail to clone a repo, + ;; leaving behind an empty directory which, in + ;; future invocations, it will assume indicates a + ;; successful clone (causing load errors later). + (let ((try 0)) + (while (not (file-directory-p (doom-path repo-dir ".git"))) + (when (= try 3) + (error "Failed to clone package")) + (print! (warn "Failed to clone %S, trying again (attempt #%d)...") package (1+ try)) + (delete-directory repo-dir t) + (delete-directory build-dir t) + (straight-use-package (intern package)) + (cl-incf try))) + ;; HACK: Line encoding issues can plague repos with + ;; dirty worktree prompts when updating packages or + ;; "Local variables entry is missing the suffix" + ;; errors when installing them (see #2637), so have + ;; git handle conversion by force. + (when doom--system-windows-p + (let ((default-directory repo-dir)) + (straight--process-run "git" "config" "core.autocrlf" "true"))))) (error (signal 'doom-package-error (list package e))))))) (progn From 13b60b9702ea7868ecf5716d352a7e053ec6dd3f Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 2 Apr 2024 20:08:07 -0400 Subject: [PATCH 13/50] bump: :editor evil emacs-evil/evil-collection@8c84f9bc89fe -> emacs-evil/evil-collection@e0982fcbb6f1 emacs-evil/evil-surround@c7116cdc774b -> emacs-evil/evil-surround@da05c60b0621 emacs-evil/evil@5995f6f21f66 -> emacs-evil/evil@88d073c9d03c redguardtoo/evil-nerd-commenter@3b197a2b559b -> redguardtoo/evil-nerd-commenter@ae52c5070a48 wcsmith/evil-args@2671071a4a57 -> wcsmith/evil-args@a8151556f63c --- modules/editor/evil/packages.el | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/editor/evil/packages.el b/modules/editor/evil/packages.el index b38f6ebe4..d4afb505e 100644 --- a/modules/editor/evil/packages.el +++ b/modules/editor/evil/packages.el @@ -1,8 +1,8 @@ ;; -*- no-byte-compile: t; -*- ;;; editor/evil/packages.el -(package! evil :pin "5995f6f21f662484440ed67a28ce59e365feb9ad") -(package! evil-args :pin "2671071a4a57eaee7cc8c27b9e4b6fc60fd2ccd3") +(package! evil :pin "88d073c9d03ca223564e7e8589f44ecc87c98153") +(package! evil-args :pin "a8151556f63c9d45d0c44c8a7ef9e5a542f3cdc7") (package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9") (package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d") (package! evil-escape @@ -11,10 +11,10 @@ (package! evil-exchange :pin "5f0a2d41434c17c6fb02e4f744043775de1c63a2") (package! evil-indent-plus :pin "f392696e4813f1d3a92c7eeed333248914ba6dae") (package! evil-lion :pin "1e838a53b8f18a3c8bdf3e952186abc2ee9cb98e") -(package! evil-nerd-commenter :pin "3b197a2b559b06a7cf39978704b196f53dac802a") +(package! evil-nerd-commenter :pin "ae52c5070a48793e2c24474c9c8dbf20175d18a0") (package! evil-numbers :pin "7a1b62afc12da2b582bf84d722e7b10ca8b97065") (package! evil-snipe :pin "c2108d3932fcd2f75ac3e48250d6badd668f5b4f") -(package! evil-surround :pin "c7116cdc774b1e259eaf3e9e7a318a6c99c2da17") +(package! evil-surround :pin "da05c60b0621cf33161bb4335153f75ff5c29d91") (package! evil-textobj-anyblock :recipe (:host github :repo "willghatch/evil-textobj-anyblock" @@ -35,4 +35,4 @@ (package! neotree) (autoload 'neotree-make-executor "neotree" nil nil 'macro)) - (package! evil-collection :pin "8c84f9bc89fe56e71b56519f886085ddcbc671cf")) + (package! evil-collection :pin "e0982fcbb6f1694b27074565553fac0e736a30b4")) From 34a9c3d0b3a5e3645fb7fe564eb02c0ebc51ee68 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Tue, 2 Apr 2024 20:10:16 -0400 Subject: [PATCH 14/50] bump: :editor snippets doomemacs/snippets@f022984ee131 -> doomemacs/snippets@07b3bdaf60b7 joaotavora/yasnippet@297546f0853a -> joaotavora/yasnippet@33587a8551b8 --- modules/editor/snippets/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/snippets/packages.el b/modules/editor/snippets/packages.el index 3b3b46387..6af0e2787 100644 --- a/modules/editor/snippets/packages.el +++ b/modules/editor/snippets/packages.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; -*- ;;; editor/snippets/packages.el -(package! yasnippet :pin "297546f0853a6a51f5b05e954d0c6aea8caa5ec2") +(package! yasnippet :pin "33587a8551b8f6991b607d3532062a384c010ce1") (package! auto-yasnippet :pin "6a9e406d0d7f9dfd6dff7647f358cb05a0b1637e") (package! doom-snippets :recipe (:host github :repo "doomemacs/snippets" :files (:defaults "*")) - :pin "f022984ee1318a4015d5d081b3c3dab5a60dc6ff") + :pin "07b3bdaf60b74080f899b12c3d46594c7fa75e04") From 3192816c22f25368847ac463fe41f4025a22a177 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 15:53:53 -0400 Subject: [PATCH 15/50] bump: :tools debugger lsp emacs-lsp/dap-mode@2f0c5b28578c -> emacs-lsp/dap-mode@c95537c58e8f emacs-lsp/lsp-mode@a5f5ca9a8a4b -> emacs-lsp/lsp-mode@8861252880f6 emacs-lsp/lsp-ui@bc58c6664577 -> emacs-lsp/lsp-ui@942eeecc3d9a emacs-straight/eglot@24f2bf7b28c3 -> emacs-straight/eglot@678610fdc544 mohkale/consult-eglot@049c6319b8a4 -> mohkale/consult-eglot@64262e72452f Ref: emacs-lsp/lsp-mode#4169 Ref: emacs-lsp/lsp-mode#4414 --- modules/tools/debugger/packages.el | 2 +- modules/tools/lsp/packages.el | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/modules/tools/debugger/packages.el b/modules/tools/debugger/packages.el index bde6bede8..646b3cbc6 100644 --- a/modules/tools/debugger/packages.el +++ b/modules/tools/debugger/packages.el @@ -6,5 +6,5 @@ (package! realgud-trepan-ni :pin "0ec088ea343835e24ae73da09bea96bfb02a3130"))) (when (modulep! +lsp) - (package! dap-mode :pin "2f0c5b28578ce65ec746e4084ba72ba5c652ea79") + (package! dap-mode :pin "c95537c58e8f3ceac9c827ddf89e4928b24a1cc7") (package! posframe :pin "017deece88360c7297265680d78a0bb316470716")) diff --git a/modules/tools/lsp/packages.el b/modules/tools/lsp/packages.el index c8c0f44b0..c493ec335 100644 --- a/modules/tools/lsp/packages.el +++ b/modules/tools/lsp/packages.el @@ -3,14 +3,14 @@ (if (modulep! +eglot) (progn - (package! eglot :pin "24f2bf7b28c33e1d677b547956ade5560d27f55f") + (package! eglot :pin "678610fdc544f10ac757ab7acf88ac7c5815ed5a") (when (modulep! :completion vertico) - (package! consult-eglot :pin "049c6319b8a48ff66189d49592c7759f0b356596")) + (package! consult-eglot :pin "64262e72452f8fe6dd49d31bcdd4bd577b7d682d")) (when (and (modulep! :checkers syntax) (not (modulep! :checkers syntax +flymake))) (package! flycheck-eglot :pin "114e1315aaf0dc3196da67da426bbe2b46384fe2"))) - (package! lsp-mode :pin "a5f5ca9a8a4b2ceaf236457bf2524f94c183c2f2") - (package! lsp-ui :pin "bc58c6664577d1d79060c6b32b7ad20e70ee19d0") + (package! lsp-mode :pin "8861252880f6c2f6374a7bca2b945e6447eebd5a") + (package! lsp-ui :pin "942eeecc3d9a23ad006a3476885dfa7cbb5e207e") (when (modulep! :completion ivy) (package! lsp-ivy :pin "9ecf4dd9b1207109802bd1882aa621eb1c385106")) (when (modulep! :completion helm) From e5fb4f3dd90034c8315393b0cff24cd5b6ab801c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 15:54:51 -0400 Subject: [PATCH 16/50] bump: :lang scala emacs-lsp/lsp-metals@da7e54ed65f4 -> emacs-lsp/lsp-metals@e55d544996f7 hvesalai/emacs-sbt-mode@9fe1e8807c22 -> hvesalai/emacs-sbt-mode@bcf8d6040021 --- modules/lang/scala/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/lang/scala/packages.el b/modules/lang/scala/packages.el index ac9483e98..38429ea89 100644 --- a/modules/lang/scala/packages.el +++ b/modules/lang/scala/packages.el @@ -1,9 +1,9 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/scala/packages.el -(package! sbt-mode :pin "9fe1e8807c22cc1dc56a6233e000969518907f4d") +(package! sbt-mode :pin "bcf8d6040021013430b39d6f6766ce1aab0b691a") (package! scala-mode :pin "4c6d636b86e3bb1d95de819dc48dda92abdfbcf4") (when (and (modulep! +lsp) (not (modulep! :tools lsp +eglot))) - (package! lsp-metals :pin "da7e54ed65f4e153c94b9c54689908dce142ef37")) + (package! lsp-metals :pin "e55d544996f7321622e1eeafdc3dd128f8e72ce5")) From beb6e8763696658b4aada08c71bc749889ea90d8 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 15:55:40 -0400 Subject: [PATCH 17/50] bump: :tools magit :emacs vc emacsmirror/git-timemachine@ac933e5cd295 -> emacsmirror/git-timemachine@5ed73c3831cf magit/forge@2a3b41eb6235 -> magit/forge@ad94b5665de3 magit/magit@0e8f25a8d801 -> magit/magit@b5637d665c1e --- modules/emacs/vc/packages.el | 4 ++-- modules/tools/magit/packages.el | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/emacs/vc/packages.el b/modules/emacs/vc/packages.el index 7b1f30628..4602753ae 100644 --- a/modules/emacs/vc/packages.el +++ b/modules/emacs/vc/packages.el @@ -6,9 +6,9 @@ (package! smerge-mode :built-in t) (package! browse-at-remote :pin "76aa27dfd469fcae75ed7031bb73830831aaccbf") -(package! git-commit :pin "b68e0a3c3388af8daac662f25ccfd3e980590e12") +(package! git-commit :pin "b5637d665c1e5bd5b76ffb072dbac387f37a5f63") (package! git-timemachine ;; The original lives on codeberg.org; which has uptime issues. :recipe (:host github :repo "emacsmirror/git-timemachine") - :pin "ac933e5cd29583c131401f3bd991d98129c316df") + :pin "5ed73c3831cf6da10ba941e6abba708a86853e8f") (package! git-modes :pin "3cc94974c09c43462dfbfbe20396a414352dbb92") diff --git a/modules/tools/magit/packages.el b/modules/tools/magit/packages.el index c48e55650..2f046d9b7 100644 --- a/modules/tools/magit/packages.el +++ b/modules/tools/magit/packages.el @@ -1,9 +1,9 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/magit/packages.el -(when (package! magit :pin "0e8f25a8d8011328f2bf082232c720b24c2a12c2") +(when (package! magit :pin "b5637d665c1e5bd5b76ffb072dbac387f37a5f63") (when (modulep! +forge) - (package! forge :pin "2a3b41eb6235b3f39c017c1f86b3928a45c5a64d") + (package! forge :pin "ad94b5665de357347bfc52910eef46a79f74988d") (package! code-review :recipe (:host github :repo "doomelpa/code-review" From 52599ab536473be867205e397a2e971365760dcf Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 17:21:16 -0400 Subject: [PATCH 18/50] bump: :completion abo-abo/swiper@8c30f4cab594 -> abo-abo/swiper@1f88e5499046 company-mode/company-mode@02903bd7088d -> company-mode/company-mode@b0a522ac5bf8 emacs-helm/helm-descbinds@b72515982396 -> emacs-helm/helm-descbinds@ca03f02da4e5 emacs-helm/helm@f34ea6b70264 -> emacs-helm/helm@28f62344fed0 minad/cape@a397a0c92de3 -> minad/cape@e01e44302348 minad/consult@b48ff6bf0527 -> minad/consult@c87b0bf06de0 minad/corfu@c1e7b6190b00 -> minad/corfu@35cd5a0f3cba minad/marginalia@f6fe86b989a1 -> minad/marginalia@3275d1f85cb0 minad/vertico@68cbd4758944 -> minad/vertico@68e51fda552a oantolin/embark@c93abadc8220 -> oantolin/embark@d3c9d1b4c890 oantolin/orderless@dc7a781acf2e -> oantolin/orderless@ac4aeb66f331 radian-software/prescient.el@4b875be52e75 -> radian-software/prescient.el@c39bf07c56b4 sebastiencs/company-box@b6f53e26adf9 -> sebastiencs/company-box@c4f2e243fba0 --- modules/completion/company/packages.el | 4 ++-- modules/completion/corfu/packages.el | 4 ++-- modules/completion/helm/packages.el | 4 ++-- modules/completion/ivy/packages.el | 4 ++-- modules/completion/vertico/packages.el | 12 ++++++------ 5 files changed, 14 insertions(+), 14 deletions(-) diff --git a/modules/completion/company/packages.el b/modules/completion/company/packages.el index 43c389ea7..c4718a4aa 100644 --- a/modules/completion/company/packages.el +++ b/modules/completion/company/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; completion/company/packages.el -(package! company :pin "02903bd7088d65a87df0ae0f0d0a7118de147b69") +(package! company :pin "b0a522ac5bf8ba3d2f4f22e3aa846a4f82978a16") (package! company-dict :pin "cd7b8394f6014c57897f65d335d6b2bd65dab1f4") (when (modulep! +childframe) - (package! company-box :pin "b6f53e26adf948aca55c3ff6c22c21a6a6614253")) + (package! company-box :pin "c4f2e243fba03c11e46b1600b124e036f2be7691")) diff --git a/modules/completion/corfu/packages.el b/modules/completion/corfu/packages.el index 3c0e58714..2dee62c70 100644 --- a/modules/completion/corfu/packages.el +++ b/modules/completion/corfu/packages.el @@ -1,8 +1,8 @@ ;; -*- no-byte-compile: t; -*- ;;; completion/corfu/packages.el -(package! corfu :pin "c1e7b6190b00158e67347b4db0a8f7964e5d2f8b") -(package! cape :pin "a397a0c92de38277b7f835fa999fac400a764908") +(package! corfu :pin "35cd5a0f3cba89766072e3e933d1fe2ee02f2289") +(package! cape :pin "e01e4430234850263d326ad4521849cd46e64059") (when (modulep! +icons) (package! nerd-icons-corfu :pin "7077bb76fefc15aed967476406a19dc5c2500b3c")) (when (and (not (modulep! :completion vertico)) diff --git a/modules/completion/helm/packages.el b/modules/completion/helm/packages.el index d348d6437..d7a7ae7de 100644 --- a/modules/completion/helm/packages.el +++ b/modules/completion/helm/packages.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; -*- ;;; completion/helm/packages.el -(package! helm :pin "f34ea6b702648e5c7535a704bdb6c4d7afb4b3b8") +(package! helm :pin "28f62344fed0d8be0bcef5aa8a018ba58198ba0c") (package! helm-company :pin "4622b82353220ee6cc33468f710fa5b6b253b7f1") (package! helm-c-yasnippet :pin "c5880e740da101fde7a995e94a7b16c330e57583") -(package! helm-descbinds :pin "b72515982396b6e336ad7beb6767e95a80fca192") +(package! helm-descbinds :pin "ca03f02da4e54a1d0a2d5498b86e1639aa808d8c") (package! helm-describe-modes :pin "11fb36af119b784539d31c6160002de1957408aa") (package! helm-projectile :pin "e2e38825c975269a4971df25e79b2ae98929624e") (package! helm-rg :pin "ee0a3c09da0c843715344919400ab0a0190cc9dc") diff --git a/modules/completion/ivy/packages.el b/modules/completion/ivy/packages.el index a5dce1fb1..beafb3133 100644 --- a/modules/completion/ivy/packages.el +++ b/modules/completion/ivy/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; completion/ivy/packages.el -(package! swiper :pin "8c30f4cab5948aa8d942a3b2bbf5fb6a94d9441d") +(package! swiper :pin "1f88e5499046d166d22bf733a3877aec3b424947") (package! ivy) (package! ivy-hydra) (package! ivy-avy) @@ -13,7 +13,7 @@ (package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4") (if (modulep! +prescient) - (package! ivy-prescient :pin "4b875be52e75f7b81e68a16b62cfbb2f2584042c") + (package! ivy-prescient :pin "c39bf07c56b427bf41aafd7d20eaef5cf3c312b5") (when (modulep! +fuzzy) (package! flx :pin "4b1346eb9a8a76ee9c9dede69738c63ad97ac5b6"))) diff --git a/modules/completion/vertico/packages.el b/modules/completion/vertico/packages.el index 8d1f9c75f..e93edda1b 100644 --- a/modules/completion/vertico/packages.el +++ b/modules/completion/vertico/packages.el @@ -1,19 +1,19 @@ ;; -*- no-byte-compile: t; -*- ;;; completion/vertico/packages.el -(package! vertico :pin "68cbd47589446e9674921bae0b98ff8fbe28be23") +(package! vertico :pin "68e51fda552a2f91caab69e83564bc91275b09b1") -(package! orderless :pin "dc7a781acf2e58ac7d20d1b522be0cde5213e057") +(package! orderless :pin "ac4aeb66f331f4c4a430d5556071e33177304c37") -(package! consult :pin "b48ff6bf0527baeb6bfd07c6da9d303ff0b79c3d") +(package! consult :pin "c87b0bf06de0c3cb60bc8d257c770cb981ddcd19") (package! consult-dir :pin "3f5f4b71ebe819392cb090cda71bd39a93bd830a") (when (and (modulep! :checkers syntax) (not (modulep! :checkers syntax +flymake))) (package! consult-flycheck :pin "754f5497d827f7d58009256a21af614cc44378a3")) -(package! embark :pin "c93abadc8220c0caa6fea805f7a736c346d47e7e") -(package! embark-consult :pin "c93abadc8220c0caa6fea805f7a736c346d47e7e") +(package! embark :pin "d3c9d1b4c890cf365846cc2b418f37341999e79f") +(package! embark-consult :pin "d3c9d1b4c890cf365846cc2b418f37341999e79f") -(package! marginalia :pin "f6fe86b989a177355ab3ff7e97a384e10a7b0bb1") +(package! marginalia :pin "3275d1f85cb020280979a050054b843f7563aea2") (package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4") From 747a57fe547c205f059bf6ef7c94960b1d31867b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 17:24:17 -0400 Subject: [PATCH 19/50] bump: :tools andras-simonyi/citeproc-el@c61c98b9d230 -> andras-simonyi/citeproc-el@44f90cb29676 editorconfig/editorconfig-emacs@c3666c093f3a -> editorconfig/editorconfig-emacs@d73b6392ded0 emacs-citar/citar-org-roam@7d67dccf8006 -> emacs-citar/citar-org-roam@82d47b5df192 emacs-tree-sitter/tree-sitter-langs@c56cb511045d -> emacs-tree-sitter/tree-sitter-langs@b7895ca75956 emacsorphanage/quickrun@248149b02610 -> emacsorphanage/quickrun@373634cf5143 hcl-emacs/terraform-mode@e8b57df8c2a3 -> hcl-emacs/terraform-mode@a645c32a8f0f k1LoW/emacs-ansible@d89ac0ee5774 -> k1LoW/emacs-ansible@1d7de8d3ddac krzysztof-magosa/company-ansible@79dd421b161e -> krzysztof-magosa/company-ansible@338922601cf9 nicolaisingh/saveplace-pdf-view@abfb5e1f463c -> nicolaisingh/saveplace-pdf-view@ee95460cd934 purcell/envrc@1385e72a7309 -> purcell/envrc@8eb7401700b0 spotify/dockerfile-mode@52c6c00da1d3 -> spotify/dockerfile-mode@39a012a27fcf tmalsburg/helm-bibtex@bf184cc311c9 -> tmalsburg/helm-bibtex@8b71b4f5ce62 vedang/pdf-tools@c69e7656a467 -> vedang/pdf-tools@93e74924517d xuchunyang/osx-dictionary.el@1f5a74f3e5d7 -> xuchunyang/osx-dictionary.el@6abfd6908b0d yoshiki/yaml-mode@5b58248ab255 -> yoshiki/yaml-mode@7b5ce294fb15 --- modules/tools/ansible/packages.el | 6 +++--- modules/tools/biblio/packages.el | 12 ++++++------ modules/tools/direnv/packages.el | 2 +- modules/tools/docker/packages.el | 2 +- modules/tools/editorconfig/packages.el | 2 +- modules/tools/eval/packages.el | 2 +- modules/tools/lookup/packages.el | 2 +- modules/tools/pdf/packages.el | 4 ++-- modules/tools/terraform/packages.el | 2 +- modules/tools/tree-sitter/packages.el | 2 +- 10 files changed, 18 insertions(+), 18 deletions(-) diff --git a/modules/tools/ansible/packages.el b/modules/tools/ansible/packages.el index a9f9837b7..b8f23f34e 100644 --- a/modules/tools/ansible/packages.el +++ b/modules/tools/ansible/packages.el @@ -1,10 +1,10 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/ansible/packages.el -(package! ansible :recipe (:nonrecursive t) :pin "d89ac0ee57742cca0f0e0a3453d9dcc521575690") +(package! ansible :recipe (:nonrecursive t) :pin "1d7de8d3ddac980715eebd87ee66859f8665b101") (package! ansible-doc :pin "86083a7bb2ed0468ca64e52076b06441a2f8e9e0") (package! jinja2-mode :pin "03e5430a7efe1d163a16beaf3c82c5fd2c2caee1") -(package! yaml-mode :pin "5b58248ab255dff6cfa4c4057a191bc4446ee5b6") +(package! yaml-mode :pin "7b5ce294fb15c2c8926fa476d7218aa415550a2a") (when (modulep! :completion company) - (package! company-ansible :pin "79dd421b161efa49fbdffad57fa40edb41f484a3")) + (package! company-ansible :pin "338922601cf9e8ada863fe6f2dd9d5145d9983b0")) diff --git a/modules/tools/biblio/packages.el b/modules/tools/biblio/packages.el index d53e8a994..110386f33 100644 --- a/modules/tools/biblio/packages.el +++ b/modules/tools/biblio/packages.el @@ -2,16 +2,16 @@ ;;; tools/biblio/packages.el (when (modulep! :completion ivy) - (package! bibtex-completion :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16") - (package! ivy-bibtex :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16")) + (package! bibtex-completion :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c") + (package! ivy-bibtex :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c")) (when (modulep! :completion helm) - (package! bibtex-completion :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16") - (package! helm-bibtex :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16")) + (package! bibtex-completion :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c") + (package! helm-bibtex :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c")) (when (modulep! :completion vertico) (package! citar :pin "885b86f6733fd70f42c32dd7791d3447f93db990") (package! citar-embark :pin "885b86f6733fd70f42c32dd7791d3447f93db990") (when (modulep! :lang org +roam2) - (package! citar-org-roam :pin "7d67dccf80065a88cb86ce9a8274383a9e8269c1"))) + (package! citar-org-roam :pin "82d47b5df1926627f56a09055c69b49b31cbbb9f"))) (package! parsebib :pin "ace9df707108b17759c004c7387655277122d4c1") -(package! citeproc :pin "c61c98b9d230ea28b2ca49498134803e1f8ea526") +(package! citeproc :pin "44f90cb296766e03fffc28b7892521ab0e8709f1") diff --git a/modules/tools/direnv/packages.el b/modules/tools/direnv/packages.el index 4f474b5ee..5c0bbc572 100644 --- a/modules/tools/direnv/packages.el +++ b/modules/tools/direnv/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/direnv/packages.el -(package! envrc :pin "1385e72a730924664697a0961d43516a47a977d7") +(package! envrc :pin "8eb7401700b0080902ce200ad610ff8d2f2dcc27") diff --git a/modules/tools/docker/packages.el b/modules/tools/docker/packages.el index 77f353589..ccb929619 100644 --- a/modules/tools/docker/packages.el +++ b/modules/tools/docker/packages.el @@ -5,4 +5,4 @@ ;; tramp-container (included with Emacs 29+) replaces docker-tramp (when (< emacs-major-version 29) (package! docker-tramp :pin "19d0771db4e6b89e19c00af5806438e315779c15")) -(package! dockerfile-mode :pin "52c6c00da1d31c0b6c29c74335b3af63ed6bf06c") +(package! dockerfile-mode :pin "39a012a27fcf6fb629c447d13b6974baf906714c") diff --git a/modules/tools/editorconfig/packages.el b/modules/tools/editorconfig/packages.el index db1f0ecf0..baf0a8ed1 100644 --- a/modules/tools/editorconfig/packages.el +++ b/modules/tools/editorconfig/packages.el @@ -3,4 +3,4 @@ (package! editorconfig :recipe (:nonrecursive t) - :pin "c3666c093f3a2a80fb42e513bf0a10d597497c18") + :pin "d73b6392ded0476af93ec7ba75cca2909aa8d2dc") diff --git a/modules/tools/eval/packages.el b/modules/tools/eval/packages.el index 560920a2d..a7b5f6eb5 100644 --- a/modules/tools/eval/packages.el +++ b/modules/tools/eval/packages.el @@ -1,6 +1,6 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/eval/packages.el -(package! quickrun :pin "248149b0261051bd9eec8bdbc21c22d18d7b1b11") +(package! quickrun :pin "373634cf5143f9680164e27fa844d3b02408e917") (when (modulep! +overlay) (package! eros :pin "a9a92bdc6be0521a6a06eb464be55ed61946639c")) diff --git a/modules/tools/lookup/packages.el b/modules/tools/lookup/packages.el index d1abb858a..95dcdb6a6 100644 --- a/modules/tools/lookup/packages.el +++ b/modules/tools/lookup/packages.el @@ -26,7 +26,7 @@ (when (modulep! +dictionary) (if (featurep :system 'macos) - (package! osx-dictionary :pin "1f5a74f3e5d7f3c443f07433951512cd99e820a6") + (package! osx-dictionary :pin "6abfd6908b0dc773020466225c908000870b383b") (package! define-word :pin "31a8c67405afa99d0e25e7c86a4ee7ef84a808fe") ;; REVIEW: This fork fixes SavchenkoValeriy/emacs-powerthesaurus#40. (package! powerthesaurus diff --git a/modules/tools/pdf/packages.el b/modules/tools/pdf/packages.el index 4bca3a0e1..2b0f7d81e 100644 --- a/modules/tools/pdf/packages.el +++ b/modules/tools/pdf/packages.el @@ -1,5 +1,5 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/pdf/packages.el -(package! pdf-tools :pin "c69e7656a4678fe25afbd29f3503dd19ee7f9896") -(package! saveplace-pdf-view :pin "abfb5e1f463cffc18218a0f7f2fa141a271b1813") +(package! pdf-tools :pin "93e74924517d39483b432d6c3c9b8f8b8f0eb50c") +(package! saveplace-pdf-view :pin "ee95460cd934080338f03a16f95b549577425216") diff --git a/modules/tools/terraform/packages.el b/modules/tools/terraform/packages.el index 8409d4229..e598fd0c4 100644 --- a/modules/tools/terraform/packages.el +++ b/modules/tools/terraform/packages.el @@ -1,6 +1,6 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/terraform/packages.el -(package! terraform-mode :pin "e8b57df8c2a3d3171f3768f60eb84067f553289c") +(package! terraform-mode :pin "a645c32a8f0f0d04034262ae5fea330d5c7a33c6") (when (modulep! :completion company) (package! company-terraform :pin "8d5a16d1bbeeb18ca49a8fd57b5d8cd30c8b8dc7")) diff --git a/modules/tools/tree-sitter/packages.el b/modules/tools/tree-sitter/packages.el index fbd858c50..71f92c463 100644 --- a/modules/tools/tree-sitter/packages.el +++ b/modules/tools/tree-sitter/packages.el @@ -2,7 +2,7 @@ ;;; tools/tree-sitter/packages.el (package! tree-sitter :pin "3cfab8a0e945db9b3df84437f27945746a43cc71") -(package! tree-sitter-langs :pin "c56cb511045d50e30f78508c54494e025d6af2cb") +(package! tree-sitter-langs :pin "b7895ca759563f3c7c3b928eb4f816bb4099d866") (package! tree-sitter-indent :pin "4ef246db3e4ff99f672fe5e4b416c890f885c09e") (when (modulep! :editor evil +everywhere) From 2a2565f05916387fbf89adb578f01e97aa012a9b Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 17:48:04 -0400 Subject: [PATCH 20/50] bump: :term eshell LemonBreezes/emacs-fish-completion@d34d0b96fde6 -> LemonBreezes/emacs-fish-completion@006c613ff7f8 akreisher/eshell-syntax-highlighting@4ac27eec6595 -> akreisher/eshell-syntax-highlighting@1d25386bf7d1 peterwvj/eshell-up@ff84e6069b98 -> peterwvj/eshell-up@1999afaa5092 Fix: #7789 --- modules/term/eshell/packages.el | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/term/eshell/packages.el b/modules/term/eshell/packages.el index 21cf6e767..2c4adcd8e 100644 --- a/modules/term/eshell/packages.el +++ b/modules/term/eshell/packages.el @@ -1,13 +1,13 @@ ;; -*- no-byte-compile: t; -*- ;;; term/eshell/packages.el -(package! eshell-up :pin "ff84e6069b98f2ed00857a0f78bff19d96e4955c") +(package! eshell-up :pin "1999afaa509204b780db44e99ac9648fe7d92d32") (package! eshell-z :pin "337cb241e17bd472bd3677ff166a0800f684213c") (package! shrink-path :pin "c14882c8599aec79a6e8ef2d06454254bb3e1e41") (package! esh-help :pin "417673ed18a983930a66a6692dbfb288a995cb80") (package! eshell-did-you-mean :pin "80cd8c4b186a2fb29621cf634bcf2bcd914f1e3d") -(package! eshell-syntax-highlighting :pin "4ac27eec6595ba116a6151dfaf0b0e0440101e10") +(package! eshell-syntax-highlighting :pin "1d25386bf7d1a97e083d33750a98fbd1c6598138") (unless (featurep :system 'windows) - (package! fish-completion :pin "d34d0b96fde63feedf13c4288183d8d4d4d748cf") + (package! fish-completion :pin "006c613ff7f846b7d0a14422f2bdcc28b21205b8") (package! bash-completion :pin "f1daac0386c24cbe8a244a62c7588cc6847b07ae")) From fdb9e6b4999c5ef64ab1fb286503fce9dd491153 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 17:52:50 -0400 Subject: [PATCH 21/50] fix(org): org-download: remove unneeded advice They've since been upstreamed in one form or another over time. Fix: #7790 Ref: abo-abo/org-download@69c57bd5199e Ref: abo-abo/org-download@8bc54b6c1a7a --- modules/lang/org/contrib/dragndrop.el | 33 +-------------------------- 1 file changed, 1 insertion(+), 32 deletions(-) diff --git a/modules/lang/org/contrib/dragndrop.el b/modules/lang/org/contrib/dragndrop.el index fb3dcae11..cd132cae0 100644 --- a/modules/lang/org/contrib/dragndrop.el +++ b/modules/lang/org/contrib/dragndrop.el @@ -54,35 +54,4 @@ (lambda (path) (if (file-in-directory-p path org-download-image-dir) (file-relative-name path org-download-image-dir) - path))) - - (defadvice! +org--fix-org-download-delete-a (fn beg end &optional times) - "Fix `org-download-delete' for a non-standard `org-download-link-format'." - :around #'org-download--delete - (save-excursion - (save-match-data - (goto-char beg) - (let ((times (or times most-positive-fixnum)) - (linkname - (or (and (string-match "\\[\\[\\(\\w+\\):" org-download-link-format) - (match-string 1 org-download-link-format)) - "file"))) - (while (and (>= (cl-decf times) 0) - (re-search-forward (format "\\[\\[%s:\\([^]]*\\)\\]\\]" - (regexp-quote linkname)) - end t)) - (let ((str (match-string-no-properties 2))) - (delete-region beg (match-end 0)) - (when (file-exists-p str) - (delete-file str)))))))) - - (defadvice! +org--dragndrop-then-display-inline-images-a (_link filename) - :after #'org-download-insert-link - (when (image-type-from-file-name filename) - (save-excursion - (org-display-inline-images - t t - (progn (org-back-to-heading-or-point-min t) (point)) - (progn (org-end-of-subtree t t) - (when (and (org-at-heading-p) (not (eobp))) (backward-char 1)) - (point))))))) + path)))) From 2debe85a8aecda2e46e74bf701d14f513845c77c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 19:21:14 -0400 Subject: [PATCH 22/50] fix(cli): doom upgrade: void-variable num Fix: #7791 --- lisp/cli/upgrade.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/cli/upgrade.el b/lisp/cli/upgrade.el index 13614c62a..c44b300e9 100644 --- a/lisp/cli/upgrade.el +++ b/lisp/cli/upgrade.el @@ -34,7 +34,7 @@ following shell commands: (let* ((force? (doom-cli-context-suppress-prompts-p context)) (sync-cmd (append '("sync" "-u") (if nobuild? '("-B")) - (if jobs `("-j" ,num))))) + (if jobs `("-j" ,jobs))))) (cond (packages? ;; HACK It's messy to use straight to upgrade straight, due to the From 869ad10f34fdbb9132994e85b0dbe7cf0ce2274c Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Wed, 3 Apr 2024 20:15:15 -0400 Subject: [PATCH 23/50] refactor: startup optimizations I revisit all our startup optimizations to see how they fair in Emacs 29.x and 30.x. Most of them still hold up. I've revised and updated most of the accompanying comments to better explain them, given what I know now compared to when I first wrote them. --- lisp/doom.el | 161 +++++++++++++++++++++++++-------------------------- 1 file changed, 79 insertions(+), 82 deletions(-) diff --git a/lisp/doom.el b/lisp/doom.el index 9545c215a..4003a9713 100644 --- a/lisp/doom.el +++ b/lisp/doom.el @@ -352,12 +352,12 @@ users).") ;;; Startup optimizations ;; Here are Doom's hackiest (and least offensive) startup optimizations. They -;; exploit implementation details and unintended side-effects, and will change -;; often between major Emacs releases. However, I disable them if this is a -;; daemon session (where startup time matters less). +;; exploit implementation details and unintended side-effects in Emacs' startup +;; process, and will change often between major Emacs releases. However, I +;; disable them if this is a daemon session (where startup time matters less). ;; ;; Most of these have been tested on Linux and on fairly fast machines (with -;; SSDs), so your mileage may vary depending on your hardware. +;; SSDs), so your mileage may vary depending on hardware and `window-system'. (unless (daemonp) ;; PERF: `file-name-handler-alist' is consulted on each call to `require', ;; `load', or various file/io functions (like `expand-file-name' or @@ -366,14 +366,13 @@ users).") (let ((old-value (default-toplevel-value 'file-name-handler-alist))) (set-default-toplevel-value 'file-name-handler-alist - ;; HACK: If the bundled elisp for this Emacs install isn't byte-compiled - ;; (but is compressed), then leave the gzip file handler there so Emacs - ;; won't forget how to read read them. - ;; - ;; calc-loaddefs.el is our heuristic for this because it is built-in to - ;; all supported versions of Emacs, and calc.el explicitly loads it - ;; uncompiled. This ensures that the only other, possible fallback would - ;; be calc-loaddefs.el.gz. + ;; HACK: The libraries bundled with Emacs can either be compiled, + ;; compressed, or neither. We use calc-loaddefs.el as a heuristic to + ;; guess what state all these libraries are in. If they're compressed, we + ;; need to leave the gzip file handler in `file-name-handler-alist' so + ;; Emacs knows how to load them. If they're compiled or neither, we can + ;; omit the gzip handler altogether (at least during startup) for a boost + ;; in startup and package load time. (if (eval-when-compile (locate-file-internal "calc-loaddefs.el" load-path)) nil @@ -395,55 +394,46 @@ users).") (unless noninteractive ;; PERF: Resizing the Emacs frame (to accommodate fonts that are smaller or ;; larger than the system font) appears to impact startup time - ;; dramatically. The larger the delta in font size, the greater the delay. - ;; Even trivial deltas can yield a ~1000ms loss, though it varies wildly - ;; depending on font size. + ;; dramatically. The larger the delta, the greater the delay. Even trivial + ;; deltas can yield up to a ~1000ms loss, depending on font size and + ;; `window-system'. PGTK seems least affected and NS/MAC the most. (setq frame-inhibit-implied-resize t) - ;; PERF,UX: Reduce *Message* noise at startup. An empty scratch buffer (or - ;; the dashboard) is more than enough, and faster to display. + ;; PERF: A fair bit of startup time goes into initializing the splash and + ;; scratch buffers in the typical Emacs session (b/c they activate a + ;; non-trivial major mode, generate the splash buffer, and trigger + ;; premature frame redraws by writing to *Messages*). These hacks prevent + ;; most of this work from happening for some decent savings in startup + ;; time. Our dashboard and `doom/open-scratch-buffer' provide a faster + ;; (and more useful) alternative anyway. (setq inhibit-startup-screen t - inhibit-startup-echo-area-message user-login-name) - ;; PERF,UX: Remove "For information about GNU Emacs..." message at startup. - ;; It's redundant with our dashboard and incurs a premature redraw. + inhibit-startup-echo-area-message user-login-name + initial-major-mode 'fundamental-mode + initial-scratch-message nil) + ;; PERF,UX: Prevent "For information about GNU Emacs..." line in *Messages*. (advice-add #'display-startup-echo-area-message :override #'ignore) ;; PERF: Suppress the vanilla startup screen completely. We've disabled it ;; with `inhibit-startup-screen', but it would still initialize anyway. - ;; This involves some file IO and/or bitmap work (depending on the frame - ;; type) that we can no-op for a free 50-100ms boost in startup time. + ;; This involves file IO and/or bitmap work (depending on the frame type) + ;; that we can no-op for a free 50-100ms saving in startup time. (advice-add #'display-startup-screen :override #'ignore) - ;; PERF: Shave seconds off startup time by starting the scratch buffer in - ;; `fundamental-mode', rather than, say, `org-mode' or `text-mode', which - ;; pull in a ton of packages. This buffer is created whether or not we're - ;; in an interactive session. Plus, `doom/open-scratch-buffer' provides a - ;; better scratch buffer, so keep the initial one blank. - (setq initial-major-mode 'fundamental-mode - initial-scratch-message nil) - (unless initial-window-system - ;; PERF: Inexplicably, `tty-run-terminal-initialization' can sometimes - ;; take 2-3s when starting up Emacs in the terminal. Whatever slows it - ;; down at startup doesn't appear to affect it if it's called a little - ;; later in the startup process, so that's what I do. - ;; REVIEW: This optimization is not well understood. Investigate it! + ;; PERF: `tty-run-terminal-initialization' can take 2-3s when starting up + ;; TTY Emacs (non-daemon sessions), depending on your TERM, TERMINFO, + ;; and TERMCAP, but this work isn't very useful on modern systems (the + ;; type I expect Doom's users to be using). The function seems less + ;; expensive if run later in the startup process, so I defer it. + ;; REVIEW: This may no longer be needed in 29+. Needs testing! (define-advice tty-run-terminal-initialization (:override (&rest _) defer) (advice-remove #'tty-run-terminal-initialization #'tty-run-terminal-initialization@defer) (add-hook 'window-setup-hook (doom-partial #'tty-run-terminal-initialization (selected-frame) nil t)))) - ;; PERF,UX: Site files tend to use `load-file', which emits "Loading X..." - ;; messages in the echo area. Writing to the echo-area triggers a - ;; redisplay, which can be expensive during startup. This may also cause - ;; an flash of white when creating the first frame. Needs to be undo - ;; later, though. - (define-advice load-file (:override (file) silence) - (load file nil 'nomessage)) - - ;; PERF: `load-suffixes' and `load-file-rep-suffixes' are consulted on - ;; each `require' and `load'. Doom won't load any modules this early, so - ;; omit .so for a tiny startup boost. Is later restored in doom-start. + ;; PERF: `load-suffixes' and `load-file-rep-suffixes' are consulted on each + ;; `require' and `load'. Doom won't load any modules this early, so omit + ;; .so for a tiny startup boost. Is later restored in doom-start. (put 'load-suffixes 'initial-value (default-toplevel-value 'load-suffixes)) (put 'load-file-rep-suffixes 'initial-value (default-toplevel-value 'load-file-rep-suffixes)) (set-default-toplevel-value 'load-suffixes '(".elc" ".el")) @@ -455,35 +445,34 @@ users).") (setq load-suffixes (get 'load-suffixes 'initial-value) load-file-rep-suffixes (get 'load-file-rep-suffixes 'initial-value)))) - ;; PERF: Doom uses `defcustom' to indicate variables that users are - ;; expected to reconfigure. Trouble is it fires off initializers meant - ;; to accommodate any user attempts to configure them before they were - ;; defined. This is unnecessary work before $DOOMDIR/init.el is loaded, - ;; so I disable them until it is. + ;; PERF: Doom uses `defcustom' merely to announce variables that users may + ;; reconfigure. Trouble is it fires off initializers meant to accommodate + ;; any user attempts to configure them *before* they are defined, which + ;; isn't possible since the user's first opportunity to modify them comes + ;; long after they're defined (in $DOOMDIR/init.el), so this is + ;; unnecessary work. To spare Emacs the startup time, I disable this + ;; behavior until $DOOMDIR is loaded. (setq custom-dont-initialize t) (add-hook! 'doom-before-init-hook (defun doom--reset-custom-dont-initialize-h () (setq custom-dont-initialize nil))) - ;; PERF: Doom disables the UI elements by default, so that there's less - ;; for the frame to initialize. However, the toolbar is still populated - ;; regardless, so I lazy load it until tool-bar-mode is actually used. - (advice-add #'tool-bar-setup :override #'ignore) - - ;; PERF: The mode-line procs a couple dozen times during startup. This is - ;; normally quite fast, but disabling the default mode-line and reducing - ;; the update delay timer seems to stave off ~30-50ms. + ;; PERF: The mode-line procs a couple dozen times during startup, before the + ;; user can even see the first mode-line. This is normally fast, but we + ;; can't predict what the user (or packages) will put into the mode-line. + ;; Also, mode-line packages have a bad habit of throwing performance to + ;; the wind, so best we just disable the mode-line until we can see one. (put 'mode-line-format 'initial-value (default-toplevel-value 'mode-line-format)) (setq-default mode-line-format nil) (dolist (buf (buffer-list)) (with-current-buffer buf (setq mode-line-format nil))) - ;; PERF,UX: Premature redisplays can substantially affect startup times - ;; and/or produce ugly flashes of unstyled Emacs. + ;; PERF,UX: Premature redisplays/redraws can substantially affect startup + ;; times and/or flash a white/unstyled Emacs frame during startup, so I + ;; try real hard to suppress them until we're sure the session is ready. (setq-default inhibit-redisplay t inhibit-message t) - ;; COMPAT: Then reset with advice, because `startup--load-user-init-file' - ;; will never be interrupted by errors. And if these settings are left - ;; set, Emacs could appear frozen or garbled. + ;; COMPAT: If the above vars aren't reset, Emacs could appear frozen or + ;; garbled after startup (or in case of an startup error). (defun doom--reset-inhibited-vars-h () (setq-default inhibit-redisplay nil ;; Inhibiting `message' only prevents redraws and @@ -491,35 +480,43 @@ users).") (redraw-frame)) (add-hook 'after-init-hook #'doom--reset-inhibited-vars-h) - ;; PERF,UX: An annoying aspect of site-lisp files is that they're often - ;; noisy (they emit load messages or other output to stdout). These - ;; queue unnecessary redraws at startup, cost startup time, and pollute - ;; the logs. I get around it by suppressing it until we can load it - ;; manually, later (in the `startup--load-user-init-file' advice below). + ;; PERF: Doom disables the UI elements by default, so that there's less for + ;; the frame to initialize. However, `tool-bar-setup' is still called and + ;; it does some non-trivial work to set up the toolbar before we can + ;; disable it. To side-step this work, I disable the function and call it + ;; later (see `startup--load-user-init-file@undo-hacks'). + (advice-add #'tool-bar-setup :override #'ignore) + + ;; PERF,UX: site-lisp files are often obnoxiously noisy (emitting load + ;; messages or other output to *Messages* or stdout). These queue + ;; unnecessary redraws at startup which impact startup time depending on + ;; window system. It also pollutes the logs. By suppressing it now, I can + ;; load it myself, later, in a more controlled way (see + ;; `startup--load-user-init-file@undo-hacks'). (put 'site-run-file 'initial-value site-run-file) (setq site-run-file nil) - (define-advice startup--load-user-init-file (:around (fn &rest args) undo-inhibit-vars) - (let (--init--) + (define-advice startup--load-user-init-file (:around (fn &rest args) undo-hacks) + "Undo Doom's startup optimizations to prep for the user's session." + (let (init) (unwind-protect (progn - ;; COMPAT: Onces startup is sufficiently complete, undo some - ;; optimizations to reduce the scope of potential edge cases. - (advice-remove #'load-file #'load-file@silence) - (advice-remove #'tool-bar-setup #'ignore) - (add-transient-hook! 'tool-bar-mode (tool-bar-setup)) (when (setq site-run-file (get 'site-run-file 'initial-value)) (let ((inhibit-startup-screen inhibit-startup-screen)) - (letf! (defun load (file &optional noerror _nomessage &rest args) - (apply load file noerror t args)) + (letf! ((defun load-file (file) (load file nil 'nomessage)) + (defun load (file &optional noerror _nomessage &rest args) + (apply load file noerror t args))) (load site-run-file t t)))) - ;; Then startup as normal. - (apply fn args) - (setq --init-- t)) - (when (or (not --init--) init-file-had-error) + (apply fn args) ; start up as normal + (setq init t)) + (when (or (not init) init-file-had-error) ;; If we don't undo our inhibit-{message,redisplay} and there's an ;; error, we'll see nothing but a blank Emacs frame. (doom--reset-inhibited-vars-h)) + ;; COMPAT: Once startup is sufficiently complete, undo our earlier + ;; optimizations to reduce the scope of potential edge cases. + (advice-remove #'tool-bar-setup #'ignore) + (add-transient-hook! 'tool-bar-mode (tool-bar-setup)) (unless (default-toplevel-value 'mode-line-format) (setq-default mode-line-format (get 'mode-line-format 'initial-value)))))) From d166d754d630479664c76b73323531897aa52095 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 4 Apr 2024 00:23:20 -0400 Subject: [PATCH 24/50] release(modules): 24.04.0-dev Ref: 2b39e4136850 --- lisp/doom.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lisp/doom.el b/lisp/doom.el index 4003a9713..70873316d 100644 --- a/lisp/doom.el +++ b/lisp/doom.el @@ -201,7 +201,7 @@ "Current version of Doom Emacs core.") ;; DEPRECATED: Remove these when the modules are moved out of core. -(defconst doom-modules-version "24.03.0-pre" +(defconst doom-modules-version "24.04.0-pre" "Current version of Doom Emacs.") (defvar doom-init-time nil From 38a3adcf0e1d02f3d9f6f7e965e24447467790d9 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 4 Apr 2024 13:00:12 -0400 Subject: [PATCH 25/50] fix(lib): find-subling-file-search: wrong-number-of-args error I backported `find-sibling-file` from Emacs 29+ in 198fe82, but it passes a third argument (REGEXP) to `file-expand-wildcards` which wasn't introduced until 29, so users on 28 or earlier would see a wrong-number-of-arguments error (see #7795). Rather than backport the entire `file-expand-wildcards` function (risking other edge cases), I've advised its usage in `find-sibling-file-search` to behave as it would in 29+ with a non-nil REGEXP argument. Amend: 198fe82b6d49 Fix: #7795 --- lisp/lib/files.el | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/lisp/lib/files.el b/lisp/lib/files.el index 022be0003..94b47d4a3 100644 --- a/lisp/lib/files.el +++ b/lisp/lib/files.el @@ -594,7 +594,12 @@ see), and if nil, defaults to `find-sibling-rules'." (nconc results (mapcar #'expand-file-name - (file-expand-wildcards expansion nil t))))))))) + ;; `file-expand-wildcards' has a new REGEXP + ;; argument in 29+ that is needed here. This swap + ;; makes it behave as if REGEXP == t. + (letf! (defun wildcard-to-regexp (wildcard) + (concat "\\`" wildcard "\\'")) + (file-expand-wildcards expansion nil)))))))))) ;; Delete the file itself (in case it matched), and remove ;; duplicates, in case we have several expansions and some match ;; the same subsets of files. From 19e27764eabeb4ef5b368c2ade18f04013a891e3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 4 Apr 2024 13:42:34 -0400 Subject: [PATCH 26/50] fix(cc): make *.c(c|pp) siblings of *.h(h|pp) files I backported `find-sibling-file` in 198fe82 and included with it some rudimentary `find-sibling-rules` rules for C++ and others. The C++ rule made *.h(h|pp) files the siblings of *.c(c|pp) files, but not vice versa, so users couldn't jump back to the source file with `find-sibling-file`; a second rule is necessary. These may be combinable, considering `find-sibling-file` deletes the current buffer's filename from the list of candidates... Fix: #7795 Ref: 198fe82b6d49 --- modules/lang/cc/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/lang/cc/config.el b/modules/lang/cc/config.el index 9b1c2acc3..c4b0ce5ad 100644 --- a/modules/lang/cc/config.el +++ b/modules/lang/cc/config.el @@ -78,7 +78,8 @@ This is ignored by ccls.") :return "return" :yield "#require") - (add-to-list 'find-sibling-rules '("/\\([^/]+\\)\\.c\\(c\\|pp\\)\\'" "\\1.\\(h\\|hh\\|hpp\\)")) + (add-to-list 'find-sibling-rules '("/\\([^/]+\\)\\.c\\(c\\|pp\\)?\\'" "\\1.h\\(h\\|pp\\)?\\'")) + (add-to-list 'find-sibling-rules '("/\\([^/]+\\)\\.h\\(h\\|pp\\)?\\'" "\\1.c\\(c\\|pp\\)?\\'")) (when (modulep! +tree-sitter) (add-hook! '(c-mode-local-vars-hook From 4ca87463de7058ebaea953b7cf965bd7cd5e1a47 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 4 Apr 2024 13:47:55 -0400 Subject: [PATCH 27/50] fix(web): make *.((s[ac]|le)ss|styl) siblings of *.css I backported `find-sibling-file` in 198fe82 and included with it some rudimentary `find-sibling-rules` rules for CSS and its various preprocessor languages. The CSS rule made *.((s[ac]|le)ss|styl) files the siblings of *.css files, but not vice versa, so users couldn't jump back to the source file with `find-sibling-file`; a second rule is necessary. These may be combinable, considering `find-sibling-file` deletes the current buffer's filename from the list of candidates... Ref: 198fe82b6d49 --- modules/lang/web/+css.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/lang/web/+css.el b/modules/lang/web/+css.el index 144670d42..2211abc50 100644 --- a/modules/lang/web/+css.el +++ b/modules/lang/web/+css.el @@ -8,7 +8,8 @@ be aligned. If set to `nil', disable all the above behaviors.") -(add-to-list 'find-sibling-rules '("/\\([^/]+\\)\\.\\(\\(s[ac]\\|le\\)ss\\|styl\\)\\'" "\\1\\.css")) +(add-to-list 'find-sibling-rules '("/\\([^/]+\\)\\.\\(\\(s[ac]\\|le\\)ss\\|styl\\)\\'" "\\1\\.css\\'")) +(add-to-list 'find-sibling-rules '("/\\([^/]+\\)\\.css\\'" "\\1\\.\\(\\(s[ac]\\|le\\)ss\\|styl\\)\\'")) ;; From 0b93ecf42c96677710426f446f5ecb5a307f60c3 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 4 Apr 2024 17:56:26 -0400 Subject: [PATCH 28/50] fix(lib): sudo-{find,this}-file: disable auto-save auto-save can trigger processes that hang silently in the background, making those buffers inoperable (hanging Emacs) for the rest of the session, even if they are killed (tramp caches them), so I suppress them solely for these temporary tramp buffers created by doom/sudo-find-file and doom/sudo-this-file. --- lisp/lib/files.el | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/lisp/lib/files.el b/lisp/lib/files.el index 94b47d4a3..8f03b4abe 100644 --- a/lisp/lib/files.el +++ b/lisp/lib/files.el @@ -487,19 +487,25 @@ If FORCE-P, overwrite the destination file if it exists, without confirmation." (defun doom/sudo-find-file (file) "Open FILE as root." (interactive "FOpen file as root: ") - (find-file (doom--sudo-file-path (expand-file-name file)))) + ;; HACK: Disable auto-save in temporary tramp buffers because it could trigger + ;; processes that hang silently in the background, making those buffers + ;; inoperable for the rest of that session (Tramp caches them). + (let ((auto-save-default nil) + ;; REVIEW: use only these when we drop 28 support + (remote-file-name-inhibit-auto-save t) + (remote-file-name-inhibit-auto-save-visited t)) + (find-file (doom--sudo-file-path (expand-file-name file))))) ;;;###autoload (defun doom/sudo-this-file () "Open the current file as root." (interactive) - (find-file - (doom--sudo-file-path - (or (buffer-file-name (buffer-base-buffer)) - (when (or (derived-mode-p 'dired-mode) - (derived-mode-p 'wdired-mode)) - default-directory) - (user-error "Cannot determine the file path of the current buffer"))))) + (doom/sudo-find-file + (or (buffer-file-name (buffer-base-buffer)) + (when (or (derived-mode-p 'dired-mode) + (derived-mode-p 'wdired-mode)) + default-directory) + (user-error "Cannot determine the file path of the current buffer")))) ;;;###autoload (defun doom/sudo-save-buffer () From 8d370d5608c7a3b56a16d1950a6e100e52235717 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Thu, 4 Apr 2024 18:04:25 -0400 Subject: [PATCH 29/50] refactor: doom--last-frame: remove unused symbol Its last reference was removed in e889b2c. Not sure why this stuck around for so long. Ref: 0bb4d4dfcb6d --- lisp/doom-ui.el | 1 - 1 file changed, 1 deletion(-) diff --git a/lisp/doom-ui.el b/lisp/doom-ui.el index 64db32afd..f449cde2a 100644 --- a/lisp/doom-ui.el +++ b/lisp/doom-ui.el @@ -95,7 +95,6 @@ want to change your symbol font, use `doom-symbol-font'.") (inhibit-redisplay t)) (run-hooks 'doom-switch-buffer-hook))) -(defvar doom--last-frame nil) (defun doom-run-switch-window-or-frame-hooks-h (&optional _) (let ((gc-cons-threshold most-positive-fixnum) (inhibit-redisplay t)) From d205643cabf1c3305bfc1ccd1cbbb9e9067d2e59 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 11:34:34 -0400 Subject: [PATCH 30/50] bump: :tools pdf vedang/pdf-tools@93e74924517d -> vedang/pdf-tools@a1048bceb2bd - Fixes `pdf-tools-install` for users on MacOS Sonoma (vedang/pdf-tools#269). Ref: vedang/pdf-tools#269 --- modules/tools/pdf/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/tools/pdf/packages.el b/modules/tools/pdf/packages.el index 2b0f7d81e..b80c837a0 100644 --- a/modules/tools/pdf/packages.el +++ b/modules/tools/pdf/packages.el @@ -1,5 +1,5 @@ ;; -*- no-byte-compile: t; -*- ;;; tools/pdf/packages.el -(package! pdf-tools :pin "93e74924517d39483b432d6c3c9b8f8b8f0eb50c") +(package! pdf-tools :pin "a1048bceb2bd3f635437b0f2bfac27cae8c2dabc") (package! saveplace-pdf-view :pin "ee95460cd934080338f03a16f95b549577425216") From 881defae2da5cbc7395cecf6f6d0f95b9a66bacf Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 11:51:21 -0400 Subject: [PATCH 31/50] fix(julia): duplicate popup rules Having the same rule in two separate package configs means users must be aware of both to modify either, which is avoidable complexity. i.e. (after! (:or julia-repl julia-snail) (set-popup-rule! "^\\*julia" ...)) --- modules/lang/julia/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/lang/julia/config.el b/modules/lang/julia/config.el index 657574431..df34a47ae 100644 --- a/modules/lang/julia/config.el +++ b/modules/lang/julia/config.el @@ -53,7 +53,8 @@ :hook (+julia-repl-start . +julia-override-repl-escape-char-h) :hook (+julia-repl-start . julia-repl-use-emacsclient) :config - (set-popup-rule! "^\\*julia.*\\*$" :ttl nil) + (unless (modulep! +snail) + (set-popup-rule! "^\\*julia.*\\*$" :ttl nil)) (when (modulep! :ui workspaces) (defadvice! +julia--namespace-repl-buffer-to-workspace-a (&optional executable-key suffix) From 59f3568217fc57b5afde661acf0b6db4c6da99be Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 11:56:48 -0400 Subject: [PATCH 32/50] docs(julia): reformat & fix package/flag links --- modules/lang/julia/README.org | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/modules/lang/julia/README.org b/modules/lang/julia/README.org index 38e019278..97f8094b6 100644 --- a/modules/lang/julia/README.org +++ b/modules/lang/julia/README.org @@ -20,22 +20,23 @@ This module adds support for [[https://julialang.org/][the Julia language]] to D - +tree-sitter :: Leverages tree-sitter for better syntax highlighting and structural text editing. Requires [[doom-module::tools tree-sitter]]. -- +snail :: Use Snail, a development environment and REPL interaction package - for Julia in the spirit of Common Lisp’s SLIME and Clojure’s CIDER. It enables - convenient and dynamic REPL-driven development. +- +snail :: + Use Snail, a development environment and REPL interaction package for Julia in + the spirit of Common Lisp’s SLIME and Clojure’s CIDER. It enables convenient + and dynamic REPL-driven development. ** Packages - [[doom-package:julia-mode]] - [[doom-package:julia-repl]] -- if [[doom-package:+lsp]] +- if [[doom-module:+lsp]] - if [[doom-module::tools lsp]] - [[doom-package:lsp-julia]] - [[doom-package:lsp]] - if [[doom-module::tools lsp +eglot]] - [[doom-package:eglot-jl]] - [[doom-package:eglot]] -- if [[doom-package:][+snail]] - - [[doom-package:][julia-snail]] +- if [[doom-module:+snail]] + - [[doom-package:julia-snail]] ** Hacks /No hacks documented for this module./ @@ -63,8 +64,8 @@ Pkg.add("LanguageServer") Pkg.add("SymbolServer") #+end_src -Then configure [[doom-package:lsp-julia]] or [[doom-package:eglot-jl]] depending on whether you have enabled -[[doom-module::tools lsp]] or [[doom-module::tools lsp +eglot]], respectively: +Then configure [[doom-package:lsp-julia]] or [[doom-package:eglot-jl]] depending on whether you have enabled [[doom-module::tools +lsp]] or [[doom-module::tools lsp +eglot]], respectively: *** =lsp-julia= To instruct [[doom-package:lsp-julia]] not to use the built-in package: From fb96c8df5a7c850cbcdfe85e94033b1fc6410138 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 11:57:25 -0400 Subject: [PATCH 33/50] refactor(corfu): use hook symbols in add-hook! calls A common challenge for beginners is distinguishing packages, modes, and hooks, and since Doom's source code is meant to second as another layer of documentation, I prefer to be explicit with hook symbols in `add-hook!` calls (at least, for internal/module use). --- modules/completion/corfu/config.el | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/completion/corfu/config.el b/modules/completion/corfu/config.el index 442ce2d52..a00c41749 100644 --- a/modules/completion/corfu/config.el +++ b/modules/completion/corfu/config.el @@ -102,10 +102,10 @@ use the minibuffer such as `query-replace'.") (use-package! cape :defer t :init - (add-hook! prog-mode + (add-hook! 'prog-mode-hook (defun +corfu-add-cape-file-h () (add-hook 'completion-at-point-functions #'cape-file -10 t))) - (add-hook! (org-mode markdown-mode) + (add-hook! '(org-mode-hook markdown-mode-hook) (defun +corfu-add-cape-elisp-block-h () (add-hook 'completion-at-point-functions #'cape-elisp-block 0 t))) ;; Enable Dabbrev completion basically everywhere as a fallback. @@ -114,8 +114,12 @@ use the minibuffer such as `query-replace'.") ;; Set up `cape-dabbrev' options. (defun +dabbrev-friend-buffer-p (other-buffer) (< (buffer-size other-buffer) +corfu-buffer-scanning-size-limit)) - (add-hook! (prog-mode text-mode conf-mode comint-mode minibuffer-setup - eshell-mode) + (add-hook! '(prog-mode-hook + text-mode-hook + conf-mode-hook + comint-mode-hook + minibuffer-setup-hook + eshell-mode-hook) (defun +corfu-add-cape-dabbrev-h () (add-hook 'completion-at-point-functions #'cape-dabbrev 20 t))) (after! dabbrev From 82e0641bf758c782ebf9ed0a9ba9561f4c379b5a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 12:03:54 -0400 Subject: [PATCH 34/50] refactor: remove redundant auto-mode-alist entries Also removes the *.{hex,nes} entry because it's far too niche to be a global default. --- lisp/doom-editor.el | 3 +-- lisp/doom-start.el | 10 ++-------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/lisp/doom-editor.el b/lisp/doom-editor.el index 2df2cbb66..80696ac35 100644 --- a/lisp/doom-editor.el +++ b/lisp/doom-editor.el @@ -250,8 +250,7 @@ tell you about it. Very annoying. This prevents that." auto-mode-alist '(("/LICENSE\\'" . text-mode) ("\\.log\\'" . text-mode) - ("rc\\'" . conf-mode) - ("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode))) + ("rc\\'" . conf-mode))) ;; diff --git a/lisp/doom-start.el b/lisp/doom-start.el index c5b1d46b2..ce022d7cd 100644 --- a/lisp/doom-start.el +++ b/lisp/doom-start.el @@ -143,14 +143,8 @@ (setq selection-coding-system 'utf-8)) -;;; Support for more file extensions -;; Add support for additional file extensions. -(dolist (entry '(("/\\.doom\\(?:rc\\|project\\|module\\|profile\\)\\'" . emacs-lisp-mode) - ("/LICENSE\\'" . text-mode) - ("\\.log\\'" . text-mode) - ("rc\\'" . conf-mode) - ("\\.\\(?:hex\\|nes\\)\\'" . hexl-mode))) - (push entry auto-mode-alist)) +;;; Support for Doom-specific file extensions +(add-to-list 'auto-mode-alist '("/\\.doom\\(?:rc\\|project\\|module\\|profile\\)\\'" . emacs-lisp-mode)) ;; From a6a011fc9c769e6b292a73d956310bf50731a6e7 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 14:21:19 -0400 Subject: [PATCH 35/50] fix(mu4e): void-function mu4e-clear-caches error mu4e-clear-caches was removed in djcb/mu@f73aad2b4175, so users on 1.12.2 or so will see void-function errors until djcb/mu@770a2396def9 is propagated to distro package managers, which likely won't happen soon (esp for LTS distros). Fix: #7703 Ref: djcb/mu@f73aad2b4175 Ref: djcb/mu@770a2396def9 Co-authored-by: dltacube --- modules/email/mu4e/autoload/email.el | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/modules/email/mu4e/autoload/email.el b/modules/email/mu4e/autoload/email.el index 336ed40f1..f9efcbf74 100644 --- a/modules/email/mu4e/autoload/email.el +++ b/modules/email/mu4e/autoload/email.el @@ -33,8 +33,11 @@ default/fallback account." :enter-func (lambda () (mu4e-message "Switched to %s" label)) :leave-func - (lambda () (progn (setq +mu4e-personal-addresses nil) - (mu4e-clear-caches))) + (lambda () + (setq +mu4e-personal-addresses nil) + ;; REVIEW: `mu4e-clear-caches' was removed in 1.12.2, but + ;; may still be useful to users on older versions. + (if (fboundp 'mu4e-clear-caches) (mu4e-clear-caches))) :match-func (lambda (msg) (when msg From cf6d44d82d39ccfd70925c02154893597ab92862 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 16:03:47 -0400 Subject: [PATCH 36/50] fix(rust): lsp-mode: produce better hover info The caching of rust-analyzer (RA) is too aggressive and leads to bad results. RA does not give a protocol-compliant way to extract 1 line information from the hover response, so `lsp-mode` displays the first line of the result, which currently is the byte alignment of the data Fix: #6951 Close: #7754 Co-authored-by: gagbo Co-authored-by: scturtle --- modules/lang/rust/config.el | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/modules/lang/rust/config.el b/modules/lang/rust/config.el index 9ed0483e3..1418ff530 100644 --- a/modules/lang/rust/config.el +++ b/modules/lang/rust/config.el @@ -48,7 +48,36 @@ (if (modulep! :tools lsp +eglot) 'eglot 'lsp-mode)) - (add-hook 'rustic-mode-local-vars-hook #'rustic-setup-lsp 'append)) + (add-hook 'rustic-mode-local-vars-hook #'rustic-setup-lsp 'append) + + ;; HACK: Add @scturtle fix for signatures on hover on LSP mode. This code + ;; has not been upstreamed because it depends on the exact format of the + ;; response of Rust Analyzer, which is not stable enough for `lsp-mode' + ;; maintainers (see emacs-lsp/lsp-mode#1740). + (unless (modulep! :tools lsp +eglot) + (defadvice! +rust--dont-cache-results-from-ra-a (fn &rest args) + :after #'lsp-eldoc-function + (when (derived-mode-p 'rust-mode 'rust-ts-mode) + (setq lsp--hover-saved-bounds nil))) + + ;; extract and show short signature for rust-analyzer + (cl-defmethod lsp-clients-extract-signature-on-hover (contents (_server-id (eql rust-analyzer))) + (let* ((value (if lsp-use-plists (plist-get contents :value) (gethash "value" contents))) + (groups (--partition-by (s-blank? it) (s-lines (s-trim value)))) + (mod-group (cond ((s-equals? "```rust" (car (-fifth-item groups))) (-third-item groups)) + ((s-equals? "```rust" (car (-third-item groups))) (-first-item groups)) + (t nil))) + (cmt (if (null mod-group) "" (concat " // " (cadr mod-group)))) + (sig-group (cond ((s-equals? "```rust" (car (-fifth-item groups))) (-fifth-item groups)) + ((s-equals? "```rust" (car (-third-item groups))) (-third-item groups)) + (t (-first-item groups)))) + (sig (->> sig-group + (--drop-while (s-equals? "```rust" it)) + (--take-while (not (s-equals? "```" it))) + (--map (s-replace-regexp "//.*" "" it)) + (--map (s-trim it)) + (s-join " ")))) + (lsp--render-element (concat "```rust\n" sig cmt "\n```")))))) (when (modulep! +tree-sitter) (add-hook 'rustic-mode-local-vars-hook #'tree-sitter! 'append)) From f18603e66a1160927044d13a46f15bbddfd72d39 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 18:07:45 -0400 Subject: [PATCH 37/50] feat(lib): sudo-{find,this}-file: invoke save-place After switching to the sudo-ed tramp buffer, this restores the point and scroll position of the window to match the source buffer. I exploit save-place here instead of simply saving/restoring (point) and (window-start), because I believe it's better UX that save-place treat the two buffers as effectively the same now and in the future, and record the last cursor position equally between them, even if the implementation is messier. This *could* be generalized into an advice for save-place-find-file-hook and save-place-to-alist, but that's an experiment for another day. This is an experimental implementation and may change later. Close: #7181 Co-authored-by: YourFin --- lisp/lib/files.el | 55 +++++++++++++++++++++++++++++++++++++---------- 1 file changed, 44 insertions(+), 11 deletions(-) diff --git a/lisp/lib/files.el b/lisp/lib/files.el index 8f03b4abe..8550ec344 100644 --- a/lisp/lib/files.el +++ b/lisp/lib/files.el @@ -484,17 +484,50 @@ If FORCE-P, overwrite the destination file if it exists, without confirmation." file)))) ;;;###autoload -(defun doom/sudo-find-file (file) - "Open FILE as root." - (interactive "FOpen file as root: ") - ;; HACK: Disable auto-save in temporary tramp buffers because it could trigger - ;; processes that hang silently in the background, making those buffers - ;; inoperable for the rest of that session (Tramp caches them). - (let ((auto-save-default nil) - ;; REVIEW: use only these when we drop 28 support - (remote-file-name-inhibit-auto-save t) - (remote-file-name-inhibit-auto-save-visited t)) - (find-file (doom--sudo-file-path (expand-file-name file))))) +(defun doom/sudo-find-file (file &optional arg) + "Open FILE as root. + +This will prompt you to save the current buffer, unless prefix ARG is given, in +which case it will save it without prompting." + (interactive + (list (read-file-name "Open file as root: ") + current-prefix-arg)) + ;; HACK: Teach `save-place' to treat the new "remote" buffer as if it were + ;; visiting the same local file (because it is), and preserve the cursor + ;; position as usual. + (letf! ((defun remote-local-name (path) + (if path (or (file-remote-p path 'localname) path))) + (defmacro with-local-name (&rest body) + `(when save-place-mode + (let ((buffer-file-name (remote-local-name buffer-file-name)) + (default-directory (remote-local-name default-directory))) + ,@body)))) + (let ((window-start (window-start)) + (buffer (current-buffer))) + (when (and buffer-file-name (file-equal-p buffer-file-name file)) + (when (buffer-modified-p) + (save-some-buffers arg (lambda () (eq (current-buffer) buffer)))) + (with-local-name (save-place-to-alist))) + (prog1 + ;; HACK: Disable auto-save in temporary tramp buffers because it could + ;; trigger processes that hang silently in the background, making + ;; those buffers inoperable for the rest of that session (Tramp + ;; caches them). + (let ((auto-save-default nil) + ;; REVIEW: use only these when we drop 28 support + (remote-file-name-inhibit-auto-save t) + (remote-file-name-inhibit-auto-save-visited t) + ;; Prevent redundant work + save-place-mode) + (find-file (doom--sudo-file-path (expand-file-name file)))) + ;; Record of the cursor's old position if it isn't at BOB (indicating + ;; this buffer was already open), in case the user wishes to go to it. + (unless (bobp) + (doom-set-jump-h) + ;; save-place-find-file-hook requires point be a BOB to do its thang. + (goto-char (point-min))) + (with-local-name (save-place-find-file-hook)) + (set-window-start nil window-start))))) ;;;###autoload (defun doom/sudo-this-file () From 0cf782425657831dbbed5726462fe59f2f57540a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 18:54:35 -0400 Subject: [PATCH 38/50] refactor(eval): avoid seq-uniq & cl-{first,second} - While seq.el is likely present, Doom does not guarantee it in interactive sesions like it guarantees cl-lib's presence. - There is no reason to ever use cl-first/cl-second. --- modules/tools/eval/autoload/repl.el | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/modules/tools/eval/autoload/repl.el b/modules/tools/eval/autoload/repl.el index c97ff82a2..4acafcb7f 100644 --- a/modules/tools/eval/autoload/repl.el +++ b/modules/tools/eval/autoload/repl.el @@ -50,7 +50,9 @@ (defun +eval-repl-known-repls () "Yield the available repl functions as a list of symbols." - (seq-uniq (mapcar (pcase-lambda (`(,mode ,fn . _)) (list mode fn)) +eval-repls))) + (cl-delete-duplicates + (mapcar (lambda! ((mode fn &rest _)) (list mode fn)) + +eval-repls))) (defun +doom-pretty-mode-name (mode) "Convert a mode name into a variant nicer for human eyes." @@ -82,15 +84,15 @@ human-readable variant of its associated major mode name." (defun +eval-repl-prompt () "Prompt the user for the choice of a repl to open." - (let* ((knowns (mapcar (pcase-lambda (`(,mode ,fn)) (list (+doom-pretty-mode-name mode) fn)) + (let* ((knowns (mapcar (lambda! ((mode fn)) (list (+doom-pretty-mode-name mode) fn)) (+eval-repl-known-repls))) (founds (mapcar (lambda (fn) (list (+eval-pretty-mode-name-from-fn fn) fn)) (+eval-repl-found-repls))) - (repls (seq-uniq (append knowns founds))) - (names (mapcar #'cl-first repls)) + (repls (cl-delete-duplicates (append knowns founds))) + (names (mapcar #'car repls)) (choice (or (completing-read "Open a REPL for: " names) (user-error "Aborting")))) - (cl-second (assoc choice repls)))) + (cadr (assoc choice repls)))) (defun +eval-repl-from-major-mode () "Fetch the repl associated with the current major mode, if there @@ -103,8 +105,7 @@ is one." prompted for a repl choice, even if the major mode they're in already has a known one." (pcase-let* ((`(,fn ,plist) (+eval-repl-from-major-mode)) - (fn (cond ((or prompt-p (not fn)) (+eval-repl-prompt)) - (t fn))) + (fn (if (or prompt-p (not fn)) (+eval-repl-prompt) fn)) (region (when (use-region-p) (buffer-substring-no-properties (region-beginning) (region-end))))) From 854f4103ff286f05462cf4facda7445eaff0503a Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 19:01:59 -0400 Subject: [PATCH 39/50] fix(factor): repl handler Otherwise `+eval/open-repl-*` commands will emit "REPL handler X failed to return a buffer" errors. Fix: #7788 Co-authored-by: steve-ayerhart --- modules/lang/factor/autoload.el | 8 ++++++++ modules/lang/factor/config.el | 5 ++++- 2 files changed, 12 insertions(+), 1 deletion(-) create mode 100644 modules/lang/factor/autoload.el diff --git a/modules/lang/factor/autoload.el b/modules/lang/factor/autoload.el new file mode 100644 index 000000000..c61098fe1 --- /dev/null +++ b/modules/lang/factor/autoload.el @@ -0,0 +1,8 @@ +;;; lang/factor/autoload.el -*- lexical-binding: t; -*- + +;;;###autoload +(defun +factor/open-repl () + "Open the Factor Listener." + (interactive) + (call-interactively #'run-factor) + (current-buffer)) diff --git a/modules/lang/factor/config.el b/modules/lang/factor/config.el index 4f89a79e4..1b2bdf2ad 100644 --- a/modules/lang/factor/config.el +++ b/modules/lang/factor/config.el @@ -5,7 +5,10 @@ :init (after! factor-mode (set-eval-handler! 'factor-mode #'fuel-eval-region) - (set-repl-handler! 'factor-mode #'run-factor)) + (set-repl-handler! 'factor-mode #'+factor/open-repl + :persist t + :send-region #'fuel-eval-region + :send-buffer #'fuel-run-file)) :config (set-lookup-handlers! 'factor-mode :definition #'fuel-edit-word-at-point From 1f921ca7a7cdb7755bd7d518ad55bce8c0279e48 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 19:03:18 -0400 Subject: [PATCH 40/50] fix(factor): package association for lookup handlers & keybinds This ensures all these fuel keybinds on factor-mode-map (and the fuel-based lookup handlers) are associated with the fuel-mode package (in case the user disables the fuel package). Fix: #7788 Co-authored-by: steve-ayerhart --- modules/lang/factor/config.el | 131 +++++++++++++++++----------------- 1 file changed, 65 insertions(+), 66 deletions(-) diff --git a/modules/lang/factor/config.el b/modules/lang/factor/config.el index 1b2bdf2ad..5af0c1b41 100644 --- a/modules/lang/factor/config.el +++ b/modules/lang/factor/config.el @@ -8,73 +8,72 @@ (set-repl-handler! 'factor-mode #'+factor/open-repl :persist t :send-region #'fuel-eval-region - :send-buffer #'fuel-run-file)) + :send-buffer #'fuel-run-file) + (set-lookup-handlers! 'factor-mode + :definition #'fuel-edit-word-at-point + :references #'fuel-show-callers + :documentation #'fuel-help) + (map! :map factor-mode-map + :localleader + "t" #'fuel-test-vocab + "F" #'fuel-run-file + "f" #'run-factor + "a" #'fuel-refresh-all + "L" #'fuel-load-usings + "u" #'fuel-vocab-usage + "U" #'fuel-vocab-uses + (:prefix ("c" . "change") + "w" #'fuel-edit-word-at-point + "d" #'fuel-edit-word-doc-at-point + "v" #'fuel-edit-vocabulary) + (:prefix ("e" . "eval") + "d" #'fuel-eval-definition + "R" #'fuel-eval-extended-region + "r" #'fuel-eval-region) + (:prefix ("h" . "help") + "p" #'fuel-apropos + "h" #'fuel-help + "b" #'fuel-help-display-bookmarks + "v" #'fuel-help-vocab + "w" #'fuel-show-file-words + "c" #'fuel-show-callees + "e" #'fuel-stack-effect-region + "s" #'fuel-stack-effect-sexp) + (:prefix ("s" . "scaffold") + "v" #'fuel-scaffold-vocab + "h" #'fuel-scaffold-help + "t" #'fuel-scaffold-tests) + (:prefix ("r" . "refactor") + "s" #'fuel-refactor-extract-sexp + "w" #'fuel-refactor-extract-region + "v" #'fuel-refactor-extract-vocab + "i" #'fuel-refactor-inline-word + "g" #'fuel-refactor-make-generic + "u" #'fuel-update-usings + "r" #'fuel-refactor-rename-word))) :config - (set-lookup-handlers! 'factor-mode - :definition #'fuel-edit-word-at-point - :references #'fuel-show-callers - :documentation #'fuel-help)) -(map! :after fuel-help - :map fuel-help-mode-map - :localleader - "e" #'fuel-help-edit - "d" #'fuel-help-delete-bookmark - "B" #'fuel-help-display-bookmarks - "n" #'fuel-help-next - "d" #'fuel-help-kill-page - "p" #'fuel-help-previous - "b" #'fuel-help-bookmark-page - "e" #'fuel-help-edit) + (map! :after fuel-help + :map fuel-help-mode-map + :localleader + "e" #'fuel-help-edit + "d" #'fuel-help-delete-bookmark + "B" #'fuel-help-display-bookmarks + "n" #'fuel-help-next + "d" #'fuel-help-kill-page + "p" #'fuel-help-previous + "b" #'fuel-help-bookmark-page + "e" #'fuel-help-edit) -(map! :after factor-mode - :map factor-mode-map - :localleader - "t" #'fuel-test-vocab - "F" #'fuel-run-file - "f" #'run-factor - "a" #'fuel-refresh-all - "L" #'fuel-load-usings - "u" #'fuel-vocab-usage - "U" #'fuel-vocab-uses - (:prefix ("c" . "change") - "w" #'fuel-edit-word-at-point - "d" #'fuel-edit-word-doc-at-point - "v" #'fuel-edit-vocabulary) - (:prefix ("e" . "eval") - "d" #'fuel-eval-definition - "R" #'fuel-eval-extended-region - "r" #'fuel-eval-region) - (:prefix ("h" . "help") - "p" #'fuel-apropos - "h" #'fuel-help - "b" #'fuel-help-display-bookmarks - "v" #'fuel-help-vocab - "w" #'fuel-show-file-words - "c" #'fuel-show-callees - "e" #'fuel-stack-effect-region - "s" #'fuel-stack-effect-sexp) - (:prefix ("s" . "scaffold") - "v" #'fuel-scaffold-vocab - "h" #'fuel-scaffold-help - "t" #'fuel-scaffold-tests) - (:prefix ("r" . "refactor") - "s" #'fuel-refactor-extract-sexp - "w" #'fuel-refactor-extract-region - "v" #'fuel-refactor-extract-vocab - "i" #'fuel-refactor-inline-word - "g" #'fuel-refactor-make-generic - "u" #'fuel-update-usings - "r" #'fuel-refactor-rename-word)) + (map! :after fuel-listener + :map fuel-listener-mode-map + :localleader + "b" #'fuel-switch-to-buffer + "w" #'fuel-switch-to-buffer-other-window + "f" #'fuel-switch-to-buffer-other-frame + "e" #'fuel-edit-vocabulary + "r" #'fuel-refresh-all + "i" #'fuel-stack-mode + "h" #'fuel-help + "s" #'fuel-scaffold-vocab)) -(map! :after fuel-listener - :map fuel-listener-mode-map - :localleader - "b" #'fuel-switch-to-buffer - "w" #'fuel-switch-to-buffer-other-window - "f" #'fuel-switch-to-buffer-other-frame - "e" #'fuel-edit-vocabulary - "r" #'fuel-refresh-all - "i" #'fuel-stack-mode - "h" #'fuel-help - "s" #'fuel-scaffold-vocab) From 681dd7bb554d844c3c6d386dd654daf755a59520 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 19:04:45 -0400 Subject: [PATCH 41/50] fix(factor): handle fuel popups Fix: #7788 Co-authored-by: steve-ayerhart --- modules/lang/factor/config.el | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/lang/factor/config.el b/modules/lang/factor/config.el index 5af0c1b41..f863f27a4 100644 --- a/modules/lang/factor/config.el +++ b/modules/lang/factor/config.el @@ -52,6 +52,10 @@ "u" #'fuel-update-usings "r" #'fuel-refactor-rename-word))) :config + (set-popup-rules! + '(("^\\*fuel \\(debug\\|xref\\|messages\\)\\*$" :slot 1 :vslot -1) + ("^\\*fuel help\\*$" :slot 2 :vslot 2 :select t :size 0.35) + ("^\\*fuel listener\\*$" :size 0.3 :quit nil :ttl nil))) (map! :after fuel-help :map fuel-help-mode-map From ac3310722803a4577a80ccebb2d1c565c11f373f Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 19:05:29 -0400 Subject: [PATCH 42/50] bump: :lang factor factor/factor@23fcfc70753a -> factor/factor@12fc9d5071e4 --- modules/lang/factor/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/factor/packages.el b/modules/lang/factor/packages.el index f6b4aff31..55ec98480 100644 --- a/modules/lang/factor/packages.el +++ b/modules/lang/factor/packages.el @@ -1,4 +1,4 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/factor/packages.el -(package! fuel :pin "23fcfc70753abbbdc0e86af06330d63da6e4ea64") +(package! fuel :pin "12fc9d5071e46cac7b558204db5f4f09ea56e9c7") From 57f43e095344c562778859acfa300668f78af031 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Fri, 5 Apr 2024 19:05:54 -0400 Subject: [PATCH 43/50] fix(vc): *vc-{diff,change-log}* popup rules The former rules weren't proccing on these buffers. Also changes *vc-diff* popups to resize based on contents. --- modules/emacs/vc/config.el | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/emacs/vc/config.el b/modules/emacs/vc/config.el index 3ea79365c..d0a4f2190 100644 --- a/modules/emacs/vc/config.el +++ b/modules/emacs/vc/config.el @@ -28,10 +28,13 @@ "k" #'log-view-msg-prev)) -(after! vc-annotate +(after! vc (set-popup-rules! - '(("^\\*vc-diff" :select nil) ; *vc-diff* - ("^\\*vc-change" :select t))) ; *vc-change-log* + '(("^\\*vc-diff" :select nil :size '+popup-shrink-to-fit) + ("^\\*vc-change-log" :select t)))) + + +(after! vc-annotate (set-evil-initial-state! 'vc-annotate-mode 'normal) ;; Clean up after itself From f79bb46c9b639b10613b1b4ed8a485a233f61526 Mon Sep 17 00:00:00 2001 From: StrawberryTea Date: Fri, 5 Apr 2024 18:42:09 -0500 Subject: [PATCH 44/50] fix(corfu): prevent void-variable error Although this error will not be triggered by most people, since auth-source is loaded by a lot of packages, it can still happen if you are debugging your configuration (e.g. enabling/disabling modules one-by-one). --- modules/completion/corfu/config.el | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/completion/corfu/config.el b/modules/completion/corfu/config.el index a00c41749..ce954d400 100644 --- a/modules/completion/corfu/config.el +++ b/modules/completion/corfu/config.el @@ -28,7 +28,8 @@ use the minibuffer such as `query-replace'.") ('aggressive (not (or (bound-and-true-p mct--active) (bound-and-true-p vertico--input) - (eq (current-local-map) read-passwd-map) + (and (featurep 'auth-source) + (eq (current-local-map) read-passwd-map)) (and (featurep 'helm-core) (helm--alive-p)) (and (featurep 'ido) (ido-active)) (where-is-internal 'minibuffer-complete From 4f07e83b6e0b21b66c9e18b48cef8a11de77dda5 Mon Sep 17 00:00:00 2001 From: StrawberryTea Date: Fri, 5 Apr 2024 18:56:06 -0500 Subject: [PATCH 45/50] fix(vertico): missing command error in consult Although it is rare for a user to not enable the :config default module, enabling/disabling modules one-by-one is common practice for debugging Doom Emacs. This PR fixes an error that occurs when you have :completion vertico enabled without enabling :config default. --- modules/completion/vertico/config.el | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/completion/vertico/config.el b/modules/completion/vertico/config.el index de12d0449..a25826e53 100644 --- a/modules/completion/vertico/config.el +++ b/modules/completion/vertico/config.el @@ -160,13 +160,16 @@ orderless." (consult-customize consult-ripgrep consult-git-grep consult-grep consult-bookmark consult-recent-file - +default/search-project +default/search-other-project - +default/search-project-for-symbol-at-point - +default/search-cwd +default/search-other-cwd - +default/search-notes-for-symbol-at-point - +default/search-emacsd consult--source-recent-file consult--source-project-recent-file consult--source-bookmark :preview-key "C-SPC") + (when (modulep! :config default) + (consult-customize + +default/search-project +default/search-other-project + +default/search-project-for-symbol-at-point + +default/search-cwd +default/search-other-cwd + +default/search-notes-for-symbol-at-point + +default/search-emacsd + :preview-key "C-SPC")) (consult-customize consult-theme :preview-key (list "C-SPC" :debounce 0.5 'any)) From 813c96151143f147ad6b71ee7e916918bdfb0a42 Mon Sep 17 00:00:00 2001 From: gpanago Date: Sat, 6 Apr 2024 00:11:30 -0400 Subject: [PATCH 46/50] perf(tabs): rate limit centaur-tabs-buffer-update-groups `centaur-tabs-buffer-update-groups` walks every buffer to determine the group it belongs to. This function can be called execessively (upwards of 1,000 times per second in certain conditions), as it is called on every redisplay (it is indirectly attached to `tab-line-format`). This rate limits its calls to about 10 per second. Close: #7792 Ref: ema2159/centaur-tabs#222 --- modules/ui/tabs/config.el | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-) diff --git a/modules/ui/tabs/config.el b/modules/ui/tabs/config.el index 66504fdef..f9b8af52d 100644 --- a/modules/ui/tabs/config.el +++ b/modules/ui/tabs/config.el @@ -1,5 +1,14 @@ ;;; ui/tabs/config.el -*- lexical-binding: t; -*- +(defcustom +tabs-buffer-update-groups-delay 0.1 + "Minimum wait time (in seconds) before tab groups are recalculated." + :type 'float + :group 'doom) + + +;; +;;; Packages + (use-package! centaur-tabs :hook (doom-first-file . centaur-tabs-mode) :init @@ -20,7 +29,20 @@ (defun +tabs-disable-centaur-tabs-mode-maybe-h () "Disable `centaur-tabs-mode' in current buffer." (when (centaur-tabs-mode-on-p) - (centaur-tabs-local-mode))))) + (centaur-tabs-local-mode)))) + + ;; HACK: `centaur-tabs-buffer-update-groups' is both expensive and called too + ;; frequently. There really is no reason to call it more than 10 times per + ;; second, as buffers rarely change groups more frequently than that. + (let ((time (float-time))) + (defadvice! +tabs--rate-limit-buffer-update-groups-a (fn) + :around #'centaur-tabs-buffer-update-groups + (let ((now (float-time))) + (if-let ((buf (and (< now (+ time +tabs-buffer-update-groups-delay)) + (assq (current-buffer) centaur-tabs--buffers)))) + (car (nth 2 buf)) + (setq time now) + (funcall fn)))))) ;; TODO tab-bar-mode (emacs 27) From a3de6ad04f79bcd28f3c905b918ceb3116074b94 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 6 Apr 2024 12:35:00 -0400 Subject: [PATCH 47/50] bump: :editor evil emacs-evil/evil-collection@e0982fcbb6f1 -> emacs-evil/evil-collection@ca977acb83c0 emacs-evil/evil@88d073c9d03c -> emacs-evil/evil@0251080640e0 - Fixes #7798: corfu completion in minibuffer for Evil users (thanks to emacs-evil/evil-collection#801). Fix: #7798 Ref: emacs-evil/evil-collection#801 --- modules/editor/evil/packages.el | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/editor/evil/packages.el b/modules/editor/evil/packages.el index d4afb505e..bb6a67e7c 100644 --- a/modules/editor/evil/packages.el +++ b/modules/editor/evil/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; editor/evil/packages.el -(package! evil :pin "88d073c9d03ca223564e7e8589f44ecc87c98153") +(package! evil :pin "0251080640e0da6f0eec2b7d8dd70e9c9b9915d7") (package! evil-args :pin "a8151556f63c9d45d0c44c8a7ef9e5a542f3cdc7") (package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9") (package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d") @@ -35,4 +35,4 @@ (package! neotree) (autoload 'neotree-make-executor "neotree" nil nil 'macro)) - (package! evil-collection :pin "e0982fcbb6f1694b27074565553fac0e736a30b4")) + (package! evil-collection :pin "ca977acb83c0dd01fc57dbc6f3d3111e89f4ec9d")) From 4f51652111d35081347576e4ebd31ec6c823e5db Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 6 Apr 2024 12:37:10 -0400 Subject: [PATCH 48/50] fix(lib): remove-recent-file: improve completion UI Integrates with completion frameworks (particularly vertico) that read capf metadata. --- lisp/lib/files.el | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/lisp/lib/files.el b/lisp/lib/files.el index 8550ec344..6690820dc 100644 --- a/lisp/lib/files.el +++ b/lisp/lib/files.el @@ -561,9 +561,17 @@ which case it will save it without prompting." (defun doom/remove-recent-file (file) "Remove FILE from your recently-opened-files list." (interactive - (list (completing-read "Remove recent file: " recentf-list + (list (completing-read "Remove recent file: " + (lambda (string predicate action) + (if (eq action 'metadata) + '(metadata + (display-sort-function . identity) + (cycle-sort-function . identity) + (category . file)) + (complete-with-action + action recentf-list string predicate))) nil t))) - (setq recentf-list (delete file recentf-list)) + (setq recentf-list (delete (recentf-expand-file-name file) recentf-list)) (recentf-save-list) (message "Removed %S from `recentf-list'" (abbreviate-file-name file))) From 69bc4717225b244aff448c28e3d41fca4b1d0ed2 Mon Sep 17 00:00:00 2001 From: Henrik Lissner Date: Sat, 6 Apr 2024 12:43:28 -0400 Subject: [PATCH 49/50] fix(workspaces): dual *Warnings* windows at startup At some point, either Emacs, persp-mode, or I fixed what caused #319, which swallows the *Warnings* popup when the new main workspace is created. Until I can determine what fixed it (so I can determine whether the whole hack should go), I'll simply add this guard. Ref: #319 --- modules/ui/workspaces/config.el | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/modules/ui/workspaces/config.el b/modules/ui/workspaces/config.el index 0fb223bf2..540c76977 100644 --- a/modules/ui/workspaces/config.el +++ b/modules/ui/workspaces/config.el @@ -84,9 +84,10 @@ stored in `persp-save-dir'.") ;; HACK Fix #319: the warnings buffer gets swallowed when creating ;; `+workspaces-main', so display it ourselves, if it exists. (when-let (warnings (get-buffer "*Warnings*")) - (save-excursion - (display-buffer-in-side-window - warnings '((window-height . shrink-window-if-larger-than-buffer)))))))) + (unless (get-buffer-window warnings) + (save-excursion + (display-buffer-in-side-window + warnings '((window-height . shrink-window-if-larger-than-buffer))))))))) (defun +workspaces-init-persp-mode-h () (cond (persp-mode ;; `uniquify' breaks persp-mode. It renames old buffers, which causes From ead2ad19dcac2d9696d735dfc9180260b1f203e0 Mon Sep 17 00:00:00 2001 From: Prashant Vithani Date: Sat, 6 Apr 2024 17:51:14 +0530 Subject: [PATCH 50/50] bump: :lang scala hvesalai/emacs-sbt-mode@bcf8d6040021 -> hvesalai/emacs-sbt-mode@cc68728a6ef0 --- modules/lang/scala/packages.el | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/lang/scala/packages.el b/modules/lang/scala/packages.el index 38429ea89..18dabf4e2 100644 --- a/modules/lang/scala/packages.el +++ b/modules/lang/scala/packages.el @@ -1,7 +1,7 @@ ;; -*- no-byte-compile: t; -*- ;;; lang/scala/packages.el -(package! sbt-mode :pin "bcf8d6040021013430b39d6f6766ce1aab0b691a") +(package! sbt-mode :pin "cc68728a6ef0600aad369157b3a2d0ce56afba9b") (package! scala-mode :pin "4c6d636b86e3bb1d95de819dc48dda92abdfbcf4") (when (and (modulep! +lsp)