Commit graph

142 commits

Author SHA1 Message Date
Henrik Lissner
afb9773d7c
fix(lib): avoid writing customized faces to custom.el (take 3)
Wrap doom-customize-theme-hook and use that wrapper also when the local
doom--customize-themes-h-* hook is called immediately, otherwise
settings will be written to custom-file, which is what I've been trying
to avoid with all these takes!

Amend: 0b13525252
Ref: #7929
Close: #7933
Co-authored-by: real-or-random <real-or-random@users.noreply.github.com>
2024-07-10 15:57:35 -04:00
Henrik Lissner
0b13525252
fix(lib): avoid writing customized faces to custom.el (take 2)
Setting custom--inhibit-theme-enable to t isn't enough, since
custom--should-apply-setting will return non-nil if THEME is 'user.

Ref: #7929
Amend: 68771150ba
2024-07-10 04:22:48 -04:00
Henrik Lissner
68771150ba
fix(lib): avoid writing customized faces to custom.el
`custom-theme-set-faces!` calls `custom-theme-set-faces`, which will
mark the customizations for saving to custom.el. But
`custom-theme-set-faces!` is not intended for permanent customizations.
I fix this by setting `custom--inhibit-theme-enable` to prevent some of
the extra work `custom-theme-set-faces` does around changing faces, and
call face-spec-set manually.

Also renames doom--custome-theme-set-face to doom--normalize-face-space,
to better reflect what it does.

Close: #7929
Co-authored-by: real-or-random <real-or-random@users.noreply.github.com>
2024-07-10 01:46:57 -04:00
Henrik Lissner
e43d575caf
refactor(lib): don't use smartparens' API
Toward our eventual goal of moving smartparens out of core, I've adapted
this from code provided by hpfr on Discord, which was adapted from
smartparen's syntax-ppss caching logic. `:config default` will need need
some attention before we can fully move smartparens to its own `:editor
smartparens` module.

Co-authored-by: hpfr <hpfr@users.noreply.github.com>
2024-07-09 20:55:29 -04:00
Henrik Lissner
944eef90ec
fix(lib): doom-plist-merge causing side-effects
This one was sneaky. `doom-plist-merge` was mutating the second plist
fed to it, causing issues upwind of its uses. In #7925, for example,
calling `doom-package-recipe` to read a package's recipe would end up
altering it, copying sub-properties of :recipe to other packages'
recipes.

If you've hit #7925, you'll also need to delete your build-cache to get
around the error. I.e.

  rm -f $EMACSDIR/.local/straight/build-*-cache.el
  doom sync  # or upgrade

Fix: #7925
2024-07-09 02:46:53 -04:00
132ikl
d7075b2420
tweak(lib): doom-project-find-file: use transient project
If DIR is not a project and does not have root markers, create a
transient project instead. This ensures that `project-find-file-in`, and
by extension vertico, is still used in non-project directories instead
of falling back to `find-file`

Ref: 1b0af3bfc7
2024-07-06 20:16:59 -04:00
Henrik Lissner
b767beaca6
fix(lib): don't call doom-adjust-font-size twice
When doom-big-font-mode is deactivated.
2024-07-05 20:10:57 -04:00
woochica
6e69b29084
fix(lib): reset font size before setting big font mode
Calling (doom-adjust-font-size 1) repeatedly would keep increase the
font size because an increment is passed.

When loading themes, the doom-big-font-mode minor mode gets loaded again
therefore it causes the font to get increased.

Fix: #7845
2024-07-05 18:58:18 -04:00
Henrik Lissner
481753bd5e
refactor!: remove pcre2el package
BREAKING CHANGE: This removes the pcre2el package, which Doom was using
solely for one function to escape PCREs. In the interest of thinning out
Doom's core, I've hoisted a simpler version of the function into Doom's
stdlib so I can remove the dependency.
2024-07-01 18:11:34 -04:00
Henrik Lissner
a24ff58a5a
fix(lib): don't kill buffers visible in another frame
For Doom's kill-current-buffer advice.
2024-06-26 23:21:06 -04:00
Henrik Lissner
d84111927c
fix(lib): doom/bumpify-diff: ignore malformed package! statements
To avoid 'uneven number of packages be bumped' errors in some edge cases
where this isn't true.
2024-06-22 18:14:05 -04:00
Henrik Lissner
7e7d8ebdfd
fix(lib): print!: don't resolve printed symlinks 2024-06-22 18:14:05 -04:00
Henrik Lissner
703173a6d2
feat(lib): doom-print: allow lexical redirection 2024-06-22 18:14:05 -04:00
Henrik Lissner
17119c5df7
refactor(lib): tweak user-error messages
To make these errors more consistent with similar commands/operations,
as well as rely less on cl-check-type (cl-lib's understanding of the
`font` type is a bit odd; they'd emit warnings/errors about this, but
still perform the checks -- I opted to check more explicitly instead).
2024-06-22 18:14:05 -04:00
duli
7fe642938d fix: 'doom sync' generates autoload files for symbolic link files
* lisp/lib/autoloads.el(doom-autoloads--scan) Remove invoke
`file-truename` of file, keeping symbolic from being converted to a real
path.
* lisp/doom-modules.el(doom-module-from-path) Replace
`file-in-directory-p` with `string-match` to determine the module to
which the file belongs.

Fix: #7821
2024-06-21 17:52:45 -04:00
Marien Zwart
e203309e5c refactor(lib): use ripgrep instead of git grep
Although this is a refactor for normal users of Doom, it is a bugfix for
one (I assume) unsupported configuration: when Doom is not running from
a git checkout. In that case, `doom--help-package-configs` currently
returns Git's error messages. This breaks `doom/help-packages` because
it expects each returned line to contain at least one `:` character, so
it errors out with `Wrong number of arguments: (file line _match &rest),
2`.

