Commit Graph

17748 Commits

Author SHA1 Message Date
63b0ebeda7 refactor!(rust): remove racer and default to +lsp
BREAKING CHANGE: Racer is no longer developed and its project page
recommends using rust-analyzer instead. Moreover, users have reported
issues trying to build/install it on recent versions of rust, so I've
removed support for Racer from Doom, and now default solely to LSP for
IDE features.

Users that want these features will need to activate the module's +lsp
flag (along with the :tools lsp module) and install rust-analyzer. See
the module's README for instructions.

Close: #6705
Co-authored-by: c1ttim <c1ttim@users.noreply.github.com>
2022-09-07 01:25:18 +02:00
20c50755e8 fix(magit): end-of-file error
Due to an unbalanced paren in d8f87ad.

Amend: d8f87ada96
2022-09-07 00:55:51 +02:00
ea84212d0a fix(magit): void-function (:files) error
Due to a missed syntax error in d8f87ad.

Amend: d8f87ada96
2022-09-07 00:52:49 +02:00
d8f87ada96 fix(magit): only install forge if asked 2022-09-07 00:25:52 +02:00
f8bd14ebc3 bump: ts-fold
jcs090218/ts-fold@01d6485398 -> emacs-tree-sitter/ts-fold@01d6485398

The repo has moved.
2022-09-07 00:24:57 +02:00
ba859fcfc0 nit(vertico): add missing function docstring 2022-09-07 00:22:25 +02:00
3694969dd4 nit(vertico): typo in docstring 2022-09-07 00:22:25 +02:00
829998e70b docs(pdf): fix instructions to build epdfinfo
The documentation claimed that epdinfo will be built as soon as a pdf
file is opened. However, support for automatically building epdfinfo was
removed in the commit referenced below.

Ref: daa50557a4
2022-09-07 00:20:54 +02:00
1d942b4ab6 fix(lib): doom/version use canonical filenames
If doom-emacs-dir contains a "~", attempting to call `git -C` will fail
with an error like:

  fatal: cannot change to '~/.config/emacs/': No such file or directory

