help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Format code snippets of the wolfram language to improve readability.


From: thibaut . verron
Subject: Re: Format code snippets of the wolfram language to improve readability.
Date: Wed, 27 Apr 2022 11:00:40 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.7.0

On 27/04/2022 10:33, Hongyi Zhao <hongyi.zhao@gmail.com> wrote:
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.

That's exactly what I mean. :)
"Readability" is a human concept, something that we recognize when we see it. But how 
would you explain to a computer (or someone writing the function you want) what 
"readability" is?

In your example, how would you formalize the fact that the 1st and 3rd lists 
shouldn't be broken, but the second should?

Again, it has little to do with wolfram (which is good for the list), I don't 
know of any mode offering a function for inserting smart line breaks in 
one-liners.

Best wishes,
Thibaut



reply via email to

[Prev in Thread] Current Thread [Next in Thread]