Commit Graph

12616 Commits

Author SHA1 Message Date
b126c3857d bump: :lang
JuliaEditorSupport/julia-emacs@d360ad5285 -> JuliaEditorSupport/julia-emacs@2aca8cf585
ProofGeneral/PG@3a99da2755 -> ProofGeneral/PG@b30d65de80
abo-abo/org-download@19e166f0a8 -> abo-abo/org-download@c8be261178
agda/agda@4f82f9b90a -> agda/agda@819993172d
ananthakumaran/tide@b38dfc3f8f -> ananthakumaran/tide@6a35fe355f
babashka/neil@6728367eff -> babashka/neil@78ffab1868
beancount/beancount-mode@7b437abcf0 -> beancount/beancount-mode@452621fa1f
cdominik/cdlatex@33770dec73 -> cdominik/cdlatex@fac070f016
clojure-emacs/cider@8fdb53e8be -> clojure-emacs/cider@c228dec27d
davazp/graphql-mode@ef4aecaead -> davazp/graphql-mode@c3baca9280
diml/utop@384b3098c8 -> diml/utop@b490baca21
emacs-geiser/guile@5a856c2982 -> emacs-geiser/guile@a0f111f8de
emacs-geiser/mit@4e90e9ae81 -> emacs-geiser/mit@ddd2ba733e
emacs-jupyter/jupyter@f97f4b5d8c -> emacs-jupyter/jupyter@e966c5d3d6
emacs-lsp/lsp-dart@9ffbafb7dc -> emacs-lsp/lsp-dart@7e3d342941
emacs-lsp/lsp-haskell@ba49fa9822 -> emacs-lsp/lsp-haskell@6981f8d122
emacs-lsp/lsp-metals@0dc938be11 -> emacs-lsp/lsp-metals@b5139c9593
emacs-lsp/lsp-pyright@0c0d72aedd -> emacs-lsp/lsp-pyright@dd54b3ae7c
emacs-php/composer.el@791a7104be -> emacs-php/composer.el@6c7e19256f
emacs-php/php-mode@59814bd80c -> emacs-php/php-mode@31f702ee2d
emacs-rustic/rustic@d765680373 -> emacs-rustic/rustic@9fdf5c76b2
emacs-straight/auctex@08881d08ce -> emacs-straight/auctex@0de9730957
emacs-typescript/typescript.el@fc3a4f3b27 -> emacs-typescript/typescript.el@dd10f702d4
emacsmirror/org-contrib@ccd4212866 -> emacsmirror/org-contrib@f22bdd6a58
emacsmirror/paredit@037b9b8acb -> emacsmirror/paredit@af075775af
emacsorphanage/dart-mode@44beb628e5 -> emacsorphanage/dart-mode@02e919c1cf
emacsorphanage/macrostep@4939d88779 -> emacsorphanage/macrostep@419873665f
erlang/otp@c66bf53cde -> erlang/otp@094260aba7
flatwhatson/scheme-mode@51e586e5f1 -> flatwhatson/scheme-mode@a713b253d2
godotengine/emacs-gdscript-mode@32086df833 -> godotengine/emacs-gdscript-mode@bee7f99c6f
greghendershott/racket-mode@dba66c4536 -> greghendershott/racket-mode@c5bee6895b
hakimel/reveal.js@472535065c -> hakimel/reveal.js@0d02d8a303
haskell/haskell-mode@727f72a2a4 -> haskell/haskell-mode@1a285fc4c5
hniksic/emacs-htmlize@ed5e5b05fd -> hniksic/emacs-htmlize@8e3841c837
jimhourihan/glsl-mode@9b2e5f28e4 -> jimhourihan/glsl-mode@c5f2c2e7ed
jrblevin/markdown-mode@6102ac5b73 -> jrblevin/markdown-mode@b8637bae07
jwiegley/emacs-async@43f97d7e68 -> jwiegley/emacs-async@af47d6f930
kaushalmodi/ox-hugo@c4156d9d38 -> kaushalmodi/ox-hugo@98421a1298
ledger/ledger-mode@a6be7a2d79 -> ledger/ledger-mode@356d8049ed
necaris/conda.el@ce748a53f9 -> necaris/conda.el@05de0c8f0c
non-Jedi/eglot-jl@1d9cab6823 -> non-Jedi/eglot-jl@7c968cc61f
nonsequitur/inf-ruby@b234625c85 -> nonsequitur/inf-ruby@6399a36682
ocaml/dune@a7924e322e -> ocaml/dune@5ac095c7c0
ocaml/merlin@e016abfac6 -> ocaml/merlin@a36f42a5b1
org-noter/org-noter@6f292d7f1e -> org-noter/org-noter@691efc3ed4
org-roam/org-roam@0b9fcbc97b -> org-roam/org-roam@2a630476b3
purcell/flycheck-ledger@628e25ba66 -> purcell/flycheck-ledger@48bed9193c
purcell/flycheck-package@75efa098cf -> purcell/flycheck-package@a52e4e95f3
purcell/less-css-mode@c7fa3d56d8 -> purcell/less-css-mode@c78b88ff9a
purescript-emacs/purescript-mode@eacc61aaaf -> purescript-emacs/purescript-mode@d187b3d4bb
rust-lang/rust-mode@c87f6f82bd -> rust-lang/rust-mode@542f1755d8
seagle0128/grip-mode@9adac9c989 -> seagle0128/grip-mode@d6c7e33e40
senny/rbenv.el@588b817d51 -> senny/rbenv.el@4afe1dc6bd
swift-emacs/swift-mode@b06c97b909 -> swift-emacs/swift-mode@ab189d6e89
technomancy/fennel-mode@f4bd34e1c3 -> technomancy/fennel-mode@259470b297
tpapp/julia-repl@801d0fc3d8 -> tpapp/julia-repl@bb90cc1fce
wbolster/emacs-python-pytest@dcdaec6fe2 -> wbolster/emacs-python-pytest@25d9801562
yoshiki/yaml-mode@7b5ce294fb -> yoshiki/yaml-mode@d91f878729
ziglang/zig-mode@f55e42536a -> ziglang/zig-mode@f0b4a48753
2024-11-19 17:49:29 -05:00
a211332796 fix(python): invalid command for basedpyright
`lsp-pyright-langserver-command` does not recognize a full path, only
"pyright" or "basedpyright".

