Subject: Re: bug#76498: (ert-deftest) has indentation of 13 by default

From: Stefan Kangas <[email-masked]>
Date: Sun, 2 Mar 2025 04:45:32 -0800

Konstantin Kharlamov <[email-masked]> writes:

> I'm writing tests for purescript-mode package, and I stumbled upon odd
> behavior: `ert-deftest` is spuriously indented to either 2 (expected)
> or 13 (unexpected).
>
> After digging into it, I found that if you `emacs -Q some-file-with-
> tests.el` and try to indent the second line after `ert-deftest`, you'll
> get size of 13. But if you `(require 'ert)` and try again you'll get 2.
>
> This is because, even though `ert-deftest` keyword is declared inside
> `lisp-mode.el`, but *indentation size* for it resides instead in
> `ert.el`, as part of "declare" statement of `ert-deftest` macro.
>
> This is definitely not expected. First of all, there's no reason for
> user to evaluate `(require 'ert)` while working with tests — you
> wouldn't want to experiment with tests in your working Emacs anyway.
> Which means you get incorrect indentation and left wondering what's
> happening. Second of all, `ert-deftest` as a keyword resides inside
> `lisp-mode.el` anyway, so what's the point of having the indentation
> set in a different place.
>
> Could we move the indentation size to `lisp-mode.el`, please?

I think this is a more general problem that applies to basically any
macro.  Instead of fixing this locally just for that one macro, maybe we
should make autoload pick up on that automatically (for autoloaded
macros)?

Eli, Stefan, WDYT?