Commit Graph

442 Commits

Author SHA1 Message Date
3643c4dadd fix(cli): void-function directory-empty-p error
directory-empty-p was introduced in 28.1, but Doom still supports 27.1,
so 27.x users would see this error when running any bin/doom command
that clones packages.

Fix: #7779
Amend: 1fa8d3a4b9
2024-03-30 11:50:57 -04:00
b01e496405 fix(cli): doom sync: rebuild-all loop
Addresses an edge case where 'doom sync' could fall into an inescapable
'rebuild all packages' loop.

Fix: #7775
2024-03-29 23:41:12 -04:00
65240e9b92 fix(cli): suppress 'checked out X' when X = nil 2024-03-29 12:32:12 -04:00
544e579c44 fix(cli): doom upgrade: ensure upgrade remote is deleted
It seems the temporary branch that 'doom upgrade' creates is sometimes
left over after a 'doom upgrade', preventing the next 'git fetch' from
completing.

Ref: #7771
2024-03-28 09:43:43 -04:00
b443371981 fix(cli): doom install: $DOOMDIR templates (part 2)
Caused by a regression originally introduced in b6b755d, but incorrectly
fixed in 89c56a3. Don't code while sleep deprived, kids.

Amend: 89c56a3393
Amend: b6b755dea4
2024-03-28 00:23:17 -04:00
89c56a3393 fix(cli): doom install: $DOOMDIR templates
Caused by a regression introduced in b6b755d.

Amend: b6b755dea4
2024-03-27 17:15:43 -04:00
3f966f49d8 fix(cli): doom upgrade: remove doom-compile-clean call
This function was removed in 63c470b.

Amend: 63c470bff3
2024-03-27 10:27:44 -04:00
d6a3450917 fix(cli): shell-quote-argument: wrong-number-of-args error
shell-quote-argument's second argument was introduced in 29.1. Users on
older versions of Emacs will get an error.

Amend: d5bad5b430
2024-03-27 10:27:05 -04:00
b6b755dea4 fix(cli): doom install: $DOOMDIR paths in output
Close: #7768
Co-authored-by: plajjan <plajjan@users.noreply.github.com>
2024-03-27 09:39:05 -04:00
201051c368 fix(cli): doom sync: suppress rebuild prompt when upgrading
12a765c introduced suppression of package-rebuilding prompts on 'doom
upgrade', but inadvertently reversed the check. This fixes that (and
refactors the if/or tree into a `cond`).

Amend: 12a765c509
2024-03-27 00:26:18 -04:00
aef2b12100 feat(cli): doom upgrade: add -B option
To mirror doom sync's -B option.
2024-03-27 00:26:18 -04:00
d5bad5b430 fix(cli): straight: regurgitate type errors as connection errors
See included comment for explanation.
2024-03-26 22:58:56 -04:00
c0c52f0f61 fix: ensure load-path et co are set on doom/reload
This addresses a number of missing-package errors after running
doom/reload.

Fix: #7764
Fix: #7636
Fix: #7182
2024-03-26 22:25:29 -04:00
12a765c509 feat(cli): doom sync: change -B to suppress rebuilding
Prior to this, -B would suppress the prompt for package rebuilding if
your Emacs version or hostname changed. Now, it fully inhibits
rebuilding in either case.

Fix: #7760
Ref: cff091982e
2024-03-26 21:36:14 -04:00
286be1b249 fix(cli): void-variable doom-profile-env-file-name error
This variable ref snuck into cff0919, but hasn't been introduced yet.

Fix: #7755
Amend: cff091982e
2024-03-24 18:55:43 -04:00
6d682eef85 fix(cli): void-function doom-packages-install error
Function was renamed to doom-packages-ensure in cff0919.

Fix: #7755
Amend: cff091982e
2024-03-24 18:38:18 -04:00
8d50cd8bfb tweak(lib): print!: join (path ...) segments 2024-03-24 18:09:54 -04:00
2df24d29f3 bump: :core
Fuco1/smartparens@0778a8a840 -> Fuco1/smartparens@ddc6233ea6
bbatsov/projectile@e45f0b0cc4 -> bbatsov/projectile@0163b335a1
emacs-compat/compat@eb8fbfa558 -> emacs-compat/compat@8d4e8a3666
emacs-straight/project@10a6b691e3 -> emacs-straight/project@b6989856ab
joddie/pcre2el@018531ba0c -> joddie/pcre2el@380723b270
jscheid/dtrt-indent@0230ec5032 -> jscheid/dtrt-indent@5d1b44f9a1
justbur/emacs-which-key@4d20bc8525 -> justbur/emacs-which-key@96911a1d3f
noctuid/general.el@bda777cd30 -> noctuid/general.el@ced143c30d
radian-software/straight.el@b3760f5829 -> radian-software/straight.el@b1062df10b
rainstormstudio/nerd-icons.el@c6a4acf194 -> rainstormstudio/nerd-icons.el@8095215a50
2024-03-24 18:08:09 -04:00
e24a583d5c tweak: move project-list-file to profile data dir
Ref: doomemacs/core#1
2024-03-24 18:03:13 -04:00
77df11af11 refactor(cli): remove unused cli/help.el
This file was "renamed" to meta.el at some point, but the old file was
forgotten (and unused).
2024-03-24 18:03:13 -04:00
32ef0989ab fix(cli): appease byte-compiler wrt defcli-obsolete! 2024-03-24 18:03:13 -04:00
bfd21edeeb nit: reformat core packages.el 2024-03-24 18:03:13 -04:00
2591201aa1 refactor(cli): rename 'doom purge' -> 'doom gc'
'doom purge' is now deprecated.