Fix: #8160
Close: #8161
2024-11-19 16:50:28 -05:00
7533707e00 fix(coq): file-missing generic/proof-site error
To work around shenanigans in proof-general's autoloads. Should be
reverted once ProofGeneral/PG#771 is resolved.

Fix: #8169
Ref: ProofGeneral/PG#771
2024-11-19 04:40:42 -05:00
9423f6bf95 fix(default): woman: ignore stderr from manpath
Fix: #8168
Co-authored-by: rcoacci <rcoacci@users.noreply.github.com>
2024-11-19 02:53:40 -05:00
2b0013db1c bump: emacsql
magit/emacsql@HEAD -> magit/emacsql@491105a01f

- Reverts to an older version of emacsql for Emacs <29 users, which is
  necessary until org-roam/org-roam#2485 is dealt with.

Ref: org-roam/org-roam#2485
Ref: 90ede31698
2024-11-19 01:04:41 -05:00
ef33cb3b63 bump: :config use-package
jwiegley/use-package@a6e856418d -> emacs-straight/use-package@fc8449bb59

- use-package was removed from MELPA (melpa/melpa@f008216) and
  jwiegley/use-package is no longer "maintained" (i.e. it's now bundled
  with Emacs). Straight now defaults to fetching it from
  emacs-straight/use-package, where no commit by a6e856418d2e exists, so
  I bump it to one that does (as the emacs-straight is the most
  up-to-date mirror).

Ref: melpa/melpa@f008216272
2024-11-19 00:46:41 -05:00
16543b6c2b bump: :tools debugger lsp
emacs-lsp/dap-mode@496dd3a60f -> emacs-lsp/dap-mode@605448b4fd
emacs-lsp/helm-lsp@c2c6974dad -> emacs-lsp/helm-lsp@e740efb2ab
emacs-lsp/lsp-mode@9b104105ad -> emacs-lsp/lsp-mode@32628135ef
mohkale/consult-eglot@64262e7245 -> mohkale/consult-eglot@c5f87d9244
2024-11-19 00:46:21 -05:00
90ede31698 fix(org): org-roam: remove emacsql-sqlite hacks
emacs-sqlite.el was removed upstream in magit/emacsql@8ebf559, and the
custom sqlite executable is no longer built as of magit/emacsql@7a79c2b,
which renders these two advice mostly unnecessary (plus they throw
void-function `emacsql-sqlite-ensure-binary` errors).

Fix: #8167
Ref: org-roam/org-roam#2485
Ref: magit/emacsql@8ebf559f58
Ref: magit/emacsql@7a79c2be3d
2024-11-19 00:42:34 -05:00
04c7cf51b4 tweak(emacs-lisp): imenu: rearrange groups & fix nested cl types
In order to make imenu in elisp buffers more useful:

- Sections are given the highest precedence, and should only show lines
  with more than two semicolons at the start of the line.
- Fixes an issue where cl-defstruct blocks with options in its NAME
  argument were missed by imenu. I.e. with (cl-defstruct (foo ...)),
  `foo` would not show up in imenu.
2024-11-16 06:57:02 -05:00
5e84709577 nit(cli): fix print-group! indentation 2024-11-13 17:10:09 -05:00
eea00f5d45 refactor: remove doom/goto-private-*-file commands
These commands were removed in an ongoing effort to slim down Doom and
its core. The `doom/goto-private-*-file` family of commands were
redundant with `doom/open-private-config` and
`doom/find-file-in-private-config`.
2024-11-07 04:03:13 -05:00
89b087a283 bump: :editor
emacs-evil/evil-collection@6365e7c8ae -> emacs-evil/evil-collection@01d791dd63
emacs-evil/evil@5db0bdc7dc -> emacs-evil/evil@b7ab3840db
emacs-tree-sitter/ts-fold@55f80a202a -> emacs-tree-sitter/ts-fold@01c9ecaaa8
emacsorphanage/god-mode@607aff10a7 -> emacsorphanage/god-mode@9f3f6a1dc9
gabesoft/evil-mc@cff3374bfe -> gabesoft/evil-mc@7e363dd6b0
joaotavora/yasnippet@eb5ba2664c -> joaotavora/yasnippet@fe1f4e0e96
justinbarclay/parinfer-rust-mode@0d16bd75ad -> justinbarclay/parinfer-rust-mode@c611628fbe
radian-software/apheleia@61766b50b2 -> radian-software/apheleia@429daf5f28

- zigfmt is now defined upstream and is no longer needed in lang/zig.

Revert: c7794ba06c
2024-10-31 21:54:20 -04:00
138fa6c995 bump: :os
emacs-straight/xclip@e132bbff55 -> emacs-straight/xclip@9ab22517f3
2024-10-31 21:54:20 -04:00
0d8b6bdfbd bump: :tools
NicolasPetton/pass@ed7031c5c3 -> NicolasPetton/pass@1a9f610015
Silex/docker.el@f3adbf49e1 -> Silex/docker.el@6f8bba0d11
editorconfig/editorconfig-emacs@648f0cf9ae -> editorconfig/editorconfig-emacs@c707d8d0f1
emacs-ansible/emacs-ansible@eebb2fb49d -> emacs-ansible/emacs-ansible@e171dacc12
emacs-lsp/lsp-mode@dd61303b2d -> emacs-lsp/lsp-mode@9b104105ad
emacs-straight/eglot@6b9c4faa52 -> emacs-straight/eglot@81eb273965
emacs-tree-sitter/tree-sitter-langs@365a4f7bf5 -> emacs-tree-sitter/tree-sitter-langs@465a64032d
emacsorphanage/quickrun@c58e2e4be5 -> emacsorphanage/quickrun@d383929c50
flycheck/flycheck-eglot@09e37f4c72 -> flycheck/flycheck-eglot@18d0c98695
joostkremers/parsebib@ace9df7071 -> joostkremers/parsebib@489f690f43
magit/forge@d4e88507bf -> magit/forge@9f2efc3c03
magit/magit@0aa26864e3 -> magit/magit@f2a6133443
meain/evil-textobj-tree-sitter@b4ef204ff8 -> meain/evil-textobj-tree-sitter@5056ebc231
purcell/envrc@532ecdab48 -> purcell/envrc@3c5a60dd91
rejeep/prodigy.el@cc68fa9d60 -> rejeep/prodigy.el@c5a17c280d
spotify/dockerfile-mode@39a012a27f -> spotify/dockerfile-mode@4d893bd2da
tumashu/posframe@570273bcf6 -> tumashu/posframe@ac9f954ac4
yoshiki/yaml-mode@7b5ce294fb -> yoshiki/yaml-mode@d91f878729
2024-10-31 21:54:20 -04:00
db76813c26 refactor: rename doom-features to doom-system 2024-10-31 21:54:20 -04:00
5ff8561b5e fix(lsp): lsp!: make non-interactive
This autodef was never intended to be interactive. Use `lsp` or `eglot`
if you need an interactive variant.
2024-10-31 21:54:19 -04:00
7aed77c702 bump: :emacs undo
ideasman42/emacs-undo-fu-session@beb0e285d0 -> emacsmirror/undo-fu-session@beb0e285d0
ideasman42/emacs-undo-fu@dbb3e4b699 -> emacsmirror/undo-fu@dbb3e4b699

