While writing the question I found a viable workaround solution for myself, so I am posting it as Q&A. I am leaving the question open, because my workaround does not allow to set the amount by which things are indented.
By default Emacs indents function calls as
(function-name (first-argument)
(second-argument))
This is mostly fine, unless nesting gets very deep or if function-name
is on the long side. Then it becomes preferable to put all arguments on a separate line, which Emacs indents as
(function-name
(first-argument)
(second-argument))
This I find extremely ugly, because it makes code hard to read, when arguments are barely indented at all.
I could
add a file local variable -*- lisp-indent-offset: 4 -*-
to get more readable
(function-name
(first-argument)
(second-argument))
but this then would not affect only functions but would also produce the very much not well-readable
(let ((a (first-argument))
(b (second-argument)))
(function-name a b))
or for quoted data, equally bad,
(setq data '(data1
data2
data3))
This part is probably the most tricky, since Emacs has no fully reliable way to distinguish it from a quoted expression
(setq expression '(function-name
(first-argument)
(second-argument)))
which I assume is the reason for the default behavior.
Is there any option, short of writing my own indent function, that would allow Emacs Lisp functions to be indented more deeply, without overriding the explicitly declared behavior for macros?