Commit Graph

17512 Commits

Author SHA1 Message Date
3a5e34d67b fix: premature doom init in doom sub-profiles
Ensures that Doom doesn't prematurely initialize itself if a non-Doom
config tries to load Doom.
2022-08-02 20:22:31 +02:00
2d53fe6123 refactor: resolve doom-core-dir relative to source file
Instead of relative to doom-emacs-dir, which may or may not be where
this core lives (made more of a possibility once core has a repo to
itself).
2022-08-02 20:19:03 +02:00
58992a1885 dev: use maintainers team in global codeowners rule 2022-08-02 20:17:35 +02:00
2bb052ac17 tweak(lib): fix doomemacs URLs in help commands 2022-08-02 20:15:29 +02:00
d3f2b4d9ca docs(cli): fix issue tracker URL in 'doom help' 2022-08-01 22:36:33 +02:00
4ee7f0113e fix(cli): show straight logs after straight error
Instead of displaying an unhelpful backtrace about failed git commands,
show the tail of the *straight-process* buffer.
2022-07-31 23:44:10 +02:00
61d7200e64 revert: compat
emacs-straight/compat@2a9cf8b7bd -> emacs-straight/compat@cc1924fd8b

Fix: #6583
Amend: dd34802523
2022-07-31 17:44:08 +02:00
dd34802523 revert: compat
emacs-straight/compat@2a9cf8b7bd -> emacs-straight/compat@cc1924fd8b

compat is a dependency of magit and doom-modeline (among other
packages), but a recent bug on compat@2a9cf8b caused #6583, so I am
pinning it to a stable commit. It's not common that Doom pins 2nd/3rd
order dependencies, but I will consider doing that more going forward.

Pinning them across multiple modules isn't elegant, but a better
solution is in the works as part of #4273.

Fix: #6583
Ref: #4273
2022-07-31 16:56:14 +02:00
614a54b036 fix(literate): Doom core load paths
The file structure of the project was changed in b9933e6. This updates
the :config literate module to reflect that.

Amend: b9933e6637
2022-07-31 13:52:20 +02:00
55736ac2a6 fix(lib): prevent autoload failure at startup
In some edge cases, an early call to doom-log will cause an autoload
error because of one or more of the following is true:

- The autoloads file hasn't been generated or loaded,
- The autoloads file is out of date (especially relevant after
  b9933e6),
- doom-cli hasn't loaded lib/files eagerly yet.

To avoid this, and due to how prolific doom-log's uses are, and how
trivial the dependency is, I simply remove the dependency.

Amend: b9933e6637
2022-07-31 13:31:21 +02:00
615848e3a7 fix(cli): more future resistant 'doom upgrade'
In the future, should doom-core-dir or {doom-core-dir}/packages.el
change, 'doom upgrade' won't leave the repo in a broken state.
Unfortunately, this cannot retroactively prevent the issue; users will
experience this as soon as they update to b9933e6 or beyond, so users
will have to upgrade manually to overcome it:

  cd ~/.emacs.d
  git reset --hard 35a89bdfa6
  git pull origin master
  doom sync -u

Fix: #6598
Amend: b9933e6637
2022-07-31 00:58:36 +02:00
29dc2fed29 refactor(cli): use sh! instead of doom-call-process 2022-07-31 00:27:05 +02:00
b9933e6637 refactor!: restructure Doom core
BREAKING CHANGE: This restructures the project in preparation for Doom
to be split into two repos. Users that have reconfigured Doom's CLI
stand a good chance of seeing breakage, especially if they've referred
to any core-* feature, e.g.

  (after! core-cli-ci ...)

To fix it, simply s/core-/doom-/, i.e.

  (after! doom-cli-ci ...)

