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.
BREAKING CHANGE: This removes git-gutter as an implementation for the
`:ui vc-gutter` module, leaving only the diff-hl implementation. There
are no longer any +git-gutter or +diff-hl flags for this module. Users
don't have to do anything to keep the vc gutter, unless they prefer
git-gutter for any reason (in which case they'll need to install and set
it up themselves).
This has been planned for some time, because of a roadmap goal for Doom
to lean into native/built-in functionality where it's equal or better
than the third party alternatives. diff-hl relies on the built-in vc.el
library instead of talking to git directly (thus expanding support to
whatever VCS's vc.el supports, and not git alone), which also means it
can take advantage of its caching and other user configuration for
vc.el. Overall, it is faster and lighter.
What I've also been waiting for was a stage-hunk command, similar to
git-gutter:stage-hunk, which arrived in dgutov/diff-hl@a0560551cd and
dgutov/diff-hl@133538973b, and have evolved since.
Ref: dgutov/diff-hl@a0560551cd
Ref: dgutov/diff-hl@133538973b
Ref: https://github.com/orgs/doomemacs/projects/5/views/1?pane=issue&itemId=58747789
Some unknown difference between `loaddefs-generate` (Emacs 29+) and
`make-directory-autoloads` (<=28) causes evil-pinyin's autoloads file to
throw an error in 29+ when loaded, complaining about missing macros
defined by its dependencies (mainly `define-namespace` and
`evil-define-*`). Specifically, void-function errors.
Since the package is loaded almost immediately on startup, evil-pinyin's
autoloads file isn't needed in the first place, so by disabling it, the
error is resolved. This'll do until I can find a better solution or, at
least, the right party to report it to.
Ref: #6482
- Advise orderless to use pyim-cregexp-build when using vertico
- Add it to ivy-re-builders-alist when using ivy
Close: #6482
Co-authored-by: merrickluo <merrickluo@users.noreply.github.com>
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'
doom-etc-dir will be renamed to doom-data-dir, to better reflect its
purpose, and align it with XDG_DATA_HOME (where it will be moved to in
v3, where Doom will begin to obey XDG directory conventions more
closely).
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.
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.
* module: add :input bidi
Co-authored-by: Yoav Marco <yoavm448@gmail.com>
* docs(bidi): flesh out README.org
Co-authored-by: Itai Y. Efrat <itai3397@gmail.com>
* feat(bidi): add +bidi-global-mode
* docs(bidi): improve font setting instructions
* feat(bidi): add +bidi-(hebrew|arabic)-font
Since the Hebrew and Arabic unicode blocks cover the vast majority of
RTL languages used today, we provide these fonts so end users don't have
to bother with setting up the hooks themselves.
* feat(bidi): add smart fontify
Adds support for using the bidi fonts on surrounding whitespace and
punctuation through. On by default, customizable through
+bidi-want-smart-fontify and +bidi-smart-fontify-keywords.
Also adds face versions of the bidi fonts.
* docs(bidi): recommend known good nastaliq fonts
* fix(bidi): re-set bidi faces after changing fonts
* feat(bidi): add +bidi-paragraph-direction
This allows users to choose what bidi-paragraph-direction is set to when
+bidi-mode is on, so they can choose if they want per paragraph
alignment (the default) or to force everything to be aligned RTL
* docs(bidi): conform to verbatim/code conventions
* docs(bidi): add font overview to Features
* docs(bidi): warn on rtl forced alignment footgun
+bidi-paragraph-direction is a nice variable to have if you primarily
use +bidi-mode for rtl text buffers, but it shouldn't be used in
conjunction with +bidi-global-mode since it messes up English buffers.
Co-authored-by: Yoav Marco <yoavm448@gmail.com>
BREAKING CHANGE: Ctrl-* keys are back to default meaning in insert mode
Changing the signification of Ctrl-* keys in insert mode seems
unnecessary and ends up confusing because it is not necessarily the same
bindings as in normal mode.
Fewer links means less confusion.
- Merge doom-issue and doom-commit links into doom-ref (for auto-linking
Issue/PR/commit references).
- Merge doom-module-source and doom-docs-source links into doom-source.
- Rename doom-report-issue to doom-report.
- Use '!' as the icon for module issues link.
- Remove doom-repo (replaced with "doom:*" in :lang org module).
- Add doomdir and emacsdir links to :lang org module.
Just as magit took control of 's' after "key rotation", magit (at least
when unpinned) takes control of 't' and we need to manually unmap the
key so that 't' goes down one line when the cursor is on a magit section
header
- Rename module from `:completion selectrum` to `:completion vertico`
- Rename all files involved
- Do *not* yet rename all the functions, as that messes up git's rename
detection.
`W` was used to emulate `C-w C-w`, which is useful to quickly change windows
most of the time. But this currently conflicts with edebug evil-collection bindings.
(gives `Key sequence W W starts with non-prefix key W`).
Better to leave the key alone, avoid error messages altogether, and let users redefine
the binding if they want to.
* fix(input layout bepo): remap visual-line-mode-map
Fixes#5002
* TO SQUASH: map visual-line-mode-map
See comment for rationale. This is the only way to make the remapping work correctly.
`j` and `k` aren't remapped because `t` and `s` had no meaning at all on
`visual-line-mode-map` in `motion` state.
* TO SQUASH: sharpquote and align
After the refactor, the main function to call to fix small inconsistencies went from a raw evil-collection-setup-hook
function to a proper helper function with a more logical signature.
This fixes the calls to the new function, so that the custom fixes are properly applied