Also changes 'doom sync's -p option to --gc. Since GCing causes the loss
of historical data, I'd rather it be a long option to make it a little
harder to do accidentally.
2024-03-24 18:03:13 -04:00
cff091982e fix(cli): rewrite 'doom sync'; deprecate 'doom build'
This changes 'doom sync' to be smarter about responding to changed
package recipes/pins, changes in Emacs version, or instances where the user
has copied a config to a new system.

In all these cases, the user would formerly have to know about a
specific combination of 'doom sync -u' and 'doom build' to ensure Doom
is in a good state. With this change, 'doom sync' handles all these
cases.

Also, 'doom build' is now deprecated (and 'doom sync' now has a
--rebuild option to mimic its old behavior).

Also also, sometimes, a package may silently fail when cloned (which
used to result in an empty repo). Now, if this is detected, cloning will
be re-attempted up to 3 times before aborting with much more visible
error.

Note: these are stopgap solutions, until v3 is finished.
2024-03-24 18:03:12 -04:00
1fa8d3a4b9 fix(cli): retry on failure to clone packages (or abort)
Something often reported are file-missing errors when a package that
should be present isn't. This can easily happen if, say, during a 'doom
sync' or 'doom upgrade' a package fails to clone correctly and the user
misses the errors, then tries to carry on as normal. What's worse is
that Straight leaves behind an empty directory, which it treats as a
sign that the package has been cloned correctly, so it doesn't raise any
fuss over them.

With this change, 'doom sync' (and 'doom upgrade') will now try again,
if the clone process fails the first time (up to 3 times) before
aborting the whole process altogether, which should be loud enough for
users not to miss. Note that these failures at 99.99% because of
network (or upstream downtime) issues.

For now, this does leave Doom in an incomplete state (until you try
again when the connection issue is resolved), but a rollback step will
be added in v3 to prevent this, as well as better error messages (as
well as @doomelpa mirror for packages on less reliable hosts, like
codeberg, savannah, etc).
2024-03-24 18:03:12 -04:00
63c470bff3 refactor!(cli): remove compile and clean commands
BREAKING CHANGE: This removes the 'doom compile' and 'doom clean'
commands, and offers no immediate replacement for them (and no plan to
include one). In the future, byte-compilation of Doom's internals will
be baked into 'doom sync', but until then, Doom is not optimized to take
advantage of byte-compilation, and forcing it provides no benefit.
2024-03-24 18:03:12 -04:00
bbadabda51 feat: allow setting evil states for leader keys
This allows adjusting the evil-states a leader key is active for.
2024-03-22 10:24:21 -04:00
f71689304e tweak: enable startup optimizations in debug mode
Before this, startup optimizations were disabled in debug mode, but more
often than not, this just made it difficult to reproduce some errors at
startup.
2024-03-19 21:42:09 -04:00
6b55c6adc6 refactor: inline doom--make-font-specs
This function isn't (and won't be) used anywhere else. No reason for it
to be its own function.
2024-03-19 20:47:21 -04:00
1d99d1f191 refactor: consolidate startup--load-user-init-file advice
Splitting up all this advice was unnecessary noise.
2024-03-19 20:47:21 -04:00
1d9b102181 fix: shut up site-lisp
One various OSes, Emacs ships with site-lisp files that load
OS/architecture-specific config (like native-comp config), or load-lines
for Emacs packages installed via your OS package manager (like mu4e).
Output from these are rarely suppressed, for some reason, which causes
noise in *Messages* at startup, which triggers a redraw, which can be
very expensive during startup, depending on your window system.
2024-03-19 20:47:21 -04:00
5e7c769315 fix: ensure inhibit-* is reset on startup error 2024-03-19 20:47:20 -04:00
c20c2aa36e fix: tiny fonts in (daemon) GUI frames
Due to a suppressed void-variable error, font initialization is
short-circuited across daemon frames when the fonts are reloaded or
changed (which is also triggered by changing themes), resulting in
malformed (often tiny) fonts in GUI frames.

