On Wed, Apr 27, 2022 at 3:59 PM Thibaut Verron <thibaut.verron@gmail.com> wrote:
>
>
> On 27/04/2022 02:32, Hongyi Zhao wrote:
>> On Tue, Apr 26, 2022 at 10:31 PM Thibaut Verron
>> <thibaut.verron@gmail.com> wrote:
>>> On 26/04/2022 16:00, Hongyi Zhao wrote:
>>>> On Tue, Apr 26, 2022 at 9:17 PM Thibaut Verron <thibaut.verron@gmail.com>
wrote:
>>>>> Hi,
>>>>>
>>>>> Once the mode is activated, introducing newlines at key places should
>>>>> make the formula readable.
>>>> Yes. It works. But this method needs to hit many times on <RET> to
>>>> achieve the goal.
>>>>> You can also use sexp-navigation commands to
>>>>> quickly navigate the parentheses and find those key points.
>>>> I don't have this command, as shown in the attachment.
>>> It's not one command, but a set of commands for navigating paired
>>> expressions: for example forward-sexp C-M-f (jumping over a symbol or a
>>> paired expression), backward-sexp C-M-b, and down-list C-M-d (jumping
>>> inside the next paired expression). Those commands are designed for lisp
>>> languages, but they work remarkably well for most programming languages
>>> (and are even occasionally useful with natural languages).
>>>
>>> For example for your expression, you can get the formatted version I
>>> sent with: (indented to follow the depth in the expression)
>>>
>>> C-M-d
>>> C-M-d
>>> C-j
>>> C-M-f C-M-f C-f C-j
>>> C-M-d
>>> C-j
>>> C-M-d
>>> C-M-d
>>> C-M-f C-M-f C-f C-j
>>> C-M-f C-M-f C-f C-j
>>> C-M-f C-M-f C-f C-j
>>> C-M-f
>>> C-f
>>> C-f C-j
>>> C-M-f C-M-f
>>> C-f
>>> C-f C-j
>>>
>>> I know that it looks somewhat complicated and long, but it's easier done
>>> interactively than read. :)
>> It would be much more useful to generalize the working logic like the
>> one above and use a function implementation to handle the work here.
>
> As usual with this type of questions, the difficulty is in formalizing
> the requirement.
>
> For instance, if the goal is to break the line after each syntactic
> unit, that's reasonably easy to automatize. But then the first list will
> be 15 lines, so I don't think that's what you want.
>
> But as it stands, there is no "working logic", it's an interactive
> process. And the best the editor can do is make this process easy, by
> letting us navigate through the possible points for inserting line
> breaks, and leaving the choice to us.
>
> This is exactly what the sequence of key presses I suggested does: each
> M-C-f, M-C-d and C-f just means "jump to the next candidate break
> point", with sometimes C-M-f used for jumping over multiple points (such
> as the first list). And you just add a C-j (or RET) whenever you reach a
> point where you would like to break the expression.
>
> If you have a precise way to describe the result you want, I'm sure
> writing a function to do it won't be too difficult.
I think the criterion is readability and perhaps the results shown in
the attachment are desirable.