Line numbers pad the left side of the buffer with ~5 characters and are
treated as part of its contents, so `visual-fill-column` would wrap text
at column 75 instead of 80. Now, `visual-fill-column-extra-text-width`
is adjusted whenever `visual-fill-column-mode` or
`display-line-numbers-mode` are toggled.
There were a number of issues with the "copy and edit" workflow of the
snippets module. I.e. Snippets that live in $EMACSDIR/.local should not
be modified directly, so they ought to be opened in read-only-mode. This
also originally applied to file-templates snippets, but I figured that
was too excessive.
With this, you can now type `C-c C-e` in these buffers to automatically
copy them to $DOOMDIR/snippets/MODE/ so you can create your own to
overwrite the original.
This also fixes an issue where `+snippets/find` and
`+snippets/find-for-current-mode` may throw errors about an undefined
`template-uuid` variable (doomemacs/community#105)
Fix: doomemacs/community#105
The closure in which `incf` is called upstream is byte-compiled at build
time, long before our `incf` alias is defined. Injecting the alias into
the child process Straight builds packages in is non-trivial and moving
to a fork (nicholas-stout/evil-numbers) that could suddenly be deleted
isn't ideal, so I'll simply avoid byte-compiling this package for the
time being.
Fix: #8765
Amend: 541207196f
Formerly, RET would submit input in comint and REPL buffers, but
upstream introduced `evil-collection-repl-submit-state` recently,
changing RET to insert a literal newline and requiring users switch to
normal mode to submit it. This is unexpected and unintuitive
behavior (S-RET has always been the "insert literal newline" key in
these contexts) so revert to the old behavior.
Ref: emacs-evil/evil-collection@14c09ec65c
Ref: emacs-evil/evil-collection@e02e2e373f
Amend: 2cfa2ff00b
`:tablast` was calling +workspace/switch-to-last, which was renamed to
+workspace/switch-to-final back in bc6c4b3.
Also added a Vim-style `:tabfirst` counterpart.
Fix: bc6c4b3
Amend: d4d78b2
The syntax for making certain parts of an ex command optional does not
work if those parts are in the middle of the command (they have to be at
the end), so many of these commands were partially
non-functional (`l[ine]diff` could only be invoked with `:l[ine]`).
Also renames some of these commands:
- :linediff => :ldiff
- :k[ill] => :kill
- :k[ill]all => :killa[ll]
- :k[ill]m => :killm[atch]
- :k[ill]o => :killo[ther]
- :k[ill]b => :killb[uried]
- The gist module was removed some time ago
- There is no merit to a :http ex command (just use `M-x httpd-start`).
- There is no merit to git ex commands (in their current form, at
least).
- The :sw[iper] command was too niche. A more generalized command (maybe
similar to/based on `+default/search-buffer`) would be appropriate,
but that's for another day.
And instead of disabling +word-wrap in org-mode wholesale, only disable
it in the presence of `org-indent-mode` (or `markdown-indent-mode`) --
modes that use `line-prefix`/`wrap-prefix` text properties that could
conflict with `adaptive-wrap-prefix-mode` (which the word-wrap module
uses).
Redesigns the :h[elp] ex command to:
- Provide ex command TAB completion in the ex command line.
- Prompt for ex command if no input is given.
- No longer require ex commands be prefixed with a colon.
evil-escape had been disabled in lispy because of a key binding conflict
involving the evil-escape-key-sequence "jk". But the latter is nil since
68ec9e9c86, so we can re-enable evil-escape.
Ref: 68ec9e9c86
Revert: ccd20847c7
Fixes the large-file detection and rewrites it to lean more on the
built-in `so-long` library to detect and handle "large" files (whose
line count exceeds a given threshold). This removes the various
`doom-large-*` variables, replacing them with
`doom-file-lines-threshold-alist`, which defaults to 15-25k lines for
all modes, depending in the presence of IGC or native-comp.
I also no longer do this large file detection in 28 or older, because
it's not worth the trouble to maintain. Users that care about
performance should be on 30+ anyway.
Introduces a systemic fix to the problem where most major modes don't
set `tab-width` and/or `standard-indent` to match the mode-specific
indent variables. This tries to guess the indent variable(s) for any
given major mode, by searching for variables that end in:
X-ts-mode-indent-offset
X-indent-offset
X-indent-level
X-tab-width
X-basic-offset
Where X is the major mode without the (base-)?(ts-)?-mode suffix. This
should resolve to the correctly variable for most popular or newer
packages. For modes where it isn't enough, modules will have to manually
register with `set-indent-vars!`.
This commit also moves various indent commands to a new
lisp/lib/indent.el library and rewrites `doom/set-indent-width` to use
this new API (which no longer depends on editorconfig, and less on
dtrt-indent).
Fix: #8713
There will be more of these set-variable-type autodefs in the future, so
I'd rather make the abbreviation of "variable" the precedent now than
destructively rename them all later.
Warnings about unused lexical variables, arity warnings, unescaped
single quotes in docstrings, shadowed variables, and invalid value for
:local depending on Emacs version.
Prevent `get-register`s advice from affecting the `get-register` call in
`evil-get-register` in `+evil--use-evil-registers-a`.
Ref: #8698Fix: #8699
Amend: 88e2a0d5de
Some were outdated, some were incorrectly labeled, others were already
completed, some were missing... Gotta fix them all.
Also, in :ui hl-todo, there are comments that describe how Doom uses
each of these annotations; those have been updated.
In the spirit of 6f40ad5, I'm deprecating this macro because it doesn't
provide enough value to exist and serves only to complicate a casual
reader's understanding of Doom's modules.
Ref: 6f40ad55f5
Makes Emacs more broadly aware of Evil's registers (when Evil is
active), and fixes an issue where our advice integrating
`consult-register` with Evil registers would properly list Evil
registers, but not fetch/insert them correctly (#8698).
Fix: #8698Close: #8699
Co-authored-by: liaowang11 <liaowang11@users.noreply.github.com>
The :k(ill) ex command referenced `doom/kill-current-buffer`, which
doesn't exist. Replace with `kill-current-buffer`, matching every other
kill-buffer binding in the codebase (zx, SPC b k, q, etc.).
Fix: #6341
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>