Commit Graph

401 Commits

Author SHA1 Message Date
Henrik Lissner
198fe82b6d
feat(lib): backport find-sibling-file
I will slowly phase out projectile in favor of project.el, starting with
projectile-find-other-file, which -- as of Emacs 29 -- has a native
alternative: `find-sibling-file`.

Ref: doomemacs/community#1
2024-03-11 00:53:44 -04:00
Henrik Lissner
3b405c8d81
fix(lib): only use alpha-background on pgtk builds
Fix: #7721
2024-03-11 00:53:44 -04:00
Henrik Lissner
2bce9dbc1a
fix: doom-incremental-first-idle-timer: type error when nil
If the user uses the doom-load-packages-incrementally function directly,
and has set doom-incremental-first-idle-timer set to nil, it will throw
a type error.

Close: #7710
2024-03-11 00:53:43 -04:00
StrawberryTea
645c856de0 fix(popup): allow killing popup buffers
Currently, `SPC b k` does not allow us to kill popup buffers. If we are
say using a comint/eshell/eat buffer and we borked the state while
testing hooks or we sent EOF to the underlying process, our intention
with `SPC b k` is to kill the underlying buffer.
2024-03-05 01:14:38 -05:00
Henrik Lissner
3dbdcb7947
fix: define doom-font-error
Was meant to be in 98d753e.

Amend: 98d753e103
2024-03-04 22:20:17 -05:00
Henrik Lissner
2757a97a30
fix(org): don't change tab-width in org-mode
Recently, org-mode made a non-standard tab-width an error state.
Unfortunately, it's way too easy for users to accidentally change
it (e.g. with editorconfig, indiscriminate setter hooks, or other
packages), and since there is zero reason to ever want a non-standard
tab-width in org-mode, I not only exclude it from dtrt-indent as a
global default (i.e. not only as part of :lang org), but I add a late
org-mode-hook hook to reset tab-width, just in case.
2024-03-04 22:07:51 -05:00
Henrik Lissner
98d753e103
fix: blank frame on can't-find-font error during startup
Due to our inhibit-redisplay hack, a missing font could lead to a blank
Emacs after startup. This change fixes that so that not only is an error
emitted when Emacs can't find your font, but the error will be a little
more readable.

This is a stopgap solution until I finish a better one I'm preparing for
v3.

Fix: #7055
2024-02-20 05:37:28 -05:00
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
Henrik Lissner
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
Mathew
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
Henrik Lissner
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
Henrik Lissner
15339e4671
fix(lib): doom-project-find-file: cl-no-applicable-method project-root
Fix: #7312
2024-02-08 00:58:20 -05:00
Henrik Lissner
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
Zero King
5c3b820335
fix: void-variable doom-modules-load-path error
Amend: 343c3a82b0
2024-02-06 23:59:30 -05:00
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
343c3a82b0
refactor: s/doom-modules-dirs/doom-module-load-path/
Ref: fc6934c240
2024-02-05 17:21:20 -05:00
Henrik Lissner
7654262cdc
tweak(lib): doom-info: show $EMACS/$EMACSDIR 2024-02-04 18:00:16 -05:00
Henrik Lissner
51dcb4dc99
nit: fix s/make/bake typo 2024-02-04 17:59:31 -05:00
Henrik Lissner
b4f39e5369
nit: doom-modules: reformat & declare obsolete variables defs 2024-02-04 17:55:07 -05:00
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
180ffd3fa8
release(modules): 24.02.0-dev
Ref: 2b39e41368
2024-02-02 03:33:53 -05:00
Itai Y. Efrat
60e22fd2eb refactor(vertico): use consult-fd
Close: #7458
Co-authored-by: LemonBreezes <look@strawberrytea.xyz>
2024-01-27 23:34:56 +02:00
Henrik Lissner
fcd95a09d0
nit: minor comment revision, reformatting, & internal refactor 2024-01-24 12:40:05 -05:00
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Henrik Lissner
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
Colin Woodbury
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
Tim Ruffing
fcf63d615a tweak(lib): write elisp in escaped form to files 2024-01-24 12:14:54 -05:00
Tim Ruffing
efe8d476bc fix(lib): use unibyte in binary temp buffers 2024-01-24 12:14:54 -05:00
Tim Ruffing
2b54b5732c docs(lib): improve docs of doom-file-read/-write 2024-01-24 12:14:54 -05:00
Henrik Lissner
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
Henrik Lissner
b1d8d1cd9f
nit: reformatting, comment, and markup revision 2023-12-02 11:34:10 -05:00
Henrik Lissner
0d8479ae9b
tweak: emit feedback when started in daemon mode 2023-12-02 11:34:10 -05:00
Henrik Lissner
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
Henrik Lissner
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
Liam Hupfer
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
LemonBreezes
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
Henrik Lissner
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
Liam Hupfer
986398504d refactor: defvar -> defcustom
Ref: 8c442d84b9
2023-10-07 02:33:45 +02:00
Liam Hupfer
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
Liam Hupfer
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
Liam Hupfer
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
Liam Hupfer
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
Liam Hupfer
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