- Moving to Github mirrors due to Codeberg outages (#7501).

Ref: #7501
2024-10-31 21:54:19 -04:00
1f8c326dfa fix(eval): remove duplicate REPL entries
The method previously used to remove duplicates was incorrect
2024-10-31 21:44:13 -04:00
dea6552ef9 fix(agda): agda2-auto-maybe-all -> agda2-mimer-maybe-all
Fixes the broken Agda auto mode in Doom Emacs caused by the
introduction of mimer in Agda 2.7.0.

* modules/lang/agda/config.el (agda-auto-mode):
replaced agsy with mimer for auto mode call.
2024-10-24 17:43:56 -04:00
448bc5cae2 refactor: use negated flags
Ref: 7a806521a92c
2024-10-20 02:41:50 -04:00
15904349cf refactor!: module API
BREAKING CHANGE: This backports some architectural choices from v3.0.
This changes Doom's module API, renaming some functions and removing
others, in order to facilitate some new features, prepare to move Doom's
modules into separate repos, and make way for two, much larger breaking
commits coming in the next few days.

This commit won't break anything for users unless they're tinkering with
Doom's internals/using its `doom-module-*` API directly. I am avoiding
broader backwards incompatibilities until the 3.0 release.

What's new:

- Negated flags. (modulep! :editor evil -everywhere) will return non-nil
  if :editor evil is active without its +everywhere flag.
- `modulep!` now takes multiple flags to simplify AND checks. E.g.

    (and (modulep! +foo)
         (modulep! +bar)
         (not (modulep! +baz)))

  Can now be expressed with:

    (modulep! +foo +bar -baz)
- Adds pcase matchers for `doom-module-context` and `doom-module`
  structs, making the following destructuring binds possible:

    (pcase-dolist ((doom-module group name flags features)
                   (hash-table-values doom-modules))
      ...)

  This will be used more in v3.0.
- Adds file cookie support to module init.el and config.el files.

Here's a summary of breaking changes made in this commit:

- `doom-module-context` was changed from a vector to a struct (record).
- `doom-modules` is now a table of `doom-module` structs, rather than
  free-form plists.
- The following macros have been renamed:
  - `doom-context-with` -> `with-doom-context`
  - `doom-module-context-with` -> `with-doom-module`
- The followings functions have been replaced/removed:
  - `doom-module-context`+`doom-module-context-get` -> `doom-module`
  - `doom-module-set` -> `doom-module--put`
  - `doom-module-p` -> `doom-module-active-p`
  - `doom-module-context-key` (is now a getter with the same name)
  - `doom-module-put` (removed)
  - `doom-module--context-field` (removed)
- The signatures for these functions have changed:
  - `doom-module-get CATEGORY &optional MODULE PROP` ->
    `doom-module-get (GROUP . MODULE) &optional PROP`
  - `doom-module-locate-path CATEGORY &optional MODULE FILE` ->
    `doom-module-locate-path (GROUP . MODULE) &optional FILE`
  - `doom-module-expand-path CATEGORY MODULE &optional FILE` ->
    `doom-module-expand-path (GROUP . MODULE) &optional FILE`
- Adds the following functions
  - `doom-module-exists-p`
  - `doom-module-key`
  - `doom-module->context`
  - `doom-module<-context`
- Removes the following variables
  - `doom-module--empty-context`

This commit results in a little redundancy, which I will address in
parts 2/3 and/or v3.0.
2024-10-20 02:41:42 -04:00
b9deb35aab bump: :lang factor
factor/fuel@31dc1a386b -> factor/fuel@6d0e98494f

Melpa's upstream and recipe for `fuel` changed (see
4a3d7cdefa):
previously it was pulled from a subdirectory of the main `factor`
repository, it now has its own repository. Applying Doom's previous pin
to the new recipe does not seem to work correctly, so update.
2024-10-20 02:32:16 -04:00
a5538209d8 fix(fold): autoload +fold--ensure-hideshow-mode
This function may be called by `+fold--ensure-hideshow-mode-a`, before
autoload/fold.el has been loaded.

