Commit Graph

340 Commits

Author SHA1 Message Date
52d413f448 fix(cli): rebuild dependents when updating packages
Library packages (like compat and transient) offer macros. Therefore,
any package that uses them (dependents) needs to be recompiled when
these are updated, but straight currently doesn't do this. As a
temporary workaround, this commit forces dependents to be rebuilt after
updates.

This is a bit too brute-force, but will do until v3, which will manage
dependency graphs and their complexities more efficiently.
2023-02-20 19:00:45 -05:00
b0f91f6403 fix: void-variable native-comp-deferred-compilation-deny-list
In later versions of Emacs 29, this variable has been renamed without a
deprecation alias, causing void-variable errors wherever it is used.
Since it could potentially be used outside of Doom, I'll use a variable
alias until we formally drop 28 support (not for a long time).

Close: #7090
Co-authored-by: AdoPi <AdoPi@users.noreply.github.com>
2023-02-20 19:00:45 -05:00
c6b3a81da0 fix(cli): recommend "checkout main" option if prompted
In case straight prompts something like the following:

    > In repository "git-modes", HEAD on "master" is behind default branch "main"

         1) Abort
         2) Checkout "main" (Choose this if unsure)
         3) Magit log "master..main" and open recursive edit
2023-02-20 19:00:45 -05:00
4513efe159 bump: :core
Fuco1/smartparens@8b6a3c3b31 -> Fuco1/smartparens@7afd647395
Wilfred/helpful@6633d82c6e -> Wilfred/helpful@94c25337b2
Wilfred/helpful@6633d82c6e -> Wilfred/helpful@94c25337b2
bbatsov/projectile@20aa2adccc -> bbatsov/projectile@e18ad4d611
domtronn/all-the-icons.el@4a4d6269b8 -> domtronn/all-the-icons.el@51bf77da1e
emacs-straight/project@2e8da1b811 -> emacs-straight/project@e086bdc7c5
joddie/pcre2el@0b5b2a2c17 -> joddie/pcre2el@38c6f80c78
radian-software/straight.el@3eca39dfc6 -> radian-software/straight.el@56a8b6c8a4
2023-02-18 15:27:49 -05:00
2c652259a5 tweak(lib): open file after doom/copy-this-file
As mentioned in #6964, it's rare for anyone to want to copy a file
without opening the new file.

Close: #6964
2023-02-18 15:27:48 -05:00
7bf5938c66 fix: relative paths for add-load-path!
Because (dir!) was being expanded too early (at macro expansion time)
rather than runtime.
2023-02-18 15:27:47 -05:00
0bc06fc0d3 fix: correct name of doom-after-modules-init-hook
The old name is doom-after-init-modules-hook.
2023-02-18 00:51:54 -05:00
7ba11a62ef fix(cli): make doctor load module doctor files
Amend: 5a5195b84d
2023-02-18 00:45:33 -05:00
54c4340740 fix(lib): consult case of doom--help-search
advise consult--ripgrep-make-builder instead of reimplementing
2023-02-17 12:34:26 -05:00
3f3200f98d bump: :core
radian-software/straight.el@e20a44c4ac -> radian-software/straight.el@3eca39dfc6

Fix: #6960
2022-11-28 05:40:35 +01:00
f9888c21e6 tweak(cli): doom sync: don't purge straight builds by default
This allows for more rapid 'doom sync'ing when testing different module
combinations, but puts the onus on the user to run `doom sync
--purge` (or `doom purge`, which will later be renamed `doom gc`) to
prune orphaned packages/repos.
2022-10-29 01:57:43 +02:00
a2b02942f8 fix: void-function set-fontset-font error
Due to some packages and modules using this in some (non-GUI) builds of
Emacs. display-graphic-p isn't enough here, so rather than police all
the possible offenders, I've defined it to no-op in those cases,
instead.

Close: #6876
2022-10-29 01:57:42 +02:00
a1f8063485 fix(lib): package! not overriding defaults
This regression was introduced in 5a5195b; it broke `package!`s ability
to override the recipes of packages declared by other modules, due to
some API assumptions that aren't true yet (in unpushed post 3.1 work).

Amend: 5a5195b84d
Fix: #6901
2022-10-23 02:30:13 +02:00
aac3c15cde fix: change warning-suppress-types to list of lists
warning-suppress-types' pre-29 documentation suggests that it accepts a
list of symbols, but a recent, upstream correction changes this.

Ref: emacs-mirror/emacs@d5ee49c25c
Amend: 8c442d84b9
2022-10-05 15:14:12 +02:00
4a2cbc903d fix(lib): doom-module-locate-path: cannot locate exact files
One such casualty of this bug is that 'SPC h d m' (doom/help-modules)
could not find README.org files for disabled modules.
2022-10-03 14:13:39 +02:00
f93003a9a2 refactor!(lib): remove eval-when-compile!
BREAKING CHANGE: Removes the eval-when-compile! macro. I recently
discovered cl-eval-when and it serves this macro's purpose well
enough (and is autoloaded+built-in).

This macro wasn't used anywhere in (published) Doom code, however, and
users shouldn't really be using it, so its removal is unlikely to cause
any actual breakage.
2022-10-03 14:12:33 +02:00
ba35f12be4 release(modules): 22.10.0-dev
Ref: 2b39e41368
2022-10-02 19:13:58 +02:00
ff9602ef75 fix(lib): revert add-transient-hook! refactor
a4b5831 removed this let-binding because I expected the function to
capture it, which seems to be the case in general, except for #6865.
Since add-transient-hook! could conceivably be used in an elisp file
with lexical-binding off, I'll take fewer chances and live with a little
redundancy.

Amend: a4b58311da
Fix: #6865
2022-10-02 19:08:53 +02:00
6eab48641f fix: disable non-essential startup optimizations in debug-mode
As to not interfere with debugging.
2022-10-02 18:46:37 +02:00
d8d06390d2 fix(profiles): ensure trailing / on user-emacs-directory
To quote `user-emacs-directory`'s docstring:

> Note that this should end with a directory separator.

However, users may forget to add one in their profile configs, which
will cause errors.

Fix: #6608
2022-10-02 18:46:37 +02:00
a6f0bf3123 fix(lib): infinite recursion in doom-first-*-hook
It's possible for these hooks to be triggered recursively, such as in
the case of emojify's "Emoji images not available should I download them
now?" prompt (reported upstream).

Fix: iqbalansari/emacs-emojify#100
2022-10-01 17:09:15 +02:00
e9a1908e0d docs(cli): doom upgrade: s/-f/--force
Fix: #6712
2022-09-30 22:59:37 +02:00
850907ed9a fix(lib): doom/delete-this-file nil path handling
Fix the handling of a nil path within doom/delete-this-file.

If path is nil (e.g. called interactively when buffer is not visiting a
file), avoid calling abbreviate-file-name on nil, otherwise an error
will be signaled:

  (wrong-type-argument stringp nil)

Additionally, fix the subsequent path checks. These were treating two
distinct scenarios as a "Buffer is not visiting any file" user-error:

- nil path
- non-existent path
- Only the first should result in that error. The second should proceed
  to the next path check (which was previously unreachable), to signal
  the appropriate error, "File doesn't exist: %s".
2022-09-30 22:48:59 +02:00
285b460c80 fix: module load order
A mistake in 5a5195b caused modules without an explicit :depth to be
loaded in the wrong order (because their final depth wasn't cached
correctly, and so were all given a depth of 0, thus falling back on
their insertion order, which is precisely what 5a5195b was trying to
fix). This commit fixes that and changes the module cache vectors to
match the structure of doom-module-context, for consistency.

Amend: 5a5195b84d
Fix: #6813
Fix: #6859
2022-09-29 17:35:59 +02:00
9f512a60bf nit: mention test env for startup optimizations
And remove "debug-mode" clause because of c20ba77.

Ref: c20ba77ff7
2022-09-29 17:35:56 +02:00
71f7e4b5b8 perf: defer resetting inhibit vars further 2022-09-26 12:41:00 +02:00
fbe94ba9f2 perf: inhibit display-startup-screen 2022-09-26 12:39:10 +02:00
95bdc3b566 fix(lib): doom/reload-*: void-function doom-with-context
This macro used to be `doom-with-context`, but was renamed in the middle
of backporting f9201eb218, but these references were missed.

Fix: #6849
Amend: f9201eb218
2022-09-26 12:06:42 +02:00
3f16c82877 fix(cli): doctor: false positive 'X.elc is out-of-date' warnings
The doctor would look for stale byte-code in *all* build directories,
which was excessive and produced many false positives for folks who use
multiple versions of Emacs or have recently up/downgraded.
2022-09-26 02:09:20 +02:00
07171185bb fix: doom-module-context: nil doom-module-context
If a module isn't enabled, this should silently set the context to an
empty array, not nil, which causes a (aref nil 2) type error.
2022-09-26 02:08:07 +02:00
b8038e93cf fix: doom-package-list: failures to resolve module context
doom-module-from-path fails to deduce the module from some paths (it
seems to struggle with doom-user-dir in some cases), causing a (aref nil
2) error (see #6845).

Fix: #6845
2022-09-26 02:08:00 +02:00
39b8934236 fix(lib): package! error from doom/bump-* commands
package! complains that "package! can only be used in packages.el
files".

Amend: 4efaf6837b
Amend: f9201eb218
2022-09-25 19:18:05 +02:00
d362490d45 fix(docs): if doom-emacs-dir doesn't end w/ slash
Doom is slowly transitioning away from requiring that its doom-*-dir
variables end in a slash (see two refs below), but there are some
vestiges of it left. This is one of them.

Fix: #6842
Ref: 00e8f6b72a
Ref: b914830403
2022-09-25 18:21:32 +02:00
2bb7e8d018 fix(lib): doom-info symlink-path
The `if` clauses were swapped, such that a non-symlinked path was shown
like,

  ~/.config/emacs/ -> ~/.config/emacs/

and a symlinked path was shown as,

  ~/.config/emacs/
2022-09-25 18:18:00 +02:00
2645ed491b perf: autoloads: remove definition-prefixes & abbreviate paths
Reduces the file size of the autoloads path by ~5%, memory usage by ~7%,
and buys around ~30-50ms in startup time.
2022-09-25 17:52:07 +02:00
5222612527 refactor(cli): reorganize CLI library
* lisp/cli/help.el (doom help): move to lisp/cli/meta.el, and add :dump
  definition.
* lisp/doom-cli.el:
  - (doom-before-init-hook): trigger hook after the file is done
    loading.
  - (doom-cli-backtrace-depth, doom-cli-straight-error-lines,
    doom-cli-benchmark-threshold): rename these variables' prefix from
    `doom-cli-` to `doom-cli-log-`.
  - (doom-cli--plist): rename to doom-cli--group-plist, to better clue
    in what changes it.
  - (doom-cli-context-parse): remove unused letbind (argsleft).
  - (doom-cli-create-context-functions, doom-cli-before-run-functions,
    doom-cli-after-run-functions): define with defcustom instead of
    defvar, to indicate that they are (especially) intended for end-user
    configuration.
2022-09-25 17:52:07 +02:00
a29041735c tweak(cli): read $DOOMPATH like $EMACSLOADPATH
$EMACSLOADPATH is read to pre-fill load-path. Empty entries therein are
substituted with the default value of load-path. I am mirroring this
behavior with the $DOOMPATH variable.
2022-09-25 17:52:07 +02:00
1a1e7b808b fix(cli): doom env: deny DOOMPROFILE more precisely
The former regexp was too permissive. Not that it was an issue, but it's
one thing less to worry about.
2022-09-25 17:52:05 +02:00
1cddb5c369 fix(cli): doom doctor: void-variable key error
A regression introduced in 4efaf68, cause by an incomplete refactoring
of the loop, where not all instances of `key` were changed into `group`
and `name`.

Amend: 4efaf6837b
Fix: #6840
2022-09-25 11:43:00 +02:00
8bf308f9b1 fix: failure to recognize X switches in PGTK builds
This is a regression introduced in 1c4217a.

Doom unsets command-line-x-option-alist when it reasonably suspects it's
not running in an X environment. The heuristic for that is checking when
`initial-window-system` is set to `x`, but as it turns out, PGTK builds
of Emacs set this to `pgtk`, so PGTK users were deprived of Emacs' X
switches, like --geometry, --foreground, --font, etc (they'd throw an
"Unknown option" error at startup). This was fixed.

However, this heuristic isn't perfect. Not all PGTK users are on X (I'd
hazard to guess most of them aren't). So a more reliable check is
needed (and it's too early in the startup process for us to call
display-graphic-p on any frame). The `(not IS-LINUX)` or `(or IS-MAC
IS-WINDOWS)` I had previously used (before 1c4217a) wasn't enough
either, because users can (and do) install X on these
systems (especially where WSL is involved). Still, until I've found a
better one, this is an acceptable workaround.

Amend: 1c4217aa27
2022-09-25 11:35:48 +02:00
731764ae71 fix(cli): doom install: wrong-number-of-args error
This corrects a typo that snuck into 6c76b98.

Amend: 6c76b98dbb
2022-09-24 23:09:17 +02:00
594d70292d refactor: remove use-package from doom-keybinds.el
One step toward a use-package-less future.

Ref: dda848e089
2022-09-24 22:10:02 +02:00
ffad2bc49e perf: move doom-init-ui-h to window-setup-hook
This has little effect on startup time now, but seems to buy 100-200ms
with some 3.0 optimizations that will come soon.
2022-09-24 22:10:02 +02:00
5f37069402 fix(cli): excessive "cannot find X" logs
It doesn't really matter if these files can't be found, and it only
services to fill up the logs with noise.
2022-09-24 22:10:02 +02:00
c20ba77ff7 tweak: employ startup optimizations even in debug mode
It's kind of a pain to have different behavior when you're debugging.
Some errors may not present without them, so best to remain predictable
and permit these optimizations even when debug mode is on.
2022-09-24 22:10:02 +02:00
8c442d84b9 perf: custom-dont-initialize = t
defcustom does some initialization work to accommodate the possibility
that the user has set the variable before it was defined.  This work is
unneeded so early at startup, so I disable it (temporarily).

In the future, Doom will use defcustom more, as it's a helpful
indication to readers what variables I intended for configuration (and
helps with discovery of options through `M-x doom/help-custom-variable`
or `M-x customize`). As that transition occurs, the benefit of this
optimization will begin to show, but for now its effect on startup time
is negligible.

* lisp/doom.el (warning-suppress-types): set this immediately. Since its
  default value is nil and this happens so early at startup, we don't
  have to be considerate of defaults. Plus, this custom-dont-initialize
  optimization can cause breakage if a warning is thrown *before* before
  this setting is changed.
2022-09-24 22:10:02 +02:00
1c32e317cc tweak(lib): log calling hook from doom-run-hook
Makes it easier to trace hooks through logs.
2022-09-24 22:10:02 +02:00
4efaf6837b refactor: introduce doom-module-context
Where f9201eb introduced a general context system, this one introduces
one for modules, to simplify our let-bind game when interacting with
modules, and to more efficiently expose module state to modulep! (which
gets called at runtime a great deal, so its performance is important).

* lisp/doom-lib.el (doom-log): simplify macro and introduce
  doom-inhibit-log variable.
* lisp/doom-modules.el (modulep!): fix reported file path if modulep!
  fails to find the local module.
* lisp/lib/debug.el (doom-debug-variables): disable doom-inhibit-log
  when debug mode is on.

Ref: f9201eb218
2022-09-24 22:09:46 +02:00
5d2313155c fix: overriding doom-version's plist
setplist will overwrite a symbol's previous properties (like
documentation).
2022-09-24 22:09:39 +02:00
71b2b09f5c fix(cli): doom-cli-load: replace load! w/ doom-load
load! effectively loads (file-name-concat (dir!) PATH) which, in this
case, is concatenating two absolute file paths. Emacs does the right
thing and loads PATH, but I don't want to rely on this good fortune as
it could be broken in a future update.
2022-09-24 22:09:39 +02:00