What this commit specifically changes is:
- Renames all core features from core-* to doom-*
- Moves core/core-* -> lisp/doom-*
- Moves core/autoloads/* -> lisp/lib/*
- Moves core/templates -> templates/

Ref: #4273
2022-07-30 22:41:13 +02:00
a9866e37e4 feat(lib): add doom-theme-face-attribute function
For reading face attributes for inactive themes.
2022-07-30 22:41:13 +02:00
9ea6ea68b0 tweak(lib): show chemacs version in doom-info 2022-07-30 22:41:13 +02:00
510032bcb0 refactor(lib): s/doom--debug-/doom-debug-/
To uphold conventions introduced in 6c0b7e1.

Ref: 6c0b7e1530
2022-07-30 22:41:12 +02:00
964b7dcbee fix(cli): indentation & docstring highlights for defstub! 2022-07-30 22:41:12 +02:00
f8fb8b189d refactor(cli): remove unused synopsis examples
These can be included in their own EXAMPLES: section, and doesn't need
to be treated especially.
2022-07-30 22:41:12 +02:00
a79b2ec69e fix(cli): ensure order of subcommands in 'doom help'
They should be in insertion order. They were formerly in
reverse-insertion order.
2022-07-30 22:41:12 +02:00
a2d2206797 feat(cli): allow defcli! in ci.el
A project may provide a ci.el to config bin/doom's CI commands. With
this, users can also define their own 'doom ci' subcommands from there.
2022-07-30 22:40:27 +02:00
04a09128d4 nit(cli): stub 'doom test'
To prep for v3.1.
2022-07-30 22:23:12 +02:00
6ffee6ece7 fix(cli): ensure type specs are case insensitive 2022-07-29 12:34:58 +02:00
491f49cfe5 refactor(cli): better error for missing profiles.el
Only appears if a profile was requested and no profile file was found.
2022-07-29 12:32:35 +02:00
068966a4cd bump: :core
Fuco1/smartparens@ec15aaa748 -> Fuco1/smartparens@8b6a3c3b31
bbatsov/projectile@4d6da873ae -> bbatsov/projectile@dc6e7ff658
domtronn/all-the-icons.el@ca1ef30004 -> domtronn/all-the-icons.el@b18db6be0a
jscheid/dtrt-indent@57f4072fa8 -> jscheid/dtrt-indent@d4fd1b4977
jwiegley/use-package@a7422fb8ab -> jwiegley/use-package@0ad5d9d5d8
radian-software/straight.el@0e204d418d -> radian-software/straight.el@fed2153480
2022-07-29 12:31:44 +02:00
493a049dff tweak: disable tty optimization in debug mode
If an error occurs before tty-run-terminal-initialization
does (producing a backtrace window), it can leave Emacs in a garbled,
unreadable state.
2022-07-29 12:24:25 +02:00
7a9f8b18ab refactor: resolve doom-{core,modules}-dir properly
Future proofing for changes in doom-emacs-dir.
2022-07-29 12:23:42 +02:00
7d93feb98c nit: minor reformatting, comment revision, & sharpquoting 2022-07-29 12:22:33 +02:00
35a89bdfa6 fix(lib): missing bin/doom error on doom/reload
doom/reload quotes `doom-bin`, but if doom-bin uses a tilde instead of
an absolute path, the quoting means it won't be expanded to $HOME,
causing "no such file or directory" errors when trying to execute it.

Fix: #6603
2022-07-28 22:29:32 +02:00
a22cd75839 fix(cli): log benchmarks & postscripts to stderr
And only write benchmark to stdout if the command succeeded (exit code =
0) and isn't restarting (exit code = 254).
2022-07-28 22:29:32 +02:00
fe2ea9f443 fix(cli): redundant lines in stderr logs 2022-07-28 22:29:32 +02:00
20d5440023 fix(cli): don't persist options/args in context
They're overwritten anyway. And leftover state can cause confusion in
sub-sessions.
2022-07-28 22:29:18 +02:00
7eeec53c30 fix(cli): improve end-of-file error in profiles file
Otherwise, the error message complains that the error originates from
core-cli.el.
2022-07-28 18:15:15 +02:00
12b52909e3 fix(cli): env setter for profile loader
Amend: 48e3603dfe
2022-07-28 18:15:15 +02:00
743b740e79 fix(cli): verbose output in debug mode 2022-07-28 18:15:15 +02:00
314463bd49 fix(cli): ignored --{profile,doomdir,emacsdir,debug}
Fixes an edge case where --profile, --doomdir, --emacsdir, and --debug
were ignored if used in a nested bin/doom call. Now possible thanks to
49d3f1e.

Ref: 49d3f1e96c
2022-07-28 18:15:06 +02:00
49d3f1e96c feat(cli): accept omit list on (exit! :restart)
A list of arguments to omit can now be passed to (exit! :restart). For
example, `(exit! :restart "-c" :omit "--foo=" "--bar" "--baz=2")` will
restart the current script with a new switch (-c) and three switches
removed (--foo + one argument, --bar, --baz + two arguments).
2022-07-28 18:05:42 +02:00
22eace62d0 fix: doom-local-dir for profiles
- Ensure it ends in slash,
- Ensure it includes the @-tag (e.g. default@latest),
- Remove vestigial code path that is unreachable.
2022-07-28 12:40:32 +02:00
44f169740e tweak: more debug output at startup
Particularly to do with profiles, in case the user starts Emacs with
--debug or --debug-init.
2022-07-28 12:01:02 +02:00
48e3603dfe fix: envvars in profiles.el not being set 2022-07-28 12:01:02 +02:00
df8caf2867 nit(cli): revise header commentary
To properly reflect that it's unsafe to load core-cli in interactive
sessions, but safe to load core-cli-lib.
2022-07-28 12:01:02 +02:00
5af38fb08e feat: make bin/doom profile aware
- Fixes Doom's former inability to (trivially) juggle multiple profiles
  based on the same EMACSDIR (see #6593).
- Adds '--profile NAME' switch to bin/doom (also recognized
  $DOOMPROFILE).
- Adds new doom-profile* variables. These will eventually replace
  doom-{local,etc,cache}-dir and doom-{autoloads,env}-file.

This is intentionally messy to ensure backwards compatibility for a
little while longer. This will be fixed over the next couple weeks.

Ref: #6593
2022-07-28 12:01:02 +02:00
1ecb5c7b9b fix: fall back to $EMACSDIR/profiles/*
Formerly, profiles.el and $EMACSDIR/profiles/* were mutually exclusive.
I.e. if the file existed, it'd never check the directory. Now, it will
check the directory if the requested profile isn't in profiles.el, or
the file didn't exist.

Amend: 5b6b204bcb
2022-07-27 13:54:12 +02:00
4c4a880f6b docs: fix blockquote in profiles/README.org 2022-07-27 13:36:15 +02:00
8f96850543 nit: add dummy safe-mode profile
To reserve the name, and to signal to posterity how future (static)
profiles will look. Someday, this profile will play "failsafe" if Doom
fails to load the requested one.
2022-07-27 13:33:43 +02:00
bd989d16f0 tweak: prep gitignore for v3
- Ignore generated profiles
- Ignore /{init,config,packages}.el, in case the user wants to use
  $EMACSDIR and their $DOOMDIR.
- Cast a wider net for auto-generated files (usually made when launching
  sandboxes, but this will happen less as the sandbox develops).
2022-07-27 13:33:34 +02:00
2680573eda docs: add profiles/README.org 2022-07-27 13:30:24 +02:00
fbc5fd7f8a nit: revise comments in early-init.el 2022-07-27 12:11:51 +02:00
5b6b204bcb feat: allow Doom be used as a config bootloader
This allows users to use Doom core to switch between Emacs configs (they
don't have to be Doom configs either). Taking after Chemacs, these
configs (called "profiles") can be declared in $EMACSDIR/profiles.el or
implicitly as directories under $EMACSDIR/profiles/ (symlinks work too).
Launch a profile with `emacs --profile foo` or by setting $DOOMPROFILE:
`DOOMPROFILE=foo emacs`.

An example profiles.el looks like this:

   ((doomemacs (user-emacs-directory . "~/.config/emacs")
               (env ("DOOMDIR" . "~/.config/doom")))
    (spacemacs (user-emacs-directory . "~/.config/spacemacs"))
    (prelude   (user-emacs-directory . "~/.config/prelude"))
    (altdoom   (user-emacs-directory . "~/.config/doomemacs")
               (env ("DOOMDIR" . "~/.config/doomprivate1")))
    (altdoom2  (user-emacs-directory . "~/.config/doomemacs")
               (env ("DOOMDIR" . "~/.config/doomprivate2"))))

Chemacs users will find the format of this file familiar; the biggest
differences are:

- Keys are symbols, not strings
- There is no, special "default" profile. The fallback profile is the
  Doom Emacs config doing the bootloading, living in ~/.config/emacs or
  ~/.emacs.d. If you don't like that, set $DOOMPROFILE in your dotfiles
  to the name of another profile.

WARNING: bin/doom does not understand --profile or $DOOMPROFILE yet. To
sync a particular profile, you'll have to run its bin/doom directly,
e.g.

To sync the "global" doom:
  ~/.config/emacs/bin/doom sync
To sync your "altdoom" (and "altdoom2") profiles:
  ~/.config/doomemacs/bin/doom sync
2022-07-27 12:11:51 +02:00
5108ffc44d feat: backport --init-directory for 27/28 users
--init-directory was added in Emacs 29. This backports it for 27/28
users, so users can trivially load an Emacs config living in another
directory (will be necessary for future versions of Doom's sandbox).
However, for this to work, Doom needs to live in ~/.emacs.d or
~/.config/emacs.

Ref: emacs-mirror/emacs@8eaf04de83
2022-07-27 11:16:54 +02:00
dd83c455ba fix(org): update +org--more-startup-folded-options-a
With the introduction of org-fold, this advice (which adds support for a
special family of visibility #+startup options) needed to be updated.
2022-07-26 00:54:25 +02:00