Amend: #8067
2024-10-20 02:31:31 -04:00
03fbb00e3c bump: :ui doom
doomemacs/themes@2c794a09b0 -> doomemacs/themes@1cac71a4b2

Fix: #7853
2024-10-03 02:24:16 -04:00
dc387bc486 fix(mu4e): org-msg: toggle behavior
Toggle behavior:

The `(integerp current-prefix-arg)` check didn't appropriately catch
`C-u`/`SPC u` prefixes. This attempts to use `(prefix-numeric-value
current-prefix-arg)` instead to normalize these cases.

Variable naming:

I'm not sure if this was supposed to continue to be called
`+mu4e-compose-org-msg-toggle-next` or if the rename to private
`+mu4e--compose-org-msg-toggle-next` was intentional and the usage
wasn't updated accordingly. I see the `mu4e` README still mentions it,
so I would guess the former and this was a typo.

Ref: #8073
Amend: a78237cc01
2024-10-03 00:45:35 -04:00
68b3cc86c5 fix(ruby): replace the obsolete macro featurep! with modulep!
Amend: fc35b3cf37
2024-10-03 00:41:42 -04:00
a35992a97d bump: :email wanderlust
wanderlust/wanderlust@8a0ea2146e -> wanderlust/wanderlust@8b413b33cd
2024-10-03 00:40:28 -04:00
397d149313 fix(python): renamed python-pytest commands
These two commands were renamed upstream and pulled in in 1fa1eba:

- python-pytest-function-dwim -> python-pytest-run-def-or-class-at-point
- python-pytest-function-dwim -> python-pytest-run-def-or-class-at-point-dwim

Amend: 1fa1eba5ac
Ref: wbolster/emacs-python-pytest#75
2024-10-03 00:39:55 -04:00
9d859f62e4 fix(clojure): type error evilifying cider-debug keys 2024-10-03 00:36:57 -04:00
c75e1b915b docs(cc): treat clangd as default/better option
clangd was made the default LSP client for the cc module in cc8cf81.
This updates the module's docs to reflect this.

Amend: cc8cf810f5
Ref: #2689
2024-10-02 21:53:43 -04:00
92c064459f fix(default): search-project: don't escape selection
This would double-escape for `+vertico/project-search`.
2024-09-18 21:15:22 -04:00
a2b1c4da78 feat(emacs-lisp): extend fontification to lisp-{data,interaction}-mode
Was supposed to be part of 22d5e30.

Amend: 22d5e3059f
2024-09-17 06:05:30 -04:00
0b2ccac007 fix(emacs-lisp): lookup docs backend w/o helpful
Use `helpful-symbol` if it's present and the symbol at point doesn't
represent a cl-type (falling back to `describe-symbol` otherwise).

Fix: #8068
2024-09-17 05:57:33 -04:00
22d5e3059f feat(emacs-lisp): extend config to lisp-{data,interaction}-mode
So these modes (and particularly .doom* dotfiles and .dir-locals.el) can
benefit from smarter syntax highlighting and integration with other
modules.
2024-09-17 05:56:44 -04:00
037b018cdd feat: add .doommodule files
These optional dotfiles indicate the root of a module or module
group (:lang), and will later contain module metadata. They will also
serve as an alternative to packages.el and doctor.el, and will aide the
parts of the v3.0 module API concerned with resolving the current module
from a path (`doom-module-from-path`), which currently rely too heavily
on parsing path strings.

For now, however, they're simply placeholders.
2024-09-14 20:47:39 -04:00
7ec570fdf5 fix(format): clang-format: respect c-basic-offset
In the absence of a .clang-format file, imposing the value of
`c-basic-offset` onto clang-format seems like reasonable, default
behavior. Like all other cases, this can be disabled by unsetting
`apheleia-formatters-respect-indent-level` globally or mode-locally with
`setq-hook!` or similar.
2024-09-14 20:46:49 -04:00
d633c15042 perf(cc): lsp-clangd: halve core count for indexing
Ref: cec81ac2cc
2024-09-14 16:08:43 -04:00
2e5307e425 fix(emacs-lisp): always try Helpful for doc lookup
As per the description in 6671adc68, this module should always use
Helpful's functions as long as Helpful is available (ie. not explicitly
disabled by the user in packages.el). The remapping of `describe-symbol`
is irrelevant here - the user might prefer to rebind `C-h C-o` to
`describe-symbol` (as `helpful-symbol` cannot look up types), but that
doesn't necessarily mean they want this module not to use it.
2024-09-14 13:08:00 -07:00
c82e7d9ea2 fix(ligatures): avoid invalid prettify-symbols-alist
Otherwise, `prettify-symbols-alist` will be set to a list whose first
element is the mode name, a symbol. That makes `prettify-symbols-alist`
an invalid alist, so when `prettify-symbols-mode` is enabled, there's a
type error in `prettify-symbols--make-keywords`.

Amend: c07f359d64
2024-09-14 13:01:54 -07:00
a78237cc01 fix(mu4e): org-msg: type error w/ prefix arg
Fix: #8073
2024-09-14 15:22:09 -04:00
66a2972ebf fix(lib): doom/set-indent-width on Emacs >=30
A built-in `editorconfig` package was added in Emacs 30, with a somewhat
different API from the other package of the same name.

Fix: #8072
2024-09-14 15:22:09 -04:00
d34770407c fix(emacs-lisp): unremap describe-symbol to helpful-symbol
The latter can't look up cl types. Rather than remap it globally, allow
folks to bind them separately.
2024-09-14 15:22:06 -04:00
b681504582 fix(fold): avoid Hideshow-not-supported error
Some modes are not supported by `hs-minor-mode`, but can still support
some of the `+fold/` commands. For example, `pdf-outline-minor-mode`
recognizes the same commands as `outline-minor-mode`, but
`hs-minor-mode` is not applicable. In cases like these, we shouldn't try
to enable `hs-minor-mode`, as this will produce an error that will
terminate the command.
2024-09-13 20:28:54 -07:00
faeab956e5 fix(vertico): consult-register: make evil-aware
Since the module remaps evil-show-registers to consult-register, the
latter should be made aware of evil registers.

Fix: #6355
2024-09-13 23:07:14 -04:00
07afef645a tweak(company): company-idle-delay = 0.26
Bumped up from it's default of 0.2.
2024-09-13 23:07:14 -04:00
f452677c55 docs(ligatures): revise docstrings 2024-09-13 23:07:14 -04:00
c07f359d64 fix(ligatures): activate prettify-symbols-mode conditionally
With +extra enabled, this module would activate `prettify-symbols-mode`
in any buffer where `prettify-symbols-alist` is non-nil, whether or not
`+ligatures-extra-alist` has an entry for the current major mode (or a
parent thereof). This behavior is poor UX, since the user may be
expecting that a empty entry for some `X-mode` in
`+ligatures-extra-alist` should mean *no` prettify-symbols-mode` at all
in `X-mode`.

With this, `+ligatures-extra-alist` is now the authority. An empty entry
for `X-mode` will result in `prettify-symbols-mode` *not* being
activated there. If that entry *isn't* empty, it will be combined only
with the global default value of `prettify-symbols-alist`, not any
pre-existing buffer-local value, to make the end result deterministic,
because some modes have their own defaults for it (like
`lisp-prettify-symbols-alist`, `js--prettify-symbols-alist`, and
`rust-prettify-symbols-alist`).

Fix: #7440
2024-09-13 23:07:14 -04:00
59de0ec15e perf(default): eagerly loading yasnippet at startup 2024-09-13 23:07:14 -04:00
b9eb662334 feat(vertico): allow affixes to be escaped
So we can search for "modulep\!" without it triggering the ! dispatcher.
2024-09-13 23:07:14 -04:00
d735c9be3d fix(graphviz): don't eagerly load flycheck at startup
Due to eager expansion of the flycheck-define-checker macro. Causes a
hefty delay in startup times.
2024-09-13 23:07:13 -04:00