Commit graph

353 commits

Author SHA1 Message Date
Henrik Lissner
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
Henrik Lissner
151b67baf2
bump: :editor evil
TheBB/evil-indent-plus@b4dacbfdb5 -> TheBB/evil-indent-plus@f392696e48
emacs-evil/evil-collection@8be4b75c86 -> emacs-evil/evil-collection@8c84f9bc89
emacs-evil/evil-surround@8fad8540c4 -> emacs-evil/evil-surround@c7116cdc77
emacs-evil/evil@5fc16776c5 -> emacs-evil/evil@5995f6f21f
2024-02-04 19:17:18 -05:00
Henrik Lissner
b1d8d1cd9f
nit: reformatting, comment, and markup revision 2023-12-02 11:34:10 -05:00
StrawberryTea
2a875d9727
refactor(evil): remove lisp prefix-function embrace pair
A more generalized lisp prefix function was added upstream, so ours is
no longer needed.

Ref: cute-jumper/embrace.el#26
2023-11-24 11:00:52 -05:00
Henrik Lissner
96aed4bf35
perf(evil): defer evil-collection-tab-bar
It gets pulled in early and unavoidably, slowing down startup.
2023-09-20 21:01:05 +02:00
Henrik Lissner
0f663d007b
docs(evil,latex,vterm,treemacs): correct notices
Use the correct symbol for warnings.

Amend: 88bb045388
2023-09-17 03:27:49 +02:00
Henrik Lissner
88bb045388
docs(*): replace all-the-icons with nerd-icons
Also colorizes the leading icon in notices.
2023-09-16 20:19:11 +02:00
Colin Woodbury
20cdba39a8 fix(evil): more reliable window detection
At some point `windmove-find-other-window` stopped loading reliably,
such that `SPC w H` would complain of a missing symbol. Indeed
navigating to the implementation of `windmove` within Emacs's Lisp we
find warnings that it has mostly been superceded by newer window APIs
since 2013, and is implemented in terms of `window-in-direction`.

By using `window-in-direction` directly, the loading problem disappears.
2023-09-12 21:20:23 +02:00
Henrik Lissner
bef076b655
bump: :editor evil
emacs-evil/evil@9eb69b7f5b -> emacs-evil/evil@5fc16776c5
emacs-evil/evil-collection@1ad283f5b7 -> emacs-evil/evil-collection@8be4b75c86

