dev: merge branch 'master' into emenel

This commit is contained in:
Matt Nish-Lapidus 2024-06-24 17:27:06 -04:00
commit 5147ec7d73
78 changed files with 365 additions and 360 deletions

View file

@ -36,25 +36,25 @@ emacs="$EMACS -q --no-site-file --batch"
# on it to provide TMPDIR. And can second as a quick existence check for Emacs.
TMPDIR="${TMPDIR:-$($emacs --eval '(princ (temporary-file-directory))' 2>/dev/null)}"
if [ -z "$TMPDIR" ]; then
>&2 echo "Error: failed to run Emacs with command '$EMACS'"
>&2 echo
>&2 echo "Are you sure Emacs is installed and in your \$PATH?"
echo "Error: failed to run Emacs with command '$EMACS'"
echo
echo "Are you sure Emacs is installed and in your \$PATH?"
exit 1
fi
fi >&2
# Doom respects $EMACSDIR to tell it where Doom lives. If it fails, then this is
# either isn't bash, or it's a posix shell being directly sourced with sh, which
# is unsupported.
export EMACSDIR="${EMACSDIR:-$(CDPATH='' cd -- "$(dirname -- "${BASH_SOURCE:-$0}")/.." && pwd)}"
if [ ! -f "$EMACSDIR/early-init.el" ]; then
>&2 echo "Error: cannot load $EMACSDIR/early-init.el."
>&2 echo
>&2 echo "Either the file doesn't exist (indicating a broken or missing Doom install)"
>&2 echo "or that doomscript is being source directly (which is unsupported)."
>&2 echo
>&2 echo "Set \$EMACSDIR to the path of an existing Doom installation."
echo "Error: cannot load $EMACSDIR/early-init.el."
echo
echo "Either the file doesn't exist (indicating a broken or missing Doom install)"
echo "or that doomscript is being source directly (which is unsupported)."
echo
echo "Set \$EMACSDIR to the path of an existing Doom installation."
exit 1
fi
fi >&2
# Some state that Doom's CLI framework needs to know about the terminal. Read
# the comments at the top of bin/doom for explanations.
export __DOOMPID="${__DOOMPID:-$$}"
@ -75,8 +75,8 @@ $emacs --load "$EMACSDIR/early-init" \
-- "$@"
exit=$?
# To simulate execve syscalls, Doom generates a temporary exit-script if a
# Doomscript returns a 254 exit code.
# To simulate execve syscalls (which replaces the running process), Doom
# generates a temporary exit-script if a Doomscript returns a 254 exit code.
if [ "${exit:-0}" -eq 254 ]; then
# The user may have a noexec flag set on /tmp, so the exit-script should be
# passed to /bin/sh rather than executed directly.

View file

@ -64,8 +64,8 @@ are great, but this file exists to add demos for Doom's API and beyond.
(after! helm ...)
;; An unquoted list of package symbols (i.e. BODY is evaluated once both magit
;; and git-gutter have loaded)
(after! (magit git-gutter) ...)
;; and diff-hl have loaded)
(after! (magit diff-hl) ...)
;; An unquoted, nested list of compound package lists, using any combination of
;; :or/:any and :and/:all

View file

@ -730,11 +730,12 @@ on."
;; a less intrusive `delete-trailing-whitespaces' on save
:hook (doom-first-buffer . ws-butler-global-mode)
:config
;; ws-butler normally preserves whitespace in the buffer (but strips it from
;; the written file). While sometimes convenient, this behavior is not
;; intuitive. To the average user it looks like whitespace cleanup is failing,
;; which causes folks to redundantly install their own.
(setq ws-butler-keep-whitespace-before-point nil))
(pushnew! ws-butler-global-exempt-modes
'special-mode
'comint-mode
'term-mode
'eshell-mode
'diff-mode))
(provide 'doom-editor)
;;; doom-editor.el ends here

View file

@ -87,7 +87,7 @@ and Emacs states, and for non-evil users.")
;; 1. Quit active states; e.g. highlights, searches, snippets, iedit,
;; multiple-cursors, recording macros, etc.
;; 2. Close popup windows remotely (if it is allowed to)
;; 3. Refresh buffer indicators, like git-gutter and flycheck
;; 3. Refresh buffer indicators, like diff-hl and flycheck
;; 4. Or fall back to `keyboard-quit'
;;
;; And it should do these things incrementally, rather than all at once. And it

View file

