Relevant portion of the dependency graph:
'oc-csl → 'citeproc → 'citeproc-itemgetters → 'org → 'org-keys → 'oc
The :after linked 'oc to 'oc-csl so 'org-keys could load 'org.
`+org-init-keybinds-h' could then execute before the body of 'org-keys,
so Org default bindings could clobber Doom bindings.
If the top-level 'org started the load sequence, `org-load-hook'
functions would execute last and key bindings would be correct, but
Doom’s deferred incremental loading of Org could lead to this scenario:
1. deferred incremental loader: (require 'org-src)
2. org-src.el: (require 'org-keys)
3. org-keys.el: (require 'oc)
4. oc.el: (provide 'oc): (require 'oc-csl) [via the :after this patch
removes]
5. oc-csl.el: (require 'citeproc)
6. citeproc.el: (require 'citeproc-itemgetters)
7. citeproc-itemgetters.el: (require 'org)
8. org.el: (require 'org-keys)
9. 'org-keys from step 8 finishes loading. Keys are bound.
10. 'org finishes loading. `org-load-hook' functions are run. Doom’s
keys are bound.
11. 'oc-csl finishes loading
12. 'org-keys from step 3 finishes loading. Keys are bound again,
overwriting any keys Doom bound in step 10.
13. 'org-src finishes loading
At some point, the deferred incremental loader will (require 'org), but
it is a feature as of step 10, so it does not load and its hooks do not
run again.
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.
rust-lang/rust-mode@HEAD -> rust-lang/rust-mode@f74dd1cd87
- rust-lang/rust-mode@08cea61 introduced some clumsy autoloads that will
cause treesit and rust-ts-mode (and more in later commits) to be
eagerly loaded at startup. This causes other problems, but the primary
issue is that it causes errors at startup or when installing
rust-mode (#7698), which this bump addresses. Eager-loading will have
to be addressed upstream.
Ref: rust-lang/rust-mode@08cea61390Fix: #7698
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
Since we've remove all-the-icons, doom-themes-neotree-config will no
longer work properly, so I disable it for now (not a complete solution
though; we still need proper nerd-icons support for neotree).
Fix: #7634
Ref: #7664
A subtle change in the way org-toggle-checkbox handles its prefix
argument changed how RET (+org/dwim-at-point) handled list
checkboxes (incorrectlying swapping [ ] with [-], but not back, unless
the cursor was directly on top of the checkbox).
Didn't return non-nil, so whether or not it worked, Apheleia would
attempt to (ineffectually) format the org buffer afterwards.
Also remove unneeded beg/end checks (the functions always receive a
value).
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)
A recent change upstream (see emacsmirror/org-contrib@6e208c87bf)
removed the autoload for adding org-eldoc-load to org-mode-hook, so we
have to add the hook ourselves (the function is still autoloaded,
fortunately).
Also moves org-eldoc config into its own use-package! block.
Fix: #7633
Ref: emacsmirror/org-contrib@6e208c87bf
Change the binding for archiving to `org-archive-subtree-default`, which
is the recommend "catch-all" command in the org manual. The user can
specify the actual command in `org-archive-default-command`. The default
for this variable is `org-archive-subtree`, which we previously used for
the binding, so this commit changes behavior only for users who have set
`org-archive-default-command` explicitly.
It's possible for the user to type shell variables (something like
`$MYVAR/dir/filename`) as part of the filepath, so we need to call
`expand-file-name`.
When +vertico/find-file-in was replaced in 60e22fd with
+vertico/consult-fd-or-find, it changed a key behavior for
doom-project-find-file for Vertico users: instead of displaying an
initial list of all files under the target directory, it would display
nothing until the user entered in N * `consult-async-min-input`
characters, causing confusion (see linked comment).
Since Vertico integration modifies project-find-file-in's interface
appropriately, I leave it to that command instead.
Ref: https://github.com/doomemacs/doomemacs/issues/7312#issuecomment-1933404444
Amend: 60e22fd2eb
If $DOOMPATH is malformed or set to a value that does not contain a
valid path to Doom's CLI library in $EMACSDIR/lisp/cli (see #7608),
bin/doom no longer functions, emitting "a subcommand is required"
errors.
This change ensures that the CLI library is always the last (implicit)
element in doom-cli-load-path, and ensures $DOOMPATH is never written to
the user's envvar file (in case they try to use bin/doom from inside a
terminal within a Doom Emacs session), which should ensure users -- at
least -- never find themselves stranded without the Doom CLI.
Fix: #7608
Co-authored-by: bpizzi <bpizzi@users.noreply.github.com>
Some builds of Emacs inexplicably fail to autoload subr-x at startup,
meaning functions like string-remove-suffix are not guaranteed to be
available. Rather than eagerly load the library too early, I opt for the
safer option: to expand the single call into its lower level components.
Ref: #7608
This fixes command-line-args getting prematurely cleared out just before
being scanned for a --profile switch.
Fix: #7457
Co-authored-by: hpfr <hpfr@users.noreply.github.com>
I began phasing out all-the-icons in 9787022. Now that Doom has
no (first order) dependencies that depend on it (and enough time has
passed), it's time to remove it.
Ref: 9787022b83