Commit Graph

394 Commits

Author SHA1 Message Date
TEC
7984cd8e0f tweak(cli): use fancier string-dist suggestion alg
To improve the quality of "did you mean?"-style suggestions, shift from
using Ratcliff-Obershelp similarity to the Restricted
Damerau-Levenshtein string distance (also known as Optimal String
Alignment).

This code is a translation of a Julia implementation that I wrote a
while ago:
https://github.com/tecosaur/DataToolkitBase.jl/blob/v0.4.1/src/model/utils.jl#L40-L107

See https://en.wikipedia.org/wiki/Damerau%E2%80%93Levenshtein_distance#Optimal_string_alignment_distance
and https://en.wikipedia.org/wiki/Gestalt_pattern_matching for more
information on these algorithms.
2024-02-16 02:06:24 -05:00
3986ee6c2b fix: exclude indent detection in derived modes
Changes what major modes we exclude from dtrt-indent's auto-detection.
Any mode in doom-detect-indentation-excluded-modes, plus derived modes,
will be excluded instead of only the parent modes.

This indirectly fixes an issue where org-mode derivatives (like
org-journal-mode) have their tab-width changed (#7670), causing the
`org-current-text-column` macro to throw the following error:

  Tab width in Org files must be 8, not N.  Please adjust your
  `tab-width' settings for Org mode.

I opted for this solution instead rather than adding all possibly
derivatives to `doom-detect-indentation-excluded-modes`.

Fix: #7670
Ref: 38dd882685/lisp/org-macs.el (L1154)
2024-02-14 02:42:30 -05:00
30a7f2d436 fix(lib): doom/sudo-find-file: expand given path
It's possible for the user to type shell variables (something like
`$MYVAR/dir/filename`) as part of the filepath, so we need to call
`expand-file-name`.
2024-02-10 16:57:22 -05:00
1b0af3bfc7 fix(lib): doom-project-find-file: remove +vertico/consult-fd-or-find
When +vertico/find-file-in was replaced in 60e22fd with
+vertico/consult-fd-or-find, it changed a key behavior for
doom-project-find-file for Vertico users: instead of displaying an
initial list of all files under the target directory, it would display
nothing until the user entered in N * `consult-async-min-input`
characters, causing confusion (see linked comment).

Since Vertico integration modifies project-find-file-in's interface
appropriately, I leave it to that command instead.

Ref: https://github.com/doomemacs/doomemacs/issues/7312#issuecomment-1933404444
Amend: 60e22fd2eb
2024-02-08 02:00:55 -05:00
15339e4671 fix(lib): doom-project-find-file: cl-no-applicable-method project-root
Fix: #7312
2024-02-08 00:58:20 -05:00
90dae25940 fix(cli): ensure $EMACSDIR/lisp/cli is in $DOOMPATH
If $DOOMPATH is malformed or set to a value that does not contain a
valid path to Doom's CLI library in $EMACSDIR/lisp/cli (see #7608),
bin/doom no longer functions, emitting "a subcommand is required"
errors.

This change ensures that the CLI library is always the last (implicit)
element in doom-cli-load-path, and ensures $DOOMPATH is never written to
the user's envvar file (in case they try to use bin/doom from inside a
terminal within a Doom Emacs session), which should ensure users -- at
least -- never find themselves stranded without the Doom CLI.

Fix: #7608
Co-authored-by: bpizzi <bpizzi@users.noreply.github.com>
2024-02-07 17:24:24 -05:00
5c3b820335 fix: void-variable doom-modules-load-path error
Amend: 343c3a82b0
2024-02-06 23:59:30 -05:00
eb4e8960af refactor: remove all-the-icons
I began phasing out all-the-icons in 9787022. Now that Doom has
no (first order) dependencies that depend on it (and enough time has
passed), it's time to remove it.

Ref: 9787022b83
2024-02-06 16:09:32 -05:00
ba09e4323a bump: :core
bbatsov/projectile@9446ea92d2 -> bbatsov/projectile@e45f0b0cc4
domtronn/all-the-icons.el@be9d5dcda9 -> domtronn/all-the-icons.el@ee41438493
emacs-compat/compat@ea8de2ea18 -> emacs-compat/compat@eb8fbfa558
emacs-straight/project@f64bcf065c -> emacs-straight/project@10a6b691e3
jscheid/dtrt-indent@e0630f74f9 -> jscheid/dtrt-indent@0230ec5032
noctuid/general.el@833dea2c4a -> noctuid/general.el@bda777cd30
rainstormstudio/nerd-icons.el@e109d09b95 -> rainstormstudio/nerd-icons.el@c6a4acf194
2024-02-05 20:10:34 -05:00
f14e7907f6 fix: doom-module-locate-paths: remove file-name-sans-extension call
This was preventing its usage in :lang emacs-lisp from finding demos.org
files in modules.

Amend: 3bea4f66a8
2024-02-05 17:21:20 -05:00
343c3a82b0 refactor: s/doom-modules-dirs/doom-module-load-path/
Ref: fc6934c240
2024-02-05 17:21:20 -05:00
7654262cdc tweak(lib): doom-info: show $EMACS/$EMACSDIR 2024-02-04 18:00:16 -05:00
51dcb4dc99 nit: fix s/make/bake typo 2024-02-04 17:59:31 -05:00
b4f39e5369 nit: doom-modules: reformat & declare obsolete variables defs 2024-02-04 17:55:07 -05:00
3bea4f66a8 refactor(emacs-lisp): elisp-demos: reorganize Doom demos
- Move Doom core elisp API demos out of docs/examples.org into lisp/demos.org.
- Recognize and search demos.org file in modules for additional
  demos (including $DOOMDIR/demos.org).
- Refactor emacs-lisp module to use new elisp-demos-user-files variable
  instead of an advice. This way, elisp-demo's commands (such as
  `elisp-demos-find-demo` and `elisp-demos-add-demo`) will include
  Doom's demos.
2024-02-04 17:54:29 -05:00
77ea4013dd refactor: doom-module: conform variables to conventions
- Rename doom--empty-module-context to doom-module--empty-context.
- Nest doom-module-context symbol plist in its 'keys' property. (By
  convention, Doom uses keywords as keys in most places. Let's be
  consistent)
- Updates all uses of doom-module--context-field and
  doom-module-context-get.
2024-02-04 17:54:29 -05:00
fc6934c240 refactor: introduce doom-module-load-path
This renames doom-modules-dirs to doom-module-load-path, which dictates
where Doom searches for module trees or single modules, in preparation
for more sophisticated module lookups in v3.

This also deprecates doom-modules-dirs, which will be fully removed in
the v3 release.
2024-02-04 17:54:29 -05:00
659f7bfc71 refactor!: deprecate IS-* OS constants
BREAKING CHANGE: This deprecates the IS-(MAC|WINDOWS|LINUX|BSD) family
of global constants in favor of a native `featurep` check:

  IS-MAC      ->  (featurep :system 'macos)
  IS-WINDOWS  ->  (featurep :system 'windows)
  IS-LINUX    ->  (featurep :system 'linux)
  IS-BSD      ->  (featurep :system 'bsd)

The constants will stick around until the v3 release so folks can still
use it -- and there are still some modules that use it, but I'll phase
those uses out gradually.

Fix: #7479
2024-02-04 17:54:29 -05:00
180ffd3fa8 release(modules): 24.02.0-dev
Ref: 2b39e41368
2024-02-02 03:33:53 -05:00
60e22fd2eb refactor(vertico): use consult-fd
Close: #7458
Co-authored-by: LemonBreezes <look@strawberrytea.xyz>
2024-01-27 23:34:56 +02:00
fcd95a09d0 nit: minor comment revision, reformatting, & internal refactor 2024-01-24 12:40:05 -05:00
a5ffbd8550 fix: ensure top-level file-name-handler-alist is affected
Ensures that lexical contexts are never taken into account, in the case
where Doom's core is loaded in an isolated environment (e.g. the
sandbox). Also improves my startup time by 10%? I'll take it.
2024-01-24 12:39:35 -05:00
f1e77e6692 feat(lib): doom-file-write: separate :mode for directories
doom-file-write's :mode parameter now accepts a cons cell, whose CDR
will determine the file mode for directories that get implicitly created
by the function.
2024-01-24 12:38:41 -05:00
be90021330 fix(cli): ensure local file/dir permissions
May catch edge cases where profile directories are created with
over-restrictive permissions (mentioned in #5832).

Ref: #5832
2024-01-24 12:38:41 -05:00
8352562b2c fix(lib): appease byte-compiler-sama
Silences some byte-compiler warnings about:

- 'nreverse on constant list' on add-hook! calls.
- inhibit-changing-match-data deprecation warning.
- unescaped quotes in docstring in some doom-*-dir variables.
- Variable non-essential should be quoted (though it isn't referring to
  a variable).
- CONTEXT -> CONTEXTS to match argument name.
2024-01-24 12:38:41 -05:00
41289cfef6 fix(lib): doom/bumpify-diff: respect structure of given list
The old check was a bug fix to work around noisy values that somehow
made it into diff checks. The `package!` symbol is never actually
present in the list of values yielded by the search in `read-package`,
so this commit alters the lookup to respect what is actually present,
thus guaranteeing that `destructuring-bind` succeeds and bump diffs are
actually detected.
2024-01-24 12:24:11 -05:00
fcf63d615a tweak(lib): write elisp in escaped form to files 2024-01-24 12:14:54 -05:00
efe8d476bc fix(lib): use unibyte in binary temp buffers 2024-01-24 12:14:54 -05:00
2b54b5732c docs(lib): improve docs of doom-file-read/-write 2024-01-24 12:14:54 -05:00
4d072ce888 release(modules): 23.12.0-dev
This version bumps comes 3 months due to a short hiatus from moving back
from Denmark to Toronto and all the ensuing catch-up.

Ref: 2b39e41368
2023-12-02 13:57:53 -05:00
b1d8d1cd9f nit: reformatting, comment, and markup revision 2023-12-02 11:34:10 -05:00
0d8479ae9b tweak: emit feedback when started in daemon mode 2023-12-02 11:34:10 -05:00
88c59129ec fix(lib): doom/bumpify-diff: skip non-package! forms
Would formerly error out if it tries to read invalid forms in misc files
included in bump commits.
2023-11-29 23:14:11 -05:00
f9c2397a3c fix: autoloads load order in profile bootstrap
Package autoloads should be assembled in the order they're
installed/built, so that dependencies between them (such as the case
where geiser-* packages call geiser-activate-implementation, which is
defined in geiser.el's autoloads file -- see #7472) don't throw errors.

Fix: #7472
Amend: 87f6f7ab91
2023-11-29 16:10:09 -05:00
edd95854fd fix: premature use of emoji fontset in <=28.1
317cea5 assumed Emacs 28, but Doom still tries to support 27.
Attempting to use the undefined emoji script on 27 results in an error.
Prior to 28, emoji are part of the symbol script, which the following
`set-fontset-font` call already handles.

Amend: 317cea5eef
Ref: #7448
Fix: #7505
2023-11-23 18:17:52 -05:00
1bc5f441f0 tweak: helpful-set-variable-function: use setq!
helpful-set-variable-function defaults to setopt if it's available, setq
otherwise. `setopt` is superior for this use case because it uses
custom.el's mechanism for setting variables (thus respecting custom.el's
setters and type checks), however, it is unavailable in Emacs 28 and
earlier (`setopt` was introduced in 29).

Doom defines `setq!`, which is a drop-in replacement for setopt, and is
functional in Emacs 28, so it is the better option here.

Ref: #7527
2023-11-23 17:38:22 -05:00
c5f561b0c5 bump: :core
Fuco1/smartparens@79a338db11 -> Fuco1/smartparens@0778a8a840
Wilfred/helpful@66ba816b26 -> Wilfred/helpful@a32a5b3d95
bbatsov/projectile@971cd5c4f2 -> bbatsov/projectile@9446ea92d2
emacs-compat/compat@ecf53005ab -> emacs-compat/compat@ea8de2ea18
emacs-straight/project@ce140cdb70 -> emacs-straight/project@f64bcf065c
radian-software/straight.el@5e84c4e2cd -> radian-software/straight.el@b3760f5829
rainstormstudio/nerd-icons.el@619a0382d2 -> rainstormstudio/nerd-icons.el@e109d09b95

Co-authored-by: LemonBreezes <LemonBreezes@users.noreply.github.com>
Close: #7527
2023-11-23 17:29:31 -05:00
986398504d refactor: defvar -> defcustom
Ref: 8c442d84b9
2023-10-07 02:33:45 +02:00
b42882c545 refactor: make fallback font families constant
These are undocumented internal variables for basic platform-specific
fallbacks. Now that doom-symbol-font and doom-emoji-font exist, make
them constant.
2023-10-07 02:33:45 +02:00
7abed4dbf1 fix: fall back to emoji font for symbols
Symbols fonts vary widely in their coverage of Unicode symbols blocks.
Emoji fonts are generally guaranteed to cover the small subset of
symbols code points that have assigned emoji representations, so fall
back to them when symbols fonts are lacking.

Ref: https://en.wikipedia.org/w/index.php?title=Variant_form_(Unicode)&oldid=1175107681#Blocks_with_standardized_variation_sequences
2023-10-07 02:33:45 +02:00
37affa5cff feat: add doom-emoji-font
This parallels doom-symbol-font for emoji. In the process, refactor
symbol and emoji font setup to take advantage of these parallels.
2023-10-07 02:33:45 +02:00
4499ce7b0a refactor: doom-unicode-font -> doom-symbol-font
No font supports all of Unicode or anywhere near it. It’s not even
really possible with current font formats. Therefore, rename
`doom-unicode-font` to `doom-symbol-font`. Only set it as a fallback for
characters in the `symbol` and `mathematical` scripts.
2023-10-07 02:33:45 +02:00
1cc7b04059 docs: clarify doom-unicode-font default
d4dec35658 removed Apple Color Emoji, and it wasn’t clear how Symbola
was set if this variable was nil.
2023-10-07 02:33:45 +02:00
317cea5eef fix: assign emoji fallbacks directly to emoji script
Ref: https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=12d2fb58c416b557924174f57bfb1c9b9e7cf999
2023-10-07 02:33:45 +02:00
5e6430e9e6 fix: assign Nerd Fonts directly to Unicode PUAs
Nerd Fonts assign icons to code points in these Unicode Private Use
Areas. `doom-unicode-font` is now available again as a user-defined
fallback of last resort for non-PUA Unicode code points.

Ref: f12c615e4d (overview)
2023-10-07 02:33:45 +02:00
f5be3ec1e5 fix: use ansi-color-compilation-filter on emacs28+
I'm using Emacs30 and on my version,
doom-apply-ansi-color-to-compilation-buffer-h does not colorize all the
escape sequences. Using ansi-color-compilation-filter instead fixes this
for me.
2023-10-05 17:44:08 +02:00
4b81a70aff nit(docs): fix typo and extraneous backquote 2023-09-20 20:23:26 +02:00
88bb045388 docs(*): replace all-the-icons with nerd-icons
Also colorizes the leading icon in notices.
2023-09-16 20:19:11 +02:00
3627b82fd3 docs: revise and fix nerd-icons doctor check
Also fixes an issue where errors weren't counted, so the explanation
would never appear.

Fix: #7431
2023-09-16 15:32:54 +02:00
b58dc721aa fix: lingering autoloads from inactive packages
A package's autoloads aren't expunged from Doom's profile init file,
even after that package has been disabled. If a package's autoloads has
side-effects, this can lead to void references/function errors. One such
case is with php-extras, which will try to call
`php-extras-company-setup` after company loads from its autoloads, but
this function naturally won't be loaded if the package is disabled.

This change fixes this, fully expunging orphaned autoloads on `doom
sync`.
2023-09-14 19:01:39 +02:00