Commit Graph

1550 Commits

Author SHA1 Message Date
a45ce1e14d fix(magit): do less on magit-refresh-buffer
Inhibit recentf-cleanup and projectile caching, and silence it's logging
on refresh-buffer. The former can potentially be slow and isn't
necessary on top of invalidating the cache, and the latter is noise.
2025-04-13 06:52:24 -04:00
6e92ca594f perf(magit): noop +magit-mark-stale-buffers-h if disabled
A little less work to do.
2025-04-13 02:50:09 -04:00
b2f8529683 fix(magit): projectile-invalidate-cache in wrong buffer
Also prevents projectile prompting in non-projects.
2025-04-13 02:50:09 -04:00
fb0dc4cc85 refactor(lib): doom-debug-mode: make verbosity selective
Now `doom-debug-mode` manipulates `doom-log-level` if you activate it
with a prefix arg, setting it to 1 by default, reducing its verbosity
and cutting down on noise in the logs.
2025-04-11 12:17:44 -04:00
0150f879ea feat(magit): introduce +magit-auto-revert option
Provides more control over our auto-reverting feature, and changes its
behavior to only target non-remote buffers by default, because reverting
remote buffers could be tremendously slow.

This could be later improved to treat TRAMP buffers with local
methods (like sudo) as local buffers.

Fix: #8354
2025-04-10 18:34:49 -04:00
42fba948f6 fix(magit): use messages instead of modeline 2025-04-09 16:12:18 -04:00
a13fda7ec0 fix(magit): don't auto-revert non-file-visiting buffers
Fix: #8339
Amend: 17a870fef8
2025-04-05 02:02:00 -04:00
6919d5e1c4 fix(lsp): eglot: don't manage flymake
Amend: 8afc08a7a8
2025-04-04 05:30:27 -04:00
f98eb3824f revert: refactor(magit): reduce pollution of global namespace
This refactor was premature. It still worked, but only by accident.

This is not a *full* revert; +magit--pos has been renamed for clarity.

Revert: d4c02bcd08
2025-04-04 00:50:45 -04:00
d4c02bcd08 refactor(magit): reduce pollution of global namespace 2025-04-02 06:37:12 -04:00
919e658436 fix(magit): magit-uniquify-buffer-names = nil
This prevents naming collisions between projects that resolve to the
same name (e.g. foo/bar/src and baz/foo/src both resolve to the same
project name: "src"), causing Magit to destructively reuse magit
bufffers across projects (which is especially disruptive if you use
workspaces and are using magit in both, in unrelated projects that
happen to have the same name).
2025-04-02 06:19:11 -04:00
635f0a3eec refactor(magit): magit-credential-cache-daemon-socket: remove hack
This is handled upstream now and is no longer needed.
2025-04-02 06:12:44 -04:00
cf41865693 perf(magit): optimize +magit-mark-stale-buffers-h
For cases where the user has *many* buffers open in long-lived sessions.
2025-04-02 03:18:08 -04:00
653b465c74 refactor: doom-switch-frame-hook
Redesign this hook around `after-focus-change-function`, along with
debouncing, to prevent it from triggering too aggressively (due to
misbehaving desktop environments, elisp packages that tinker with frame
focus, or accidental (and rapid) focus changes by the user).

`doom-switch-{window,buffer}-hook` have also been simplified, and
`doom-switch-window-hook` now will not trigger when focusing another
frame (only when you switch windows *within* any one frame).

This also fixes diff-hl not updating when refocusing an Emacs frame.
2025-04-02 03:17:29 -04:00
f9e9c27a8b module: remove :tools prodigy
This module has been deprecated for a while as it's much too trivial to
warrant being its own module, has been incomplete since its inception,
and there's no interest in maintaining, finishing, or expanding it.
2025-04-01 17:58:13 -04:00
8afc08a7a8 bump: :tools direnv lsp magit
emacs-lsp/lsp-mode@4cddd2d99d -> emacs-lsp/lsp-mode@7c0df125c1
emacs-straight/eglot@8711f483be -> emacs-straight/eglot@6a9e0c76b9
magit/forge@1c904090df -> magit/forge@9db4d386a1
magit/magit@28d272ce0b -> magit/magit@bf58615a03
purcell/envrc@116cb75ee1 -> purcell/envrc@4ca2166ac7

