On Wed, Apr 27, 2022 at 3:59 PM Thibaut Verron wrote: > > > On 27/04/2022 02:32, Hongyi Zhao wrote: > > On Tue, Apr 26, 2022 at 10:31 PM Thibaut Verron > > wrote: > >> On 26/04/2022 16:00, Hongyi Zhao wrote: > >>> On Tue, Apr 26, 2022 at 9:17 PM Thibaut Verron 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 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. Regards, HZ