Commit graph

3991 commits

Author SHA1 Message Date
Alex Barbosa
e7c2305a93
docs(php): update version info and fix repl package name 2023-02-20 20:06:02 -05:00
Andrew Whatson
6ebf173d16 feat(scheme): use up-to-date scheme-mode on emacs <29
Emacs master has a number of fixes for scheme-mode which are nice to
have on older versions.  In particular, this includes indentation fixes
for common Scheme functions and improves Imenu integration for Guile.
2023-02-20 19:59:30 -05:00
Andrew Whatson
f2c72a741f fix(scheme): fix calls to deprecated switch-to-geiser 2023-02-20 19:59:30 -05:00
Andrew Whatson
2ff0252044 fix(scheme): fix eval handler for Geiser REPLs
The default behavior of `+eval/send-region-to-repl` pastes the region
into the repl buffer, which doesn't work well with Geiser.  This change
ensures `geiser-eval-region` is used instead.
2023-02-20 19:59:30 -05:00
Andrew Whatson
ac9afd060e fix(scheme): fix popup rule not matching Geiser REPLs 2023-02-20 19:59:30 -05:00
Henrik Lissner
dbf8f748ee
bump: :lang python
cython/emacs-cython-mode@b2015596b3 -> cython/emacs-cython-mode@3e4790559d
emacs-lsp/lsp-pyright@2fa2c89765 -> emacs-lsp/lsp-pyright@4cd2adbb32
necaris/conda.el@cb9544e8f7 -> necaris/conda.el@667968184e

- (#7081) Repin emacs-cython-mode to an existing commit.

Fix: #7081
2023-02-20 19:00:45 -05:00
Henrik Lissner
7c1c1f52bb
bump: :lang org
Kungsgeten/org-brain@46ca9f7663 -> Kungsgeten/org-brain@2bad7732aa
awth13/org-appear@60ba267c5d -> awth13/org-appear@eb9f9db40a
bastibe/org-journal@1ea9e3b672 -> bastibe/org-journal@2f220a06e3
elken/ob-fsharp@ca3d4568da -> elken/ob-fsharp@a5bb40915a
emacs-straight/org-mode@bed47b437d -> emacs-straight/org-mode@fe92a3cedb
emacsmirror/org-contrib@aa104c0bbc -> emacsmirror/org-contrib@fff6c88806
emacsorphanage/ox-pandoc@f8eac5e569 -> emacsorphanage/ox-pandoc@66c32cca4f
hakimel/reveal.js@f6f657b627 -> hakimel/reveal.js@7de6ccb65b
https://repo.or.cz/org-contacts.git@bd5093e46b1d -> https://repo.or.cz/org-contacts.git@bb4032eb12c2
integral-dw/org-superstar-mode@03be6c0a30 -> integral-dw/org-superstar-mode@54c81c27dd
kaushalmodi/ox-hugo@e532fce4a4 -> kaushalmodi/ox-hugo@706b5f622d
magit/orgit-forge@3a54569dd0 -> magit/orgit-forge@6f424ff3a2
magit/orgit@5036c3db58 -> magit/orgit@fc40397f7b
nnicandro/emacs-jupyter@7d20c0aee2 -> nnicandro/emacs-jupyter@eebeef1293
oer/org-re-reveal@941aa4b94f -> oer/org-re-reveal@91cdd82c47
org-roam/org-roam@d95d25615e -> org-roam/org-roam@74422df546

- (#7076) Fix emacs-zmq due to nnicandro/emacs-jupyter#433.
- Fix org-contrib being pinned to an orphaned commit (due to force push
  upstream (?)).

Close: #7076
2023-02-20 19:00:23 -05:00
Henrik Lissner
7983f8e17d
bump: :lang julia
JuliaEditorSupport/julia-emacs@47f43f7d83 -> JuliaEditorSupport/julia-emacs@7aafa8e77d
tpapp/julia-repl@6c1d63511f -> tpapp/julia-repl@57a15dfafe
non-Jedi/eglot-jl@2e35cf9768 -> non-Jedi/eglot-jl@2e04597223

- (#7016) Fixes the "Failed to find command: julia-repl--show" error.

Close: #7016
Fix: wentasah/EmacsVterm.jl#3
2023-02-18 15:27:48 -05:00
Henrik Lissner
3a4afcef43
bump: :lang nix
NixOS/nix-mode@20ee8d8890 -> NixOS/nix-mode@c18a24e9ac
jwiegley/nix-update-el@fc6c39c2da -> jwiegley/nix-update-el@aab70a3816

Close: #7059
Co-authored-by: thomasjm <thomasjm@users.noreply.github.com>
2023-02-18 15:27:48 -05:00
Henrik Lissner
7e21535285
bump: :lang scheme
emacs-geiser/chez@48427d4aec -> emacs-geiser/chez@246ec4c8bc
emacs-geiser/geiser@550d57d347 -> emacs-geiser/geiser@e54d5e6dc6
emacs-geiser/guile@b2d6f398e3 -> emacs-geiser/guile@24ce15de23
flatwhatson/flycheck-guile@e58ceb8b51 -> flatwhatson/flycheck-guile@e23a4d7813

- (#6942) Fixes an issue with evaluating scheme code in org-mode due to
a missing run-geiser function.

Close: #6943
Co-authored-by: fosskers <fosskers@users.noreply.github.com>
2023-02-18 15:27:48 -05:00
Henrik Lissner
d1b948eb2c
fix(lua): +lua-love-mode always active 2023-02-18 15:27:47 -05:00
NitrogenPointBlue
818efb263f
fix(org): update org-attach-store-link-p default
Org-mode's behavior when org-attach-store-link-p is 't' recently
changed.

When the value of org-attach-store-link-p is 't' org-store-link now
suggests a 'file:' link to the attachment's original location. Setting
the value to 'attached' instead suggests an 'attachment:' link utilizing
the attachment directory.

Ref: https://git.savannah.gnu.org/cgit/emacs/org-mode.git/commit/?id=0d60013f0e3980fab959542eeb171ab9a02b450c
Fix: #6952
2023-02-18 15:26:14 -05:00
Joan Antoni RE
e51b7291c1 docs(rust): add missing +tree-sitter flag 2023-02-18 00:59:23 -05:00
Itai Y. Efrat
a1903ac4d5 fix(emacs-lisp): docstring url format which error popup
In emacs 29 wrong quotes in docstrings throw up compilation errors,
which pop up randomly with no real context when using doom. I have found
a reference to url's being single quoted in the emacs wiki[0], but the
emacs manual shows the standard format[1], not sure if it changed or was
a mistake. Also it should have a URL prefix apparently.

[0]: https://www.emacswiki.org/emacs/DocString
[1]: info elisp 'Documentation tips'
2023-02-18 00:58:58 -05:00
Matt Freels
c2df1803b2
bump: :lang scala (#6984)
hvesalai/emacs-scala-mode@598cb680f3 -> hvesalai/emacs-scala-mode@5d7cf21c37
emacs-lsp/lsp-metals@097d6021a4 -> emacs-lsp/lsp-metals@a2df7263ec

- (#6961) Fixes a critical incompatibility with recent changes in treemacs.

Fix: #6961
2023-02-18 00:50:56 -05:00
Itai Y. Efrat
3a34894492 docs(org): warn about org-roam-v1 status
- add doctor warning about eventual removal
- clarify the readme notice, since the migration-wizard has stabilized
2022-10-29 21:57:51 +02:00
Edmund Miller
3ae293e37a
feat(org): bind '<localleader> r R' to org-refile-reverse 2022-10-29 02:51:30 +02:00
Henrik Lissner
3d8f9ae5ea
fix(rest): gnutls-verify-error: defining as dynamic error
An error results if you let-bind a dynamic variable before it's defined,
so I forcibly ensure gnutls-verify-error is defined.

Fix: #6073
Close: #6525
2022-10-29 01:57:43 +02:00
Henrik Lissner
d39ec50bb7
fix(emacs-lisp): backport mode-name from 28+
In Emacs 28+, the mode-name in emacs-lisp-mode is "ELisp/X" (where X = d
or l depending on lexical-binding). I find this much more useful than
"Emacs-Lisp" in <=27.x or our static replacement "Elisp".
2022-10-29 01:57:43 +02:00
Henrik Lissner
a0ccb6b95b
feat(emacs-lisp,lispy): recognize ;;* outline headings
Permit `;;* ...` be recognized by imenu and outline-minor-mode (and
outline's commands). This also patches Lispy to reflect this new
configuration (if :lang emacs-lisp is active).

Close: #6732
Co-authored-by: LemonBreezes <LemonBreezes@users.noreply.github.com>
2022-10-29 01:57:43 +02:00
declantsien
b5e9f58db6
fix(org): check WAYLAND_DISPLAY for bin/org-capture
Check WAYLAND_DISPLAY for +org-capture-frame-parameters.
PGTK emacsclient also uses this logic.

Ref: masm11/emacs#13
2022-10-28 19:13:32 +02:00
Henrik Lissner
ceb985673c
fix(haskell): activate lsp! conditionally
use-package evaluates :preface *before* :when, so the two lsp! hooks
would run unconditionally, causing errors and warnings when opening a
haskell-mode buffer.

*
modules/lang/haskell/config.el (haskell-literate-mode-local-vars-hook):
add lsp! to hook.
2022-10-23 02:53:59 +02:00
Henrik Lissner
912a0bc059
bump: :lang clojure
clojure-emacs/cider@b9e1cc26e2 -> clojure-emacs/cider@92c1b6de20
clojure-emacs/clj-refactor.el@f368c56c83 -> clojure-emacs/clj-refactor.el@db89b55871
clojure-emacs/clojure-mode@b6f41d7490 -> clojure-emacs/clojure-mode@414157c3e5
emacsmirror/paredit@8330a41e81 -> emacsmirror/paredit@e4a67f4f23

- emacs-cider 1.4.1->1.5.0
- clojure-mode 5.15.0->5.15.x
- clj-refactor 3.5.3->3.5.6

Ref: clojure-emacs/cider#3235
Close: #6856
Co-authored-by: socksy <socksy@users.noreply.github.com>
2022-10-23 02:46:52 +02:00
Henrik Lissner
bc2f09e74a
bump: :lang swift
emacs-lsp/lsp-sourcekit@97ff36b228 -> emacs-lsp/lsp-sourcekit@f877659bab
swift-emacs/swift-mode@0d1ef0ef18 -> swift-emacs/swift-mode@f4529efa45

- Introduces Swift 5.7 support.

Close: #6895
Co-authored-by: RoryO <RoryO@users.noreply.github.com>
2022-10-23 02:46:52 +02:00
Henrik Lissner
1961003d00
bump: :lang python
Wilfred/pyimport@a6f63cf7ed -> Wilfred/pyimport@c006a5fd0e
cybniv/poetry.el@5b9ef569d6 -> cybniv/poetry.el@5a8575bc78
cython/cython@8afd932c28 -> cython/cython@b2015596b3
emacs-lsp/lsp-pyright@c745228f39 -> emacs-lsp/lsp-pyright@2fa2c89765
necaris/conda.el@a65ed00848 -> necaris/conda.el@cb9544e8f7
pythonic-emacs/anaconda-mode@160e4e7185 -> pythonic-emacs/anaconda-mode@ca8edbaa76
wbolster/emacs-python-pytest@9bf8db38bf -> wbolster/emacs-python-pytest@33c921adaa

Ref: Wilfred/pyimport#12
Close: #6779
Co-authored-by: corrafig <corrafig@users.noreply.github.com>
2022-10-23 02:46:52 +02:00
Henrik Lissner
6ee14b4589
bump: :lang org
bastibe/org-journal@839a2e1986 -> bastibe/org-journal@1ea9e3b672
emacs-straight/org-mode@86c4635dba -> emacs-straight/org-mode@bed47b437d
emacsmirror/org-contrib@0740bd3fe6 -> emacsmirror/org-contrib@aa104c0bbc
hakimel/reveal.js@c1c4145240 -> hakimel/reveal.js@f6f657b627
https://repo.or.cz/org-contacts.git@919511eb8697 -> https://repo.or.cz/org-contacts.git@bd5093e46b1d
kaushalmodi/ox-hugo@97ff24fe0b -> kaushalmodi/ox-hugo@e532fce4a4
magit/orgit-forge@8baf1dee79 -> magit/orgit-forge@3a54569dd0
magit/orgit@b33b916915 -> magit/orgit@5036c3db58
oer/org-re-reveal@6f78a0a228 -> oer/org-re-reveal@941aa4b94f
takaxp/org-tree-slide@3faa042393 -> takaxp/org-tree-slide@d6529bc2df

- Replace orphaned emacsmirror/org-contrib@0740bd3 (which no longer
  exists) with emacsmirror/org-contrib@aa104c0.

Fix: #6881
Close: #6882
Co-authored-by: ldang0 <ldang0@users.noreply.github.com>
2022-10-23 02:46:52 +02:00
Henrik Lissner
d25ff46d46
perf(javascript): replace add-node-modules-path
The add-node-modules-path package calls `npm bin` to locate the
node_modules/.bin, and does so while invoking the user's $SHELL, which
can be very expensive depending on the user's shell configuration,
possibly adding seconds to the startup time of any JS/TS file.

To mitigate this, I replace the package with a much faster, and in-house
heuristic. Folks with more complex needs should be using direnv anyway.

Fix: #6878
2022-10-23 02:30:13 +02:00
VitalyR
4bd4b13158
bump: :lang haskell
haskell/haskell-mode@cb573c8db5 -> haskell/haskell-mode@90503413f4
emacs-lsp/lsp-haskell@7cf64944ab -> emacs-lsp/lsp-haskell@485c1148ce

Ref: haskell/haskell-mode@4010de30ec
2022-10-23 02:29:45 +02:00
TEC
7e50f239c4 fix(org): improve parsing of flag-only module link 2022-10-05 01:01:19 +02:00
TEC
24f98d49ec tweak(org): have doom links use path for info 2022-10-05 01:01:19 +02:00
TEC
5ac2a5258b docs: change link format 2022-10-05 01:01:19 +02:00
Ellis Kenyő
4d24a3f1a7 feat(org): restore org-contrib packages removed upstream
org-contrib is slowly removing packages (most of which have moved or
will move to their own repos or into Org proper).

Ref: emacsmirror/org-contrib@3dd9841522
Ref: emacsmirror/org-contrib@c555d8d489
Ref: emacsmirror/org-contrib@0740bd3fe6
Close: #6740
2022-09-30 23:02:34 +02:00
Dave Lucia
04fa5fb948
fix(web): remove .sface from web mode autolist
elixir-mode can now handle .sface files from surface-ui.org

Ref: #4905
2022-09-30 22:35:07 +02:00
Henrik Lissner
156fade7e2
fix(emacs-lisp): set doom-module-context in eval handler
So module context is in scope of evaluated code.

Amend: 4efaf6837b
2022-09-25 17:52:07 +02:00
Henrik Lissner
4efaf6837b
refactor: introduce doom-module-context
Where f9201eb introduced a general context system, this one introduces
one for modules, to simplify our let-bind game when interacting with
modules, and to more efficiently expose module state to modulep! (which
gets called at runtime a great deal, so its performance is important).

* lisp/doom-lib.el (doom-log): simplify macro and introduce
  doom-inhibit-log variable.
* lisp/doom-modules.el (modulep!): fix reported file path if modulep!
  fails to find the local module.
* lisp/lib/debug.el (doom-debug-variables): disable doom-inhibit-log
  when debug mode is on.

Ref: f9201eb218
2022-09-24 22:09:46 +02:00
Henrik Lissner
f9201eb218
refactor: introduce doom-context
Introduces a system to announce what execution contexts are active, so I
can react appropriately, emit more helpful logs/warnings in the case of
issues, and throw more meaningful errors.

* bin/doom: load module CLIs in the 'modules' context.
* lisp/cli/doctor.el: load package files in 'packages' context.
* lisp/doom-cli.el:
  - (doom-before-init-hook, doom-after-init-hook): trigger hooks at the
    correct time. This may increase startup load time, as the benchmark
    now times more of the startup process.
  - (doom-cli-execute, doom-cli-context-execute,
    doom-cli-context-restore, doom-cli-context-parse,
    doom-cli--output-benchmark-h, doom-cli-call, doom-cli--restart,
    doom-cli-load, run!): remove redundant context prefix in debug logs,
    it's now redundant with doom-context, which doom-log now prefixes
    them with.
* lisp/doom-lib.el (doom-log): prefix doom-context to doom-log output,
  unless it starts with :.
* lisp/doom-packages.el (package!, doom-packages--read): throw error if
  not used in a packages.el file or in the context of our package
  manager.
* lisp/doom-profiles.el (doom-profile--generate-init-vars,
  doom-profile--generate-load-modules): use modules doom-context instead
  of doom-init-time to detect startup.
* lisp/doom-start.el (doom-load-packages-incrementally-h): move function
  closer to end of doom-after-init-hook.
* lisp/doom.el:
  - (doom-before-init-hook, doom--set-initial-values-h,
    doom--begin-init-h): rename doom--set-initial-values-h to
    doom--begin-init-h and ensure it runs as late in
    doom-before-init-hook as possible, as that is the point where Doom's
    "initialization" formally begins.
  - (doom-after-init-hook): don't trigger at the end of command-line-1
    in non-interactive sessions. This will be triggered manually in
    doom-cli.el's run!.
* lisp/lib/config.el (doom/reload, doom/reload-autoloads,
  doom/reload-env): use 'reload' context for reload commands.
* modules/lang/emacs-lisp/autoload.el (+emacs-lisp-eval): use 'eval'
  context.
* modules/lang/org/config.el: remove doom-reloading-p; check for
  'reload' doom context instead.
2022-09-24 22:09:05 +02:00
Henrik Lissner
1c4217aa27
refactor: minor refactors & commentary revision
* lisp/doom-cli.el:
  - reference backport source commit.
  - doom-cli--restart: a type check is all we need here. This is a
    programmer error, not a user error.
* lisp/doom-editor.el (recentf): mention recentf-show-abbreviated (added in
  emacs-mirror/emacs@32906819ad)
* lisp/doom-keybinds.el (doom-init-leader-keys-h): move to
  doom-after-init-hook, in case the user customizes leader variables in
  a previous hook (like emacs-startup-hook or after-init-hook).
* lisp/doom-start.el: use eval-when! to compile out the section on
  non-macOS systems (when Doom gets around to compiling its core files,
  later).
* modules/config/literate/autoload.el (+literate-config-file): use
  file-name-concat instead of string concat. This relaxes the
  requirement that doom-user-dir end in a /; a requirement I intend to
  fully phase out.
* modules/lang/emacs-lisp/autoload.el (+emacs-lisp-non-package): remove
  empty map! macro in flycheck-emacs-lisp-check-form. The macro already
  no-ops at compile-time/in noninteractive sessions since b480ed51a3.
* modules/ui/hl-todo/config.el (hl-todo-keyword-faces): revise
  commentary for default hl-todo keywords.

Ref: emacs-mirror/emacs@32906819ad
Ref: b480ed51a3
2022-09-24 20:31:34 +02:00
Henrik Lissner
e2ce4345d2
bump: :lang org
abo-abo/org-download@947ca22364 -> abo-abo/org-download@19e166f0a8
alf/ob-restclient.el@3ac834b02b -> alf/ob-restclient.el@1b021ce1c6
emacs-straight/org-mode@00adad9357 -> emacs-straight/org-mode@86c4635dba
emacsmirror/org-contrib@39e2abc562 -> emacsmirror/org-contrib@0740bd3fe6
hakimel/reveal.js@e219184f37 -> hakimel/reveal.js@c1c4145240
org-roam/org-roam@7f453f3fff -> org-roam/org-roam@d95d25615e

Close: #6692
Fix: #6691
2022-09-18 13:10:49 +02:00
Henrik Lissner
46527c0b85
fix(org): eldoc showing empty heading breadcrumbs
Fix: #6795
Amend: ab9896c526
2022-09-17 10:37:09 +02:00
Henrik Lissner
732d87ac3e
nit: minor comment revision and refactors 2022-09-16 17:01:57 +02:00
Henrik Lissner
c5e88d229f
fix(lib): doom-compile-function throwing native-compiler-error 2022-09-16 16:15:07 +02:00
AlessandroW
d156e58577
fix(org): respect org-insert-heading-hook in +org--insert-item
Doom replaces `org-insert-heading`, but its replacement does not respect
`org-insert-heading-hook`. This commit fixes that, enabling folks to
customize their insert-heading behavior, e.g.  adding a time stamp:

  (defun my/org-set-creation-date-heading-property ()
    (save-excursion
      (org-back-to-heading)
      (org-set-property "CREATED" (format-time-string "[%Y-%m-%d %T]"))))
  (add-hook 'org-insert-heading-hook #'my/org-set-creation-date-heading-property)

Ref: https://git.savannah.gnu.org/cgit/emacs/org-mode.git/tree/lisp/org.el#n6187
Ref: https://git.savannah.gnu.org/cgit/emacs/org-mode.git/tree/lisp/org.el#n1615
2022-09-16 13:14:36 +02:00
Henrik Lissner
e1ef4cc001
fix(emacs-lisp): datatype error in fileless elisp buffers
Due to +emacs-lisp-non-package-mode assuming it would always execute in
a file-visiting buffer.

Fix: #6786
2022-09-16 13:07:28 +02:00
Henrik Lissner
ab9896c526
refactor(org): move doom-docs link defs to :lang org
Where they will be further generalized, later.

This also prevents an issue where org was loaded while the profile init
files are generated, which caused a warning about org-loaddefs which
introduces a noticable delay.
2022-09-16 13:06:17 +02:00
Henrik Lissner
511f0ca38f
fix(org): void-variable doom-user-dir on org-async export
This advice needed to be updated to reflect recent changes.

Fix: #6624
2022-09-16 03:17:46 +02:00
Henrik Lissner
36d3a62f6e
fix(emacs-lisp): defconst->defvar for +emacs-lisp-linter-warnings
This wasn't supposed to be a constant, and there's no reason it should
be one.

Amend: afa154db27
2022-09-16 02:06:43 +02:00
Henrik Lissner
20ab9154c2
refactor(emacs-lisp): sharp-quote function symbols 2022-09-16 01:14:24 +02:00
Henrik Lissner
7a2be67efa
refactor!: redesign module init/config hooks
BREAKING CHANGE: For consistency and correctness, I've renamed the
module init/config hooks, and added new ones:

- Adds doom-before-modules-config-hook
- Adds doom-after-modules-config-hook (replaced doom-before-init-modules-hook)
- Adds doom-before-modules-init-hook
- Adds doom-after-modules-init-hook (replaced doom-init-modules-hook)
- Removed doom-after-init-modules-hook (replaced w/ after-init-hook)

The old naming (and timing) was counterintuitive. Now, it's named after
the loaded file group (init.el vs config.el), and I added before/after
variants. Altogether, this should make them less ambiguous.

I've also moved some functions in various modules to more correct hooks.

Load order before this change:
- $EMACSDIR/early-init.el
- $EMACSDIR/lisp/doom.el
- $EMACSDIR/lisp/doom-start.el
- $DOOMDIR/init.el
- {$DOOMDIR,~/.emacs.d}/modules/*/*/init.el
- `doom-before-init-modules-hook'
- {$DOOMDIR,~/.emacs.d}/modules/*/*/config.el
- `doom-init-modules-hook'
- $DOOMDIR/config.el
- `doom-after-init-modules-hook'
- `after-init-hook'
- `emacs-startup-hook'
- `window-setup-hook'

Load order after this change:
- $EMACSDIR/early-init.el
- $EMACSDIR/lisp/doom.el
- $EMACSDIR/lisp/doom-start.el
- $DOOMDIR/init.el
- `doom-before-modules-init-hook'
- {$DOOMDIR,~/.emacs.d}/modules/*/*/init.el
- `doom-after-modules-init-hook'
- `doom-before-modules-config-hook'
- {$DOOMDIR,~/.emacs.d}/modules/*/*/config.el
- `doom-after-modules-config-hook'
- $DOOMDIR/config.el
- `after-init-hook'
- `emacs-startup-hook'
- `window-setup-hook'
2022-09-16 01:14:22 +02:00
Henrik Lissner
94ea4aa7dc
docs: add examples.org
This adds the basic framework of docs/examples.org, including the former
contents of demo.org in :lang emacs-lisp. elisp-demo has also been
reconfigured to search it instead.

Keep in mind that examples.org references a few things in as-of-yet
published documentation. This will be rectified soon.
2022-09-16 01:14:20 +02:00
Henrik Lissner
e71daf5cc3
tweak(emacs-lisp): elisp indentation for data/plists
This was adapted from
https://www.reddit.com/r/emacs/comments/d7x7x8/finally_fixing_indentation_of_quoted_lists/.
It fixes the indentation of quoted data (and plist keywords) so they're
indented like data, rather than function arguments, like so:

  BEFORE:
    `(foo bar baz
          doom emacs)
    '(:foo 1
           :bar 2
           :baz 3)
    '(:foo 1
           2
           3
           :bar 4)
    (:foo 1
          :bar 2)
    (:foo 1
          ;; test comment
          :bar 2)
    (:foo 1
          2
          :bar 3)

  AFTER:
    `(foo bar baz
      doom emacs)
    '(:foo 1
      :bar 2
      :baz 3)
    '(:foo 1
      2
      3
      :bar 4)
    ;; only align unquoted keywords if keywords start each line:
    (:foo 1
     :bar 2)
    (:foo 1
     ;; test comment
     :bar 2)
    (:foo 1
          2
          :bar 3)

Also, I added a way to declare that plists in an macro's arguments
should be indented like data:

  (put 'map! 'indent-plists-as-data t)

  BEFORE:
    (map! :localleader
          :map emacs-lisp-mode-map
          (:prefix ("d" . "debug")
                   "f" #'+emacs-lisp/edebug-instrument-defun-on
                   "F" #'+emacs-lisp/edebug-instrument-defun-off))

  AFTER:
    (map! :localleader
          :map emacs-lisp-mode-map
          (:prefix ("d" . "debug")
           "f" #'+emacs-lisp/edebug-instrument-defun-on
           "F" #'+emacs-lisp/edebug-instrument-defun-off))

There was a third improvement I was hoping to include, namely,
proper indentation of interpolated forms:

  BEFORE:
    `(foo
      bar
      ,(if t
           'baz
         'boo))

    `(foo
      bar
      (if t
          baz
        boo))

  AFTER:
  `(foo
    bar
    ,(if t
          'baz
        'boo))

  `(foo
    bar
    (if t
     baz
     boo))

But this was removed because it breaks indentation for quoted macro
forms (or dynamic elisp programming):

  BEFORE: (good)
    `(with-temp-buffer
       (if (always)
           (message
            "Hello %s"
            user-login-name)
         (message
          "Goodbye %s"
          user-login-name)))

  AFTER: (bad)
    `(with-temp-buffer
      (if (always)
       (message
        "Hello %s"
        user-login-name)
       (message
        "Goodbye %s"
        user-login-name)))

Ref: https://www.reddit.com/r/emacs/comments/d7x7x8/finally_fixing_indentation_of_quoted_lists/'
2022-09-16 01:14:20 +02:00