Fix: #8325
2025-04-01 15:31:54 -04:00
17a870fef8 fix(magit): reload related buffers after git ops
And when refocusing a frame.
2025-03-30 16:10:22 -04:00
1e1fd5c8e4 fix(magit): evil-collection-magit-section overrides
These fixes for evil-collection-magit-section weren't being applied
since 2f7f37d49b, but any combination of `after!` (or
`{with-}eval-after-load`) will convolute load order for users trying to
rebind their own keys on top of ours *and* evil-collection's, and using
`evil-collection-setup-hook` for this is clumsy, so I must resort to
advice.

Amend: 2f7f37d49b
2025-03-25 18:11:35 -04:00
da071559e1 fix(magit): polish +magit-display-buffer-fn
- Ensure `magit-log-select-mode` windows use the same window as the
  magit-status buffer, and that the revision buffer is displayed below
  it (similar to commit window configs).
- Uses the same window when invoking diffs (#8083).

Fix: #8083
2025-03-25 18:11:35 -04:00
65a5e50d1c fix(magit): transient: window config jank
With the combination of a bad value for
`transient-display-buffer-action` and a non-nil
`transient-show-during-minibuffer-read`, transient may jumble up
adjacent popup/side windows, particularly those belonging to plugins
with their own popup management and dedicated side windows (i.e.
`display-buffer-alist` rules) like Helm or Doom's popups.

Fix: #8319
Fix: #8235
Co-authored-by: tarsius <tarsius@users.noreply.github.com>
2025-03-25 18:11:18 -04:00
d5e161a9ae bump: :tools
Silex/docker.el@46b597a711 -> Silex/docker.el@3bea08f1d2
emacs-ansible/emacs-ansible@4601ff31f5 -> emacs-ansible/emacs-ansible@8474bd186b
emacs-tree-sitter/elisp-tree-sitter@f3b6e78cd4 -> emacs-tree-sitter/elisp-tree-sitter@8516c9977e
emacsorphanage/quickrun@7345432cea -> emacsorphanage/quickrun@4b6df453f8
jacktasia/dumb-jump@93665381d9 -> jacktasia/dumb-jump@737267a613
joostkremers/parsebib@a25621930e -> joostkremers/parsebib@7bfde4e467
millejoh/emacs-ipython-notebook@998ba22660 -> millejoh/emacs-ipython-notebook@2711366546
purcell/envrc@2b818ca6e4 -> purcell/envrc@116cb75ee1
spotify/dockerfile-mode@4d893bd2da -> spotify/dockerfile-mode@8135740bfc
2025-03-25 15:20:58 -04:00
dac6e05b87 refactor: deprecate appendq!, prependq!, & delq! macros
In the interest of slimming down Doom's core (as we near v3), I've
deprecated these macros. They doesn't really need to exist. Sure, the
alternatives aren't as ergonomic or elegant, but they're good enough
that we don't need these trivial wrappers. Their local uses have been
refactored out as well.
2025-03-25 14:16:56 -04:00
0163aef765 bump: :tools magit
magit/forge@33e240d360 -> magit/forge@1c904090df
magit/magit@f52dfada8f -> magit/magit@28d272ce0b
2025-03-24 18:10:52 -04:00
ef9ff57caf bump: :tools debugger lsp
emacs-lsp/dap-mode@09dc16bae1 -> emacs-lsp/dap-mode@56e92dd86b
emacs-lsp/helm-lsp@e740efb2ab -> emacs-lsp/helm-lsp@cf4ea6fb42
emacs-lsp/lsp-ivy@6b2a625f08 -> emacs-lsp/lsp-ivy@bdc730a209
emacs-lsp/lsp-mode@b383e637dc -> emacs-lsp/lsp-mode@4cddd2d99d
emacs-lsp/lsp-ui@00e69463b4 -> emacs-lsp/lsp-ui@09d4080642
emacs-straight/eglot@2d5d494bfc -> emacs-straight/eglot@8711f483be
2025-03-24 18:09:45 -04:00
79a8abd85a bump: :tools
Silex/docker.el@813c00410b -> Silex/docker.el@46b597a711
editorconfig/editorconfig-emacs@24f5b2b1cd -> editorconfig/editorconfig-emacs@1a9942746c
emacs-ansible/emacs-ansible@03e285bb54 -> emacs-ansible/emacs-ansible@4601ff31f5
emacs-citar/citar@2826996799 -> emacs-citar/citar@ce5e9644ed
emacs-lsp/dap-mode@ffb7957612 -> emacs-lsp/dap-mode@09dc16bae1
emacs-lsp/lsp-mode@d28dd6b7e3 -> emacs-lsp/lsp-mode@b383e637dc
emacs-lsp/lsp-ui@f0edfac7b3 -> emacs-lsp/lsp-ui@00e69463b4
emacs-straight/eglot@d3e44d33b7 -> emacs-straight/eglot@2d5d494bfc
emacs-tree-sitter/elisp-tree-sitter@fe98d0cae7 -> emacs-tree-sitter/elisp-tree-sitter@f3b6e78cd4
emacs-tree-sitter/tree-sitter-langs@4f951dbb53 -> emacs-tree-sitter/tree-sitter-langs@2ff446b4b8
emacsorphanage/quickrun@d383929c50 -> emacsorphanage/quickrun@7345432cea
gagbo/consult-lsp@6858391316 -> gagbo/consult-lsp@aef321d039
hpdeifel/synosaurus@14d34fc92a -> hpdeifel/synosaurus@690755ce88
jacktasia/dumb-jump@cd65a74337 -> jacktasia/dumb-jump@93665381d9
joostkremers/parsebib@f0e57a3606 -> joostkremers/parsebib@a25621930e
magit/forge@0c90606262 -> magit/forge@33e240d360
magit/magit@7dfebba55b -> magit/magit@f52dfada8f
mohkale/consult-eglot@9b490eb384 -> mohkale/consult-eglot@b71499f4b9
nicolaisingh/saveplace-pdf-view@70e9ec4056 -> nicolaisingh/saveplace-pdf-view@79e76562bc
purcell/envrc@60f5091538 -> purcell/envrc@2b818ca6e4
rejeep/prodigy.el@c5a17c280d -> rejeep/prodigy.el@99908d13be
tkf/emacs-request@01e338c335 -> tkf/emacs-request@c22e3c23a6
tumashu/posframe@8165153682 -> tumashu/posframe@12f540c9ad
2025-02-21 15:17:42 -05:00
39fe608cfc fix(magit): restore previous default transient visibility
Fix: #8194
2025-02-21 15:15:09 -05:00
765a4bb1c1 fix(lookup): use dumb-jump xref instead of dumb-jump-go
Since dumb-jump-go is deprecated, we want to use the xref backend.

Due to how lsp-mode integrates with xref-backend-functions currently,
it's not as simple as just adding dumb-jump-xref-activate to the
xref-backend-functions so this is a bit of a hacky workaround.
2025-02-21 15:12:00 -05:00
d06be8d2ff fix(debugger): dap autoloader for rustic
Fix: #8245
2025-02-21 15:04:07 -05:00
2bc052425c bump: :tools magit
magit/forge@96fe98120c -> magit/forge@0c90606262
magit/magit@8b6bb7c7e8 -> magit/magit@7dfebba55b

- This downgrades magit and forge to their most recent tagged releases,
  because I forgot to reconfigure my bumper after 2fa4faa (where it was
  decided that magit and forge would be restricted to tagged releases).

Ref: 2fa4faa6cd
Close: #8240
Co-authored-by: vunhan <vunhan@users.noreply.github.com>
2025-01-14 13:57:18 -05:00
cfb93b2a32 feat(terraform): add validate, fmt, & destroy keybinds 2025-01-09 01:04:42 -05:00
-k
8a064ffaec fix(ansible): check for config file 2025-01-09 01:02:08 -05:00
-k
96f5fcc6a0 fix(ansible): check for metadata file
galaxy metadata file is now the main component of ansibe collections, this should help with #1139
2025-01-09 01:02:08 -05:00
754e0f7982 bump: :tools
Silex/docker.el@6f8bba0d11 -> Silex/docker.el@813c00410b
cjohansson/emacs-ssh-deploy@95fb076c9b -> cjohansson/emacs-ssh-deploy@dc8882d180
editorconfig/editorconfig-emacs@c707d8d0f1 -> editorconfig/editorconfig-emacs@24f5b2b1cd
emacs-ansible/emacs-ansible@e171dacc12 -> emacs-ansible/emacs-ansible@03e285bb54
emacs-citar/citar-org-roam@82d47b5df1 -> emacs-citar/citar-org-roam@ff38add0aa
emacs-citar/citar@0f1786b7fe -> emacs-citar/citar@2826996799
emacs-lsp/dap-mode@605448b4fd -> emacs-lsp/dap-mode@ffb7957612
emacs-lsp/lsp-ivy@9ecf4dd9b1 -> emacs-lsp/lsp-ivy@6b2a625f08
emacs-lsp/lsp-mode@32628135ef -> emacs-lsp/lsp-mode@d28dd6b7e3
emacs-lsp/lsp-ui@072bb29152 -> emacs-lsp/lsp-ui@f0edfac7b3
emacs-straight/crdt@7f91efcc72 -> emacs-straight/crdt@24cf2fca33
emacs-straight/eglot@81eb273965 -> emacs-straight/eglot@d3e44d33b7
emacs-tree-sitter/elisp-tree-sitter@02fe7b86d9 -> emacs-tree-sitter/elisp-tree-sitter@fe98d0cae7
emacs-tree-sitter/tree-sitter-langs@465a64032d -> emacs-tree-sitter/tree-sitter-langs@4f951dbb53
gromnitsky/wordnut@feac531404 -> gromnitsky/wordnut@dffc75a455
hcl-emacs/terraform-mode@abfc10f5e3 -> hcl-emacs/terraform-mode@5bdd734a87
joostkremers/parsebib@489f690f43 -> joostkremers/parsebib@f0e57a3606
magit/forge@9f2efc3c03 -> magit/forge@96fe98120c
magit/magit@f2a6133443 -> magit/magit@8b6bb7c7e8
meain/evil-textobj-tree-sitter@5056ebc231 -> meain/evil-textobj-tree-sitter@bce236e5d2
mohkale/consult-eglot@c5f87d9244 -> mohkale/consult-eglot@9b490eb384
purcell/envrc@3c5a60dd91 -> purcell/envrc@60f5091538
tmalsburg/helm-bibtex@8b71b4f5ce -> tmalsburg/helm-bibtex@6064e8625b
tumashu/posframe@ac9f954ac4 -> tumashu/posframe@8165153682

- Adds new aarch64-unknown-linux-gnu binaries for tree-sitter (#8215).

Fix: #7967
Close: #8215
Co-authored-by: l2dy <l2dy@users.noreply.github.com>
2025-01-09 00:29:41 -05:00
6a7251bcfa docs(lsp): replace support table w/ links
Going forward, I'll leave it to each :lang module to document the LSP
clients they support/favor, and defer to lsp-mode/eglot's docs for their
support tables rather than maintain our own.

Close: #8131
2025-01-08 20:57:49 -05:00
0a715cc3f2 refactor: (if|when)-let -> (if|when)-let*
With the former macros' future in the air (and likely to be targeted in
future, potentially breaking changes), I'll deal with this now than have
it bite me later.

Ref: https://lists.gnu.org/archive/html/emacs-devel/2024-10/msg00637.html
2025-01-08 19:33:37 -05:00
05e34351ea fix(eval): double prompt when region sent to repl
The +eval/send-region-to-repl command was adding an extra newline when
sending regions to REPLs, causing double prompts to appear. This removes
the extra newline for cleaner REPL interaction across all language modes.

* modules/tools/eval/autoload/repl.el (+eval/send-region-to-repl):
remove concatenation of newline after region
2024-12-01 11:21:28 -05:00
16543b6c2b bump: :tools debugger lsp
emacs-lsp/dap-mode@496dd3a60f -> emacs-lsp/dap-mode@605448b4fd
emacs-lsp/helm-lsp@c2c6974dad -> emacs-lsp/helm-lsp@e740efb2ab
emacs-lsp/lsp-mode@9b104105ad -> emacs-lsp/lsp-mode@32628135ef
mohkale/consult-eglot@64262e7245 -> mohkale/consult-eglot@c5f87d9244
2024-11-19 00:46:21 -05:00
0d8b6bdfbd bump: :tools
NicolasPetton/pass@ed7031c5c3 -> NicolasPetton/pass@1a9f610015
Silex/docker.el@f3adbf49e1 -> Silex/docker.el@6f8bba0d11
editorconfig/editorconfig-emacs@648f0cf9ae -> editorconfig/editorconfig-emacs@c707d8d0f1
emacs-ansible/emacs-ansible@eebb2fb49d -> emacs-ansible/emacs-ansible@e171dacc12
emacs-lsp/lsp-mode@dd61303b2d -> emacs-lsp/lsp-mode@9b104105ad
emacs-straight/eglot@6b9c4faa52 -> emacs-straight/eglot@81eb273965
emacs-tree-sitter/tree-sitter-langs@365a4f7bf5 -> emacs-tree-sitter/tree-sitter-langs@465a64032d
emacsorphanage/quickrun@c58e2e4be5 -> emacsorphanage/quickrun@d383929c50
flycheck/flycheck-eglot@09e37f4c72 -> flycheck/flycheck-eglot@18d0c98695
joostkremers/parsebib@ace9df7071 -> joostkremers/parsebib@489f690f43
magit/forge@d4e88507bf -> magit/forge@9f2efc3c03
magit/magit@0aa26864e3 -> magit/magit@f2a6133443
meain/evil-textobj-tree-sitter@b4ef204ff8 -> meain/evil-textobj-tree-sitter@5056ebc231
purcell/envrc@532ecdab48 -> purcell/envrc@3c5a60dd91
rejeep/prodigy.el@cc68fa9d60 -> rejeep/prodigy.el@c5a17c280d
spotify/dockerfile-mode@39a012a27f -> spotify/dockerfile-mode@4d893bd2da
tumashu/posframe@570273bcf6 -> tumashu/posframe@ac9f954ac4
yoshiki/yaml-mode@7b5ce294fb -> yoshiki/yaml-mode@d91f878729
2024-10-31 21:54:20 -04:00
5ff8561b5e fix(lsp): lsp!: make non-interactive
This autodef was never intended to be interactive. Use `lsp` or `eglot`
if you need an interactive variant.
2024-10-31 21:54:19 -04:00
1f8c326dfa fix(eval): remove duplicate REPL entries
The method previously used to remove duplicates was incorrect
2024-10-31 21:44:13 -04:00
448bc5cae2 refactor: use negated flags
Ref: 7a806521a92c
2024-10-20 02:41:50 -04:00
15904349cf refactor!: module API
BREAKING CHANGE: This backports some architectural choices from v3.0.
This changes Doom's module API, renaming some functions and removing
others, in order to facilitate some new features, prepare to move Doom's
modules into separate repos, and make way for two, much larger breaking
commits coming in the next few days.

This commit won't break anything for users unless they're tinkering with
Doom's internals/using its `doom-module-*` API directly. I am avoiding
broader backwards incompatibilities until the 3.0 release.

What's new:

- Negated flags. (modulep! :editor evil -everywhere) will return non-nil
  if :editor evil is active without its +everywhere flag.
- `modulep!` now takes multiple flags to simplify AND checks. E.g.

    (and (modulep! +foo)
         (modulep! +bar)
         (not (modulep! +baz)))

  Can now be expressed with:

    (modulep! +foo +bar -baz)
- Adds pcase matchers for `doom-module-context` and `doom-module`
  structs, making the following destructuring binds possible:

    (pcase-dolist ((doom-module group name flags features)
                   (hash-table-values doom-modules))
      ...)

  This will be used more in v3.0.
- Adds file cookie support to module init.el and config.el files.

Here's a summary of breaking changes made in this commit:

- `doom-module-context` was changed from a vector to a struct (record).
- `doom-modules` is now a table of `doom-module` structs, rather than
  free-form plists.
- The following macros have been renamed:
  - `doom-context-with` -> `with-doom-context`
  - `doom-module-context-with` -> `with-doom-module`
- The followings functions have been replaced/removed:
  - `doom-module-context`+`doom-module-context-get` -> `doom-module`
  - `doom-module-set` -> `doom-module--put`
  - `doom-module-p` -> `doom-module-active-p`
  - `doom-module-context-key` (is now a getter with the same name)
  - `doom-module-put` (removed)
  - `doom-module--context-field` (removed)
- The signatures for these functions have changed:
  - `doom-module-get CATEGORY &optional MODULE PROP` ->
    `doom-module-get (GROUP . MODULE) &optional PROP`
  - `doom-module-locate-path CATEGORY &optional MODULE FILE` ->
    `doom-module-locate-path (GROUP . MODULE) &optional FILE`
  - `doom-module-expand-path CATEGORY MODULE &optional FILE` ->
    `doom-module-expand-path (GROUP . MODULE) &optional FILE`
- Adds the following functions
  - `doom-module-exists-p`
  - `doom-module-key`
  - `doom-module->context`
  - `doom-module<-context`
- Removes the following variables
  - `doom-module--empty-context`

This commit results in a little redundancy, which I will address in
parts 2/3 and/or v3.0.
2024-10-20 02:41:42 -04:00
037b018cdd feat: add .doommodule files
These optional dotfiles indicate the root of a module or module
group (:lang), and will later contain module metadata. They will also
serve as an alternative to packages.el and doctor.el, and will aide the
parts of the v3.0 module API concerned with resolving the current module
from a path (`doom-module-from-path`), which currently rely too heavily
on parsing path strings.

For now, however, they're simply placeholders.
2024-09-14 20:47:39 -04:00
66a2972ebf fix(lib): doom/set-indent-width on Emacs >=30
A built-in `editorconfig` package was added in Emacs 30, with a somewhat
different API from the other package of the same name.

Fix: #8072
2024-09-14 15:22:09 -04:00
30988a9720 fix(lsp): lsp-terraform removal condition
Amend: d4357c173a
Ref: #7713
2024-09-11 00:29:34 -04:00
07eae64509 refactor(vc): move git-commit to magit module
`git-commit` is no longer distributed with `magit` and no longer
declares its dependencies, causing "file missing: with-editor" and
similar errors for folks who don't have magit installed. Also, VC's
commit workflows don't utilize the mode, so there's no reason to keep it
in this module.

Ref: magit/magit@c170fcf399
Ref: #8003
2024-09-09 18:08:28 -04:00
2fa4faa6cd bump: :tools
emacs-citar/citar@07d2a63c99 -> emacs-citar/citar@0f1786b7fe
emacs-lsp/lsp-mode@12befaabe4 -> emacs-lsp/lsp-mode@dd61303b2d
emacs-straight/eglot@3a5240d8fd -> emacs-straight/eglot@6b9c4faa52
emacs-tree-sitter/tree-sitter-langs@1c3d95d018 -> emacs-tree-sitter/tree-sitter-langs@365a4f7bf5
magit/forge@35cc600d62 -> magit/forge@d4e88507bf
meain/evil-textobj-tree-sitter@041fcb9fbb -> meain/evil-textobj-tree-sitter@b4ef204ff8
tumashu/posframe@493b17f74a -> tumashu/posframe@570273bcf6

From this point on, Doom will be bumping magit and forge to tagged
releases.
2024-09-07 19:04:37 -04:00
765f317427 docs(magit): remove magit-todos from the README
0893ede removed magit-todos from the default magit module configuration.
Users are expected to install it by themselves, if they wish to use the
package, given it's simple config.

Amend: 0893edefae
2024-09-07 15:10:11 -04:00
a8f116bb6b bump: magit forge orgit orgit-forge
magit/forge@30f181f785 -> magit/forge@35cc600d62
magit/magit@2da34f1317 -> magit/magit@0aa26864e3
magit/orgit-forge@a989b2b54d -> magit/orgit-forge@2718a6aaf0
magit/orgit@29a0f37e5c -> magit/orgit@59d21fdb21

For Magit's 4.1.0 release, and to repin away from these packages'
recently removed 'melpa' branches (see #8007).

Ref: #8003
Ref: #8007
2024-08-31 21:51:59 -04:00
1c16b84691 refactor: remove unneeded/magic in add-hook! calls 2024-08-29 01:43:40 -04:00