@ -641,8 +641,8 @@ is:
(after! (:and package-a package-b ...) BODY...)
(after! (:and package-a (:or package-b package-c) ...) BODY...)
- An unquoted list of package symbols (i.e. BODY is evaluated once both magit
and git-gutter have loaded)
(after! (magit git-gutter) BODY...)
and diff-hl have loaded)
(after! (magit diff-hl) BODY...)
If :or/:any/:and/:all are omitted, :and/:all are implied.
This emulates `eval-after-load' with a few key differences:

View file

@ -351,9 +351,9 @@ If ENABLED-ONLY, return nil if the containing module isn't enabled."
(and (or (null enabled-only)
(doom-module-p category module))
(cons category module))))
((file-in-directory-p path doom-core-dir)
((string-match (concat "^" (regexp-quote doom-core-dir)) path)
(cons :core nil))
((file-in-directory-p path doom-user-dir)
((string-match (concat "^" (regexp-quote doom-user-dir)) path)
(cons :user nil))))))
(defun doom-module-load-path (&optional module-load-path)

View file

@ -242,7 +242,7 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original
;;; Fringes
;; Reduce the clutter in the fringes; we'd like to reserve that space for more
;; useful information, like git-gutter and flycheck.
;; useful information, like diff-hl and flycheck.
(setq indicate-buffer-boundaries nil
indicate-empty-lines nil)

View file

@ -79,7 +79,7 @@
(when (< emacs-major-version 27)
(user-error
(concat
"Detected Emacs " emacs-version ", but Doom requires 27.1 or newer (28.1 is\n\n"
"Detected Emacs " emacs-version ", but Doom requires 27.1 or newer (29.3 is\n\n"
"recommended). The current Emacs executable in use is:\n\n " (car command-line-args)
"\n\nA guide for installing a newer version of Emacs can be found at:\n\n "
(format "https://docs.doomemacs.org/-/install/%s"
@ -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.04.0-pre"
(defconst doom-modules-version "24.07.0-pre"
"Current version of Doom Emacs.")
(defvar doom-init-time nil

View file

@ -169,7 +169,6 @@ non-nil, treat FILES as pre-generated autoload files instead."
(when (and (not (seq-find (doom-rpartial #'string-match-p file) exclude))
(file-readable-p file))
(doom-log "loaddefs:scan: %s" file)
(setq file (file-truename file))
(with-temp-buffer
(if literal
(insert-file-contents file)

View file

@ -538,7 +538,7 @@ which case it will save it without prompting."
(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"))))
(user-error "Current buffer isn't visiting a file"))))
;;;###autoload
(defun doom/sudo-save-buffer ()

View file

@ -29,7 +29,6 @@ The font will be normalized (i.e. :weight, :slant, and :width will set to
FONT can be a `font-spec', a font object, an XFT font string, or an XLFD font
string."
(cl-check-type font (or font string vector))
(when (and (stringp font)
(string-prefix-p "-" font))
(setq font (x-decompose-font-name font)))
@ -45,7 +44,8 @@ string."
((vectorp font)
(dolist (i '(1 2 3) (x-compose-font-name font))
(unless (aref font i)
(aset font i "normal"))))))
(aset font i "normal"))))
((signal 'wrong-type-of-argument (list '(font string vectorp) font)))))
(font (x-resolve-font-name font))
(font (font-spec :name font)))
(unless (font-get font :size)

View file

@ -232,10 +232,12 @@ Must be run from a magit diff buffer."
:test #'equal)))
(save-excursion
(while (re-search-forward "^-" nil t)
(cl-pushnew (read-package) before :test #'equal)))
(when-let (pkg (read-package))
(cl-pushnew pkg before :test #'equal))))
(save-excursion
(while (re-search-forward "^+" nil t)
(cl-pushnew (read-package) after :test #'equal)))
(when-let (pkg (read-package))
(cl-pushnew pkg after :test #'equal))))
(unless (= (length before) (length after))
(user-error "Uneven number of packages being bumped"))
(dolist (p1 before)

View file

@ -92,8 +92,8 @@ and `format!' into colored output, where COLOR is any car of this list (or
(not (stringp str))
(string-blank-p str))
str
(let ((dir (or dir (file-truename default-directory)))
(str (file-truename str)))
(let* ((dir (or dir default-directory))
(str (expand-file-name str dir)))
(if (file-in-directory-p str dir)
(file-relative-name str dir)
(abbreviate-file-name str))))))
@ -118,6 +118,12 @@ Any of these classes can be called like functions from within `format!' and
Accepts `ansi' and `text-properties'. `nil' means don't render styles at all.")
(defvar doom-print-stream nil
"The default value for `standard-output' for Doom's print API.
If non-nil, this is used instead of `standard-output' because changes to that
variable don't survive translation units.")
(defvar doom-print-level 'notice
"The current, default logging level.")
@ -143,11 +149,11 @@ Accepts `ansi' and `text-properties'. `nil' means don't render styles at all.")
(format nil)
(level doom-print-level)
(newline t)
(stream standard-output))
(stream (or doom-print-stream standard-output)))
"Print OUTPUT to stdout.
Unlike `message', this:
- Respects the value of `standard-output'.
- Respects the value of `standard-output' (if `doom-print-stream' is nil).
- Indents according to `doom-print-indent' (if FORMAT is non-nil).
- Prints to stdout instead of stderr in batch mode.
- Recognizes more terminal escape codes (only in batch mode).
@ -236,7 +242,7 @@ based on the print level of the message. For example:
`(letf! ((,sym ,streamspec)
(standard-output (doom-print--redirect-standard-output ,sym t))
(#'message (doom-print--redirect-message ,sym (if noninteractive 'debug 'notice)))
(doom-print--output-depth (1+ doom-print--output-depth)))
(doom-print-stream standard-output))
,@body)))
@ -260,8 +266,8 @@ based on the print level of the message. For example:
(get (car spec) 'print-level)))
(cadr spec)))))
(defun doom-print--redirect-standard-output (streamspec level)
(let ((old standard-output)
(defun doom-print--redirect-standard-output (streamspec level &optional old-stream)
(let ((old (or old-stream standard-output))
(streams (doom-print--redirect-streams streamspec level)))
(lambda (ch)
(let ((str (char-to-string ch)))
@ -273,7 +279,8 @@ based on the print level of the message. For example:
(defun doom-print--redirect-message (streamspec level)
(let ((old (symbol-function #'message))
(streams (doom-print--redirect-streams streamspec level)))
(streams (doom-print--redirect-streams streamspec level))
(doom-print--output-depth (1+ doom-print--output-depth)))
(lambda (message &rest args)
(when message
(let ((output (apply #'doom-print--format message args)))

View file

@ -29,20 +29,16 @@
;; doom-editor.el
(package! better-jumper :pin "47622213783ece37d5337dc28d33b530540fc319")
(package! dtrt-indent :pin "5d1b44f9a1a484ca229cc14f8062609a10ef4891")
(package! helpful :pin "a32a5b3d959a7fccf09a71d97b3d7c888ac31c69")
(package! dtrt-indent :pin "939c5e374ac0175bb7d561542e22e47a72d04aa8")
(package! helpful :pin "4ba24cac9fb14d5fdc32582cd947572040e82b2c")
(package! pcre2el :pin "380723b2701cceb75c266440fb8db918f3340d50")
(package! smartparens :pin "a5c68cac1bea737b482a37aa92de4f6efbf7580b")
(package! ws-butler
;; Use my fork of ws-butler, which has a few choice improvements and
;; optimizations (the original has been abandoned).
:recipe (:host github :repo "hlissner/ws-butler")
:pin "572a10c11b6cb88293de48acbb59a059d36f9ba5")
(package! smartparens :pin "f7cf316715e5018186c226aab8242c9e5ce131c8")
(package! ws-butler :pin "e3a38d93e01014cd47bf5af4924459bd145fd7c4")
;; doom-projects.el
(package! projectile :pin "0163b335a18af0f077a474d4dc6b36e22b5e3274")
(package! project :pin "93aa1872e93a681a44cae03fecb8df4101719897")
(package! project :pin "bf4c3cfcfbf3423d79170aa880a1abb332ed942e")
;; doom-keybinds.el
(package! general :pin "826bf2b97a0fb4a34c5eb96ec2b172d682fd548f")
(package! which-key :pin "1e89fa000e9ba9549f15ef57abccd118d5f2fe1a")
(package! which-key :pin "ed389312170df955aaf10c2e120cc533ed5c509e")

View file

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

View file

@ -1,8 +1,8 @@
;; -*- no-byte-compile: t; -*-
;;; completion/corfu/packages.el
(package! corfu :pin "35cd5a0f3cba89766072e3e933d1fe2ee02f2289")
(package! cape :pin "e01e4430234850263d326ad4521849cd46e64059")
(package! corfu :pin "cdc3e13ad312f5f12b3f78f842fff0b398eb4473")
(package! cape :pin "f61da109a9e4491614938c300291060fd8855c1b")
(when (modulep! +icons)
(package! nerd-icons-corfu :pin "7077bb76fefc15aed967476406a19dc5c2500b3c"))
(when (and (not (modulep! :completion vertico))
@ -14,4 +14,4 @@
(when (modulep! :os tty)
(package! corfu-terminal :pin "501548c3d51f926c687e8cd838c5865ec45d03cc"))
(when (modulep! :editor snippets)
(package! yasnippet-capf :pin "9043f8275176a8f198ce8e81fadab1870fa165bb"))
(package! yasnippet-capf :pin "744dedb7837d0c7e07817d36ec752a0cd813f55c"))

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*-
;;; completion/helm/packages.el
(package! helm :pin "28f62344fed0d8be0bcef5aa8a018ba58198ba0c")
(package! helm :pin "f8949afd9b44de4a8149874ef40e1250826d40bd")
(package! helm-company :pin "4622b82353220ee6cc33468f710fa5b6b253b7f1")
(package! helm-c-yasnippet :pin "c5880e740da101fde7a995e94a7b16c330e57583")
(package! helm-descbinds :pin "ca03f02da4e54a1d0a2d5498b86e1639aa808d8c")

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*-
;;; completion/ivy/packages.el
(package! swiper :pin "1f88e5499046d166d22bf733a3877aec3b424947")
(package! swiper :pin "2a25a6fb5b081cb141c5eccac8ee58ab1feeb747")
(package! ivy)
(package! ivy-hydra)
(package! ivy-avy)
@ -13,7 +13,7 @@
(package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4")
(if (modulep! +prescient)
(package! ivy-prescient :pin "c39bf07c56b427bf41aafd7d20eaef5cf3c312b5")
(package! ivy-prescient :pin "0765418e4362099db8788fcb745ce9b7602aa001")
(when (modulep! +fuzzy)
(package! flx :pin "4b1346eb9a8a76ee9c9dede69738c63ad97ac5b6")))
@ -21,4 +21,4 @@
(package! ivy-posframe :pin "533a8e368fcabfd534761a5c685ce713376fa594"))
(when (modulep! +icons)
(package! nerd-icons-ivy-rich :pin "7197614b27fd562e64b11c91d41bed4443aded90"))
(package! nerd-icons-ivy-rich :pin "86a896bb48fed543993f96e4b288047aa7e013c9"))

View file

@ -1,19 +1,19 @@
;; -*- no-byte-compile: t; -*-
;;; completion/vertico/packages.el
(package! vertico :pin "68e51fda552a2f91caab69e83564bc91275b09b1")
(package! vertico :pin "ba650a7ab90d66686ba787937ac9e71f749c598e")
(package! orderless :pin "ac4aeb66f331f4c4a430d5556071e33177304c37")
(package! orderless :pin "53f5204ad3f541e11eb6eeb9b86584964b7a3678")
(package! consult :pin "c87b0bf06de0c3cb60bc8d257c770cb981ddcd19")
(package! consult-dir :pin "3f5f4b71ebe819392cb090cda71bd39a93bd830a")
(package! consult :pin "fe4852280006e61be7f1374d021ee06155ce5a26")
(package! consult-dir :pin "15891383f34d43acc5bb82bda92239b1f54cf178")
(when (and (modulep! :checkers syntax)
(not (modulep! :checkers syntax +flymake)))
(package! consult-flycheck :pin "754f5497d827f7d58009256a21af614cc44378a3"))
(package! embark :pin "d3c9d1b4c890cf365846cc2b418f37341999e79f")
(package! embark-consult :pin "d3c9d1b4c890cf365846cc2b418f37341999e79f")
(package! embark :pin "9c166c4b96a0b1e85401bcc6fb95ce021e7b5013")
(package! embark-consult :pin "9c166c4b96a0b1e85401bcc6fb95ce021e7b5013")
(package! marginalia :pin "3275d1f85cb020280979a050054b843f7563aea2")
(package! marginalia :pin "da72da4622c7b38741e6968678028f7e0564816c")
(package! wgrep :pin "208b9d01cfffa71037527e3a324684b3ce45ddc4")

View file

@ -39,7 +39,7 @@
(evil-ex-define-cmd "gstage" #'magit-stage)
(evil-ex-define-cmd "gunstage" #'magit-unstage)
(evil-ex-define-cmd "gblame" #'magit-blame)
(evil-ex-define-cmd "grevert" #'git-gutter:revert-hunk)
(evil-ex-define-cmd "grevert" #'+vc-gutter/revert-hunk)
;;; Dealing with buffers
(evil-ex-define-cmd "k[ill]" #'doom/kill-current-buffer)

View file

@ -111,6 +111,7 @@ variable for an explanation of the defaults (in comments). See
consult
corfu
crdt
(csv "csv-mode")
(custom cus-edit)
cus-theme
dashboard
@ -128,6 +129,7 @@ variable for an explanation of the defaults (in comments). See
distel
doc-view
docker
eat
ebib
ebuku
edbi
@ -182,6 +184,7 @@ variable for an explanation of the defaults (in comments). See
info
ivy
js2-mode
,@(if (>= emacs-major-version 30) '(kmacro))
leetcode
lispy
lms
@ -193,6 +196,7 @@ variable for an explanation of the defaults (in comments). See
macrostep
man
(magit magit-repos magit-submodule)
magit-repos
magit-section
magit-todos
markdown-mode

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*-
;;; editor/evil/packages.el
(package! evil :pin "0251080640e0da6f0eec2b7d8dd70e9c9b9915d7")
(package! evil :pin "0ad84c52169068021ec3372bf52503631f2261de")
(package! evil-args :pin "a8151556f63c9d45d0c44c8a7ef9e5a542f3cdc7")
(package! evil-easymotion :pin "f96c2ed38ddc07908db7c3c11bcd6285a3e8c2e9")
(package! evil-embrace :pin "3081d37811b6a3dfaaf01d578c7ab7a746c6064d")
@ -12,7 +12,7 @@
(package! evil-indent-plus :pin "f392696e4813f1d3a92c7eeed333248914ba6dae")
(package! evil-lion :pin "1e838a53b8f18a3c8bdf3e952186abc2ee9cb98e")
(package! evil-nerd-commenter :pin "ae52c5070a48793e2c24474c9c8dbf20175d18a0")
(package! evil-numbers :pin "7a1b62afc12da2b582bf84d722e7b10ca8b97065")
(package! evil-numbers :pin "c7899894515d6be40dfcd589fb27c1801c5b199c")
(package! evil-snipe :pin "c2108d3932fcd2f75ac3e48250d6badd668f5b4f")
(package! evil-surround :pin "da05c60b0621cf33161bb4335153f75ff5c29d91")
(package! evil-textobj-anyblock
@ -35,4 +35,4 @@
(package! neotree)
(autoload 'neotree-make-executor "neotree" nil nil 'macro))
(package! evil-collection :pin "ca977acb83c0dd01fc57dbc6f3d3111e89f4ec9d"))
(package! evil-collection :pin "acb056b1d0d3aad2f32b1ca9c019a9a2e976f03e"))

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; editor/file-templates/packages.el
(package! yasnippet :pin "297546f0853a6a51f5b05e954d0c6aea8caa5ec2")
(package! yasnippet :pin "eb5ba2664c3a68ae4a53bb38b85418dd131b208f")

View file

@ -7,5 +7,5 @@
(when (modulep! :editor evil)
(package! evil-vimish-fold :pin "b6e0e6b91b8cd047e80debef1a536d9d49eef31a"))
(when (modulep! :tools tree-sitter)
(package! ts-fold :pin "0627723e5f962fc72b238d4cf99a7f217e72aa3e"
(package! ts-fold :pin "6ce584d1ac39f1e2bc2f66f815964e3047bd6f16"
:recipe (:host github :repo "emacs-tree-sitter/ts-fold")))

View file

@ -82,6 +82,6 @@ This is controlled by `+format-on-save-disabled-modes'."
(save-excursion
(font-lock-fontify-region web-mode-scan-beg web-mode-scan-end)))))
(defun +format--refresh-git-gutter-h ()
(defun +format--refresh-vc-gutter-h ()
(when (fboundp '+vc-gutter-update-h)
(+vc-gutter-update-h))))

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; editor/format/packages.el
(package! apheleia :pin "96a9805ecb75aac2adde7568d26b3e3b3ffc19af")
(package! apheleia :pin "61766b50b24fa16be519d77795dc63522e04dce8")

View file

@ -13,7 +13,7 @@
(defun +god--configure-cursor-and-modeline-h ()
"Configure cursor type, cursor color and doom-modeline bar color depending on mode."
(let* ((is-fill-overflow (> (current-column) fill-column))
(previous-cursor-color (face-background 'cursor))
(previous-cursor-color (frame-parameter nil 'cursor-color))
(previous-modeline-color (and (facep 'doom-modeline-bar)
(face-background 'doom-modeline-bar)))
(is-god-mode (bound-and-true-p god-local-mode))
@ -26,7 +26,7 @@
(cond (buffer-read-only +god-read-only-mode-color)
(is-fill-overflow +god-fill-overflow-color)
(overwrite-mode +god-overwrite-mode-color)
(t previous-cursor-color))))
((or previous-cursor-color (face-background 'cursor))))))
(setq cursor-type next-cursor-type)
(unless (eq previous-cursor-color next-cursor-and-modeline-color)
(set-cursor-color next-cursor-and-modeline-color))

View file

@ -6,4 +6,4 @@
(package! evil-multiedit :pin "23b53bc8743fb82a8854ba907b1d277374c93a79")
(package! evil-mc :pin "bdf893ea6f52fd0f10bece8ddae813658e17bbb4"))
((package! multiple-cursors :pin "234806c832994cadedb42596fe235e91bbd59e8c")))
((package! multiple-cursors :pin "c870c18462461df19382ecd2f9374c8b902cd804")))

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; editor/parinfer/packages.el
(package! parinfer-rust-mode :pin "e9a23e136b8c5f1fb718af93c19cd6ed22d8c98c")
(package! parinfer-rust-mode :pin "a96c768e9dc4427c9ea18812a2f09e209a5e1a5e")

View file

@ -7,4 +7,4 @@
:recipe (:host github
:repo "doomemacs/snippets"
:files (:defaults "*"))
:pin "c1384cc7975ee7ca7d551eb56c104d768440c3cb")
:pin "3a0b029c5d104521ede8dcbeaff2972f56f067dc")

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*-
;;; editor/word-wrap/packages.el
(package! adaptive-wrap :pin "70005d2012ab57c20be03c05aebd49318fe49c99")
(package! adaptive-wrap :pin "a3b179ea21aeb4e8cfaf5646bb66d9d045263780")
(package! visual-fill-column
:recipe (:host github :repo "emacsmirror/visual-fill-column")
:pin "5e74afe39d0afb911dae51af4e7a60ccdf9701f3")
:pin "e04d3521b6dc2435de4c4a4b9cac5feb194f0d5b")

View file

@ -13,13 +13,17 @@ This module provides reasonable defaults and augmentations for dired.
- +icons ::
Enables the display of fancy icons depending on file types in dired buffers.
- +ranger ::
Enables dired to be more like [[https://github.com/ranger/ranger][ranger]].
Enables dired to be more like [[https://github.com/ranger/ranger][ranger]]. Incompatible with =+dirvish=.
- +dirvish ::
Enables [[https://github.com/alexluigit/dirvish][dirvish]] integration. Incompatible with =+ranger=.
** Packages
- [[doom-package:nerd-icons-dired]] if [[doom-module:+icons]]
- [[doom-package:dired-git-info]]
- [[doom-package:diff-hl]]
- [[doom-package:diredfl]]
- [[doom-package:dired-rsync]]
- [[doom-package:dirvish]] if [[doom-module:+dirvish]]
- [[doom-package:fd-dired]]
- [[doom-package:ranger]] if [[doom-module:+ranger]]

View file

@ -145,12 +145,15 @@ we have to clean it up ourselves."
(when (modulep! +icons)
(push +dired-dirvish-icon-provider dirvish-attributes))
(map! :map dirvish-mode-map
:n "b" #'dirvish-goto-bookmark
:n "z" #'dirvish-show-history
:n "b" #'dirvish-quick-access
:n "z" #'dirvish-history-jump
:n "f" #'dirvish-file-info-menu
:n "F" #'dirvish-toggle-fullscreen
:n "F" #'dirvish-layout-toggle
:n "l" #'dired-find-file
:n "h" #'dired-up-directory
:n "TAB" #'dirvish-subtree-toggle
:n "gh" #'dirvish-subtree-up
:n "gl" #'dirvish-subtree-down
:localleader
"h" #'dired-omit-mode))

View file

@ -2,8 +2,8 @@
;;; emacs/undo/packages.el
(if (modulep! +tree)
(package! undo-tree :pin "f9e7eac16f674aa7ed8fa065401d26c0258a84f8")
(package! undo-fu :pin "04961ba775142627c5fa4bb94c3e507afedaecd1")
(package! undo-fu-session :pin "2b355c9d39b2688f859a762f2289f23fd16fadc4")
(package! undo-tree :pin "5e9f4c92348b3cfd6f140c1730294017dca4bc05")
(package! undo-fu :pin "ea902716f39c725db1b90dbb285b44404b3bd6df")
(package! undo-fu-session :pin "75d78310c86901f01b35d47f3ac1a5c8368abba4")
(when (> emacs-major-version 27) ; unsupported in 27
(package! vundo :pin "10d011fb05a9db0cc2f641e5b5bebe4b5fb81b6f")))
(package! vundo :pin "a18d63a9a15d363c11e2405934e709723e472d86")))

View file

@ -242,6 +242,82 @@ as deleted: Auto-Expunge off - Wait for the client to update the server." and
"When a message is marked as deleted and expunged from the last visible IMAP
folder: Move the message to the trash" for the integrations to work as expected.
** Sending mail (SMTP)
Once you're able to fetch your mail, the next step is to configure =mu4e= to
send mail via SMTP. All of the following snippets are meant to be part of your
~set-email-account!~ block:
*** SMTP server configuration
#+begin_src emacs-lisp
;; In `set-email-account!'
(smtpmail-smtp-user . "foo@bar.com") ; or just 'foo', depending on your provider
(smtpmail-smtp-server . "smtp.bar.com") ; depends on your provider
#+end_src
*** Authentication
Most SMTP servers require you to authenticate with your username and a password
before sending mail. Emacs will prompt you for this password when you attempt to
send mail. You can store this password as described in [[elisp:(info "(emacs) Authentication")][the relevant info node]].
Alternately, if you're already using =pass= to store your passwords, you can use
the [[doom-module::tools pass +auth]] module as an auth source. The corresponding
entry in your password store should have the same name as your SMTP server (for
example, it might be called =smtp.bar.com=). You may also need to run the function
~auth-source-pass-enable~ at some point.
Emacs will first attempt to send mail without supplying credentials, and expects
the server to communicate that needs credentials. Some servers (eg. Gmail) will
instead abort with an error if they don't recieve credentials on the first
attempt. To get around this, you can set
~smtpmail-servers-requiring-authorization~ to a regex matching the name of your
server:
#+begin_src emacs-lisp
;; In `set-email-account!'
(smtpmail-servers-requiring-authorization . "smtp\\.bar\\.com")
#+end_src
**** Gmail
Gmail does not support standard SMTP authentication by default, instead
expecting applications to perform OAuth. However, it still supports a much
simpler method - it allows you to generate an 'app password', which can be used
as a regular SMTP password. You will need to generate an app password in Gmail's
settings.
*** Connection type
Emacs supports three types of SMTP connections: ~plain~ (unencrypted,
conventionally port 25), ~ssl~ (conventionally port 465), and ~starttls~
(conventionally port 587). This module defaults to ~starttls~, which is the most
modern and recommended option. However, some servers may not support it (you'll
usually get a 'connection closed' or 'connection reset' error in this case), or
a firewall somewhere in your network may be blocking the port (you'll get a
'network unreachable' error, or similar). In such a case, you may want to change
the defaults:
#+begin_src emacs-lisp
;; In `set-email-account!'
;; example: ssl on port 465
(smtpmail-smtp-service . 465)
(smtpmail-stream-type . ssl)
#+end_src
*** Sending mail asynchronously
Normally, =mu4e= will block Emacs while sending mail, which can be annoying when
you're on a slow connection and the mail takes a long time to send. There is a
workaround [[elisp:(info "(mu4e) Writing messages")][in mu4e's manual]] that uses the [[doom-package:async]] library. To use it,
you need to include it in your ~set-email-account!~ block:
#+begin_src emacs-lisp
;; In `set-email-account!'
(send-mail-function . async-smtpmail-send-it)
(message-send-mail-function . async-smtpmail-send-it)
#+end_src
If you're using [[doom-module::tools pass +auth]], you also need to ensure that the child
Emacs process can access your password-store:
#+begin_src emacs-lisp
;; This goes OUTSIDE your `set-email-account!' block!
(require 'smtpmail-async)
(add-hook 'async-smtpmail-before-send-hook #'auth-source-pass-enable)
#+end_src
** OrgMsg
With the [[doom-module:+org]] flag, [[doom-package:org-msg]] is installed, and ~org-msg-mode~ is enabled before
composing the first message. To disable ~org-msg-mode~ by default:

View file

@ -50,11 +50,13 @@
"^List-.*:"
"^Received-SPF:"
"^DKIM-.*:"
"^DomainKey-Signature:"
"^DomainKey-.*:"
"^SPF-.*:"
"^Autocrypt:"
"^ARC-.*:"
"^Authentication-Results:")
"^Authentication-Results:"
"^UI-.*:"
"^IronPort.*:")
wl-message-visible-field-list
'("^Message-Id:"
"^User-Agent:"
@ -84,6 +86,13 @@
(setq wl-message-id-domain wl-local-domain))
;; We're living in the world where UTF-8 is de facto default charset.
(setq-default mime-charset-for-write 'utf-8)
(setq-default mime-transfer-level 8)
(setq charsets-mime-charset-alist
'(((ascii) . us-ascii)
((unicode) . utf-8)))
;; Use x-face only when compface installed
(when (modulep! +xface)
(autoload 'x-face-decode-message-header "x-face-e21")

View file

@ -4,11 +4,11 @@
;; HACK These are wanderlust's dependencies (wanderlust depends on semi, semi
;; depends on flim, flim on apel), but they all have non-standard default
;; branches which straight cannot detect without our help.
(package! apel :recipe (:branch "apel-wl") :pin "82eb2325bd149dc57b43a9ce9402c6c6183e4052")
(package! flim :recipe (:branch "flim-1_14-wl") :pin "abdd2315006eb31476249223569808adb1c0f7b2")
(package! semi :recipe (:branch "semi-1_14-wl") :pin "9063a4485b148a767ea924f0e7cc78d3524ba256")
(package! apel :recipe (:branch "apel-wl") :pin "1a6fd3bab2cc6b0a450c2d801f77a1c9da0f72fb")
(package! flim :recipe (:branch "flim-1_14-wl") :pin "23bb29d70a13cada2eaab425ef80071564586a6d")
(package! semi :recipe (:branch "semi-1_14-wl") :pin "85a52b899ac89be504d9e38d8d406bba98f4b0b3")
(package! wanderlust :pin "c15e8ece4f34f10479e17cda19d10b98f6be3ec1")
(package! wanderlust :pin "8a0ea2146ee919a5344bb25f198d45016bc716d9")
(when (modulep! +xface)
(package! x-face-e21

View file

@ -28,8 +28,8 @@
:desc "Next buffer" "è" #'next-buffer)
(:prefix-map ("g" . "git")
(:when (modulep! :ui vc-gutter)
:desc "Jump to previous hunk" "é" #'git-gutter:previous-hunk
:desc "Jump to next hunk" "è" #'git-gutter:next-hunk))))
:desc "Jump to previous hunk" "é" #'+vc-gutter/previous-hunk
:desc "Jump to next hunk" "è" #'+vc-gutter/next-hunk))))
(defun +layout-remap-evil-keys-for-azerty-h ()
(map! :nv "à" #'evil-execute-macro
@ -48,8 +48,8 @@
:m "èy" #'+evil:c-string-encode
:m "éy" #'+evil:c-string-decode
(:when (modulep! :ui vc-gutter)
:m "èd" #'git-gutter:next-hunk
:m "éd" #'git-gutter:previous-hunk)
:m "èd" #'+vc-gutter/next-hunk
:m "éd" #'+vc-gutter/previous-hunk)
(:when (modulep! :ui hl-todo)
:m "èt" #'hl-todo-next
:m "ét" #'hl-todo-previous)

View file

@ -54,8 +54,8 @@ In all cases, 'h' functions go to 'c' and 'l' ones go to 'r' so the navigation k
:desc "Jump to documentation" "S" #'+lookup/documentation)
(:prefix-map ("g" . "git")
(:when (modulep! :ui vc-gutter)
:desc "Jump to next hunk" ")" #'git-gutter:next-hunk
:desc "Jump to previous hunk" "(" #'git-gutter:previous-hunk))
:desc "Jump to next hunk" ")" #'+vc-gutter/next-hunk
:desc "Jump to previous hunk" "(" #'+vc-gutter/previous-hunk))
(:prefix-map ("p" . "project")
:desc "Browse other project" "»" #'doom/browse-in-other-project)))

View file

@ -3,17 +3,17 @@
;; Major modes
(package! rjsx-mode :pin "b697fe4d92cc84fa99a7bcb476f815935ea0d919")
(package! typescript-mode :pin "4fcb4594819caf472ae42ea068a1c7795cf07f46")
(package! typescript-mode :pin "fc3a4f3b275e8cf6cf41aa0c9ef42e25ef908feb")
;; Tools
(package! js2-refactor :pin "a0977c4ce1918cc266db9d6cd7a2ab63f3a76b9a")
(package! npm-mode :pin "3ee7c0bad5b7a041d4739ef3aaa06a3dc764e5eb")
;; Eval
(package! nodejs-repl :pin "3b841055cad00f442e4a9159b1056f59411b6646")
(package! nodejs-repl :pin "03d0b64768b40b71ae54de1b50eb58719e615746")
(package! skewer-mode :pin "e5bed351939c92a1f788f78398583c2f83f1bb3c")
;; Programming environment
(package! tide :pin "b38dfc3f8fb754e64e48e76fc92d472cb3d1a3dc")
(when (modulep! :tools lookup)
(package! xref-js2 :pin "fd6b723e7f1f9793d189a815e1904364dc026b03"))
(package! xref-js2 :pin "e215af9eedac69b40942fff9d5514704f9f4d43e"))

View file

@ -4,7 +4,7 @@
#+since: 2.0.4 (#128)
* Description :unfold:
This module adds [[https://ocaml.org/][OCaml]] support to Doom Emacs, powered by [[doom-package:tuareg-mode]].
This module adds [[https://ocaml.org/][OCaml]] support to Doom Emacs, powered by [[doom-package:tuareg]].
- Code completion, documentation look-up, code navigation and refactoring
([[doom-package:merlin]])
@ -14,6 +14,7 @@ This module adds [[https://ocaml.org/][OCaml]] support to Doom Emacs, powered by
- Auto-indentation ([[doom-package:ocp-indent]])
- Code formatting ([[doom-package:ocamlformat]])
- Dune file format ([[doom-package:dune]])
- Opam switch selection ([[doom-package:opam-switch-mode]])
** Maintainers
*This module needs a maintainer.* [[doom-contrib-maintainer:][Become a maintainer?]]
@ -31,6 +32,7 @@ This module adds [[https://ocaml.org/][OCaml]] support to Doom Emacs, powered by
- [[doom-package:ocamlformat]] if [[doom-module::editor format]]
- [[doom-package:ocp-indent]]
- [[doom-package:tuareg]]
- [[doom-package:opam-switch-mode]]
- [[doom-package:utop]] if [[doom-module::tools eval]]
- unless [[doom-module:+lsp]]
- [[doom-package:flycheck-ocaml]] if [[doom-module::checkers syntax]]
@ -42,7 +44,7 @@ This module adds [[https://ocaml.org/][OCaml]] support to Doom Emacs, powered by
- ~set-ligatures!~ is called with the full tuareg prettify symbol list, this can
cause columns to change as certain keywords are shortened (e.g. =fun= becomes
\lambda).
- ~tuareg-opam-update-env~ is called the first time [[doom-package:tuareg]] is loaded
- ~opam-switch-set-switch~ is called the first time [[doom-package:tuareg]] and subsequently [[doom-package:opam-switch-mode]] are loaded
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.
@ -80,6 +82,7 @@ This module requires the following packages available through [[http://opam.ocam
| ~merlin-iedit-occurrences~ | [[kbd:][v R]] | visual refactor identifier under point (multiple cursors) |
| ~utop~ | [[kbd:][SPC o r]] | open =utop= as REPL |
| ~utop-eval-region~ | [[kbd:][SPC c e]] | evaluate selected region in =utop= |
| ~opam-switch-set-switch~ | [[kbd:][<localleader> w]] | evaluate selected region in =utop= |
* TODO Configuration
#+begin_quote

View file

@ -20,10 +20,6 @@
;; harmless if `prettify-symbols-mode' isn't active
(setq tuareg-prettify-symbols-full t)
;; Use opam to set environment
(setq tuareg-opam-insinuate t)
(tuareg-opam-update-env (tuareg-opam-current-compiler))
(setq-hook! 'tuareg-mode-hook
comment-line-break-function #'+ocaml/comment-indent-new-line)
@ -123,6 +119,22 @@
(setq-local ocamlformat-file-kind 'interface)))))
(setq-local +format-with 'ocamlformat))))
(use-package! opam-switch-mode
:hook (tuareg-mode-local-vars . +ocaml-init-opam-switch-h)
:init
(map! :localleader
:map tuareg-mode-map
"w" #'opam-switch-set-switch)
(defun +ocaml-init-opam-switch-h ()
"Activate `opam-switch-mode' if the opam executable exists."
(when (executable-find "opam")
(opam-switch-mode)))
:config
;; Use opam to set environment
(setq tuareg-opam-insinuate t)
(opam-switch-set-switch (tuareg-opam-current-compiler)))
;; Tree sitter
(eval-when! (modulep! +tree-sitter)
(add-hook! 'tuareg-mode-local-vars-hook #'tree-sitter!))

View file

@ -3,6 +3,8 @@
(package! tuareg :pin "1d53723e39f22ab4ab76d31f2b188a2879305092")
(package! opam-switch-mode :pin "1069e56a662f23ea09d4e05611bdedeb99257012")
(unless (modulep! +lsp)
(package! merlin :pin "8404f96693727f7b0edc0d0b14db57843d79e27b")
(package! merlin-eldoc :pin "bf8edc63d85b35e4def352fa7ce4ea39f43e1fd8")

View file

@ -49,6 +49,6 @@ properties and font-locking et all)."
(+org--yank-html-buffer (markdown)))
(_
;; Omit after/before-string overlay properties in htmlized regions, so we
;; don't get fringe characters for things like flycheck or git-gutter.
;; don't get fringe characters for things like flycheck or diff-hl
(letf! (defun htmlize-add-before-after-strings (_beg _end text) text)
(ox-clip-formatted-copy beg end)))))

View file

@ -31,14 +31,14 @@
(format "(defun org-git-version (&rest _) \"%s-??-%s\")\n"
version (cdr (doom-call-process "git" "rev-parse" "--short" "HEAD")))
"(provide 'org-version)\n")))))
:pin "5bdfc02c6fa1b9ad4f075ac1ad1e4086ead310db")
:pin "39272e2165ad9c49cfa9b5d749a5bb528dbadd87")
(package! org-contrib
:recipe (:host github
:repo "emacsmirror/org-contrib")
:pin "d4056ce5d5611e1c971c151f182a2d407226fdb1")
:pin "ccd4212866fb1be70d1f15a41264c45a281901ad")
(package! avy)
(package! htmlize :pin "09d43dfa44899f194095bb3500a45ec5b34d59c6")
(package! htmlize :pin "ed5e5b05fd260e8f161a488d56f10e7f6e01fb75")
(package! org-yt
:recipe (:host github :repo "TobiasZawada/org-yt")
:pin "56166f48e04d83668f70ed84706b7a4d8b1e5438")
@ -49,7 +49,7 @@
;; TODO Adjust when this is added to GNU ELPA
(when (modulep! +contacts)
(package! org-contacts
:pin "6660db078f7687af3bc31f702e3e957d4d7654bd"
:pin "d0cb221502c9e104b6e3c358128b28761ffddb55"
:recipe (:host nil
:type git
:repo "https://repo.or.cz/org-contacts.git")))
@ -71,9 +71,9 @@
(when (modulep! :tools pdf)
(package! org-pdftools :pin "4e420233a153a9c4ab3d1a7e1d7d3211c836f0ac"))
(when (modulep! :tools magit)
(package! orgit :pin "a57beefa24712430fe6b5016b9273129931a8287")
(package! orgit :pin "ca3bf7aa20074e25fee37b71cfef127b93a3dde7")
(when (modulep! :tools magit +forge)
(package! orgit-forge :pin "f2ff9e5ad68b3e860379a1d368ad6d8a9696b719")))
(package! orgit-forge :pin "7b010465ab96bea6d380ae1cfbd7999d528f1de9")))
(when (modulep! +brain)
(package! org-brain :pin "2bad7732aae1a3051e2a14de2e30f970bbe43c25"))
(when (modulep! +dragndrop)
@ -84,11 +84,11 @@
(when (modulep! +ipython) ; DEPRECATED
(package! ob-ipython :pin "7147455230841744fb5b95dcbe03320313a77124"))
(when (modulep! +jupyter)
(package! jupyter :pin "2059d79b2fecf6d25a6c796b69ab954645ec37d1"))
(package! jupyter :pin "b279c90295ed7ef89832d655cf8d9077233f1098"))
(when (modulep! +journal)
(package! org-journal :pin "17b34ce8df9649a73b715c13698220bde1628668"))
(when (modulep! +noter)
(package! org-noter :pin "9e4f57957b8f54db20a4e13bf8d6b32e004ab3e8"))
(package! org-noter :pin "68646b685a0d8c02419234922a9e2d885d6419df"))
(when (modulep! +pomodoro)
(package! org-pomodoro :pin "3f5bcfb80d61556d35fc29e5ddb09750df962cc6"))
(when (modulep! +pretty)
@ -100,11 +100,11 @@
:recipe (:host github :repo "anler/centered-window-mode")
:pin "80965f6c6afe8d918481433984b493de72af5399")
(package! org-tree-slide :pin "e2599a106a26ce5511095e23df4ea04be6687a8a")
(package! org-re-reveal :pin "1944ac53d4cdd0fb250cc575447d5e6320fd5f81")
(package! org-re-reveal :pin "77c805a89e09a46000932c8c609bf5d34cbe81cb")
(package! revealjs
:recipe (:host github :repo "hakimel/reveal.js"
:files ("css" "dist" "js" "plugin"))
:pin "6410c756ea91ded3fa5f6b40a872523e7b8fe723"))
:pin "472535065c7525abf0cc9df51c66f19fd2d2204f"))
(cond
((modulep! +roam)
(package! org-roam

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*-
;;; tools/ansible/packages.el
(package! ansible :recipe (:nonrecursive t) :pin "1d7de8d3ddac980715eebd87ee66859f8665b101")
(package! ansible :recipe (:nonrecursive t) :pin "b4dca00f89334392d770a7a67fffc935ec7354aa")
(package! ansible-doc :pin "86083a7bb2ed0468ca64e52076b06441a2f8e9e0")
(package! jinja2-mode :pin "03e5430a7efe1d163a16beaf3c82c5fd2c2caee1")
(package! yaml-mode :pin "7b5ce294fb15c2c8926fa476d7218aa415550a2a")

View file

@ -8,10 +8,10 @@
(package! bibtex-completion :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c")
(package! helm-bibtex :pin "8b71b4f5ce62eeaf18067f57faaddc06449fbe1c"))
(when (modulep! :completion vertico)
(package! citar :pin "885b86f6733fd70f42c32dd7791d3447f93db990")
(package! citar-embark :pin "885b86f6733fd70f42c32dd7791d3447f93db990")
(package! citar :pin "07d2a63c99fe35cbd468f8e6a322de05f1a29469")
(package! citar-embark :pin "07d2a63c99fe35cbd468f8e6a322de05f1a29469")
(when (modulep! :lang org +roam2)
(package! citar-org-roam :pin "82d47b5df1926627f56a09055c69b49b31cbbb9f")))
(package! parsebib :pin "ace9df707108b17759c004c7387655277122d4c1")
(package! citeproc :pin "44f90cb296766e03fffc28b7892521ab0e8709f1")
(package! citeproc :pin "cfa30b6c95c7465a05da98eccf273608880b22d7")

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; tools/collab/packages.el
(package! crdt :pin "4a18cd8539c8f3364e3ae903580328dd8b05fa78")
(package! crdt :pin "9bf99e2ce35d23c3d60ad245b77ab3b5313184d4")

View file

@ -6,5 +6,5 @@
(package! realgud-trepan-ni :pin "0ec088ea343835e24ae73da09bea96bfb02a3130")))
(when (modulep! +lsp)
(package! dap-mode :pin "11431a26bc4c8ca92b097dbdbcbdc9e3d7fb5583")
(package! dap-mode :pin "b407773ebca56e3bd8e6a4643854e91cbde0c35e")
(package! posframe :pin "f4e9e509ba96ceb3c2b2b054957291607fb52651"))

View file

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

View file

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

View file

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

View file

@ -263,29 +263,41 @@ current buffer."
(< pt end))))))))
(defun +lookup-ffap-backend-fn (identifier)
"Tries to locate the file at point (or in active selection).
Uses find-in-project functionality (provided by ivy, helm, or project),
otherwise falling back to ffap.el (find-file-at-point)."
(let ((guess
"Tries to locate the file or URL at point (or in active selection).
See `ffap-alist' for ways to tweak how files are resolved. Falls back to
whatever find-in-project functionality is available in your active completion
framework (ivy, helm, vertico, etc), otherwise falling back to
`find-file-at-point''s file prompt."
(let ((initial-buffer (current-buffer))
(guess
(cond (identifier)
((doom-region-active-p)
(buffer-substring-no-properties
(doom-region-beginning)
(doom-region-end)))
((if (require 'ffap) (ffap-guesser)))
((if (require 'ffap) (ffap-guesser))) ; Powerful! See `ffap-alist'
((thing-at-point 'filename t)))))
(cond ((and (stringp guess)
(or (file-exists-p guess)
(ffap-url-p guess)))
(find-file-at-point guess))
((and (modulep! :completion ivy)
(doom-project-p))
;; Walk the file tree up to the project's root for relative paths.
((and (stringp guess)
;; Only do this with paths that contain segments, to reduce
;; false positives.
(string-match-p "/" guess)
(when-let ((dir (locate-dominating-file default-directory guess)))
(when (file-in-directory-p dir (doom-project-root))
(find-file (doom-path dir guess))
t))))
;; Fallback prompters
((and (modulep! :completion ivy) (doom-project-p))
(counsel-file-jump guess (doom-project-root)))
((and (modulep! :completion vertico)
(doom-project-p))
((and (modulep! :completion vertico) (doom-project-p))
(+vertico/consult-fd-or-find (doom-project-root) guess))
((find-file-at-point (ffap-prompter guess))))
t))
(not (eq initial-buffer (current-buffer)))))
(defun +lookup-bug-reference-backend-fn (_identifier)
"Searches for a bug reference in user/repo#123 or #123 format and opens it in

View file

@ -8,7 +8,7 @@
(package! helm))
;;
(package! dumb-jump :pin "ede6a04187e79a29ef31d14760ac0d8d4c5f4cc5")
(package! dumb-jump :pin "3c2ab8dfff3a10d3c5f2efd69cfbc81fb5dbbd39")
(when (modulep! :completion ivy)
(package! ivy-xref :pin "a82e8e117d2dd62c28b6a3e3d6e4cfb11c0bda38"))
(when (modulep! :completion helm)

View file

@ -3,13 +3,13 @@
(if (modulep! +eglot)
(progn
(package! eglot :pin "e7e49c789c4019dd4cd4ab3880517d01592d81f9")
(package! eglot :pin "850cbd043084d7cc571e1090a4812db6e3f7d0bc")
(when (modulep! :completion vertico)
(package! consult-eglot :pin "64262e72452f8fe6dd49d31bcdd4bd577b7d682d"))
(when (and (modulep! :checkers syntax)
(not (modulep! :checkers syntax +flymake)))
(package! flycheck-eglot :pin "114e1315aaf0dc3196da67da426bbe2b46384fe2")))
(package! lsp-mode :pin "acad044ebc343c1eff0d9a875a13fb34ad113a9e")
(package! lsp-mode :pin "cec9e56390e90d7ced3b18a922ab954e782b8628")
(package! lsp-ui :pin "00f1fecdfb41c30428734cf27e492f26f46627fb")
(when (modulep! :completion ivy)
(package! lsp-ivy :pin "9ecf4dd9b1207109802bd1882aa621eb1c385106"))

View file

@ -108,7 +108,7 @@ modified."
;;;###autoload
(defun +magit-revert-buffer-maybe-h ()
"Update `vc' and `git-gutter' if out of date."
"Update `vc' and `diff-hl' if out of date."
(when +magit--stale-p
(+magit--revert-buffer (current-buffer))))

View file

@ -1,9 +1,9 @@
;; -*- no-byte-compile: t; -*-
;;; tools/magit/packages.el
(when (package! magit :pin "f9268a959828d0c6ab26171dd2fb1ffc55e5ae70")
(when (package! magit :pin "ea0f07e54967197ac0b072a69ba314314a4080c1")
(when (modulep! +forge)
(package! forge :pin "c3675fd068767c694177a310d4fa0a01f81bb2d3")
(package! forge :pin "4adb94d23c8f28ea3b15757936c2203b3376586a")
(package! code-review
:recipe (:host github
:repo "doomelpa/code-review"

View file

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

View file

@ -1,5 +1,5 @@
;; -*- no-byte-compile: t; -*-
;;; tools/rgb/packages.el
(package! rainbow-mode :pin "70ed10d410ef00c82c49b2ba41647930626d6218")
(package! rainbow-mode :pin "0740f31f300982534183a2f60b1918de418a6f2c")
(package! kurecolor :pin "fbf98e1e384dd11bbb5764ae54b36353f0691d1e")

View file

@ -1,8 +1,8 @@
;; -*- no-byte-compile: t; -*-
;;; tools/tree-sitter/packages.el
(package! tree-sitter :pin "3cfab8a0e945db9b3df84437f27945746a43cc71")
(package! tree-sitter-langs :pin "b7895ca759563f3c7c3b928eb4f816bb4099d866")
(package! tree-sitter :recipe (:branch "master") :pin "02fe7b86d92b1aab954045146469b7893f0ab371")
(package! tree-sitter-langs :pin "a06804e13fc1d24d0099b44ce23d6ac5e6bac5b8")
(package! tree-sitter-indent :pin "4ef246db3e4ff99f672fe5e4b416c890f885c09e")
(when (modulep! :editor evil +everywhere)

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; ui/deft/packages.el
(package! deft :pin "bb1a16b87c3e0fe70fade6227e47dd7712b89bf6")
(package! deft :pin "b369d7225d86551882568788a23c5497b232509c")

View file

@ -8,7 +8,6 @@ This module gives Doom its signature look: powered by the [[doom-package:doom-th
(loosely inspired by [[https://github.com/atom/one-dark-syntax][Atom's One Dark theme]]) and [[doom-package:solaire-mode]]. Includes:
- A custom folded-region indicator for [[doom-package:hideshow]].
- "Thin bar" fringe bitmaps for [[doom-package:git-gutter-fringe]].
- File-visiting buffers are slightly brighter (thanks to [[doom-package:solaire-mode]]).
** Maintainers

View file

@ -1,5 +1,5 @@
;; -*- no-byte-compile: t; -*-
;;; ui/doom/packages.el
(package! doom-themes :pin "3b2422b208d28e8734b300cd3cc6a7f4af5eba55")
(package! doom-themes :pin "816fb54d60a7012b9b12cd995831d4226982b487")
(package! solaire-mode :pin "8ccdceeb9298b3c4e35f630914f467bf164f39ad")

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; ui/hl-todo/packages.el
(package! hl-todo :pin "f1fef158f99a70746926ef52c59f4863a29b7ed7")
(package! hl-todo :pin "dd46d426c0501b5e8ed976a834d3e54ae85731f7")

View file

@ -70,7 +70,7 @@ Note that this will keep all ligatures in `+ligatures-prog-mode-list' active, as
;; NOTE: Doom enforces `ligature-composition-table' to have a single mode per key in the alist.
;; This is less efficient than what ligature.el can do (i.e. use a list of modes, or `t' as a key),
;; but holding this invariant allows resetting with `(set-font-ligatures! 'mode nil)` to work reliably.
(if (null ligatures)
(if (or (null ligatures) (equal ligatures '(nil)))
(dolist (mode (ensure-list modes))
(delq! mode ligature-composition-table 'assq))
(after! ligature

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; ui/minimap/packages.el
(package! minimap :pin "90aeeb5798ff2fa8b08bd4965af5e43806e01645")
(package! minimap :pin "4898d277686c2829c2e91416082f4252c1bb0ceb")

View file

@ -2,7 +2,7 @@
;;; ui/modeline/packages.el
(unless (modulep! +light)
(package! doom-modeline :pin "e09b8e989fa5fc1d98320aaa29d7138631b20ae5"))
(package! doom-modeline :pin "11ae6c193cd9cb8d7ff7996058e6df2c0d1e408b"))
(package! anzu :pin "26fb50b429ee968eb944b0615dd0aed1dd66172c")
(when (modulep! :editor evil)
(package! evil-anzu :pin "d1e98ee6976437164627542909a25c6946497899"))

View file

@ -5,10 +5,11 @@
* Description :unfold:
This module provides op-hints (operation hinting), i.e. visual feedback for
certain operations. It highlights regions of text that the last operation (like
yank) acted on.
certain editing operations. It highlights regions of text that the last
operation (like yank) acted on.
Uses [[doom-package:evil-goggles]] for evil users and [[doom-package:volatile-highlights]] otherwise.
Uses [[doom-package:evil-goggles]] for evil users and [[doom-package:goggles]]
otherwise.
** Maintainers
- [[doom-user:][@hlissner]]
@ -20,7 +21,7 @@ Uses [[doom-package:evil-goggles]] for evil users and [[doom-package:volatile-hi
** Packages
- [[doom-package:evil-goggles]] if [[doom-module::editor evil]]
- [[doom-package:volatile-highlights]] unless [[doom-module::editor evil]]
- [[doom-package:goggles]] unless [[doom-module::editor evil]]
** Hacks
/No hacks documented for this module./

View file

@ -63,11 +63,11 @@
:switch evil-goggles-enable-join
:advice evil-goggles--join-advice))))
(use-package! volatile-highlights
(use-package! goggles
:unless (modulep! :editor evil)
:hook (doom-first-input . volatile-highlights-mode)
:hook ((prog-mode text-mode) . goggles-mode)
:config
(after! undo-fu
(vhl/define-extension 'undo-fu 'undo-fu-only-undo 'undo-fu-only-redo)
(vhl/install-extension 'undo-fu)))
(goggles-define +goggles-general-undo undo) ; goggles only supports `primitive-undo' by default
(goggles-define +goggles-register-paste insert-register)
(goggles-define +goggles-kill-word backward-kill-word kill-word)
(goggles-define +goggles-undo-fu undo-fu-only-undo undo-fu-only-redo))

View file

@ -3,4 +3,4 @@
(if (modulep! :editor evil)
(package! evil-goggles :pin "34ca276a85f615d2b45e714c9f8b5875bcb676f3")
(package! volatile-highlights :pin "fcf6e2778454ce514c189a7d1fe70e03ad81c325"))
(package! goggles :pin "41d3669d7ae7b73bd39d298e5373ece48b656ce3"))

View file

@ -10,7 +10,7 @@
;;; Packages
(use-package! centaur-tabs
:hook (doom-first-file . centaur-tabs-mode)
:defer t
:init
(setq centaur-tabs-set-icons t
centaur-tabs-gray-out-icons 'buffer
@ -24,6 +24,10 @@
;; prevents that.
centaur-tabs-cycle-scope 'tabs)
(if (daemonp)
(add-hook 'server-after-make-frame-hook #'centaur-tabs-mode)
(add-hook 'doom-first-file-hook #'centaur-tabs-mode))
:config
(add-hook! '(+doom-dashboard-mode-hook +popup-buffer-mode-hook)
(defun +tabs-disable-centaur-tabs-mode-maybe-h ()
@ -31,19 +35,11 @@
(when (centaur-tabs-mode-on-p)
(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))))))
(add-hook! 'doom-load-theme-hook
(defun +tabs-reload-centaur-tabs-h ()
(when (bound-and-true-p centaur-tabs-mode)
(centaur-tabs-mode -1)
(centaur-tabs-mode +1)))))
;; TODO tab-bar-mode (emacs 27)
;; TODO tab-line-mode (emacs 27)

View file

@ -1,4 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; ui/tabs/packages.el
(package! centaur-tabs :pin "0bb1aa18d475319df85f192dce3327802866c3c3")
(package! centaur-tabs :pin "4a121a175e663295fcd295512642dae4d2ff9db3")

View file

@ -1,7 +1,7 @@
;; -*- no-byte-compile: t; -*-
;;; ui/treemacs/packages.el
(package! treemacs :pin "8c6df39f01a4d47fda2cc943645fa067f771b748")
(package! treemacs :pin "54ef590b7621032a76f8f3e307032fc13c802371")
(package! treemacs-nerd-icons :pin "9876cb478145a0ec4e36f64ff6583f3de7126216")
;; These packages have no :pin because they're in the same repo
(when (modulep! :editor evil +everywhere)
@ -13,4 +13,4 @@
(package! treemacs-persp))
(when (and (modulep! +lsp)
(not (modulep! :tools lsp +eglot)))
(package! lsp-treemacs :pin "e54e74deb8150964e3c3024e1ec14295a34e2a3b"))
(package! lsp-treemacs :pin "1d43e9e0307f84496a4a7ddf9dba481000391dbd"))

View file

@ -13,44 +13,32 @@ Supports Git, Svn, Hg, and Bzr.
[[doom-contrib-maintainer:][Become a maintainer?]]
** Module flags
- +diff-hl ::
Use [[doom-package:diff-hl]] instead of git-gutter to power the VC gutter. It is a little
faster, but is slightly more prone to visual glitching. [[doom-package:diff-hl]] is intended to
replace git-gutter at some point in the future.
- +pretty ::
Apply some stylistic defaults to the fringe, enabling thin bars in the fringe.
This look takes after the modern look of git-gutter in VSCode and Sublime
Text, without sacrificing on fringe width (which squeeze other indicators,
like flycheck's, flymake's, or flyspell's). However, this will look bad with
themes that invert the foreground/background of either git-gutter's or
diff-hl's faces (like modus-themes does).
Apply some stylistic defaults to the fringe that present the diff in the
fringe as thin bars, taking after the modern look of the git-gutter plugin in
VSCode and Sublime Text. However, this will look bad with themes that invert
the foreground/background of diff-hl's faces (like modus-themes does).
** Packages
- [[doom-package:git-gutter-fringe]] unless [[doom-module:+diff-hl]]
- [[doom-package:diff-hl]] if [[doom-module:+diff-hl]]
- [[doom-package:diff-hl]]
** Hacks
- The VC gutter will be updated when pressing ESC, leaving insert mode (evil
users), or refocusing the frame or window where it is active.
- If [[doom-module:+pretty]] is enabled
- The fringes that both git-gutter-fringe and diff-hl define will be replaced
with a set of thin bars. This achieves a slicker look closer to git-gutter's
appearance in VSCode or Sublime Text, but may look weird for themes that
swap their faces' :foreground and :background (like modus-themes).
- The fringes that diff-hl define will be replaced with a set of thin bars.
This achieves a slicker look closer to git-gutter's appearance in VSCode or
Sublime Text, but may look weird for themes that swap their faces'
:foreground and :background (like modus-themes).
- The fringes are moved to the outside of the margins (closest to the frame
edge), so they have some breathing space away from the buffer's contents.
- If [[doom-package:+diff-hl]] is enabled:
- ~diff-hl-revert-hunk~ displays a preview popup of the hunk being reverted.
- ~diff-hl-revert-hunk~ displays a preview popup of the hunk being reverted.
It takes up ~50% of the frame, by default, whether you're reverting 2 lines
or 20. Since this isn't easily customized, it has been advised to shrink
this popup to the side of its contents.
- ~diff-hl-revert-hunk~ will sometimes move the cursor to an unexpected
- ~diff-hl-revert-hunk~ will sometimes move the cursor to an unexpected
location (the bounds of hunks, is my guess), but this is not intuitive and
often unexpected. Cursor movements have been suppressed for it.
- If +diff-hl is *not* enabled:
- Sometimes, ~git-gutter:next-hunk~ and ~git-gutter:previous-hunk~ get
confused about the order of hunks. They have been advised to fix this
(although the hack is a little inefficient).
** TODO Changelog
# This section will be machine generated. Don't edit it by hand.

View file

@ -1,11 +1,22 @@
;;; ui/vc-gutter/autoload/diff-hl.el -*- lexical-binding: t; -*-
;;;###if (modulep! +diff-hl)
;;;###autoload
(defalias '+vc-gutter/stage-hunk #'diff-hl-stage-current-hunk)
;;;###autoload
(defalias '+vc-gutter/revert-hunk #'diff-hl-revert-hunk)
;;;###autoload
(defalias '+vc-gutter/next-hunk #'diff-hl-next-hunk)
;;;###autoload
(defalias '+vc-gutter/previous-hunk #'diff-hl-previous-hunk)
(defvar vc-suppress-confirm)
;;;###autoload
(defun +vc-gutter/revert-hunk (&optional no-prompt)
"Invoke `diff-hl-revert-hunk'."
(interactive "P")
(let ((vc-suppress-confirm (if no-prompt t)))
(call-interactively #'diff-hl-revert-hunk)))
;;;###autoload
(defun +vc-gutter/save-and-revert-hunk ()
"Invoke `diff-hl-revert-hunk' with `vc-suppress-confirm' set."
(interactive)
(+vc-gutter/revert-hunk t))

View file

@ -1,11 +0,0 @@
;;; ui/vc-gutter/autoload/vc-gutter.el -*- lexical-binding: t; -*-
;;;###if (not (modulep! +diff-hl))
;;;###autoload
(defalias '+vc-gutter/stage-hunk #'git-gutter:stage-hunk)
;;;###autoload
(defalias '+vc-gutter/revert-hunk #'git-gutter:revert-hunk)
;;;###autoload
(defalias '+vc-gutter/next-hunk #'git-gutter:next-hunk)
;;;###autoload
(defalias '+vc-gutter/previous-hunk #'git-gutter:previous-hunk)

View file

@ -1,13 +1,5 @@
;;; ui/vc-gutter/config.el -*- lexical-binding: t; -*-
;; TODO Implement me
(defvar +vc-gutter-in-margin nil
"If non-nil, use the margin for diffs instead of the fringe.")
(defvar +vc-gutter-in-remote-files nil
"If non-nil, enable the vc gutter in remote files (e.g. open through TRAMP).")
;;
;;; Default styles
@ -23,14 +15,6 @@
;; having to shrink the fringe and sacrifice precious space for other fringe
;; indicators (like flycheck or flyspell).
;; REVIEW: Extract these into a package with faces that themes can target.
(if (not (modulep! +diff-hl))
(after! git-gutter-fringe
(define-fringe-bitmap 'git-gutter-fr:added [224]
nil nil '(center repeated))
(define-fringe-bitmap 'git-gutter-fr:modified [224]
nil nil '(center repeated))
(define-fringe-bitmap 'git-gutter-fr:deleted [128 192 224 240]
nil nil 'bottom))
(defadvice! +vc-gutter-define-thin-bitmaps-a (&rest args)
:override #'diff-hl-define-bitmaps
(define-fringe-bitmap 'diff-hl-bmp-middle [224] nil nil '(center repeated))
@ -49,10 +33,10 @@
(mapc (doom-rpartial #'set-face-background nil)
'(diff-hl-insert
diff-hl-delete
diff-hl-change)))))
diff-hl-change))))
;; FIX: To minimize overlap between flycheck indicators and git-gutter/diff-hl
;; indicators in the left fringe.
;; FIX: To minimize overlap between flycheck indicators and diff-hl indicators
;; in the left fringe.
(after! flycheck
;; Let diff-hl have left fringe, flycheck can have right fringe
(setq flycheck-indication-mode 'right-fringe)
@ -61,99 +45,10 @@
[16 48 112 240 112 48 16] nil nil 'center)))
;;
;;; git-gutter
(use-package! git-gutter
:unless (modulep! +diff-hl)
:commands git-gutter:revert-hunk git-gutter:stage-hunk git-gutter:previous-hunk git-gutter:next-hunk
:init
(add-hook! 'find-file-hook
(defun +vc-gutter-init-maybe-h ()
"Enable `git-gutter-mode' in the current buffer.
If the buffer doesn't represent an existing file, `git-gutter-mode's activation
is deferred until the file is saved. Respects `git-gutter:disabled-modes'."
(let ((file-name (buffer-file-name (buffer-base-buffer))))
(cond
((and (file-remote-p (or file-name default-directory))
(not +vc-gutter-in-remote-files)))
;; UX: If not a valid file, wait until it is written/saved to activate
;; git-gutter.
((not (and file-name (vc-backend file-name)))
(add-hook 'after-save-hook #'+vc-gutter-init-maybe-h nil 'local))
;; UX: Allow git-gutter or git-gutter-fringe to activate based on the
;; type of frame we're in. This allows git-gutter to work for silly
;; geese who open both tty and gui frames from the daemon.
((if (and (display-graphic-p)
(require 'git-gutter-fringe nil t))
(setq-local git-gutter:init-function #'git-gutter-fr:init
git-gutter:view-diff-function #'git-gutter-fr:view-diff-infos
git-gutter:clear-function #'git-gutter-fr:clear
git-gutter:window-width -1)
(setq-local git-gutter:init-function 'nil
git-gutter:view-diff-function #'git-gutter:view-diff-infos
git-gutter:clear-function #'git-gutter:clear-diff-infos
git-gutter:window-width 1))
(unless (memq major-mode git-gutter:disabled-modes)
(git-gutter-mode +1)
(remove-hook 'after-save-hook #'+vc-gutter-init-maybe-h 'local)))))))
;; UX: Disable in Org mode, as per syl20bnr/spacemacs#10555 and
;; syohex/emacs-git-gutter#24. Apparently, the mode-enabling function for
;; global minor modes gets called for new buffers while they are still in
;; `fundamental-mode', before a major mode has been assigned. I don't know
;; why this is the case, but adding `fundamental-mode' here fixes the issue.
(setq git-gutter:disabled-modes '(fundamental-mode image-mode pdf-view-mode))
:config
(set-popup-rule! "^\\*git-gutter" :select nil :size '+popup-shrink-to-fit)
;; PERF: Only enable the backends that are available, so it doesn't have to
;; check when opening each buffer.
(setq git-gutter:handled-backends
(cons 'git (cl-remove-if-not #'executable-find (list 'hg 'svn 'bzr)
:key #'symbol-name)))
;; UX: update git-gutter on focus (in case I was using git externally)
(add-hook 'focus-in-hook #'git-gutter:update-all-windows)
;; Stop git-gutter doing things when we don't want
(remove-hook 'post-command-hook #'git-gutter:post-command-hook)
(advice-remove #'quit-window #'git-gutter:quit-window)
(advice-remove #'switch-to-buffer #'git-gutter:switch-to-buffer)
(add-hook! '(doom-escape-hook doom-switch-window-hook) :append
(defun +vc-gutter-update-h (&rest _)
"Refresh git-gutter on ESC. Return nil to prevent shadowing other
`doom-escape-hook' hooks."
(ignore (or (memq this-command '(git-gutter:stage-hunk
git-gutter:revert-hunk))
inhibit-redisplay
(if git-gutter-mode
(git-gutter)
(+vc-gutter-init-maybe-h))))))
;; UX: update git-gutter when using magit commands
(advice-add #'magit-stage-file :after #'+vc-gutter-update-h)
(advice-add #'magit-unstage-file :after #'+vc-gutter-update-h)
;; UX: update git-gutter after reverting a buffer
(add-hook 'after-revert-hook #'+vc-gutter-update-h)
;; FIX: stop git-gutter:{next,previous}-hunk from jumping to random hunks.
(defadvice! +vc-gutter--fix-linearity-of-hunks-a (diffinfos is-reverse)
:override #'git-gutter:search-near-diff-index
(cl-position-if (let ((lineno (line-number-at-pos))
(fn (if is-reverse #'> #'<)))
(lambda (line) (funcall fn lineno line)))
diffinfos
:key #'git-gutter-hunk-start-line
:from-end is-reverse)))
;;
;;; diff-hl
(use-package! diff-hl
:when (modulep! +diff-hl)
:hook (find-file . diff-hl-mode)
:hook (vc-dir-mode . diff-hl-dir-mode)
:hook (dired-mode . diff-hl-dired-mode)
@ -162,8 +57,6 @@ is deferred until the file is saved. Respects `git-gutter:disabled-modes'."
:config
(set-popup-rule! "^\\*diff-hl" :select nil :size '+popup-shrink-to-fit)
;; PERF: reduce load on remote
(defvaralias 'diff-hl-disable-on-remote '+vc-gutter-in-remote-files)
;; PERF: A slightly faster algorithm for diffing.
(setq vc-git-diff-switches '("--histogram"))
;; PERF: Slightly more conservative delay before updating the diff
@ -185,7 +78,7 @@ is deferred until the file is saved. Respects `git-gutter:disabled-modes'."
:n "{" #'diff-hl-show-hunk-previous
:n "}" #'diff-hl-show-hunk-next
:n "S" #'diff-hl-show-hunk-stage-hunk))
;; UX: Refresh git-gutter on ESC or refocusing the Emacs frame.
;; UX: Refresh gutter on ESC or refocusing the Emacs frame.
(add-hook! '(doom-escape-hook doom-switch-window-hook) :append
(defun +vc-gutter-update-h (&rest _)
"Return nil to prevent shadowing other `doom-escape-hook' hooks."

View file

@ -1,6 +1,4 @@
;; -*- no-byte-compile: t; -*-
;;; ui/vc-gutter/packages.el
(if (modulep! +diff-hl)
(package! diff-hl :pin "96620839430c1205cbb8c92dd54973397f70f9d2")
(package! git-gutter-fringe :pin "648cb5b57faec55711803cdc9434e55a733c3eba"))
(package! diff-hl :pin "11f3113e790526d5ee00f61f8e7cd0d01e323b2e")