Commit Graph

180 Commits

Author SHA1 Message Date
0b79fd3391 fix: doom-autoloads--scan: set load-true-file-name too
Ref: 114f99688c
2024-11-04 20:41:55 -05:00
e1a2f94ec1 fix: void-variable doom-module-load-path error
`doom-module-load-path` will be removed in the next big refactor commit,
so as a stop gap, I simply move it to doom.el to resolve the reference
error.

This also removes the obsolete alias `doom-modules-dirs`, since it's
been deprecated long enough (and `doom-module-load-path` itself won't be
around much longer anyway).

Ref: #8147
Amend: 8cafbe4408
2024-11-04 18:23:25 -05:00
e2c1801e6a fix: doom/reload: void-variable doom-module-init-file
Fix: #8147
Amend: 8cafbe4408
2024-11-04 18:17:59 -05:00
1d3c2db274 fix: doom-autoloads--scan: s/pfile/file
This typo is responsible of a startup error `delayed-warnings-hooks
void-variable warning-minimum-log-level`.

Fix: #8144
2024-11-04 12:31:11 -05:00
7531c4298e fix: indexing packages' Info documents (part 2)
The issue required a more systemic fix, because the former (before
9e6c46a even) only recorded `Info-directory-list` for the packages that
were installed/updated in that `doom sync` session, forgetting all
packages installed in the past.

Fix: #8143
Amend: 9e6c46a332
2024-11-03 22:33:13 -05:00
b26980a4a4 fix: reversed autoloads
Autoloads were accidentally reversed in 114f996. For some packages,
autoload order is signifcant (such as json-mode, which autoloads
json-mode-auto-mode-list first, then modifies it in a later autoload).

Fix: #8143
Amend: 114f99688c
2024-11-03 21:22:30 -05:00
b3aa41fd74 refactor: profile generators 2024-11-03 21:03:40 -05:00
9e6c46a332 fix: indexing packages' Info documents
Fix: #5457
2024-11-03 21:03:40 -05:00
114f99688c fix: nil load-file-name in package autoloads
Some packages do funky things in their autoloads, so care is needed to
closely emulate an autoloading environment when loading them, however,
in 8cafbe4, Doom wraps these autoloads in a function, thus ensuring
they're executed without `load-file-name` or `load-in-progress` set,
which some packages will expect these in their autoloads.

This fixes the (wrong-type-argument stringp nil) error some folks see
with certain packages doing said funky things in their autoloads (like
realgun in the :tools debugger module).

Fix: #8143
Amend: 8cafbe4408
2024-11-03 21:02:32 -05:00
1f45e9e79e refactor: remove redundant require calls
Amend: aab1595011
2024-11-03 15:19:54 -05:00
f425f2ff3d fix: more void-variable errors
For `straight--build-cache` and `doom-modules`.

Fix: #8140
Amend: 8cafbe4408
2024-11-03 12:36:38 -05:00
aab1595011 fix: void-variable straight-base-dir errors
Fix: #8140
Amend: 8cafbe4408
2024-11-03 12:00:22 -05:00
8cafbe4408 refactor!: restructure Doom core
BREAKING CHANGE: This restructures Doom's core in an effort to slim it
down and partially mirror architectural changes coming in v3. This is
part 2 of 3 commits (part 1 being 1590434), done to facilitate a change
in part 3 that will introduce a new `doom!` syntax for pulling
third-party module libraries from remote sources (similar to `package!`
statements). I am backporting this from V3 so I can move our modules out
into separate repos sooner than later, so development on modules can
continue separately without interfering with v3's roll out.

Though this is labeled a breaking change, it shouldn't affect most users
except those few tinkering directly with Doom's internals.

Ref: 15904349cf
2024-11-03 01:52:28 -05:00
25201a40f3 refactor: rename :core module group to :doom
I'll soon introduce a new family of core modules which will house most
of what's currently in the doom-*.el libs, moving them out of core.
2024-10-31 21:54:19 -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
ad29be39f6 refactor(lib): add provide lines 2024-10-02 05:15:58 -04:00
8c7711920e fix(lib): doom/{reload,upgrade} on Windows
On Windows, don't execute the bash script.

Fix: #8098
2024-10-02 04:12:59 -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
fa6893eeea tweak(lib): doom-debug-variables: add doom-log-level 2024-09-13 23:07:14 -04:00
a022e55c08 fix(lib): doom/sandbox: vanilla-doom+ target
Between this and 60083a2, doom/sandbox is now fully functional (this is
a stopgap fix until v3.0).