Using ripgrep here should be equivalent for normal users as long as they
have not added untracked files not covered by Doom's .gitignore.
2024-06-03 16:19:42 -04:00
Henrik Lissner
4f51652111
fix(lib): remove-recent-file: improve completion UI
Integrates with completion frameworks (particularly vertico) that read
capf metadata.
2024-04-06 12:37:10 -04:00
Henrik Lissner
f18603e66a
feat(lib): sudo-{find,this}-file: invoke save-place
After switching to the sudo-ed tramp buffer, this restores the point and
scroll position of the window to match the source buffer.

I exploit save-place here instead of simply saving/restoring (point)
and (window-start), because I believe it's better UX that save-place
treat the two buffers as effectively the same now and in the future, and
record the last cursor position equally between them, even if the
implementation is messier. This *could* be generalized into an advice
for save-place-find-file-hook and save-place-to-alist, but that's an
experiment for another day.

This is an experimental implementation and may change later.

Close: #7181
Co-authored-by: YourFin <YourFin@users.noreply.github.com>
2024-04-05 18:38:14 -04:00
Henrik Lissner
0b93ecf42c
fix(lib): sudo-{find,this}-file: disable auto-save
auto-save can trigger processes that hang silently in the background,
making those buffers inoperable (hanging Emacs) for the rest of the
session, even if they are killed (tramp caches them), so I suppress them
solely for these temporary tramp buffers created by doom/sudo-find-file
and doom/sudo-this-file.
2024-04-04 23:46:04 -04:00
Henrik Lissner
38a3adcf0e
fix(lib): find-subling-file-search: wrong-number-of-args error
I backported `find-sibling-file` from Emacs 29+ in 198fe82, but it
passes a third argument (REGEXP) to `file-expand-wildcards` which wasn't
introduced until 29, so users on 28 or earlier would see a
wrong-number-of-arguments error (see #7795).

Rather than backport the entire `file-expand-wildcards`
function (risking other edge cases), I've advised its usage in
`find-sibling-file-search` to behave as it would in 29+ with a non-nil
REGEXP argument.

Amend: 198fe82b6d
Fix: #7795
2024-04-04 13:00:12 -04:00
Henrik Lissner
392fe88ed0
fix(lib): sudo-{this,save}-file: file path for indirect clones
If the buffer is an indirect clone, it may not have a buffer-file-name.

Also changes the command to throw an error if the current file has no
file path *and* is not a dired buffer.
2024-04-01 14:03:35 -04:00
Henrik Lissner
8d50cd8bfb
tweak(lib): print!: join (path ...) segments 2024-03-24 18:09:54 -04:00
Henrik Lissner
559171575e
refactor(lib): doom-region-end: extract marker 2024-03-11 03:59:37 -04:00
Henrik Lissner
61327bf777
refactor(lib): use doom-region-{beginning,end} 2024-03-11 03:59:37 -04:00
Henrik Lissner
7f484f7010
refactor: remove explain-pause-mode
Tools like these will be moved to a benchmark module later (or perhaps
to `:lang emacs-lisp`). For the time being, it only takes up extra space
that few users use.
2024-03-11 00:53:44 -04:00
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
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
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
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
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
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
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
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
Liam Hupfer
4b81a70aff nit(docs): fix typo and extraneous backquote 2023-09-20 20:23:26 +02:00
Henrik Lissner
88bb045388
docs(*): replace all-the-icons with nerd-icons
Also colorizes the leading icon in notices.
2023-09-16 20:19:11 +02:00
Ellis Kenyő
e97b05c07c
fix: nerd-icons-material => nerd-icons-mdicon
Fix: #7422
Amend: #7411
2023-09-14 14:58:01 +02:00
Ellis Kenyő
9787022b83
refactor!: replace all-the-icons with nerd-icons
BREAKING CHANGE: This commit replaces all-the-icons with nerd-fonts. Any
all-the-icons-* function calls or variable references in your private
config will break and should be replaced with their nerd-icons-*
equivalent. That said, Doom will continue to install all-the-icons for
a while, so feel free to load it if you don't want to fully commit to
the change yet.

This change is happening because nerd-icon has wider support for GUI and
TUI Emacs; has a larger, more consistent selection of symbols; plus unicode
coverage.

Fix: #7368
Close: #6675
Close: #7364
2023-09-14 01:03:55 +02:00
Henrik Lissner
af8ec870ac
fix(lib): 'back to *' links in doom-docs 2023-09-12 21:30:56 +02:00
Henrik Lissner
7f3d5d54bd
refactor(lib): hoist new org-id-locations-file value 2023-09-11 23:53:35 +02:00
Henrik Lissner
75d4046820
fix(lib): doom/reload-docs: `org-id-get' warnings
Prevents '`org-id-get' expects a file-visiting buffer' warnings in some
in-repo org files.
2023-09-11 23:53:35 +02:00
Henrik Lissner
deb83dc6a9
fix(lib): doom-docs-mode: hiding property drawers
Includes a minor optimization: reading the current level from an
org-element object, rather than relying on (org-current-level), which
resorts to walking the buffer with regex.
2023-09-11 23:53:35 +02:00
mosquito-magnet
f4e74e17ad
fix(lib): doom/help-packages: handle missing homepage
When a package is added via straight local-repo, no homepage can be
determined. Prevent doom--help-insert-button throwing an error in this
case.
2023-09-06 14:40:07 +02:00
Henrik Lissner
af5add0e9e
merge: pull request #7389 from hpfr/misc 2023-09-06 14:28:57 +02:00