- Fixes breaking change due to emacs-mirror/emacs@802a54ad62 (see
  #7397).

Ref: debbugs.gnu.org/cgi/bugreport.cgi?bug=62248
Close: #7397
Co-authored-by: prashantvithani <prashantvithani@users.noreply.github.com>
2023-09-09 23:59:22 +02:00
Amos Bird
ca9f84d664
fix(evil): add evil-embrace support for c++-ts-mode
In emacs-29, native tree-sitter adds new major modes for the C++
language, named c++-ts-mode. As a result, hooks in c++-mode will not
run. This commit adds the angle bracket fix hook for c++-ts-mode.
2023-09-09 23:59:06 +02:00
Henrik Lissner
9e9c7d9e6d
bump: :editor evil
edkolev/evil-lion@a55eb64742 -> edkolev/evil-lion@1e838a53b8
emacs-evil/evil@60ba716bf5 -> emacs-evil/evil@9eb69b7f5b
hlissner/evil-snipe@c07788c35c -> hlissner/evil-snipe@c2108d3932
mamapanda/evil-traces@d4c53bd6ad -> mamapanda/evil-traces@82e8a7b421

- Includes two fixes for breaking changes in evil:
  - mamapanda/evil-traces#5 (due to breaking changes in evil-ex.el)
  - emacs-evil/evil#1824 (due to removal of evil-unquote function)

Fix: mamapanda/evil-traces#5
Fix: emacs-evil/evil#1824
2023-08-21 18:09:02 +02:00
Henrik Lissner
21df7d0beb
bump: :editor evil
cute-jumper/evil-embrace.el@7b5a539cfe -> cute-jumper/evil-embrace.el@3081d37811
emacs-evil/evil-collection@aaf3e0038e -> emacs-evil/evil-collection@1ad283f5b7
emacs-evil/evil-surround@f273821f57 -> emacs-evil/evil-surround@8fad8540c4
emacs-evil/evil@2ce03d412c -> emacs-evil/evil@60ba716bf5
mamapanda/evil-traces@290b532354 -> mamapanda/evil-traces@d4c53bd6ad
redguardtoo/evil-nerd-commenter@8c0f23d46a -> redguardtoo/evil-nerd-commenter@3b197a2b55

Ref: mamapanda/evil-traces#5
Ref: cute-jumper/evil-embrace.el#10
2023-08-20 22:16:12 +02:00
Ellis Kenyo
435a383635 fix(evil): remap after eglot is loaded
evil-collection recently made some changes that map over our defaults
for evil
2023-07-22 16:41:13 +02:00
Henrik Lissner
cb6b065b87
fix(evil): embrace: escaped pairs in first org buffer
Close: #5423
2023-03-22 01:16:02 -04:00
Henrik Lissner
adb125f41f
fix(evil): persist evil state after mode changes
For example: when doom-guess-mode-h is triggered (see #7141), or when
the user invokes a mode function through M-x.

Fix: #7141
2023-03-11 10:54:22 -05:00
Henrik Lissner
fe2cb5e705
fix(evil): premature "too early" warnings
A warning gets logged if a lazily-loaded evil-collection package is
loaded too early at startup, but the goal posts were in the wrong place,
resulting in unavoidable warnings for packages that weren't actually
loaded too early.
2023-02-25 20:47:28 -05:00
Henrik Lissner
f348856cd3
docs(evil): add faq for kill-ring and clipboard sync
Describes how to disable synchronization between the kill-ring and
system clipboard.

Close: #6947
Co-authored-by: rittelle <rittelle@users.noreply.github.com>
2023-02-23 20:44:48 -05:00
Henrik Lissner
bd5d43df95
bump: :editor evil
emacs-evil/evil-collection@665d5c99e2 -> emacs-evil/evil-collection@aaf3e0038e
emacs-evil/evil-surround@c9e1449bf3 -> emacs-evil/evil-surround@f273821f57
emacs-evil/evil@26ec0cda1b -> emacs-evil/evil@2ce03d412c
redguardtoo/evil-nerd-commenter@b1a92221c9 -> redguardtoo/evil-nerd-commenter@8c0f23d46a
2023-02-18 15:27:49 -05:00
TEC
5ac2a5258b docs: change link format 2022-10-05 01:01:19 +02:00
Henrik Lissner
f9201eb218
refactor: introduce doom-context
Introduces a system to announce what execution contexts are active, so I
can react appropriately, emit more helpful logs/warnings in the case of
issues, and throw more meaningful errors.

* bin/doom: load module CLIs in the 'modules' context.
* lisp/cli/doctor.el: load package files in 'packages' context.
* lisp/doom-cli.el:
  - (doom-before-init-hook, doom-after-init-hook): trigger hooks at the
    correct time. This may increase startup load time, as the benchmark
    now times more of the startup process.
  - (doom-cli-execute, doom-cli-context-execute,
    doom-cli-context-restore, doom-cli-context-parse,
    doom-cli--output-benchmark-h, doom-cli-call, doom-cli--restart,
    doom-cli-load, run!): remove redundant context prefix in debug logs,
    it's now redundant with doom-context, which doom-log now prefixes
    them with.
* lisp/doom-lib.el (doom-log): prefix doom-context to doom-log output,
  unless it starts with :.
* lisp/doom-packages.el (package!, doom-packages--read): throw error if
  not used in a packages.el file or in the context of our package
  manager.
* lisp/doom-profiles.el (doom-profile--generate-init-vars,
  doom-profile--generate-load-modules): use modules doom-context instead
  of doom-init-time to detect startup.
* lisp/doom-start.el (doom-load-packages-incrementally-h): move function
  closer to end of doom-after-init-hook.
* lisp/doom.el:
  - (doom-before-init-hook, doom--set-initial-values-h,
    doom--begin-init-h): rename doom--set-initial-values-h to
    doom--begin-init-h and ensure it runs as late in
    doom-before-init-hook as possible, as that is the point where Doom's
    "initialization" formally begins.
  - (doom-after-init-hook): don't trigger at the end of command-line-1
    in non-interactive sessions. This will be triggered manually in
    doom-cli.el's run!.
* lisp/lib/config.el (doom/reload, doom/reload-autoloads,
  doom/reload-env): use 'reload' context for reload commands.
* modules/lang/emacs-lisp/autoload.el (+emacs-lisp-eval): use 'eval'
  context.
* modules/lang/org/config.el: remove doom-reloading-p; check for
  'reload' doom context instead.
2022-09-24 22:09:05 +02:00
Henrik Lissner
732d87ac3e
nit: minor comment revision and refactors 2022-09-16 17:01:57 +02:00
Henrik Lissner
7ffe0df8eb
bump: :editor evil
edkolev/evil-lion@4da660e124 -> edkolev/evil-lion@a55eb64742
emacs-evil/evil-collection@6cc02b238c -> emacs-evil/evil-collection@665d5c99e2
emacs-evil/evil@157af04d2c -> emacs-evil/evil@26ec0cda1b
redguardtoo/evil-nerd-commenter@386cd758a4 -> redguardtoo/evil-nerd-commenter@b1a92221c9
2022-09-16 17:01:57 +02:00
Henrik Lissner
7a2be67efa
refactor!: redesign module init/config hooks
BREAKING CHANGE: For consistency and correctness, I've renamed the
module init/config hooks, and added new ones:

- Adds doom-before-modules-config-hook
- Adds doom-after-modules-config-hook (replaced doom-before-init-modules-hook)
- Adds doom-before-modules-init-hook
- Adds doom-after-modules-init-hook (replaced doom-init-modules-hook)
- Removed doom-after-init-modules-hook (replaced w/ after-init-hook)

The old naming (and timing) was counterintuitive. Now, it's named after
the loaded file group (init.el vs config.el), and I added before/after
variants. Altogether, this should make them less ambiguous.

I've also moved some functions in various modules to more correct hooks.

Load order before this change:
- $EMACSDIR/early-init.el
- $EMACSDIR/lisp/doom.el
- $EMACSDIR/lisp/doom-start.el
- $DOOMDIR/init.el
- {$DOOMDIR,~/.emacs.d}/modules/*/*/init.el
- `doom-before-init-modules-hook'
- {$DOOMDIR,~/.emacs.d}/modules/*/*/config.el
- `doom-init-modules-hook'
- $DOOMDIR/config.el
- `doom-after-init-modules-hook'
- `after-init-hook'
- `emacs-startup-hook'
- `window-setup-hook'

Load order after this change:
- $EMACSDIR/early-init.el
- $EMACSDIR/lisp/doom.el
- $EMACSDIR/lisp/doom-start.el
- $DOOMDIR/init.el
- `doom-before-modules-init-hook'
- {$DOOMDIR,~/.emacs.d}/modules/*/*/init.el
- `doom-after-modules-init-hook'
- `doom-before-modules-config-hook'
- {$DOOMDIR,~/.emacs.d}/modules/*/*/config.el
- `doom-after-modules-config-hook'
- $DOOMDIR/config.el
- `after-init-hook'
- `emacs-startup-hook'
- `window-setup-hook'
2022-09-16 01:14:22 +02:00
Henrik Lissner
ad6a3d0f33
refactor: deprecate featurep! for modulep!
featurep! will be renamed modulep! in the future, so it's been
deprecated. They have identical interfaces, and can be replaced without
issue.

featurep! was never quite the right name for this macro. It implied that
it had some connection to featurep, which it doesn't (only that it was
similar in purpose; still, Doom modules are not features). To undo such
implications and be consistent with its namespace (and since we're
heading into a storm of breaking changes with the v3 release anyway),
now was the best opportunity to begin the transition.
2022-08-14 20:43:35 +02:00
Henrik Lissner
0407621aff
refactor: deprecate EMACS2[89]+, NATIVECOMP, MODULES
To reduce redundancy, remove the maintenance hassle that version
constants would impose later on, and rely on built-in
facilities (featurep) more over global variables or doomisms, these
global constants have been deprecated in favor of Emacs "features":

- EMACS28+   -- replace with (> emacs-major-version 27)
- EMACS29+   -- replace with (> emacs-major-version 28)
- NATIVECOMP -- replace with (featurep 'native-compile)
- MODULES    -- replace with (featurep 'dynamic-modules)

(These constants will be formally removed when v3 is released. The IS-*
constants are likely next, but I haven't decided on their substitutes
yet)

I also decided to follow native-compile's example and provide features
for Emacs' system features (since system-configuration-features' docs
outs itself as a poor method to detect features):

- dynamic-modules
- jansson
- native-compile -- this one already exists, but will instead be removed
  if it's non-functional; i.e. (native-comp-available-p) returns nil.

These are now detectable using featurep, which is fast and built-in.
2022-08-14 20:43:35 +02:00
Henrik Lissner
118f0c416a
refactor(evil): replace evil-visual-update-x-selection advice
With the new evil-visual-update-x-selection-p setting.

Also adds a more descriptive comment to this design choice.
2022-08-10 13:18:34 +02:00
Henrik Lissner
27a448b04b
feat(vc-gutter): add +diff-hl backend
This adds an alternative backend to the :ui vc-gutter module, enabled
with the +diff-hl flag. In the future, I intend for diff-hl to replace
git-gutter, as it is slightly faster and depends on more native
functionality (vc.el), but it's still a little buggy. It will remain
opt-in until those issues are sorted out.
2022-08-08 18:23:47 +02:00
Henrik Lissner
057e6c531c
refactor: replace doom-enlist with ensure-list
doom-enlist is now a deprecated alias for ensure-list, which is built
into Emacs 28.1+ and is its drop-in replacement. We've already
backported it for 27.x users in doom-lib (in 4bf4978).

Ref: 4bf49785fd
2022-08-07 19:43:13 +02:00
Henrik Lissner
1abcf913aa
revert: fix(docs): set mode in file-local vars
emacs-straight/org-mode@e22b4eb7aa introduced a breaking change that
made it impossible to rely on .dir-locals.el to change org-mode buffers
in $EMACSDIR to doom-docs-org-mode (without infinite recursion), so we
used file-local variables in 7e400ab.

emacs-straight/org-mode@215de6176b reverted that change, so we can use
.dir-locals.el again, and this is my preference, since it requires less
boilerplate across our hundreds of org files.

Ref: emacs-straight/org-mode@215de6176b
Ref: emacs-straight/org-mode@e22b4eb7aa
Revert: 7e400abdc0
2022-08-07 19:08:07 +02:00
Henrik Lissner
1f8bf7accb
merge: rewrite-docs
I've omitted docs/*.org from this merge, as there is still work left to
do there, but I am pushing the module docs early so folks can benefit
from the new docs sooner.
2022-08-03 03:27:50 +02:00
Henrik Lissner
7e400abdc0
fix(docs): set mode in file-local vars
Due to emacs-straight/org-mode@e22b4eb, a replacement major mode (for
org-mode) can no longer be specified from .dir-locals.el, as it spirals
into infinite recursion. Therefore, a mode: line is needed in all Doom
docs.

Ref: emacs-straight/org-mode@e22b4eb7aa
2022-08-03 02:46:33 +02:00
ivanbrennan
90c510caca refactor(evil): remove evil-want-C-w-scroll
This appears to have been added accidentally in the following commit:
8b9d4a94bb

The codebase contains no references to it.
2022-08-02 20:36:59 +02:00
Henrik Lissner
1255315bfc
refactor(docs): replace nav menus with virtual one
Now that the header is dynamically generated (when doom-docs-mode is
active), a literal header is unnecessary.
2022-08-02 19:37:07 +02:00
Henrik Lissner
e77a45bc22
docs: use lowercase keywords
As per Org's new defaults, which we're adopting elsewhere, so may as
well adopt it here.
2022-08-02 16:23:43 +02:00
Henrik Lissner
9ec60d9ab9
fix(evil): evil-collection-occur -> evil-collection-replace
evil-collection-occur.el was moved to evil-collection-replace.el in
emacs-evil/evil-collection@79fc09b014.

Fix: #6495
Close: #6524
Ref: emacs-evil/evil-collection@79fc09b014
Co-authored-by: DeesonGao <DeesonGao@users.noreply.github.com>
2022-07-05 14:16:16 +02:00
Henrik Lissner
5a98d59afc
perf(evil): lazy load evil-collection-shortdoc
Another package that Emacs loads eagerly at startup, that ends up
pulling in evil-collection et co.
2022-07-04 02:38:10 +02:00
Henrik Lissner
14b2395424
refactor: remove unused core variables
doom-debug-p and doom-interactive-p have always been intentionally
redundant, because changing the variables they replaced had other
side-effects, which made writing tests for them difficult. Since our
new (yet unpublished) tests lean heavily toward integration testing more
than unit testing, this becomes an implementation detail.

And doom-init-p's only use was refactor out at some point in the past,
so it's no longer used.

Also done to reduce Doom's footprint, in general.
2022-06-29 18:14:20 +02:00
Henrik Lissner
31519d393a
bump: :editor evil
emacs-evil/evil-collection@e557188692 -> emacs-evil/evil-collection@6cc02b238c
emacs-evil/evil@3e41a82333 -> emacs-evil/evil@157af04d2c
hlissner/evil-snipe@a79177df40 -> hlissner/evil-snipe@c07788c35c
redguardtoo/evil-nerd-commenter@42ba1a473b -> redguardtoo/evil-nerd-commenter@386cd758a4
2022-06-17 18:21:23 +02:00
Henrik Lissner
d0cdf8f5c6
fix(evil): ]f/[f opening directories
They should traverse files, not directories.
2022-06-13 01:16:22 +02:00
Samuel Tschiedel
488ad07cc5 fix(evil): define *-any-quote directly
Defining `*-any-quote` objects via the exiting `*-block` helpers leads
to incorrect behaviour, where the trailing boundary is also included as
part of the selection (cursor on `|`, selection between `|`):

```
start: "te|st"
v i q: "|test"|
```

The expected behaviour is the same as `v i "`:
```
start: "te|st"
v i q: "|test|"
```

Fix: #5698
2022-04-25 16:38:40 +02:00
Henrik Lissner
f6fd2dc000
bump: :editor
abo-abo/lispy@bf31576802 -> abo-abo/lispy@df1b7e614f
cute-jumper/evil-embrace.el@464e8ec52f -> cute-jumper/evil-embrace.el@7b5a539cfe
doomemacs/snippets@3083b2342f -> doomemacs/snippets@2d031f7231
edkolev/evil-lion@6b03593f5d -> edkolev/evil-lion@4da660e124
emacs-evil/evil-collection@e69abfcb1c -> emacs-evil/evil-collection@e557188692
emacs-evil/evil@be97395e31 -> emacs-evil/evil@3e41a82333
emacsorphanage/god-mode@d7e9330950 -> emacsorphanage/god-mode@fac7d26ecd
gabesoft/evil-mc@246aecc174 -> gabesoft/evil-mc@63fd2fe0c2
magnars/multiple-cursors.el@8a60fc7ef0 -> magnars/multiple-cursors.el@aae47aebc0
2022-03-31 19:25:50 +02:00
Dan
42e5763782
fix(evil): respect users' evil-collection-key-blacklist 2022-02-23 17:49:53 +01:00
7ym0n.q6e
d833242de7
fix(evil): +evil/next-preproc-statement -> +evil/next-preproc-directive
+evil/next-preproc-statement does not exist.

Ref: 83387d89e9
2022-02-10 04:07:16 +01:00
Henrik Lissner
7246db457c docs: replace doom-source with doom-repo links
I will later use "source" to refer to module sources, so better we avoid
the terminology for now.
2022-02-01 18:55:27 +01:00
Henrik Lissner
1db8462d6b bump: :editor evil
emacs-evil/evil-collection@0ce1ea96b4 -> emacs-evil/evil-collection@e69abfcb1c
emacs-evil/evil@a5fd96dadc -> emacs-evil/evil@be97395e31
wcsmith/evil-args@758ad5ae54 -> wcsmith/evil-args@2671071a4a

Fix: #6037
Ref: emacs-evil/evil#1573
Ref: emacs-evil/evil#1566
2022-01-27 18:49:21 +01:00
Henrik Lissner
09098bed48 fix(evil): activate evil-collection-mpc
Amend: 86034131c4
2022-01-27 03:49:53 +01:00
Henrik Lissner
1d41ee0c1a refactor(evil): use window-swap-states in +evil--window-swap
Taking a look at the built in windmove functions shows that Emacs has a
built in function for swapping windows called `window-swap-states`.
Using this ensures the window state is maintained.

Ref: #6023
Co-authored-by: luveti <luveti@users.noreply.github.com>
2022-01-27 03:43:51 +01:00
Dan
1643124104
fix(evil): window-selection-change-functions use case
`window-selection-change-functions` expects hooks to have one argument.
2022-01-27 03:33:13 +01:00
Henrik Lissner
86034131c4 bump: :editor evil
Dewdrops/evil-exchange@ac50f21b29 -> Dewdrops/evil-exchange@5f0a2d4143
emacs-evil/evil-collection@1b9d5c5d93 -> emacs-evil/evil-collection@0ce1ea96b4
emacs-evil/evil@b00018bf55 -> emacs-evil/evil@a5fd96dadc
redguardtoo/evil-nerd-commenter@63baf2d1c7 -> redguardtoo/evil-nerd-commenter@42ba1a473b

Close: #5983
2022-01-12 01:55:34 +01:00
Henrik Lissner
fe3f8866d8 fix(evil): disable evil-collection-smerge-mode
evil-collection-smerge-mode is broken due to incorrect pathing upstream,
so evilified keybinds for smerge-mode will have to wait until it is
addressed there.

Amend: 8d6221bc1e
Amend: 7bbc3bc48e
2021-12-14 01:21:33 +01:00