dev: merge branch 'master'
This commit is contained in:
commit
4cfb00a0e5
23 changed files with 111 additions and 111 deletions
6
bin/doom
6
bin/doom
|
@ -165,10 +165,10 @@ EXIT CODES:
|
||||||
3 Unrecognized user input error
|
3 Unrecognized user input error
|
||||||
4 Command not found, or is incorrect/deprecated
|
4 Command not found, or is incorrect/deprecated
|
||||||
5 Invalid, missing, or extra options/arguments
|
5 Invalid, missing, or extra options/arguments
|
||||||
6-49 Reserved for Doom
|
6-15 Reserved for Doom
|
||||||
50-200 Reserved for custom user codes
|
16-192 Reserved for the user's extensions
|
||||||
254 Successful run (but then execute `doom-cli-restart-script')
|
254 Successful run (but then execute `doom-cli-restart-script')
|
||||||
255 Uncaught internal errors
|
255 Uncaught critical errors
|
||||||
|
|
||||||
SEE ALSO:
|
SEE ALSO:
|
||||||
https://doomemacs.org Homepage
|
https://doomemacs.org Homepage
|
||||||
|
|
|
@ -300,7 +300,8 @@ list remains lean."
|
||||||
(and (eq (car-safe build) :not)
|
(and (eq (car-safe build) :not)
|
||||||
(setq want-byte-compile (not want-byte-compile)
|
(setq want-byte-compile (not want-byte-compile)
|
||||||
want-native-compile (not want-native-compile)))
|
want-native-compile (not want-native-compile)))
|
||||||
(unless (featurep 'native-compile)
|
(when (or (not (featurep 'native-compile))
|
||||||
|
(not straight--native-comp-available))
|
||||||
(setq want-native-compile nil))
|
(setq want-native-compile nil))
|
||||||
(and (or want-byte-compile want-native-compile)
|
(and (or want-byte-compile want-native-compile)
|
||||||
(or (file-newer-than-file-p repo-dir build-dir)
|
(or (file-newer-than-file-p repo-dir build-dir)
|
||||||
|
|
|
@ -36,14 +36,14 @@ This is the equivalent of running autoremove, install, autoloads, then
|
||||||
recompile. Run this whenever you:
|
recompile. Run this whenever you:
|
||||||
|
|
||||||
1. Modify your `doom!' block,
|
1. Modify your `doom!' block,
|
||||||
2. Add or remove `package!' blocks to your config,
|
2. Add, remove, or modify `package!' blocks to your config,
|
||||||
3. Add or remove autoloaded functions in module autoloaded files,
|
3. Add, remove, or modify autoloaded functions in module autoloaded files,
|
||||||
4. Update Doom outside of Doom (e.g. with git),
|
4. Update Doom manually (e.g. with git),
|
||||||
5. Move your Doom config (either $EMACSDIR or $DOOMDIR) to a new location.
|
5. Move your Doom config (either $EMACSDIR or $DOOMDIR) to a new location.
|
||||||
6. When you up (or down) grade Emacs itself.
|
6. Up or downgrade Emacs itself (e.g. 29.1 -> 29.4).
|
||||||
|
|
||||||
It will ensure that unneeded packages are removed, all needed packages are
|
Sync'ing ensures that unneeded packages are removed, needed packages are
|
||||||
installed, autoloads files are up-to-date and no byte-compiled files have gone
|
installed, autoloads files are up-to-date, and no byte-compiled files have gone
|
||||||
stale.
|
stale.
|
||||||
|
|
||||||
OPTIONS:
|
OPTIONS:
|
||||||
|
|
|
@ -450,6 +450,8 @@ files, so this replace calls to `pp' with the much faster `prin1'."
|
||||||
;; REVIEW Suppress byte-compiler warning spawning a *Compile-Log* buffer at
|
;; REVIEW Suppress byte-compiler warning spawning a *Compile-Log* buffer at
|
||||||
;; startup. This can be removed once gilbertw1/better-jumper#2 is merged.
|
;; startup. This can be removed once gilbertw1/better-jumper#2 is merged.
|
||||||
(defvar better-jumper-local-mode nil)
|
(defvar better-jumper-local-mode nil)
|
||||||
|
;; REVIEW: Remove if/when gilbertw1/better-jumper#26 is addressed.
|
||||||
|
(defvaralias 'evil--jumps-jump-command 'evil--jumps-jumping-backard)
|
||||||
:init
|
:init
|
||||||
(global-set-key [remap evil-jump-forward] #'better-jumper-jump-forward)
|
(global-set-key [remap evil-jump-forward] #'better-jumper-jump-forward)
|
||||||
(global-set-key [remap evil-jump-backward] #'better-jumper-jump-backward)
|
(global-set-key [remap evil-jump-backward] #'better-jumper-jump-backward)
|
||||||
|
@ -575,8 +577,8 @@ files, so this replace calls to `pp' with the much faster `prin1'."
|
||||||
(lambda (button)
|
(lambda (button)
|
||||||
(helpful-variable (button-get button 'apropos-symbol))))))
|
(helpful-variable (button-get button 'apropos-symbol))))))
|
||||||
|
|
||||||
(when (> emacs-major-version 28)
|
;; DEPRECATED: Remove when support for 29 is dropped.
|
||||||
;; REVIEW This should be reported upstream to Emacs.
|
(when (= emacs-major-version 29)
|
||||||
(defadvice! doom--find-function-search-for-symbol-save-excursion-a (fn &rest args)
|
(defadvice! doom--find-function-search-for-symbol-save-excursion-a (fn &rest args)
|
||||||
"Suppress cursor movement by `find-function-search-for-symbol'.
|
"Suppress cursor movement by `find-function-search-for-symbol'.
|
||||||
|
|
||||||
|
|
|
@ -64,12 +64,13 @@
|
||||||
;; usage, however!
|
;; usage, however!
|
||||||
(setq inhibit-compacting-font-caches t)
|
(setq inhibit-compacting-font-caches t)
|
||||||
|
|
||||||
;; PGTK builds only: this timeout adds latency to frame operations, like
|
;; PGTK builds only: there's a timeout that adds latency to frame operations,
|
||||||
;; `make-frame-invisible', which are frequently called without a guard because
|
;; like `make-frame-invisible', which Emacs frequently calls without a guard
|
||||||
;; it's inexpensive in non-PGTK builds. Lowering the timeout from the default
|
;; because it's inexpensive in non-PGTK builds. Lowering the timeout from the
|
||||||
;; 0.1 should make childframes and packages that manipulate them (like `lsp-ui',
|
;; default 0.1 should make childframes and packages that manipulate them (like
|
||||||
;; `company-box', and `posframe') feel much snappier. See emacs-lsp/lsp-ui#613.
|
;; `lsp-ui', `company-box', and `posframe') feel much snappier. See
|
||||||
(eval-when! (boundp 'pgtk-wait-for-event-timeout)
|
;; emacs-lsp/lsp-ui#613.
|
||||||
|
(when (boundp 'pgtk-wait-for-event-timeout)
|
||||||
(setq pgtk-wait-for-event-timeout 0.001))
|
(setq pgtk-wait-for-event-timeout 0.001))
|
||||||
|
|
||||||
;; Increase how much is read from processes in a single chunk (default is 4kb).
|
;; Increase how much is read from processes in a single chunk (default is 4kb).
|
||||||
|
@ -82,7 +83,7 @@
|
||||||
|
|
||||||
;; Performance on Windows is considerably worse than elsewhere. We'll need
|
;; Performance on Windows is considerably worse than elsewhere. We'll need
|
||||||
;; everything we can get.
|
;; everything we can get.
|
||||||
(eval-when! (boundp 'w32-get-true-file-attributes)
|
(when (boundp 'w32-get-true-file-attributes)
|
||||||
(setq w32-get-true-file-attributes nil ; decrease file IO workload
|
(setq w32-get-true-file-attributes nil ; decrease file IO workload
|
||||||
w32-pipe-read-delay 0 ; faster IPC
|
w32-pipe-read-delay 0 ; faster IPC
|
||||||
w32-pipe-buffer-size (* 64 1024))) ; read more at a time (was 4K)
|
w32-pipe-buffer-size (* 64 1024))) ; read more at a time (was 4K)
|
||||||
|
@ -90,8 +91,8 @@
|
||||||
;; The GC introduces annoying pauses and stuttering into our Emacs experience,
|
;; The GC introduces annoying pauses and stuttering into our Emacs experience,
|
||||||
;; so we use `gcmh' to stave off the GC while we're using Emacs, and provoke it
|
;; so we use `gcmh' to stave off the GC while we're using Emacs, and provoke it
|
||||||
;; when it's idle. However, if the idle delay is too long, we run the risk of
|
;; when it's idle. However, if the idle delay is too long, we run the risk of
|
||||||
;; runaway memory usage in busy sessions. If it's too low, then we may as well
|
;; runaway memory usage in busy sessions. And if it's too low, then we may as
|
||||||
;; not be using gcmh at all.
|
;; well not be using gcmh at all.
|
||||||
(setq gcmh-idle-delay 'auto ; default is 15s
|
(setq gcmh-idle-delay 'auto ; default is 15s
|
||||||
gcmh-auto-idle-delay-factor 10
|
gcmh-auto-idle-delay-factor 10
|
||||||
gcmh-high-cons-threshold (* 16 1024 1024)) ; 16mb
|
gcmh-high-cons-threshold (* 16 1024 1024)) ; 16mb
|
||||||
|
@ -124,11 +125,10 @@
|
||||||
;; disabling Emacs' menu-bar also makes MacOS treat Emacs GUI frames like
|
;; disabling Emacs' menu-bar also makes MacOS treat Emacs GUI frames like
|
||||||
;; non-application windows (e.g. it won't capture focus on activation, among
|
;; non-application windows (e.g. it won't capture focus on activation, among
|
||||||
;; other things), so the menu-bar should be preserved there.
|
;; other things), so the menu-bar should be preserved there.
|
||||||
;;
|
|
||||||
(when doom--system-macos-p
|
(when doom--system-macos-p
|
||||||
;; NOTE: The correct way to disable this hack is to toggle `menu-bar-mode' (or
|
;; NOTE: Don't try to undo the hack below, as it may change without warning.
|
||||||
;; put it on a hook). Don't try to undo the hack below, as it may change
|
;; Instead, toggle `menu-bar-mode' (or put it on a hook) as normal. This
|
||||||
;; without warning, but will always respect `menu-bar-mode'.
|
;; hack will always try to respect the state of `menu-bar-mode'.
|
||||||
(setcdr (assq 'menu-bar-lines default-frame-alist) 'tty)
|
(setcdr (assq 'menu-bar-lines default-frame-alist) 'tty)
|
||||||
(add-hook! 'after-make-frame-functions
|
(add-hook! 'after-make-frame-functions
|
||||||
(defun doom--init-menu-bar-on-macos-h (&optional frame)
|
(defun doom--init-menu-bar-on-macos-h (&optional frame)
|
||||||
|
@ -357,8 +357,8 @@ If RETURN-P, return the message as a string instead of displaying it."
|
||||||
;; and ~/_emacs) -- and spare us the IO of searching for them, and allows
|
;; and ~/_emacs) -- and spare us the IO of searching for them, and allows
|
||||||
;; savvy hackers to use $EMACSDIR as their $DOOMDIR, if they wanted.
|
;; savvy hackers to use $EMACSDIR as their $DOOMDIR, if they wanted.
|
||||||
;; 3. Cut down on unnecessary logic in Emacs' bootstrapper.
|
;; 3. Cut down on unnecessary logic in Emacs' bootstrapper.
|
||||||
;; 4. Offer a more user-friendly error state/screen, especially for errors
|
;; 4. TODO Offer a more user-friendly error state/screen, especially for
|
||||||
;; emitted from Doom's core or the user's config.
|
;; errors emitted from Doom's core or the user's config.
|
||||||
(define-advice startup--load-user-init-file (:override (&rest _) init-doom 100)
|
(define-advice startup--load-user-init-file (:override (&rest _) init-doom 100)
|
||||||
(let ((debug-on-error-from-init-file nil)
|
(let ((debug-on-error-from-init-file nil)
|
||||||
(debug-on-error-should-be-set nil)
|
(debug-on-error-should-be-set nil)
|
||||||
|
|
|
@ -537,7 +537,6 @@ windows, switch to `doom-fallback-buffer'. Otherwise, delegate to original
|
||||||
(nreverse new-specs)))
|
(nreverse new-specs)))
|
||||||
(put face 'face-modified nil))
|
(put face 'face-modified nil))
|
||||||
('error
|
('error
|
||||||
(ignore-errors (doom--reset-inhibited-vars-h))
|
|
||||||
(if (string-prefix-p "Font not available" (error-message-string e))
|
(if (string-prefix-p "Font not available" (error-message-string e))
|
||||||
(signal 'doom-font-error (list (font-get (cdr map) :family)))
|
(signal 'doom-font-error (list (font-get (cdr map) :family)))
|
||||||
(signal (car e) (cdr e))))))
|
(signal (car e) (cdr e))))))
|
||||||
|
|
106
lisp/doom.el
106
lisp/doom.el
|
@ -148,8 +148,9 @@
|
||||||
(push 'harfbuzz features))
|
(push 'harfbuzz features))
|
||||||
|
|
||||||
;; The `native-compile' feature exists whether or not it is functional (e.g.
|
;; The `native-compile' feature exists whether or not it is functional (e.g.
|
||||||
;; libgcc is available or not). This seems silly, so pretend it doesn't exist if
|
;; libgcc is available or not). This seems silly, as some packages will blindly
|
||||||
;; it isn't functional.
|
;; use the native-comp API if it's present, whether or not it's functional. so
|
||||||
|
;; pretend it doesn't exist if that's the case.
|
||||||
(if (featurep 'native-compile)
|
(if (featurep 'native-compile)
|
||||||
(if (not (native-comp-available-p))
|
(if (not (native-comp-available-p))
|
||||||
(delq 'native-compile features)))
|
(delq 'native-compile features)))
|
||||||
|
@ -193,7 +194,7 @@
|
||||||
;;; Core globals
|
;;; Core globals
|
||||||
|
|
||||||
(defgroup doom nil
|
(defgroup doom nil
|
||||||
"An Emacs framework for the stubborn martian hacker."
|
"A development framework for Emacs configurations and Emacs Lisp projects."
|
||||||
:link '(url-link "https://doomemacs.org")
|
:link '(url-link "https://doomemacs.org")
|
||||||
:group 'emacs)
|
:group 'emacs)
|
||||||
|
|
||||||
|
@ -205,7 +206,7 @@
|
||||||
"Current version of Doom Emacs.")
|
"Current version of Doom Emacs.")
|
||||||
|
|
||||||
(defvar doom-init-time nil
|
(defvar doom-init-time nil
|
||||||
"The time it took, in seconds, for Doom Emacs to initialize.")
|
"The time it took, in seconds (as a float), for Doom Emacs to start up.")
|
||||||
|
|
||||||
(defconst doom-profile
|
(defconst doom-profile
|
||||||
(if-let (profile (getenv-internal "DOOMPROFILE"))
|
(if-let (profile (getenv-internal "DOOMPROFILE"))
|
||||||
|
@ -306,11 +307,11 @@ For profile-local cache files, use `doom-profile-cache-dir' instead.")
|
||||||
(file-name-concat doom-local-dir "state/"))
|
(file-name-concat doom-local-dir "state/"))
|
||||||
"Where Doom stores its global state files.
|
"Where Doom stores its global state files.
|
||||||
|
|
||||||
State files contain unessential, unportable, but persistent data which, if lost
|
State files contain unessential, non-portable, but persistent data which, if
|
||||||
won't cause breakage, but may be inconvenient as they cannot be automatically
|
lost won't cause breakage, but may be inconvenient as they cannot be
|
||||||
regenerated or restored. For example, a recently-opened file list is not
|
automatically regenerated or restored. For example, a recently-opened file list
|
||||||
essential, but losing it means losing this record, and restoring it requires
|
is not essential, but losing it means losing this record, and restoring it
|
||||||
revisiting all those files.
|
requires revisiting all those files.
|
||||||
|
|
||||||
Use this for: history, logs, user-saved data, autosaves/backup files, known
|
Use this for: history, logs, user-saved data, autosaves/backup files, known
|
||||||
projects, recent files, bookmarks.
|
projects, recent files, bookmarks.
|
||||||
|
@ -332,7 +333,7 @@ For profile-local state files, use `doom-profile-state-dir' instead.")
|
||||||
|
|
||||||
(defconst doom-profile-dir
|
(defconst doom-profile-dir
|
||||||
(file-name-concat doom-profile-data-dir "@" (cdr doom-profile))
|
(file-name-concat doom-profile-data-dir "@" (cdr doom-profile))
|
||||||
"Where generated files for the active profile are kept.")
|
"Where generated files for the active profile (for Doom's core) are kept.")
|
||||||
|
|
||||||
;; DEPRECATED: Will be moved to cli/env
|
;; DEPRECATED: Will be moved to cli/env
|
||||||
(defconst doom-env-file
|
(defconst doom-env-file
|
||||||
|
@ -393,10 +394,10 @@ 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 default system font) can impact startup time
|
||||||
;; dramatically. The larger the delta, the greater the delay. Even trivial
|
;; dramatically. The larger the delta, the greater the delay. Even trivial
|
||||||
;; deltas can yield up to a ~1000ms loss, depending on font size and
|
;; deltas can yield up to a ~1000ms loss, depending also on
|
||||||
;; `window-system'. PGTK seems least affected and NS/MAC the most.
|
;; `window-system' (PGTK builds seem least affected and NS/MAC the most).
|
||||||
(setq frame-inhibit-implied-resize t)
|
(setq frame-inhibit-implied-resize t)
|
||||||
|
|
||||||
;; PERF: A fair bit of startup time goes into initializing the splash and
|
;; PERF: A fair bit of startup time goes into initializing the splash and
|
||||||
|
@ -432,14 +433,14 @@ users).")
|
||||||
(selected-frame) nil t))))
|
(selected-frame) nil t))))
|
||||||
|
|
||||||
;; PERF: `load-suffixes' and `load-file-rep-suffixes' are consulted on each
|
;; 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
|
;; `require' and `load'. Doom won't load any modules this early, so I omit
|
||||||
;; .so for a tiny startup boost. Is later restored in doom-start.
|
;; *.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"))
|
||||||
(set-default-toplevel-value 'load-file-rep-suffixes '(""))
|
(set-default-toplevel-value 'load-file-rep-suffixes '(""))
|
||||||
;; COMPAT: Undo any problematic startup optimizations; from this point, I
|
;; COMPAT: Undo any problematic startup optimizations eventually, to prevent
|
||||||
;; make no assumptions about what might be loaded in userland.
|
;; incompatibilities with anything loaded in userland.
|
||||||
(add-hook! 'doom-before-init-hook
|
(add-hook! 'doom-before-init-hook
|
||||||
(defun doom--reset-load-suffixes-h ()
|
(defun doom--reset-load-suffixes-h ()
|
||||||
(setq load-suffixes (get 'load-suffixes 'initial-value)
|
(setq load-suffixes (get 'load-suffixes 'initial-value)
|
||||||
|
@ -458,10 +459,10 @@ users).")
|
||||||
(setq custom-dont-initialize nil)))
|
(setq custom-dont-initialize nil)))
|
||||||
|
|
||||||
;; PERF: The mode-line procs a couple dozen times during startup, before the
|
;; PERF: The mode-line procs a couple dozen times during startup, before the
|
||||||
;; user can even see the first mode-line. This is normally fast, but we
|
;; user even sees the first mode-line. This is normally fast, but we can't
|
||||||
;; can't predict what the user (or packages) will put into the mode-line.
|
;; predict what the user (or packages) will put into the mode-line. Also,
|
||||||
;; Also, mode-line packages have a bad habit of throwing performance to
|
;; mode-line packages have a bad habit of throwing performance to the
|
||||||
;; the wind, so best we just disable the mode-line until we can see one.
|
;; wind, so best we just disable the mode-line until we can see one.
|
||||||
(put 'mode-line-format 'initial-value (default-toplevel-value 'mode-line-format))
|
(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))
|
||||||
|
@ -475,10 +476,9 @@ users).")
|
||||||
;; garbled after startup (or in case of an startup error).
|
;; garbled after startup (or in case of an startup error).
|
||||||
(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
|
|
||||||
inhibit-message nil)
|
inhibit-message nil)
|
||||||
(redraw-frame))
|
(remove-hook 'post-command-hook #'doom--reset-inhibited-vars-h))
|
||||||
(add-hook 'after-init-hook #'doom--reset-inhibited-vars-h)
|
(add-hook 'post-command-hook #'doom--reset-inhibited-vars-h -100)
|
||||||
|
|
||||||
;; PERF: Doom disables the UI elements by default, so that there's less for
|
;; PERF: Doom disables the UI elements by default, so that there's less for
|
||||||
;; the frame to initialize. However, `tool-bar-setup' is still called and
|
;; the frame to initialize. However, `tool-bar-setup' is still called and
|
||||||
|
@ -497,29 +497,25 @@ users).")
|
||||||
(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-hacks)
|
(define-advice startup--load-user-init-file (:around (fn &rest args) undo-hacks 95)
|
||||||
"Undo Doom's startup optimizations to prep for the user's session."
|
"Undo Doom's startup optimizations to prep for the user's session."
|
||||||
(let (init)
|
(unwind-protect
|
||||||
(unwind-protect
|
(progn
|
||||||
(progn
|
(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 (file) (load file nil 'nomessage))
|
||||||
(letf! ((defun load-file (file) (load file nil 'nomessage))
|
(defun load (file &optional noerror _nomessage &rest args)
|
||||||
(defun load (file &optional noerror _nomessage &rest args)
|
(apply load file noerror t args)))
|
||||||
(apply load file noerror t args)))
|
(load site-run-file t t))))
|
||||||
(load site-run-file t t))))
|
(apply fn args))
|
||||||
(apply fn args) ; start up as normal
|
;; Now it's safe to be verbose.
|
||||||
(setq init t))
|
(setq-default inhibit-message nil)
|
||||||
(when (or (not init) init-file-had-error)
|
;; COMPAT: Once startup is sufficiently complete, undo our earlier
|
||||||
;; If we don't undo our inhibit-{message,redisplay} and there's an
|
;; optimizations to reduce the scope of potential edge cases.
|
||||||
;; error, we'll see nothing but a blank Emacs frame.
|
(advice-remove #'tool-bar-setup #'ignore)
|
||||||
(doom--reset-inhibited-vars-h))
|
(add-transient-hook! 'tool-bar-mode (tool-bar-setup))
|
||||||
;; COMPAT: Once startup is sufficiently complete, undo our earlier
|
(unless (default-toplevel-value 'mode-line-format)
|
||||||
;; optimizations to reduce the scope of potential edge cases.
|
(setq-default mode-line-format (get 'mode-line-format 'initial-value)))))
|
||||||
(advice-remove #'tool-bar-setup #'ignore)
|
|
||||||
(add-transient-hook! 'tool-bar-mode (tool-bar-setup))
|
|
||||||
(unless (default-toplevel-value 'mode-line-format)
|
|
||||||
(setq-default mode-line-format (get 'mode-line-format 'initial-value))))))
|
|
||||||
|
|
||||||
;; PERF: Unset a non-trivial list of command line options that aren't
|
;; PERF: Unset a non-trivial list of command line options that aren't
|
||||||
;; relevant to this session, but `command-line-1' still processes.
|
;; relevant to this session, but `command-line-1' still processes.
|
||||||
|
@ -540,14 +536,14 @@ empty. Each context describes what phase Doom is in, and may respond to.
|
||||||
|
|
||||||
All valid contexts:
|
All valid contexts:
|
||||||
cli -- while executing a Doom CLI
|
cli -- while executing a Doom CLI
|
||||||
compile -- while byte-compilation is in progress
|
compile -- while byte-compiling packages
|
||||||
eval -- during inline evaluation of elisp
|
eval -- during interactive evaluation of elisp
|
||||||
init -- while doom is formally starting up for the first time, after its
|
init -- while doom is formally starting up for the first time, after its
|
||||||
core libraries are loaded, but before user config is.
|
core libraries are loaded, but before $DOOMDIR is
|
||||||
modules -- while loading modules and their files
|
modules -- while loading modules configuration files (but not packages)
|
||||||
sandbox -- This session was launched from Doom's sandbox.
|
sandbox -- This session was launched from Doom's sandbox
|
||||||
packages -- when packagedefs are being read
|
packages -- while a module's packages.el's file is being evaluated
|
||||||
reload -- while reloading doom")
|
reload -- while reloading doom with `doom/reload'")
|
||||||
(put 'doom-context 'valid-values '(cli compile eval init modules packages reload doctor sandbox))
|
(put 'doom-context 'valid-values '(cli compile eval init modules packages reload doctor sandbox))
|
||||||
(put 'doom-context 'risky-local-variable t)
|
(put 'doom-context 'risky-local-variable t)
|
||||||
|
|
||||||
|
@ -558,7 +554,9 @@ All valid contexts:
|
||||||
(list context "Unrecognized context" valid)))))
|
(list context "Unrecognized context" valid)))))
|
||||||
|
|
||||||
(defun doom-context-p (context)
|
(defun doom-context-p (context)
|
||||||
"Return t if CONTEXT is active (i.e. in `doom-context')."
|
"Return t if CONTEXT is active, nil otherwise.
|
||||||
|
|
||||||
|
See `doom-context' for possible values for CONTEXT."
|
||||||
(if (memq context doom-context) t))
|
(if (memq context doom-context) t))
|
||||||
|
|
||||||
(defun doom-context-push (context)
|
(defun doom-context-push (context)
|
||||||
|
|
|
@ -7,8 +7,5 @@
|
||||||
(when (modulep! +childframe)
|
(when (modulep! +childframe)
|
||||||
(package! flycheck-posframe :pin "19896b922c76a0f460bf3fe8d8ebc2f9ac9028d8")))
|
(package! flycheck-posframe :pin "19896b922c76a0f460bf3fe8d8ebc2f9ac9028d8")))
|
||||||
|
|
||||||
;; Flymake
|
|
||||||
(when (modulep! +flymake)
|
(when (modulep! +flymake)
|
||||||
;; NOTE: remove when straight bumped to support nonGnuELPA
|
|
||||||
(package! popon :recipe (:repo "https://codeberg.org/akib/emacs-popon"))
|
|
||||||
(package! flymake-popon :recipe (:repo "https://codeberg.org/akib/emacs-flymake-popon")))
|
(package! flymake-popon :recipe (:repo "https://codeberg.org/akib/emacs-flymake-popon")))
|
||||||
|
|
|
@ -28,8 +28,10 @@ TAB/S-TAB.")
|
||||||
"If non-nil, prefer navigating org tables over cycling candidates with
|
"If non-nil, prefer navigating org tables over cycling candidates with
|
||||||
TAB/S-TAB.")
|
TAB/S-TAB.")
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;;; Packages
|
;;; Packages
|
||||||
|
|
||||||
(use-package! corfu
|
(use-package! corfu
|
||||||
:hook (doom-first-input . global-corfu-mode)
|
:hook (doom-first-input . global-corfu-mode)
|
||||||
:init
|
:init
|
||||||
|
|
|
@ -2,7 +2,6 @@
|
||||||
;;;###if (modulep! :tools lsp)
|
;;;###if (modulep! :tools lsp)
|
||||||
|
|
||||||
(defvar +format-lsp--last nil)
|
(defvar +format-lsp--last nil)
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(define-minor-mode +format-with-lsp-mode
|
(define-minor-mode +format-with-lsp-mode
|
||||||
"Toggles `lsp-mode'/`eglot' integration with `apheleia-mode' in this buffer.
|
"Toggles `lsp-mode'/`eglot' integration with `apheleia-mode' in this buffer.
|
||||||
|
|
|
@ -1,8 +1,12 @@
|
||||||
;;; tools/dired/config.el -*- lexical-binding: t; -*-
|
;;; emacs/dired/config.el -*- lexical-binding: t; -*-
|
||||||
|
|
||||||
(defvar +dired-dirvish-icon-provider 'nerd-icons
|
(defvar +dired-dirvish-icon-provider 'nerd-icons
|
||||||
"Icon provider to use for dirvish when the module is enabled.")
|
"Icon provider to use for dirvish when the module is enabled.")
|
||||||
|
|
||||||
|
|
||||||
|
;;
|
||||||
|
;;; Packages
|
||||||
|
|
||||||
(use-package! dired
|
(use-package! dired
|
||||||
:commands dired-jump
|
:commands dired-jump
|
||||||
:init
|
:init
|
||||||
|
|
|
@ -18,7 +18,7 @@
|
||||||
;; HACK: The intro message changed in newer versions of Fava, plus, the output
|
;; HACK: The intro message changed in newer versions of Fava, plus, the output
|
||||||
;; could contain ANSI codes, causing the `beancount-fava' command to not
|
;; could contain ANSI codes, causing the `beancount-fava' command to not
|
||||||
;; open the server in the browser after the server has started.
|
;; open the server in the browser after the server has started.
|
||||||
;; REVIEW: PR this uptsream!
|
;; REVIEW: PR this upstream!
|
||||||
(defadvice! +beancount--open-in-browser-after-starting-fix-a (_process output)
|
(defadvice! +beancount--open-in-browser-after-starting-fix-a (_process output)
|
||||||
:override #'beancount--fava-filter
|
:override #'beancount--fava-filter
|
||||||
(save-match-data
|
(save-match-data
|
||||||
|
|
|
@ -255,11 +255,7 @@ If rtags or rdm aren't available, fail silently instead of throwing a breaking e
|
||||||
c++-mode-local-vars-hook
|
c++-mode-local-vars-hook
|
||||||
objc-mode-local-vars-hook
|
objc-mode-local-vars-hook
|
||||||
cmake-mode-local-vars-hook
|
cmake-mode-local-vars-hook
|
||||||
;; HACK Can't use cude-mode-local-vars-hook because cuda-mode
|
cuda-mode-local-vars-hook)
|
||||||
;; isn't a proper major mode (just a plain function
|
|
||||||
;; masquarading as one, so your standard mode hooks won't fire
|
|
||||||
;; from switching to cuda-mode).
|
|
||||||
cuda-mode-hook)
|
|
||||||
:append #'lsp!)
|
:append #'lsp!)
|
||||||
|
|
||||||
(map! :after ccls
|
(map! :after ccls
|
||||||
|
|
|
@ -4,12 +4,12 @@
|
||||||
(package! cmake-mode
|
(package! cmake-mode
|
||||||
:recipe (:host github :repo "emacsmirror/cmake-mode" :files (:defaults "*"))
|
:recipe (:host github :repo "emacsmirror/cmake-mode" :files (:defaults "*"))
|
||||||
:pin "b08b5d9045308362a623a4f576896d55ffecfd52")
|
:pin "b08b5d9045308362a623a4f576896d55ffecfd52")
|
||||||
(package! cuda-mode :pin "7f593518fd135fc6af994024bcb47986dfa502d2")
|
(package! cuda-mode :pin "7dd07a20c36b41c8cb38cdec989673b73d03e144")
|
||||||
(package! demangle-mode :pin "04f545adab066708d6151f13da65aaf519f8ac4e")
|
(package! demangle-mode :pin "04f545adab066708d6151f13da65aaf519f8ac4e")
|
||||||
(package! disaster :pin "16bba9afb92aacf06c088c29ba47813b65a80d87")
|
(package! disaster :pin "16bba9afb92aacf06c088c29ba47813b65a80d87")
|
||||||
(unless (modulep! +tree-sitter)
|
(unless (modulep! +tree-sitter)
|
||||||
(package! modern-cpp-font-lock :pin "43c6b68ff58fccdf9deef11674a172e4eaa8455c"))
|
(package! modern-cpp-font-lock :pin "43c6b68ff58fccdf9deef11674a172e4eaa8455c"))
|
||||||
(package! opencl-mode :pin "10ae7742d57ae79d96cf52753800b3490589b3f6")
|
(package! opencl-mode :pin "204d5d9e0f5cb2cbe810f2933230eb08fe2c7695")
|
||||||
|
|
||||||
(when (package! glsl-mode :pin "9b2e5f28e489a1f73c4aed734105618ac0dc0c43")
|
(when (package! glsl-mode :pin "9b2e5f28e489a1f73c4aed734105618ac0dc0c43")
|
||||||
(when (modulep! :completion company)
|
(when (modulep! :completion company)
|
||||||
|
@ -20,7 +20,7 @@
|
||||||
(if (modulep! +lsp)
|
(if (modulep! +lsp)
|
||||||
(unless (modulep! :tools lsp +eglot)
|
(unless (modulep! :tools lsp +eglot)
|
||||||
;; ccls package is necessary only for lsp-mode.
|
;; ccls package is necessary only for lsp-mode.
|
||||||
(package! ccls :pin "8648238a92e5fd1ca1b693c99d2824f8804736b0"))
|
(package! ccls :pin "41399b0eba03f9b80769ced71501ba702db4cd62"))
|
||||||
(when (package! irony :pin "40e0ce19eb850bdf1f77225f11713cc816250d95")
|
(when (package! irony :pin "40e0ce19eb850bdf1f77225f11713cc816250d95")
|
||||||
(package! irony-eldoc :pin "73e79a89fad982a2ba072f2fcc1b4e41f0aa2978")
|
(package! irony-eldoc :pin "73e79a89fad982a2ba072f2fcc1b4e41f0aa2978")
|
||||||
(when (and (modulep! :checkers syntax)
|
(when (and (modulep! :checkers syntax)
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
(when (modulep! :completion company)
|
(when (modulep! :completion company)
|
||||||
(package! company-irony :pin "b44711dfce445610c1ffaec4951c6ff3882b216a")
|
(package! company-irony :pin "b44711dfce445610c1ffaec4951c6ff3882b216a")
|
||||||
(package! company-irony-c-headers :pin "72c386aeb079fb261d9ec02e39211272f76bbd97")))
|
(package! company-irony-c-headers :pin "72c386aeb079fb261d9ec02e39211272f76bbd97")))
|
||||||
(when (package! rtags :pin "bd1c818a993aebdfa22053cdd816ef0e3df7cfa1")
|
(when (package! rtags :pin "f472b5d0a05270d5c93945b6a71771ab69068147")
|
||||||
(when (modulep! :completion ivy)
|
(when (modulep! :completion ivy)
|
||||||
(package! ivy-rtags))
|
(package! ivy-rtags))
|
||||||
(when (modulep! :completion helm)
|
(when (modulep! :completion helm)
|
||||||
|
|
|
@ -10,6 +10,7 @@
|
||||||
(defvar +clojure-load-clj-refactor-with-lsp nil
|
(defvar +clojure-load-clj-refactor-with-lsp nil
|
||||||
"Whether or not to include clj-refactor along with clojure-lsp.")
|
"Whether or not to include clj-refactor along with clojure-lsp.")
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;;; Packages
|
;;; Packages
|
||||||
|
|
||||||
|
|
|
@ -69,6 +69,7 @@
|
||||||
(set-company-backend! 'go-mode 'company-go)
|
(set-company-backend! 'go-mode 'company-go)
|
||||||
(setq company-go-show-annotation t))
|
(setq company-go-show-annotation t))
|
||||||
|
|
||||||
|
|
||||||
(use-package! flycheck-golangci-lint
|
(use-package! flycheck-golangci-lint
|
||||||
:when (and (modulep! :checkers syntax)
|
:when (and (modulep! :checkers syntax)
|
||||||
(not (modulep! :checkers syntax +flymake)))
|
(not (modulep! :checkers syntax +flymake)))
|
||||||
|
|
|
@ -6,7 +6,7 @@
|
||||||
|
|
||||||
|
|
||||||
;;
|
;;
|
||||||
;;; Common packages
|
;;; Packages
|
||||||
|
|
||||||
(after! haskell-mode
|
(after! haskell-mode
|
||||||
(setq haskell-process-suggest-remove-import-lines t ; warnings for redundant imports etc
|
(setq haskell-process-suggest-remove-import-lines t ; warnings for redundant imports etc
|
||||||
|
|
|
@ -132,5 +132,5 @@
|
||||||
(opam-switch-set-switch (tuareg-opam-current-compiler)))
|
(opam-switch-set-switch (tuareg-opam-current-compiler)))
|
||||||
|
|
||||||
|
|
||||||
(eval-when! (modulep! +tree-sitter)
|
(when (modulep! +tree-sitter)
|
||||||
(add-hook 'tuareg-mode-local-vars-hook #'tree-sitter!))
|
(add-hook 'tuareg-mode-local-vars-hook #'tree-sitter!))
|
||||||
|
|
|
@ -18,7 +18,9 @@
|
||||||
;; Visit files opened outside of Emacs in existing frame, not a new one
|
;; Visit files opened outside of Emacs in existing frame, not a new one
|
||||||
(setq ns-pop-up-frames nil)
|
(setq ns-pop-up-frames nil)
|
||||||
|
|
||||||
;; sane trackpad/mouse scroll settings
|
;; Sane trackpad/mouse scroll settings. Also disables smooth scrolling because
|
||||||
|
;; it's disturbingly clunky and slow without something like
|
||||||
|
;; jdtsmith/ultra-scroll-mac.
|
||||||
(setq mac-redisplay-dont-reset-vscroll t
|
(setq mac-redisplay-dont-reset-vscroll t
|
||||||
mac-mouse-wheel-smooth-scroll nil)
|
mac-mouse-wheel-smooth-scroll nil)
|
||||||
|
|
||||||
|
|
|
@ -4,15 +4,6 @@
|
||||||
:commands eglot eglot-ensure
|
:commands eglot eglot-ensure
|
||||||
:hook (eglot-managed-mode . +lsp-optimization-mode)
|
:hook (eglot-managed-mode . +lsp-optimization-mode)
|
||||||
:init
|
:init
|
||||||
(defadvice! +eglot--ensure-available-mode-a (fn)
|
|
||||||
"Run `eglot-ensure' if the current mode has support."
|
|
||||||
:around #'eglot-ensure
|
|
||||||
(when (alist-get major-mode eglot-server-programs nil nil
|
|
||||||
(lambda (modes key)
|
|
||||||
(if (listp modes)
|
|
||||||
(member key modes)
|
|
||||||
(eq key modes))))
|
|
||||||
(funcall fn)))
|
|
||||||
(setq eglot-sync-connect 1
|
(setq eglot-sync-connect 1
|
||||||
eglot-autoshutdown t
|
eglot-autoshutdown t
|
||||||
;; NOTE: We disable eglot-auto-display-help-buffer because :select t in
|
;; NOTE: We disable eglot-auto-display-help-buffer because :select t in
|
||||||
|
|
|
@ -5,6 +5,9 @@
|
||||||
"Dispatch to call the currently used lsp client entrypoint"
|
"Dispatch to call the currently used lsp client entrypoint"
|
||||||
(interactive)
|
(interactive)
|
||||||
(if (modulep! +eglot)
|
(if (modulep! +eglot)
|
||||||
(eglot-ensure)
|
(when (require 'eglot nil t)
|
||||||
|
(if (eglot--lookup-mode major-mode)
|
||||||
|
(eglot-ensure)
|
||||||
|
(eglot--message "No client defined for %s" major-mode)))
|
||||||
(unless (bound-and-true-p lsp-mode)
|
(unless (bound-and-true-p lsp-mode)
|
||||||
(lsp-deferred))))
|
(lsp-deferred))))
|
||||||
|
|
|
@ -227,7 +227,10 @@ Only has an effect in GUI Emacs.")
|
||||||
(:map magit-status-mode-map
|
(:map magit-status-mode-map
|
||||||
:nv "gz" #'magit-refresh)
|
:nv "gz" #'magit-refresh)
|
||||||
(:map magit-diff-mode-map
|
(:map magit-diff-mode-map
|
||||||
:nv "gd" #'magit-jump-to-diffstat-or-diff))
|
:nv "gd" #'magit-jump-to-diffstat-or-diff)
|
||||||
|
;; Don't open recursive process buffers
|
||||||
|
(:map magit-process-mode-map
|
||||||
|
:nv "`" #'ignore))
|
||||||
|
|
||||||
;; A more intuitive behavior for TAB in magit buffers:
|
;; A more intuitive behavior for TAB in magit buffers:
|
||||||
(define-key! 'normal
|
(define-key! 'normal
|
||||||
|
|
|
@ -163,6 +163,7 @@ used.
|
||||||
\(fn PREDICATE &key IGNORE ACTIONS SIDE SIZE WIDTH HEIGHT SLOT VSLOT TTL QUIT SELECT MODELINE AUTOSAVE PARAMETERS)"
|
\(fn PREDICATE &key IGNORE ACTIONS SIDE SIZE WIDTH HEIGHT SLOT VSLOT TTL QUIT SELECT MODELINE AUTOSAVE PARAMETERS)"
|
||||||
(declare (indent defun))
|
(declare (indent defun))
|
||||||
(push (+popup-make-rule predicate plist) +popup--display-buffer-alist)
|
(push (+popup-make-rule predicate plist) +popup--display-buffer-alist)
|
||||||
|
;; TODO: Don't overwrite user entries in `display-buffer-alist'
|
||||||
(when (bound-and-true-p +popup-mode)
|
(when (bound-and-true-p +popup-mode)
|
||||||
(setq display-buffer-alist +popup--display-buffer-alist))
|
(setq display-buffer-alist +popup--display-buffer-alist))
|
||||||
+popup--display-buffer-alist)
|
+popup--display-buffer-alist)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue