doomemacs/modules/lang
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
..
agda fix(agda): tree-sitter compatibility with agda2-mode 2022-09-10 18:36:24 +02:00
beancount refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
cc fix: partially revert OS detection changes 2022-08-18 17:08:16 +02:00
clojure refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
common-lisp refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
coq refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
crystal refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
csharp fix(csharp): add dep pkg for sln-mode 2022-09-07 00:19:23 +02:00
dart fix(dart): enable rainbow-delimiters in dart-mode 2022-09-07 00:16:04 +02:00
data revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00
dhall refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
elixir refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
elm refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
emacs-lisp tweak(emacs-lisp): elisp indentation for data/plists 2022-09-16 01:14:20 +02:00
erlang refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
ess refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
factor revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00
faust revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00
fortran refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
fsharp refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
fstar revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00
gdscript refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
go refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
graphql refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
haskell refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
hy revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00
idris refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
java refactor: deprecate doom-etc-dir for doom-data-dir 2022-08-14 20:43:35 +02:00
javascript refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
json refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
julia refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
kotlin refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
latex refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
lean refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
ledger refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
lua fix: partially revert OS detection changes 2022-08-18 17:08:16 +02:00
markdown refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
nim refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
nix fix(nix): remove :mode hook for nix-drv-mode 2022-09-10 23:37:50 +02:00
ocaml refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
org fix: partially revert OS detection changes 2022-08-18 17:08:16 +02:00
php refactor: deprecate doom-etc-dir for doom-data-dir 2022-08-14 20:43:35 +02:00
plantuml refactor: deprecate doom-etc-dir for doom-data-dir 2022-08-14 20:43:35 +02:00
purescript refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
python refactor(python): autoload syntax highlighter fix for 28.1 2022-09-16 01:14:20 +02:00
qt revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00
racket refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
raku refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
rest refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
rst revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00
ruby refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
rust docs(rust): de-emphasize rls 2022-09-07 01:25:22 +02:00
scala refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
scheme bump: :lang scheme 2022-09-07 01:40:10 +02:00
sh refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
sml refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
solidity refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
swift refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
terra refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
web refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
yaml refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
zig refactor: deprecate featurep! for modulep! 2022-08-14 20:43:35 +02:00
README.org revert: fix(docs): set mode in file-local vars 2022-08-07 19:08:07 +02:00

:lang

Description

These modules specialize in integration particular languages and their ecosystems into (Doom) Emacs.

Frequently asked questions

This category has no FAQs yet. Ask one?