Fix this by canonicalizing the filename.
2022-09-07 00:20:24 +02:00
3e98f11d9b fix(csharp): add dep pkg for sln-mode 2022-09-07 00:19:23 +02:00
c6cfee63b4 fix(dart): enable rainbow-delimiters in dart-mode 2022-09-07 00:16:04 +02:00
878781e2e4 refactor(cli): remove unneeded (require 'doom)
This wasn't needed here in the first place, and was accidentally carried
over while backporting it and surrounding changes from my local v3
branch.
2022-09-06 23:53:12 +02:00
2b1f6031b2 refactor(lib): rely less on global state for defaults
I prefer to be more explicit about these variables' defaults, then to
rely on proper load order and unverified global state to ensure they're
properly set.
2022-09-06 23:51:44 +02:00
0a51fdff53 refactor(lib): move doom-log to doom-lib
This is such an essential macro that it should be universally available,
and not stowed away in the print library.
2022-09-06 23:46:42 +02:00
3ae8c520d5 nit(vc-gutter): reformat annotated comments 2022-09-06 23:41:28 +02:00
48369fb654 fix(lib): add native-comp vars to known debug vars
And reformat the list to distinguish Doom vars from Emacs ones.

Amend: 3853dff5e1
2022-09-06 23:34:56 +02:00
a0fe199237 fix(cli): void-variable doom-dir on 'doom doctor'
A regression caused by an overaggressive search and replace (for
e986d6b).

Amend: e986d6bef9
2022-09-06 23:31:01 +02:00
2396262cfa nit: revise commentary in early-init.el 2022-09-06 23:28:39 +02:00
b93f398568 refactor(lib): enforce namespace for helpers 2022-09-06 23:26:05 +02:00
9b4973198b refactor(lib): use new file API
Ref: 8d4b6b3028
Ref: 83f18402e3
2022-09-06 23:22:01 +02:00
3cfcfc5055 refactor(lib): use with-memoization
Ref: 2b01166d1d
2022-09-06 23:18:49 +02:00
cee89a5d3f refactor!(cli): remove 'doom {refresh,re}'
BREAKING CHANGE: This finally removes 'doom refresh'. It was first
deprecated in 8a77633 and disabled in 8c37928, and has long since been
replaced with 'doom sync'.

Ref: 8c37928de2
Ref: 8a7763337d
2022-09-06 23:08:55 +02:00
085b5563fc nit(cli): tidy comments & correct grammar in error 2022-09-06 23:04:17 +02:00
2383e924c0 refactor: move essential defs + init to top of core
Also adds a new error type: doom-profile-error.
2022-09-06 23:04:17 +02:00
2e6a69f501 refactor: improve Emacs/Doom version checks
And emit more informative errors if they fail.

This eval-when-compile approach is used in preparation for v3, where
Doom's core libraries will be byte-compiled.
2022-09-06 23:04:17 +02:00
948f9461a7 refactor(cli): merge doom-cli-lib into doom-cli
This was done to purge superfluous files from Doom's project structure
and simplify its entry points. And with early-init.el now acting as
Doom's universal bootstrapper (see c05e615), we don't have enough
bootstrap logic to warrant being its own file.

Also removes the redundant version check, given doom.el is assured to be
loaded before doom-cli, and performs its own check.

Ref: c05e61536e
2022-09-06 23:01:39 +02:00
6dfed1ff47 refactor(cli): simplify struct definitions
There's no need to be this meticulous. It only pads the line count, and
for little merit.
2022-09-06 22:56:08 +02:00
8971ee36e5 refactor(cli): use new API to write temp files
Ref: 8d4b6b3028
2022-09-06 22:56:03 +02:00
c370cb1784 fix(cli): duplicate log files 2022-09-06 22:55:48 +02:00
aef14f078d feat(cli): add --benchmark switch 2022-09-06 22:55:48 +02:00
4009509db5 feat(lib): add eval-when-compile! macro
Unlike eval-when-compile, the body of this macro's calls will only be
evaluated while byte-compiling.
2022-09-06 22:55:48 +02:00
0100b08402 refactor(cli): handle more errors & POSIX-ify doomscript 2022-09-06 22:55:48 +02:00
83f18402e3 feat(lib): add with-file! & with-file-contents! macros
Convenience macros to express more succinctly the with-temp-buffer +
insert-file-contents + write-region idiom for file IO in elisp.
2022-09-06 22:55:48 +02:00
8d4b6b3028 feat(lib): add doom-file-{read,write} functions
A concise alternative to the file IO elisp idioms we're used to,
involving some combination of with-temp-file, with-temp-buffer,
insert-file-contents, coding-system-for-{read,write}, write-region, read
loops, print-to-current-buffer loops, etc.

These were engineered to make reading/writing text and lisp data from/to
files simpler, and will be used extensively in the v3 CLI.
2022-09-06 22:55:48 +02:00
e986d6bef9 refactor(lib): deprecate doom-dir
This function never really added much value over doom-path or
file-name-concat, so I'm phasing it out.
2022-09-06 22:55:48 +02:00
f66d9e1f0e feat(lib): only return dirs if doom-glob SEGMENTS end with /
Also, doom-glob will return relative paths if SEGMENTS don't form an
absolute path.
2022-09-06 22:55:48 +02:00
cadc778a03 perf(lib): optimize doom-path
Consecutive expand-file-name and recursive apply's can be expensive, so
the function has been simplified to rely more on file-name-concat. This
does change one trait about it, however: absolute paths in SEGMENTS no
long reroot the whole path, and are concatenated as ordinary file
segments.

The performance benefit is more pronounced on Emacs 28+, and will be
even more so when Doom later starts byte-compiling its libraries.
2022-09-06 22:55:48 +02:00
89506983fe refactor: early-init comments, loaders, & recursion guards 2022-09-06 22:55:48 +02:00
2b07fd1dd8 bump: :core
Wilfred/helpful@94a07d49a8 -> Wilfred/helpful@6633d82c6e
bbatsov/projectile@dc6e7ff658 -> bbatsov/projectile@20aa2adccc
domtronn/all-the-icons.el@b18db6be0a -> domtronn/all-the-icons.el@4a4d6269b8
justbur/emacs-which-key@1ab1d0cc88 -> justbur/emacs-which-key@8093644032
jwiegley/use-package@0ad5d9d5d8 -> jwiegley/use-package@e2d173b120
radian-software/straight.el@fed2153480 -> radian-software/straight.el@e20a44c4ac

Includes a fix for codeberg and sourcehut fetchers in MELPA recipes.

Fix: #6541
2022-09-06 22:55:47 +02:00
1f29b07f39 docs: restore getting-started guide & module index
These two files were removed in ccb5fde9bcc on the rewrite-docs branch,
which was merged in 1f8bf7accb. I planned to add their rewritten
versions soon after, but life and distractions got in the way, so I'm
restoring the old ones until I finish the new ones.

Fix: #6748
Fix: #6723
Fix: #6671
Fix: #6631
Close: #6726
Revert: ccb5fde99b
2022-09-06 22:55:47 +02:00
42ac62df74 fix: defer projectile's project cleanup
There are two issues here.

1. Projectile uses file-remote-p to check for remote (tramp) paths in
   its known project list, when it automatically cleans it up on
   projectile-mode's activation. This causes tramp.el to be loaded,
   which is expensive.
2. file-remote-p relies on an entry in file-name-handler-alist
   (autoloaded by tramp.el) to detect remote paths, which causes tramp
   to be loaded. However, Doom sets file-name-handler-alist to nil at
   startup for a noteable boost in startup performance.

   Normally, this is not an issue, as I defer projectile-mode until well
   after file-name-handler-alist is restored, but it is trivial for a
   user to inadvertantly load it too early (often as part of another
   package that depends on it, or by blindly following projectile's
   install instructions and calling projectile-mode themselves).

In order to address both of these, I defer projectile's cleanup process
altogether. Another approach I considered was to ensure projectile-mode
wasn't activated until the right time, regardless of when projectile is
loaded, but this may trouble savvier Emacs users who need projectile's
API early during startup, so it needs more consideration.

Fix: #6552
Ref: bbatsov/projectile#1649
2022-09-06 22:55:47 +02:00
7e65329289 refactor: move gcmh config to doom-start
Configuration for interactive sessions ought to live in doom-start.

Ref: 3ce4b38c3d92
2022-09-06 22:55:47 +02:00
1a639b7341 feat: add auto-mode-alist entries for future doom dotfiles 2022-09-06 22:55:47 +02:00
b68c93d924 refactor: move doom-*-reload-hook to lib/config.el
These hooks are only used by this library, and in interactive sessions,
neither of which make them a good fit for doom.el.
2022-09-06 22:55:47 +02:00
6cf0e04de0 refactor: move doom-first-*-hook to doom-start
doom-start is responsible for configuring an interactive session, so
variables associated with interactive sessions ought to live there.
2022-09-06 22:55:47 +02:00
c05e61536e refactor: make early-init.el Doom's universal bootstrapper
This centralizes Doom's core startup optimizations and, as a
side-effect, reduces the runtime of bin/doom commands substantially.
This also simplifies the user story for loading Doom remotely (for batch
sessions or doomscripts).
2022-09-06 22:55:47 +02:00
3853dff5e1 tweak: disable ahead-of-time native compilation
Rather than impose a 10-45min compilation step on users, I've disabled
ahead-of-time compilation for deferred compilation. In exchange, it will
eat up some CPU time the first time each uncompiled package is loaded,
but as this happens asynchronously (and are then quietly loaded in the
background), I think this is acceptable.

An --aot switch (or similar) will be added to `doom sync` and `doom
build` in the future, in case folks prefer the old behavior.
2022-09-06 22:55:47 +02:00
b7f84bdd01 perf: defer incremental loading for nativecomp users
It'd be detrimental to runtime performance to incrementally load more
packages as Emacs is natively compiling others, so hold off on it a bit
longer.
2022-09-06 22:55:47 +02:00
1dac4ac37b refactor: move file-name-handler-alist hack to early-init
In the future, early-init.el (among other parts of Doom) will be
byte-compiled, plus I'd rather keep these optimizations in one place.

Ref: 1d8c61698b
2022-09-06 22:55:46 +02:00
71469d8056 feat: add nongnu-elpa source for straight 2022-09-06 22:55:46 +02:00