dev: merging from main

This commit is contained in:
Matt Nish-Lapidus 2024-04-05 14:34:14 -04:00
parent c241f11ed1
commit e2cd50cd0c
45 changed files with 232 additions and 296 deletions

View file

@ -13,7 +13,7 @@ Includes:
[Install](#install) • [Documentation] • [FAQ] • [Screenshots] • [Contribute](#contribute) [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) ![Made with Doom Emacs](https://img.shields.io/github/tag/doomemacs/doomemacs.svg?style=flat-square&label=release&color=58839b)
![Supports Emacs 27.129.2](https://img.shields.io/badge/Supports-Emacs_27.129.2-blueviolet.svg?style=flat-square&logo=GNU%20Emacs&logoColor=white) ![Supports Emacs 27.129.3](https://img.shields.io/badge/Supports-Emacs_27.129.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) ![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) ![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] [![Discord Server](https://img.shields.io/discord/406534637242810369?color=738adb&label=Discord&logo=discord&logoColor=white&style=flat-square)][Discord]
@ -107,7 +107,7 @@ Check out [the FAQ][FAQ] for answers to common questions about the project.
# Prerequisites # Prerequisites
- Git 2.23+ - Git 2.23+
- Emacs 27.129.2 (**Recommended: 29.2 + - Emacs 27.129.3 (**Recommended: 29.3 +
[native-comp](https://www.emacswiki.org/emacs/GccEmacs)**) [native-comp](https://www.emacswiki.org/emacs/GccEmacs)**)
- [ripgrep] 11.0+ - [ripgrep] 11.0+
- GNU `find` - GNU `find`

View file

@ -315,39 +315,36 @@ list remains lean."
(doom-packages--cli-recipes-update)) (doom-packages--cli-recipes-update))
(condition-case-unless-debug e (condition-case-unless-debug e
(let ((straight-vc-git-post-clone-hook (let ((straight-vc-git-post-clone-hook
(cons (lambda! (&key repo-dir commit) (cons (lambda! (&key commit)
(print-group! (print-group!
(if-let (pin (cdr (assoc package pinned))) (if-let (pin (cdr (assoc package pinned)))
(print! (item "Pinned to %s") pin) (print! (item "Pinned to %s") pin)
(when commit (when commit
(print! (item "Checked out %s") 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")))))
straight-vc-git-post-clone-hook))) straight-vc-git-post-clone-hook)))
(straight-use-package (intern package)) (straight-use-package (intern package))
(when (file-in-directory-p repo-dir straight-base-dir)
;; HACK: Straight can sometimes fail to clone a repo, ;; HACK: Straight can sometimes fail to clone a repo,
;; leaving behind an empty directory which, in future ;; leaving behind an empty directory which, in
;; invocations, it will assume indicates a successful ;; future invocations, it will assume indicates a
;; clone (causing load errors later). ;; successful clone (causing load errors later).
(let ((try 0)) (let ((try 0))
(while (or (not (file-directory-p repo-dir)) (while (not (file-directory-p (doom-path repo-dir ".git")))
(directory-empty-p repo-dir))
(when (= try 3) (when (= try 3)
(error "Failed to clone package")) (error "Failed to clone package"))
(print! "Failed to clone %S, trying again (attempt #%d)..." package (1+ try)) (print! (warn "Failed to clone %S, trying again (attempt #%d)...") package (1+ try))
(delete-directory repo-dir t) (delete-directory repo-dir t)
(delete-directory build-dir t) (delete-directory build-dir t)
(straight-use-package (intern package)) (straight-use-package (intern package))
(cl-incf try)))) (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 (error
(signal 'doom-package-error (list package e))))))) (signal 'doom-package-error (list package e)))))))
(progn (progn

View file

@ -34,7 +34,7 @@ following shell commands:
(let* ((force? (doom-cli-context-suppress-prompts-p context)) (let* ((force? (doom-cli-context-suppress-prompts-p context))
(sync-cmd (append '("sync" "-u") (sync-cmd (append '("sync" "-u")
(if nobuild? '("-B")) (if nobuild? '("-B"))
(if jobs `("-j" ,num))))) (if jobs `("-j" ,jobs)))))
(cond (cond
(packages? (packages?
;; HACK It's messy to use straight to upgrade straight, due to the ;; HACK It's messy to use straight to upgrade straight, due to the

View file

@ -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 where VAR is the name of the variable (a string) and VALUE
is its value (also a string). 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))) (declare (indent 1) (debug (sexp body)))
(unless (consp variables) (unless (consp variables)
(error "Invalid VARIABLES: %s" variables)) (error "Invalid VARIABLES: %s" variables))

View file

@ -95,7 +95,6 @@ want to change your symbol font, use `doom-symbol-font'.")
(inhibit-redisplay t)) (inhibit-redisplay t))
(run-hooks 'doom-switch-buffer-hook))) (run-hooks 'doom-switch-buffer-hook)))
(defvar doom--last-frame nil)
(defun doom-run-switch-window-or-frame-hooks-h (&optional _) (defun doom-run-switch-window-or-frame-hooks-h (&optional _)
(let ((gc-cons-threshold most-positive-fixnum) (let ((gc-cons-threshold most-positive-fixnum)
(inhibit-redisplay t)) (inhibit-redisplay t))

View file

@ -201,7 +201,7 @@
"Current version of Doom Emacs core.") "Current version of Doom Emacs core.")
;; DEPRECATED: Remove these when the modules are moved out of 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.") "Current version of Doom Emacs.")
(defvar doom-init-time nil (defvar doom-init-time nil
@ -352,12 +352,12 @@ users).")
;;; Startup optimizations ;;; Startup optimizations
;; Here are Doom's hackiest (and least offensive) startup optimizations. They ;; Here are Doom's hackiest (and least offensive) startup optimizations. They
;; exploit implementation details and unintended side-effects, and will change ;; exploit implementation details and unintended side-effects in Emacs' startup
;; often between major Emacs releases. However, I disable them if this is a ;; process, and will change often between major Emacs releases. However, I
;; daemon session (where startup time matters less). ;; 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 ;; 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) (unless (daemonp)
;; PERF: `file-name-handler-alist' is consulted on each call to `require', ;; PERF: `file-name-handler-alist' is consulted on each call to `require',
;; `load', or various file/io functions (like `expand-file-name' or ;; `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))) (let ((old-value (default-toplevel-value 'file-name-handler-alist)))
(set-default-toplevel-value (set-default-toplevel-value
'file-name-handler-alist 'file-name-handler-alist
;; HACK: If the bundled elisp for this Emacs install isn't byte-compiled ;; HACK: The libraries bundled with Emacs can either be compiled,
;; (but is compressed), then leave the gzip file handler there so Emacs ;; compressed, or neither. We use calc-loaddefs.el as a heuristic to
;; won't forget how to read read them. ;; 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
;; calc-loaddefs.el is our heuristic for this because it is built-in to ;; Emacs knows how to load them. If they're compiled or neither, we can
;; all supported versions of Emacs, and calc.el explicitly loads it ;; omit the gzip handler altogether (at least during startup) for a boost
;; uncompiled. This ensures that the only other, possible fallback would ;; in startup and package load time.
;; be calc-loaddefs.el.gz.
(if (eval-when-compile (if (eval-when-compile
(locate-file-internal "calc-loaddefs.el" load-path)) (locate-file-internal "calc-loaddefs.el" load-path))
nil nil
@ -395,55 +394,46 @@ users).")
(unless noninteractive (unless noninteractive
;; PERF: Resizing the Emacs frame (to accommodate fonts that are smaller or ;; PERF: Resizing the Emacs frame (to accommodate fonts that are smaller or
;; larger than the system font) appears to impact startup time ;; larger than the system font) appears to impact startup time
;; dramatically. The larger the delta in font size, the greater the delay. ;; dramatically. The larger the delta, the greater the delay. Even trivial
;; Even trivial deltas can yield a ~1000ms loss, though it varies wildly ;; deltas can yield up to a ~1000ms loss, depending on font size and
;; depending on font size. ;; `window-system'. PGTK seems least affected and NS/MAC the most.
(setq frame-inhibit-implied-resize t) (setq frame-inhibit-implied-resize t)
;; PERF,UX: Reduce *Message* noise at startup. An empty scratch buffer (or ;; PERF: A fair bit of startup time goes into initializing the splash and
;; the dashboard) is more than enough, and faster to display. ;; 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 (setq inhibit-startup-screen t
inhibit-startup-echo-area-message user-login-name) inhibit-startup-echo-area-message user-login-name
;; PERF,UX: Remove "For information about GNU Emacs..." message at startup. initial-major-mode 'fundamental-mode
;; It's redundant with our dashboard and incurs a premature redraw. initial-scratch-message nil)
;; PERF,UX: Prevent "For information about GNU Emacs..." line in *Messages*.
(advice-add #'display-startup-echo-area-message :override #'ignore) (advice-add #'display-startup-echo-area-message :override #'ignore)
;; PERF: Suppress the vanilla startup screen completely. We've disabled it ;; PERF: Suppress the vanilla startup screen completely. We've disabled it
;; with `inhibit-startup-screen', but it would still initialize anyway. ;; with `inhibit-startup-screen', but it would still initialize anyway.
;; This involves some file IO and/or bitmap work (depending on the frame ;; This involves file IO and/or bitmap work (depending on the frame type)
;; type) that we can no-op for a free 50-100ms boost in startup time. ;; that we can no-op for a free 50-100ms saving in startup time.
(advice-add #'display-startup-screen :override #'ignore) (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 (unless initial-window-system
;; PERF: Inexplicably, `tty-run-terminal-initialization' can sometimes ;; PERF: `tty-run-terminal-initialization' can take 2-3s when starting up
;; take 2-3s when starting up Emacs in the terminal. Whatever slows it ;; TTY Emacs (non-daemon sessions), depending on your TERM, TERMINFO,
;; down at startup doesn't appear to affect it if it's called a little ;; and TERMCAP, but this work isn't very useful on modern systems (the
;; later in the startup process, so that's what I do. ;; type I expect Doom's users to be using). The function seems less
;; REVIEW: This optimization is not well understood. Investigate it! ;; 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) (define-advice tty-run-terminal-initialization (:override (&rest _) defer)
(advice-remove #'tty-run-terminal-initialization #'tty-run-terminal-initialization@defer) (advice-remove #'tty-run-terminal-initialization #'tty-run-terminal-initialization@defer)
(add-hook 'window-setup-hook (add-hook 'window-setup-hook
(doom-partial #'tty-run-terminal-initialization (doom-partial #'tty-run-terminal-initialization
(selected-frame) nil t)))) (selected-frame) nil t))))
;; PERF,UX: Site files tend to use `load-file', which emits "Loading X..." ;; PERF: `load-suffixes' and `load-file-rep-suffixes' are consulted on each
;; messages in the echo area. Writing to the echo-area triggers a ;; `require' and `load'. Doom won't load any modules this early, so omit
;; redisplay, which can be expensive during startup. This may also cause ;; .so for a tiny startup boost. Is later restored in doom-start.
;; 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.
(put 'load-suffixes 'initial-value (default-toplevel-value 'load-suffixes)) (put 'load-suffixes 'initial-value (default-toplevel-value 'load-suffixes))
(put 'load-file-rep-suffixes 'initial-value (default-toplevel-value 'load-file-rep-suffixes)) (put 'load-file-rep-suffixes 'initial-value (default-toplevel-value 'load-file-rep-suffixes))
(set-default-toplevel-value 'load-suffixes '(".elc" ".el")) (set-default-toplevel-value 'load-suffixes '(".elc" ".el"))
@ -455,35 +445,34 @@ users).")
(setq load-suffixes (get 'load-suffixes 'initial-value) (setq load-suffixes (get 'load-suffixes 'initial-value)
load-file-rep-suffixes (get 'load-file-rep-suffixes 'initial-value)))) load-file-rep-suffixes (get 'load-file-rep-suffixes 'initial-value))))
;; PERF: Doom uses `defcustom' to indicate variables that users are ;; PERF: Doom uses `defcustom' merely to announce variables that users may
;; expected to reconfigure. Trouble is it fires off initializers meant ;; reconfigure. Trouble is it fires off initializers meant to accommodate
;; to accommodate any user attempts to configure them before they were ;; any user attempts to configure them *before* they are defined, which
;; defined. This is unnecessary work before $DOOMDIR/init.el is loaded, ;; isn't possible since the user's first opportunity to modify them comes
;; so I disable them until it is. ;; 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) (setq custom-dont-initialize t)
(add-hook! 'doom-before-init-hook (add-hook! 'doom-before-init-hook
(defun doom--reset-custom-dont-initialize-h () (defun doom--reset-custom-dont-initialize-h ()
(setq custom-dont-initialize nil))) (setq custom-dont-initialize nil)))
;; PERF: Doom disables the UI elements by default, so that there's less ;; PERF: The mode-line procs a couple dozen times during startup, before the
;; for the frame to initialize. However, the toolbar is still populated ;; user can even see the first mode-line. This is normally fast, but we
;; regardless, so I lazy load it until tool-bar-mode is actually used. ;; can't predict what the user (or packages) will put into the mode-line.
(advice-add #'tool-bar-setup :override #'ignore) ;; 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.
;; 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.
(put 'mode-line-format 'initial-value (default-toplevel-value 'mode-line-format)) (put 'mode-line-format 'initial-value (default-toplevel-value 'mode-line-format))
(setq-default mode-line-format nil) (setq-default mode-line-format nil)
(dolist (buf (buffer-list)) (dolist (buf (buffer-list))
(with-current-buffer buf (setq mode-line-format nil))) (with-current-buffer buf (setq mode-line-format nil)))
;; PERF,UX: Premature redisplays can substantially affect startup times ;; PERF,UX: Premature redisplays/redraws can substantially affect startup
;; and/or produce ugly flashes of unstyled Emacs. ;; 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 (setq-default inhibit-redisplay t
inhibit-message t) inhibit-message t)
;; COMPAT: Then reset with advice, because `startup--load-user-init-file' ;; COMPAT: If the above vars aren't reset, Emacs could appear frozen or
;; will never be interrupted by errors. And if these settings are left ;; garbled after startup (or in case of an startup error).
;; set, Emacs could appear frozen or garbled.
(defun doom--reset-inhibited-vars-h () (defun doom--reset-inhibited-vars-h ()
(setq-default inhibit-redisplay nil (setq-default inhibit-redisplay nil
;; Inhibiting `message' only prevents redraws and ;; Inhibiting `message' only prevents redraws and
@ -491,35 +480,43 @@ users).")
(redraw-frame)) (redraw-frame))
(add-hook 'after-init-hook #'doom--reset-inhibited-vars-h) (add-hook 'after-init-hook #'doom--reset-inhibited-vars-h)
;; PERF,UX: An annoying aspect of site-lisp files is that they're often ;; PERF: Doom disables the UI elements by default, so that there's less for
;; noisy (they emit load messages or other output to stdout). These ;; the frame to initialize. However, `tool-bar-setup' is still called and
;; queue unnecessary redraws at startup, cost startup time, and pollute ;; it does some non-trivial work to set up the toolbar before we can
;; the logs. I get around it by suppressing it until we can load it ;; disable it. To side-step this work, I disable the function and call it
;; manually, later (in the `startup--load-user-init-file' advice below). ;; 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) (put 'site-run-file 'initial-value site-run-file)
(setq site-run-file nil) (setq site-run-file nil)
(define-advice startup--load-user-init-file (:around (fn &rest args) undo-inhibit-vars) (define-advice startup--load-user-init-file (:around (fn &rest args) undo-hacks)
(let (--init--) "Undo Doom's startup optimizations to prep for the user's session."
(let (init)
(unwind-protect (unwind-protect
(progn (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)) (when (setq site-run-file (get 'site-run-file 'initial-value))
(let ((inhibit-startup-screen inhibit-startup-screen)) (let ((inhibit-startup-screen inhibit-startup-screen))
(letf! (defun load (file &optional noerror _nomessage &rest args) (letf! ((defun load-file (file) (load file nil 'nomessage))
(apply load file noerror t args)) (defun load (file &optional noerror _nomessage &rest args)
(apply load file noerror t args)))
(load site-run-file t t)))) (load site-run-file t t))))
;; Then startup as normal. (apply fn args) ; start up as normal
(apply fn args) (setq init t))
(setq --init-- t)) (when (or (not init) init-file-had-error)
(when (or (not --init--) init-file-had-error)
;; If we don't undo our inhibit-{message,redisplay} and there's an ;; If we don't undo our inhibit-{message,redisplay} and there's an
;; error, we'll see nothing but a blank Emacs frame. ;; error, we'll see nothing but a blank Emacs frame.
(doom--reset-inhibited-vars-h)) (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) (unless (default-toplevel-value 'mode-line-format)
(setq-default mode-line-format (get 'mode-line-format 'initial-value)))))) (setq-default mode-line-format (get 'mode-line-format 'initial-value))))))

View file

@ -487,24 +487,31 @@ If FORCE-P, overwrite the destination file if it exists, without confirmation."
(defun doom/sudo-find-file (file) (defun doom/sudo-find-file (file)
"Open FILE as root." "Open FILE as root."
(interactive "FOpen 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 ;;;###autoload
(defun doom/sudo-this-file () (defun doom/sudo-this-file ()
"Open the current file as root." "Open the current file as root."
(interactive) (interactive)
(find-file (doom/sudo-find-file
(doom--sudo-file-path (or (buffer-file-name (buffer-base-buffer))
(or buffer-file-name
(when (or (derived-mode-p 'dired-mode) (when (or (derived-mode-p 'dired-mode)
(derived-mode-p 'wdired-mode)) (derived-mode-p 'wdired-mode))
default-directory))))) default-directory)
(user-error "Cannot determine the file path of the current buffer"))))
;;;###autoload ;;;###autoload
(defun doom/sudo-save-buffer () (defun doom/sudo-save-buffer ()
"Save this file as root." "Save this file as root."
(interactive) (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)) (if-let (buffer (find-file-noselect file))
(let ((origin (current-buffer))) (let ((origin (current-buffer)))
(copy-to-buffer buffer (point-min) (point-max)) (copy-to-buffer buffer (point-min) (point-max))
@ -593,7 +600,12 @@ see), and if nil, defaults to `find-sibling-rules'."
(nconc (nconc
results results
(mapcar #'expand-file-name (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 ;; Delete the file itself (in case it matched), and remove
;; duplicates, in case we have several expansions and some match ;; duplicates, in case we have several expansions and some match
;; the same subsets of files. ;; the same subsets of files.

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; completion/company/packages.el ;;; completion/company/packages.el
(package! company :pin "02903bd7088d65a87df0ae0f0d0a7118de147b69") (package! company :pin "b0a522ac5bf8ba3d2f4f22e3aa846a4f82978a16")
(package! company-dict :pin "cd7b8394f6014c57897f65d335d6b2bd65dab1f4") (package! company-dict :pin "cd7b8394f6014c57897f65d335d6b2bd65dab1f4")
(when (modulep! +childframe) (when (modulep! +childframe)
(package! company-box :pin "b6f53e26adf948aca55c3ff6c22c21a6a6614253")) (package! company-box :pin "c4f2e243fba03c11e46b1600b124e036f2be7691"))

View file

@ -212,6 +212,14 @@ A few variables may be set to change behavior of this module:
Whether to prefer navigating org tables over cycling candidates when pressing Whether to prefer navigating org tables over cycling candidates when pressing
[[kbd:][TAB]] and [[kbd:][S-TAB]]. [[kbd:][TAB]] and [[kbd:][S-TAB]].
** 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 ** Adding CAPFs to a mode
To add other CAPFs on a mode-per-mode basis, put either of the following in your To add other CAPFs on a mode-per-mode basis, put either of the following in your
~config.el~: ~config.el~:

View file

@ -1,8 +1,8 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; completion/corfu/packages.el ;;; completion/corfu/packages.el
(package! corfu :pin "c1e7b6190b00158e67347b4db0a8f7964e5d2f8b") (package! corfu :pin "35cd5a0f3cba89766072e3e933d1fe2ee02f2289")
(package! cape :pin "a397a0c92de38277b7f835fa999fac400a764908") (package! cape :pin "e01e4430234850263d326ad4521849cd46e64059")
(when (modulep! +icons) (when (modulep! +icons)
(package! nerd-icons-corfu :pin "7077bb76fefc15aed967476406a19dc5c2500b3c")) (package! nerd-icons-corfu :pin "7077bb76fefc15aed967476406a19dc5c2500b3c"))
(when (and (not (modulep! :completion vertico)) (when (and (not (modulep! :completion vertico))

View file

@ -1,10 +1,10 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; completion/helm/packages.el ;;; completion/helm/packages.el
(package! helm :pin "f34ea6b702648e5c7535a704bdb6c4d7afb4b3b8") (package! helm :pin "28f62344fed0d8be0bcef5aa8a018ba58198ba0c")
(package! helm-company :pin "4622b82353220ee6cc33468f710fa5b6b253b7f1") (package! helm-company :pin "4622b82353220ee6cc33468f710fa5b6b253b7f1")
(package! helm-c-yasnippet :pin "c5880e740da101fde7a995e94a7b16c330e57583") (package! helm-c-yasnippet :pin "c5880e740da101fde7a995e94a7b16c330e57583")
(package! helm-descbinds :pin "b72515982396b6e336ad7beb6767e95a80fca192") (package! helm-descbinds :pin "ca03f02da4e54a1d0a2d5498b86e1639aa808d8c")
(package! helm-describe-modes :pin "11fb36af119b784539d31c6160002de1957408aa") (package! helm-describe-modes :pin "11fb36af119b784539d31c6160002de1957408aa")
(package! helm-projectile :pin "e2e38825c975269a4971df25e79b2ae98929624e") (package! helm-projectile :pin "e2e38825c975269a4971df25e79b2ae98929624e")
(package! helm-rg :pin "ee0a3c09da0c843715344919400ab0a0190cc9dc") (package! helm-rg :pin "ee0a3c09da0c843715344919400ab0a0190cc9dc")

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; completion/ivy/packages.el ;;; completion/ivy/packages.el
(package! swiper :pin "8c30f4cab5948aa8d942a3b2bbf5fb6a94d9441d") (package! swiper :pin "1f88e5499046d166d22bf733a3877aec3b424947")
(package! ivy) (package! ivy)
(package! ivy-hydra) (package! ivy-hydra)
(package! ivy-avy) (package! ivy-avy)
@ -13,7 +13,7 @@
(package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4") (package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4")
(if (modulep! +prescient) (if (modulep! +prescient)
(package! ivy-prescient :pin "4b875be52e75f7b81e68a16b62cfbb2f2584042c") (package! ivy-prescient :pin "c39bf07c56b427bf41aafd7d20eaef5cf3c312b5")
(when (modulep! +fuzzy) (when (modulep! +fuzzy)
(package! flx :pin "4b1346eb9a8a76ee9c9dede69738c63ad97ac5b6"))) (package! flx :pin "4b1346eb9a8a76ee9c9dede69738c63ad97ac5b6")))

View file

@ -207,6 +207,9 @@ orderless."
"C-x C-d" #'consult-dir "C-x C-d" #'consult-dir
"C-x C-j" #'consult-dir-jump-file)) "C-x C-j" #'consult-dir-jump-file))
:config :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) (when (modulep! :tools docker)
;; TODO: Replace with `tramp-container--completion-function' when we drop ;; TODO: Replace with `tramp-container--completion-function' when we drop
;; support for <29 ;; support for <29

View file

@ -1,19 +1,19 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; completion/vertico/packages.el ;;; 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") (package! consult-dir :pin "3f5f4b71ebe819392cb090cda71bd39a93bd830a")
(when (and (modulep! :checkers syntax) (when (and (modulep! :checkers syntax)
(not (modulep! :checkers syntax +flymake))) (not (modulep! :checkers syntax +flymake)))
(package! consult-flycheck :pin "754f5497d827f7d58009256a21af614cc44378a3")) (package! consult-flycheck :pin "754f5497d827f7d58009256a21af614cc44378a3"))
(package! embark :pin "c93abadc8220c0caa6fea805f7a736c346d47e7e") (package! embark :pin "d3c9d1b4c890cf365846cc2b418f37341999e79f")
(package! embark-consult :pin "c93abadc8220c0caa6fea805f7a736c346d47e7e") (package! embark-consult :pin "d3c9d1b4c890cf365846cc2b418f37341999e79f")
(package! marginalia :pin "f6fe86b989a177355ab3ff7e97a384e10a7b0bb1") (package! marginalia :pin "3275d1f85cb020280979a050054b843f7563aea2")
(package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4") (package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4")

View file

@ -1,8 +1,8 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; editor/evil/packages.el ;;; editor/evil/packages.el
(package! evil :pin "5995f6f21f662484440ed67a28ce59e365feb9ad") (package! evil :pin "88d073c9d03ca223564e7e8589f44ecc87c98153")
(package! evil-args :pin "2671071a4a57eaee7cc8c27b9e4b6fc60fd2ccd3") (package! evil-args :pin "a8151556f63c9d45d0c44c8a7ef9e5a542f3cdc7")
(package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9") (package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9")
(package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d") (package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d")
(package! evil-escape (package! evil-escape
@ -11,10 +11,10 @@
(package! evil-exchange :pin "5f0a2d41434c17c6fb02e4f744043775de1c63a2") (package! evil-exchange :pin "5f0a2d41434c17c6fb02e4f744043775de1c63a2")
(package! evil-indent-plus :pin "f392696e4813f1d3a92c7eeed333248914ba6dae") (package! evil-indent-plus :pin "f392696e4813f1d3a92c7eeed333248914ba6dae")
(package! evil-lion :pin "1e838a53b8f18a3c8bdf3e952186abc2ee9cb98e") (package! evil-lion :pin "1e838a53b8f18a3c8bdf3e952186abc2ee9cb98e")
(package! evil-nerd-commenter :pin "3b197a2b559b06a7cf39978704b196f53dac802a") (package! evil-nerd-commenter :pin "ae52c5070a48793e2c24474c9c8dbf20175d18a0")
(package! evil-numbers :pin "7a1b62afc12da2b582bf84d722e7b10ca8b97065") (package! evil-numbers :pin "7a1b62afc12da2b582bf84d722e7b10ca8b97065")
(package! evil-snipe :pin "c2108d3932fcd2f75ac3e48250d6badd668f5b4f") (package! evil-snipe :pin "c2108d3932fcd2f75ac3e48250d6badd668f5b4f")
(package! evil-surround :pin "c7116cdc774b1e259eaf3e9e7a318a6c99c2da17") (package! evil-surround :pin "da05c60b0621cf33161bb4335153f75ff5c29d91")
(package! evil-textobj-anyblock (package! evil-textobj-anyblock
:recipe (:host github :recipe (:host github
:repo "willghatch/evil-textobj-anyblock" :repo "willghatch/evil-textobj-anyblock"
@ -35,4 +35,4 @@
(package! neotree) (package! neotree)
(autoload 'neotree-make-executor "neotree" nil nil 'macro)) (autoload 'neotree-make-executor "neotree" nil nil 'macro))
(package! evil-collection :pin "8c84f9bc89fe56e71b56519f886085ddcbc671cf")) (package! evil-collection :pin "e0982fcbb6f1694b27074565553fac0e736a30b4"))

View file

@ -78,6 +78,18 @@ Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds."
((+fold--hideshow-fold-p) (+fold-from-eol (hs-toggle-hiding))) ((+fold--hideshow-fold-p) (+fold-from-eol (hs-toggle-hiding)))
((+fold--ts-fold-p) (ts-fold-toggle))))) ((+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 ;;;###autoload
(defun +fold/open () (defun +fold/open ()
"Open the folded region at point. "Open the folded region at point.
@ -87,7 +99,7 @@ Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds."
(save-excursion (save-excursion
(cond ((+fold--vimish-fold-p) (vimish-fold-unfold)) (cond ((+fold--vimish-fold-p) (vimish-fold-unfold))
((+fold--outline-fold-p) ((+fold--outline-fold-p)
(outline-show-children) (outline-show-branches)
(outline-show-entry)) (outline-show-entry))
((+fold--hideshow-fold-p) (+fold-from-eol (hs-show-block))) ((+fold--hideshow-fold-p) (+fold-from-eol (hs-show-block)))
((+fold--ts-fold-p) (ts-fold-open))))) ((+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)))) (list (if current-prefix-arg (prefix-numeric-value current-prefix-arg))))
(cond ((+fold--ts-fold-p) (cond ((+fold--ts-fold-p)
(ts-fold-open-all)) (ts-fold-open-all))
((featurep 'vimish-fold) ((and (featurep 'vimish-fold) (+fold--vimish-fold-p))
(vimish-fold-unfold-all)) (vimish-fold-unfold-all))
((save-excursion ((save-excursion
(+fold--ensure-hideshow-mode) (+fold--ensure-hideshow-mode)
@ -138,8 +150,12 @@ Targets `vimmish-fold', `hideshow', `ts-fold' and `outline' folds."
(+fold--ensure-hideshow-mode) (+fold--ensure-hideshow-mode)
(hs-life-goes-on (hs-life-goes-on
(if (integerp level) (if (integerp level)
(hs-hide-level-recursive (1- level) (point-min) (point-max)) (progn
(hs-hide-all))))))) (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 ;;;###autoload
(defun +fold/next (count) (defun +fold/next (count)

View file

@ -6,7 +6,7 @@
[remap evil-toggle-fold] #'+fold/toggle [remap evil-toggle-fold] #'+fold/toggle
[remap evil-close-fold] #'+fold/close [remap evil-close-fold] #'+fold/close
[remap evil-open-fold] #'+fold/open [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-close-folds] #'+fold/close-all
[remap evil-open-folds] #'+fold/open-all) [remap evil-open-folds] #'+fold/open-all)
(after! evil (after! evil

View file

@ -1,10 +1,10 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; editor/snippets/packages.el ;;; editor/snippets/packages.el
(package! yasnippet :pin "297546f0853a6a51f5b05e954d0c6aea8caa5ec2") (package! yasnippet :pin "33587a8551b8f6991b607d3532062a384c010ce1")
(package! auto-yasnippet :pin "6a9e406d0d7f9dfd6dff7647f358cb05a0b1637e") (package! auto-yasnippet :pin "6a9e406d0d7f9dfd6dff7647f358cb05a0b1637e")
(package! doom-snippets (package! doom-snippets
:recipe (:host github :recipe (:host github
:repo "doomemacs/snippets" :repo "doomemacs/snippets"
:files (:defaults "*")) :files (:defaults "*"))
:pin "f022984ee1318a4015d5d081b3c3dab5a60dc6ff") :pin "07b3bdaf60b74080f899b12c3d46594c7fa75e04")

View file

@ -6,9 +6,9 @@
(package! smerge-mode :built-in t) (package! smerge-mode :built-in t)
(package! browse-at-remote :pin "76aa27dfd469fcae75ed7031bb73830831aaccbf") (package! browse-at-remote :pin "76aa27dfd469fcae75ed7031bb73830831aaccbf")
(package! git-commit :pin "b68e0a3c3388af8daac662f25ccfd3e980590e12") (package! git-commit :pin "b5637d665c1e5bd5b76ffb072dbac387f37a5f63")
(package! git-timemachine (package! git-timemachine
;; The original lives on codeberg.org; which has uptime issues. ;; The original lives on codeberg.org; which has uptime issues.
:recipe (:host github :repo "emacsmirror/git-timemachine") :recipe (:host github :repo "emacsmirror/git-timemachine")
:pin "ac933e5cd29583c131401f3bd991d98129c316df") :pin "5ed73c3831cf6da10ba941e6abba708a86853e8f")
(package! git-modes :pin "3cc94974c09c43462dfbfbe20396a414352dbb92") (package! git-modes :pin "3cc94974c09c43462dfbfbe20396a414352dbb92")

View file

@ -75,6 +75,7 @@ is non-nil."
(setq mu4e-get-mail-command "offlineimap -o -q"))) (setq mu4e-get-mail-command "offlineimap -o -q")))
(setq mu4e-update-interval nil (setq mu4e-update-interval nil
mu4e-notification-support t
mu4e-sent-messages-behavior 'sent mu4e-sent-messages-behavior 'sent
mu4e-hide-index-messages t mu4e-hide-index-messages t
;; configuration for sending mail ;; 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")) (`refile (mu4e-action-retag-message msg "-\\Inbox"))
(`flag (mu4e-action-retag-message msg "+\\Starred")) (`flag (mu4e-action-retag-message msg "+\\Starred"))
(`unflag (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<b>%s</b> • %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)))

View file

@ -3,5 +3,3 @@
(when (modulep! +org) (when (modulep! +org)
(package! org-msg :pin "0b65f0f77a7a71881ddfce19a8cdc60465bda057")) (package! org-msg :pin "0b65f0f77a7a71881ddfce19a8cdc60465bda057"))
(package! mu4e-alert :pin "6beda20fc69771f2778f507c4a9e069dbaf1b628")

View file

@ -78,7 +78,8 @@ This is ignored by ccls.")
:return "return" :return "return"
:yield "#require") :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) (when (modulep! +tree-sitter)
(add-hook! '(c-mode-local-vars-hook (add-hook! '(c-mode-local-vars-hook

View file

@ -174,3 +174,8 @@
:defer t :defer t
:init :init
(add-to-list 'sly-contribs 'sly-asdf 'append)) (add-to-list 'sly-contribs 'sly-asdf 'append))
(use-package! sly-stepper
:defer t
:init
(add-to-list 'sly-contribs 'sly-stepper))

View file

@ -3,6 +3,9 @@
(when (package! sly :pin "ed17d2c2bd7aead0fbb09c3d22861c80a522a097") (when (package! sly :pin "ed17d2c2bd7aead0fbb09c3d22861c80a522a097")
(package! sly-asdf :pin "6f9d751469bb82530db1673c22e7437ca6c95f45") (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-macrostep :pin "5113e4e926cd752b1d0bcc1508b3ebad5def5fad")
(package! sly-repl-ansi-color :pin "b9cd52d1cf927bf7e08582d46ab0bcf1d4fb5048") (package! sly-repl-ansi-color :pin "b9cd52d1cf927bf7e08582d46ab0bcf1d4fb5048")
(package! sly-overlay :pin "916b50297a1f3bb110f840b89b8717d194623e5f")) (package! sly-overlay :pin "916b50297a1f3bb110f840b89b8717d194623e5f"))

View file

@ -91,7 +91,7 @@ query GetContinents($continentCode: String!) {
With this module, there are 3 ways to view schemas: 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-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= 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. When using the doc viewer, there are a few bindings for navigating around.

View file

@ -1188,7 +1188,7 @@ between the two."
:hook (org-mode . org-eldoc-load) :hook (org-mode . org-eldoc-load)
:init (setq org-eldoc-breadcrumb-separator "") :init (setq org-eldoc-breadcrumb-separator "")
:config :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. ;; src blocks.
;; TODO Should be reported upstream! ;; TODO Should be reported upstream!
(puthash "org" #'ignore org-eldoc-local-functions-cache) (puthash "org" #'ignore org-eldoc-local-functions-cache)

View file

@ -54,35 +54,4 @@
(lambda (path) (lambda (path)
(if (file-in-directory-p path org-download-image-dir) (if (file-in-directory-p path org-download-image-dir)
(file-relative-name path org-download-image-dir) (file-relative-name path org-download-image-dir)
path))) 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)))))))

View file

@ -1,9 +1,9 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; lang/scala/packages.el ;;; lang/scala/packages.el
(package! sbt-mode :pin "9fe1e8807c22cc1dc56a6233e000969518907f4d") (package! sbt-mode :pin "bcf8d6040021013430b39d6f6766ce1aab0b691a")
(package! scala-mode :pin "4c6d636b86e3bb1d95de819dc48dda92abdfbcf4") (package! scala-mode :pin "4c6d636b86e3bb1d95de819dc48dda92abdfbcf4")
(when (and (modulep! +lsp) (when (and (modulep! +lsp)
(not (modulep! :tools lsp +eglot))) (not (modulep! :tools lsp +eglot)))
(package! lsp-metals :pin "da7e54ed65f4e153c94b9c54689908dce142ef37")) (package! lsp-metals :pin "e55d544996f7321622e1eeafdc3dd128f8e72ce5"))

View file

@ -8,7 +8,8 @@ be aligned.
If set to `nil', disable all the above behaviors.") 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\\)\\'"))
;; ;;

View file

@ -1,13 +1,13 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; term/eshell/packages.el ;;; term/eshell/packages.el
(package! eshell-up :pin "ff84e6069b98f2ed00857a0f78bff19d96e4955c") (package! eshell-up :pin "1999afaa509204b780db44e99ac9648fe7d92d32")
(package! eshell-z :pin "337cb241e17bd472bd3677ff166a0800f684213c") (package! eshell-z :pin "337cb241e17bd472bd3677ff166a0800f684213c")
(package! shrink-path :pin "c14882c8599aec79a6e8ef2d06454254bb3e1e41") (package! shrink-path :pin "c14882c8599aec79a6e8ef2d06454254bb3e1e41")
(package! esh-help :pin "417673ed18a983930a66a6692dbfb288a995cb80") (package! esh-help :pin "417673ed18a983930a66a6692dbfb288a995cb80")
(package! eshell-did-you-mean :pin "80cd8c4b186a2fb29621cf634bcf2bcd914f1e3d") (package! eshell-did-you-mean :pin "80cd8c4b186a2fb29621cf634bcf2bcd914f1e3d")
(package! eshell-syntax-highlighting :pin "4ac27eec6595ba116a6151dfaf0b0e0440101e10") (package! eshell-syntax-highlighting :pin "1d25386bf7d1a97e083d33750a98fbd1c6598138")
(unless (featurep :system 'windows) (unless (featurep :system 'windows)
(package! fish-completion :pin "d34d0b96fde63feedf13c4288183d8d4d4d748cf") (package! fish-completion :pin "006c613ff7f846b7d0a14422f2bdcc28b21205b8")
(package! bash-completion :pin "f1daac0386c24cbe8a244a62c7588cc6847b07ae")) (package! bash-completion :pin "f1daac0386c24cbe8a244a62c7588cc6847b07ae"))

View file

@ -1,10 +1,10 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; tools/ansible/packages.el ;;; tools/ansible/packages.el
(package! ansible :recipe (:nonrecursive t) :pin "d89ac0ee57742cca0f0e0a3453d9dcc521575690") (package! ansible :recipe (:nonrecursive t) :pin "1d7de8d3ddac980715eebd87ee66859f8665b101")
(package! ansible-doc :pin "86083a7bb2ed0468ca64e52076b06441a2f8e9e0") (package! ansible-doc :pin "86083a7bb2ed0468ca64e52076b06441a2f8e9e0")
(package! jinja2-mode :pin "03e5430a7efe1d163a16beaf3c82c5fd2c2caee1") (package! jinja2-mode :pin "03e5430a7efe1d163a16beaf3c82c5fd2c2caee1")
(package! yaml-mode :pin "5b58248ab255dff6cfa4c4057a191bc4446ee5b6") (package! yaml-mode :pin "7b5ce294fb15c2c8926fa476d7218aa415550a2a")
(when (modulep! :completion company) (when (modulep! :completion company)
(package! company-ansible :pin "79dd421b161efa49fbdffad57fa40edb41f484a3")) (package! company-ansible :pin "338922601cf9e8ada863fe6f2dd9d5145d9983b0"))

View file

@ -2,16 +2,16 @@
;;; tools/biblio/packages.el ;;; tools/biblio/packages.el
(when (modulep! :completion ivy) (when (modulep! :completion ivy)
(package! bibtex-completion :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16") (package! bibtex-completion :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c")
(package! ivy-bibtex :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16")) (package! ivy-bibtex :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c"))
(when (modulep! :completion helm) (when (modulep! :completion helm)
(package! bibtex-completion :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16") (package! bibtex-completion :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c")
(package! helm-bibtex :pin "bf184cc311c9e1724f8b2eaf75b9e202c3aedd16")) (package! helm-bibtex :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c"))
(when (modulep! :completion vertico) (when (modulep! :completion vertico)
(package! citar :pin "885b86f6733fd70f42c32dd7791d3447f93db990") (package! citar :pin "885b86f6733fd70f42c32dd7791d3447f93db990")
(package! citar-embark :pin "885b86f6733fd70f42c32dd7791d3447f93db990") (package! citar-embark :pin "885b86f6733fd70f42c32dd7791d3447f93db990")
(when (modulep! :lang org +roam2) (when (modulep! :lang org +roam2)
(package! citar-org-roam :pin "7d67dccf80065a88cb86ce9a8274383a9e8269c1"))) (package! citar-org-roam :pin "82d47b5df1926627f56a09055c69b49b31cbbb9f")))
(package! parsebib :pin "ace9df707108b17759c004c7387655277122d4c1") (package! parsebib :pin "ace9df707108b17759c004c7387655277122d4c1")
(package! citeproc :pin "c61c98b9d230ea28b2ca49498134803e1f8ea526") (package! citeproc :pin "44f90cb296766e03fffc28b7892521ab0e8709f1")

View file

@ -6,5 +6,5 @@
(package! realgud-trepan-ni :pin "0ec088ea343835e24ae73da09bea96bfb02a3130"))) (package! realgud-trepan-ni :pin "0ec088ea343835e24ae73da09bea96bfb02a3130")))
(when (modulep! +lsp) (when (modulep! +lsp)
(package! dap-mode :pin "2f0c5b28578ce65ec746e4084ba72ba5c652ea79") (package! dap-mode :pin "c95537c58e8f3ceac9c827ddf89e4928b24a1cc7")
(package! posframe :pin "017deece88360c7297265680d78a0bb316470716")) (package! posframe :pin "017deece88360c7297265680d78a0bb316470716"))

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; tools/direnv/packages.el ;;; tools/direnv/packages.el
(package! envrc :pin "1385e72a730924664697a0961d43516a47a977d7") (package! envrc :pin "8eb7401700b0080902ce200ad610ff8d2f2dcc27")

View file

@ -5,4 +5,4 @@
;; tramp-container (included with Emacs 29+) replaces docker-tramp ;; tramp-container (included with Emacs 29+) replaces docker-tramp
(when (< emacs-major-version 29) (when (< emacs-major-version 29)
(package! docker-tramp :pin "19d0771db4e6b89e19c00af5806438e315779c15")) (package! docker-tramp :pin "19d0771db4e6b89e19c00af5806438e315779c15"))
(package! dockerfile-mode :pin "52c6c00da1d31c0b6c29c74335b3af63ed6bf06c") (package! dockerfile-mode :pin "39a012a27fcf6fb629c447d13b6974baf906714c")

View file

@ -3,4 +3,4 @@
(package! editorconfig (package! editorconfig
:recipe (:nonrecursive t) :recipe (:nonrecursive t)
:pin "c3666c093f3a2a80fb42e513bf0a10d597497c18") :pin "d73b6392ded0476af93ec7ba75cca2909aa8d2dc")

View file

@ -1,6 +1,6 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; tools/eval/packages.el ;;; tools/eval/packages.el
(package! quickrun :pin "248149b0261051bd9eec8bdbc21c22d18d7b1b11") (package! quickrun :pin "373634cf5143f9680164e27fa844d3b02408e917")
(when (modulep! +overlay) (when (modulep! +overlay)
(package! eros :pin "a9a92bdc6be0521a6a06eb464be55ed61946639c")) (package! eros :pin "a9a92bdc6be0521a6a06eb464be55ed61946639c"))

View file

@ -26,7 +26,7 @@
(when (modulep! +dictionary) (when (modulep! +dictionary)
(if (featurep :system 'macos) (if (featurep :system 'macos)
(package! osx-dictionary :pin "1f5a74f3e5d7f3c443f07433951512cd99e820a6") (package! osx-dictionary :pin "6abfd6908b0dc773020466225c908000870b383b")
(package! define-word :pin "31a8c67405afa99d0e25e7c86a4ee7ef84a808fe") (package! define-word :pin "31a8c67405afa99d0e25e7c86a4ee7ef84a808fe")
;; REVIEW: This fork fixes SavchenkoValeriy/emacs-powerthesaurus#40. ;; REVIEW: This fork fixes SavchenkoValeriy/emacs-powerthesaurus#40.
(package! powerthesaurus (package! powerthesaurus

View file

@ -3,14 +3,14 @@
(if (modulep! +eglot) (if (modulep! +eglot)
(progn (progn
(package! eglot :pin "24f2bf7b28c33e1d677b547956ade5560d27f55f") (package! eglot :pin "678610fdc544f10ac757ab7acf88ac7c5815ed5a")
(when (modulep! :completion vertico) (when (modulep! :completion vertico)
(package! consult-eglot :pin "049c6319b8a48ff66189d49592c7759f0b356596")) (package! consult-eglot :pin "64262e72452f8fe6dd49d31bcdd4bd577b7d682d"))
(when (and (modulep! :checkers syntax) (when (and (modulep! :checkers syntax)
(not (modulep! :checkers syntax +flymake))) (not (modulep! :checkers syntax +flymake)))
(package! flycheck-eglot :pin "114e1315aaf0dc3196da67da426bbe2b46384fe2"))) (package! flycheck-eglot :pin "114e1315aaf0dc3196da67da426bbe2b46384fe2")))
(package! lsp-mode :pin "a5f5ca9a8a4b2ceaf236457bf2524f94c183c2f2") (package! lsp-mode :pin "8861252880f6c2f6374a7bca2b945e6447eebd5a")
(package! lsp-ui :pin "bc58c6664577d1d79060c6b32b7ad20e70ee19d0") (package! lsp-ui :pin "942eeecc3d9a23ad006a3476885dfa7cbb5e207e")
(when (modulep! :completion ivy) (when (modulep! :completion ivy)
(package! lsp-ivy :pin "9ecf4dd9b1207109802bd1882aa621eb1c385106")) (package! lsp-ivy :pin "9ecf4dd9b1207109802bd1882aa621eb1c385106"))
(when (modulep! :completion helm) (when (modulep! :completion helm)

View file

@ -1,9 +1,9 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; tools/magit/packages.el ;;; tools/magit/packages.el
(when (package! magit :pin "0e8f25a8d8011328f2bf082232c720b24c2a12c2") (when (package! magit :pin "b5637d665c1e5bd5b76ffb072dbac387f37a5f63")
(when (modulep! +forge) (when (modulep! +forge)
(package! forge :pin "2a3b41eb6235b3f39c017c1f86b3928a45c5a64d") (package! forge :pin "ad94b5665de357347bfc52910eef46a79f74988d")
(package! code-review (package! code-review
:recipe (:host github :recipe (:host github
:repo "doomelpa/code-review" :repo "doomelpa/code-review"

View file

@ -1,5 +1,5 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; tools/pdf/packages.el ;;; tools/pdf/packages.el
(package! pdf-tools :pin "c69e7656a4678fe25afbd29f3503dd19ee7f9896") (package! pdf-tools :pin "93e74924517d39483b432d6c3c9b8f8b8f0eb50c")
(package! saveplace-pdf-view :pin "abfb5e1f463cffc18218a0f7f2fa141a271b1813") (package! saveplace-pdf-view :pin "ee95460cd934080338f03a16f95b549577425216")

View file

@ -1,6 +1,6 @@
;; -*- no-byte-compile: t; -*- ;; -*- no-byte-compile: t; -*-
;;; tools/terraform/packages.el ;;; tools/terraform/packages.el
(package! terraform-mode :pin "e8b57df8c2a3d3171f3768f60eb84067f553289c") (package! terraform-mode :pin "a645c32a8f0f0d04034262ae5fea330d5c7a33c6")
(when (modulep! :completion company) (when (modulep! :completion company)
(package! company-terraform :pin "8d5a16d1bbeeb18ca49a8fd57b5d8cd30c8b8dc7")) (package! company-terraform :pin "8d5a16d1bbeeb18ca49a8fd57b5d8cd30c8b8dc7"))

View file

@ -2,7 +2,7 @@
;;; tools/tree-sitter/packages.el ;;; tools/tree-sitter/packages.el
(package! tree-sitter :pin "3cfab8a0e945db9b3df84437f27945746a43cc71") (package! tree-sitter :pin "3cfab8a0e945db9b3df84437f27945746a43cc71")
(package! tree-sitter-langs :pin "c56cb511045d50e30f78508c54494e025d6af2cb") (package! tree-sitter-langs :pin "b7895ca759563f3c7c3b928eb4f816bb4099d866")
(package! tree-sitter-indent :pin "4ef246db3e4ff99f672fe5e4b416c890f885c09e") (package! tree-sitter-indent :pin "4ef246db3e4ff99f672fe5e4b416c890f885c09e")
(when (modulep! :editor evil +everywhere) (when (modulep! :editor evil +everywhere)

View file

@ -15,7 +15,7 @@
neo-mode-line-type 'none neo-mode-line-type 'none
neo-window-width 30 neo-window-width 30
neo-show-updir-line nil neo-show-updir-line nil
neo-theme 'icons neo-theme 'nerd
neo-banner-message nil neo-banner-message nil
neo-confirm-create-file #'off-p neo-confirm-create-file #'off-p
neo-confirm-create-directory #'off-p neo-confirm-create-directory #'off-p

View file

@ -106,7 +106,7 @@ the buffer is visible, then set another timer and try again later."
(param (if (memq side '(left right)) (param (if (memq side '(left right))
'window-width 'window-width
'window-height))) '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 param alist) size))
(setf (alist-get 'window-parameters alist) (setf (alist-get 'window-parameters alist)
parameters) parameters)