Fix: #7730
2024-03-13 11:02:12 -04:00
fec28a19e1 fix: save-place: don't move point more than once
In some contexts, like org-agenda-switch-to visiting a TODO in an agenda
file, the visiting command will move the cursor after opening the file.
If save-place moves the cursor yet again, the cursor will end up in an
unpredictable place.
2024-03-13 01:00:38 -04:00
b382255704 release(modules): 24.03.0-dev
Ref: 2b39e41368
2024-03-11 03:59:38 -04:00
a0a1babc0d fix(cli): silence output from site-lisp
Some site files will forcibly undo `inhibit-message` or set
`force-load-messages`. This ensures site lisp files don't make
unnecessary noise at startup.
2024-03-11 03:59:37 -04:00
559171575e refactor(lib): doom-region-end: extract marker 2024-03-11 03:59:37 -04:00
61327bf777 refactor(lib): use doom-region-{beginning,end} 2024-03-11 03:59:37 -04:00
4be265ead7 fix: doom-incremental-first-idle-timer: type error when nil (part 2)
Amend: 2bce9dbc1a
Ref: #7710
2024-03-11 03:59:37 -04:00
c6063de439 nit: revise and reformat comments 2024-03-11 00:53:44 -04:00
7f484f7010 refactor: remove explain-pause-mode
Tools like these will be moved to a benchmark module later (or perhaps
to `:lang emacs-lisp`). For the time being, it only takes up extra space
that few users use.
2024-03-11 00:53:44 -04:00
198fe82b6d feat(lib): backport find-sibling-file
I will slowly phase out projectile in favor of project.el, starting with
projectile-find-other-file, which -- as of Emacs 29 -- has a native
alternative: `find-sibling-file`.

Ref: doomemacs/community#1
2024-03-11 00:53:44 -04:00
3b405c8d81 fix(lib): only use alpha-background on pgtk builds
Fix: #7721
2024-03-11 00:53:44 -04:00
2bce9dbc1a fix: doom-incremental-first-idle-timer: type error when nil
If the user uses the doom-load-packages-incrementally function directly,
and has set doom-incremental-first-idle-timer set to nil, it will throw
a type error.

Close: #7710
2024-03-11 00:53:43 -04:00
645c856de0 fix(popup): allow killing popup buffers
Currently, `SPC b k` does not allow us to kill popup buffers. If we are
say using a comint/eshell/eat buffer and we borked the state while
testing hooks or we sent EOF to the underlying process, our intention
with `SPC b k` is to kill the underlying buffer.
2024-03-05 01:14:38 -05:00
3dbdcb7947 fix: define doom-font-error
Was meant to be in 98d753e.

Amend: 98d753e103
2024-03-04 22:20:17 -05:00
2757a97a30 fix(org): don't change tab-width in org-mode
Recently, org-mode made a non-standard tab-width an error state.
Unfortunately, it's way too easy for users to accidentally change
it (e.g. with editorconfig, indiscriminate setter hooks, or other
packages), and since there is zero reason to ever want a non-standard
tab-width in org-mode, I not only exclude it from dtrt-indent as a
global default (i.e. not only as part of :lang org), but I add a late
org-mode-hook hook to reset tab-width, just in case.
2024-03-04 22:07:51 -05:00
98d753e103 fix: blank frame on can't-find-font error during startup
Due to our inhibit-redisplay hack, a missing font could lead to a blank
Emacs after startup. This change fixes that so that not only is an error
emitted when Emacs can't find your font, but the error will be a little
more readable.

This is a stopgap solution until I finish a better one I'm preparing for
v3.

Fix: #7055
2024-02-20 05:37:28 -05:00
TEC
7984cd8e0f tweak(cli): use fancier string-dist suggestion alg
To improve the quality of "did you mean?"-style suggestions, shift from
using Ratcliff-Obershelp similarity to the Restricted
Damerau-Levenshtein string distance (also known as Optimal String
Alignment).

This code is a translation of a Julia implementation that I wrote a
while ago:
https://github.com/tecosaur/DataToolkitBase.jl/blob/v0.4.1/src/model/utils.jl#L40-L107

See https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance#Optimal_string_alignment_distance
and https://en.wikipedia.org/wiki/Gestalt_pattern_matching for more
information on these algorithms.
2024-02-16 02:06:24 -05:00
3986ee6c2b fix: exclude indent detection in derived modes
Changes what major modes we exclude from dtrt-indent's auto-detection.
Any mode in doom-detect-indentation-excluded-modes, plus derived modes,
will be excluded instead of only the parent modes.

This indirectly fixes an issue where org-mode derivatives (like
org-journal-mode) have their tab-width changed (#7670), causing the
`org-current-text-column` macro to throw the following error:

  Tab width in Org files must be 8, not N.  Please adjust your
  `tab-width' settings for Org mode.

I opted for this solution instead rather than adding all possibly
derivatives to `doom-detect-indentation-excluded-modes`.

Fix: #7670
Ref: 38dd882685/lisp/org-macs.el (L1154)
2024-02-14 02:42:30 -05:00