Ref: 60083a2626
Fix: #5845
Fix: #6505
Fix: #7486
2024-09-10 17:56:35 -04:00
60083a2626 fix(lib): doom/sandbox
Fixes all the launch paths *except* for `vanilla-doom+` (Doom core +
modules - private config), which needs some work from v3 to properly
fix.
2024-09-10 17:26:54 -04:00
6025e141aa perf(lib): minor optimizations
To reduce allocations in hot loops.
2024-09-07 19:04:37 -04:00
2981aec4dd fix(lib): doom/{reload,upgrade}: double-escaped %s in command
Amend: f644c4fa6c
2024-09-07 13:51:21 -04:00
f644c4fa6c feat: add basic android support 2024-09-07 01:06:33 -04:00
22fc36dba7 fix(lib): doom/add-directory-as-project
If the target directory wasn't in a project, this command would throw a
type error (see #8032).

This also adds more checks and informative error handling to the
command.

Fix: #8032
2024-08-31 00:59:45 -04:00
6671adc687 refactor!: move helpful from :core to :lang emacs-lisp
BREAKING CHANGE: This moves helpful.el out of core into :lang
emacs-lisp. Since most (all) people have this module enabled, this
shouldn't make a difference for most people, but if you're one of the
few that don't have :lang emacs-lisp enabled, Doom will revert to using
Emacs' built-in help.el and describe-* commands.

Others can also disable helpful with (package! helpful :disable t) if
they prefer Emacs' built-in help system, which wasn't possible before,
because it was a core package.

This was done as part of an ongoing effort to slim down Doom's core in
preparation for v3.
2024-08-30 02:26:41 -04:00
c352bd0dcd refactor: remove redundant doom-bin{,-dir} decls
Amend: a8ba8feecb
Amend: a5039c4333
2024-08-28 04:58:11 -04:00
a5039c4333 fix(lib): doom/{reload,upgrade}: expand path to bin/doom
A user's shell config might destructively alter the shell's $PATH (also
common on MacOS, which destructively sets $PATH with its system dotfiles
for ZSH). This prevents the sub-shell spawned from `doom/reload` and
`doom/upgrade` from inheriting emacs' `$PATH`, which Doom adds
$EMACSDIR/bin to. Without this entry, these commands would fail to find
the Doom script.

Fix: #8027
Amend: a8ba8feecb
2024-08-27 03:24:58 -04:00
9c6a5e9323 fix(lib): doom/{reload,upgrade}: ensure env matches session 2024-08-25 17:44:29 -04:00
a8ba8feecb refactor(lib): doom/{reload,upgrade}: customizable commands
Ref: #8024
2024-08-25 17:44:28 -04:00
1977b3dfba refactor(lib): generalize ripgrep executables
Amend: 4fcf332749
2024-08-17 03:56:59 -04:00
a6df88a56a feat(lib): doom-org-docs-mode: bind q to kill-current-buffer
For consistency with other help modes.

Fix: #7985
2024-08-08 17:26:58 -04:00
5852b2ecf5 fix(cli): properly overwrite last line of output
Before this, text that extended past the new line's length would
persist, causing garbled output like this:

  > Ensuring packages are installed and built...
    > Updating recipe repos...
    > Cloning org-appear...r emacsmirror-mirror...
    - No packages need attention

Which might lead you to believe org-appear is being cloned from
emacsmirror-mirror, but the full output is actually:

  > Ensuring packages are installed and built...
    > Updating recipe repos...
      > Updating recipes for melpa...
      > Updating recipes for nongnu-elpa...
      > Updating recipes for gnu-elpa-mirror...
      > Updating recipes for el-get...
      > Updating recipes for emacsmirror-mirror...
    > Cloning org-appear...
    - No packages need attention
2024-07-26 04:46:54 -04:00
98a3cad54d docs: minor docstring revisions
For clarity only. These do not reflect any recent changes.
2024-07-18 22:38:59 -04:00
bd728fd2a8 fix(lib): doom-project-find-file: fall back to find-file if DIR is empty
Fix: #7949
2024-07-16 11:06:39 -04:00
7543b04e15 feat(format): add +format/org-block-in-region
Also updates `+org/reformat-at-point` to call
`+format/org-block-in-region` if selection is active.

Fix: #7936
2024-07-14 01:57:20 -04:00
a6ba70aed7 fix(lib): avoid writing customized faces to custom.el (take 4)
This time, the faces weren't being applied if THEME == 'user (for
`custom-set-faces!`).

Amend: afb9773d7c
Ref: #7929
Ref: #7933
2024-07-11 03:18:48 -04:00
c2c241666b fix(lib): autoload doom--run-customize-theme-hook
In case the user byte-compiles any files where custom-theme-set-faces!
is used.

Amend: afb9773d7c
Ref: #7929
Ref: #7933
2024-07-10 16:00:16 -04:00
afb9773d7c fix(lib): avoid writing customized faces to custom.el (take 3)
Wrap doom-customize-theme-hook and use that wrapper also when the local
doom--customize-themes-h-* hook is called immediately, otherwise
settings will be written to custom-file, which is what I've been trying
to avoid with all these takes!

Amend: 0b13525252
Ref: #7929
Close: #7933
Co-authored-by: real-or-random <real-or-random@users.noreply.github.com>
2024-07-10 15:57:35 -04:00
0b13525252 fix(lib): avoid writing customized faces to custom.el (take 2)
Setting custom--inhibit-theme-enable to t isn't enough, since
custom--should-apply-setting will return non-nil if THEME is 'user.

Ref: #7929
Amend: 68771150ba
2024-07-10 04:22:48 -04:00
68771150ba fix(lib): avoid writing customized faces to custom.el
`custom-theme-set-faces!` calls `custom-theme-set-faces`, which will
mark the customizations for saving to custom.el. But
`custom-theme-set-faces!` is not intended for permanent customizations.
I fix this by setting `custom--inhibit-theme-enable` to prevent some of
the extra work `custom-theme-set-faces` does around changing faces, and
call face-spec-set manually.

Also renames doom--custome-theme-set-face to doom--normalize-face-space,
to better reflect what it does.

Close: #7929
Co-authored-by: real-or-random <real-or-random@users.noreply.github.com>
2024-07-10 01:46:57 -04:00
e43d575caf refactor(lib): don't use smartparens' API
Toward our eventual goal of moving smartparens out of core, I've adapted
this from code provided by hpfr on Discord, which was adapted from
smartparen's syntax-ppss caching logic. `:config default` will need need
some attention before we can fully move smartparens to its own `:editor
smartparens` module.

Co-authored-by: hpfr <hpfr@users.noreply.github.com>
2024-07-09 20:55:29 -04:00
944eef90ec fix(lib): doom-plist-merge causing side-effects
This one was sneaky. `doom-plist-merge` was mutating the second plist
fed to it, causing issues upwind of its uses. In #7925, for example,
calling `doom-package-recipe` to read a package's recipe would end up
altering it, copying sub-properties of :recipe to other packages'
recipes.

If you've hit #7925, you'll also need to delete your build-cache to get
around the error. I.e.

  rm -f $EMACSDIR/.local/straight/build-*-cache.el
  doom sync  # or upgrade

Fix: #7925
2024-07-09 02:46:53 -04:00
d7075b2420 tweak(lib): doom-project-find-file: use transient project
If DIR is not a project and does not have root markers, create a
transient project instead. This ensures that `project-find-file-in`, and
by extension vertico, is still used in non-project directories instead
of falling back to `find-file`

Ref: 1b0af3bfc7
2024-07-06 20:16:59 -04:00
b767beaca6 fix(lib): don't call doom-adjust-font-size twice
When doom-big-font-mode is deactivated.
2024-07-05 20:10:57 -04:00
6e69b29084 fix(lib): reset font size before setting big font mode
Calling (doom-adjust-font-size 1) repeatedly would keep increase the
font size because an increment is passed.

When loading themes, the doom-big-font-mode minor mode gets loaded again
therefore it causes the font to get increased.

Fix: #7845
2024-07-05 18:58:18 -04:00
481753bd5e refactor!: remove pcre2el package
BREAKING CHANGE: This removes the pcre2el package, which Doom was using
solely for one function to escape PCREs. In the interest of thinning out
Doom's core, I've hoisted a simpler version of the function into Doom's
stdlib so I can remove the dependency.
2024-07-01 18:11:34 -04:00
a24ff58a5a fix(lib): don't kill buffers visible in another frame
For Doom's kill-current-buffer advice.
2024-06-26 23:21:06 -04:00
d84111927c fix(lib): doom/bumpify-diff: ignore malformed package! statements
To avoid 'uneven number of packages be bumped' errors in some edge cases
where this isn't true.
2024-06-22 18:14:05 -04:00
7e7d8ebdfd fix(lib): print!: don't resolve printed symlinks 2024-06-22 18:14:05 -04:00