From: Thibaut Verron <thibaut.verron@gmail.com>
To: Hongyi Zhao <hongyi.zhao@gmail.com>
Cc: help-gnu-emacs <help-gnu-emacs@gnu.org>
Subject: Re: Format code snippets of the wolfram language to improve readability.
Date: Wed, 27 Apr 2022 09:59:26 +0200 [thread overview]
Message-ID: <09b8f470-944c-1f96-ae38-5bf55aba4285@gmail.com> (raw)
In-Reply-To: <CAGP6PO+wJ3BpAqfy0MOOBE72KEyaA-ho062eb2aCxSQZzmEaYQ@mail.gmail.com>
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.
Best wishes,
Thibaut
>
> Regards,
> HZ
next prev parent reply other threads:[~2022-04-27 7:59 UTC|newest]
Thread overview: 12+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-04-26 8:42 Format code snippets of the wolfram language to improve readability Hongyi Zhao
2022-04-26 8:53 ` Robert Pluim
2022-04-26 9:34 ` Hongyi Zhao
2022-04-26 9:40 ` Hongyi Zhao
2022-04-26 13:13 ` Thibaut Verron
2022-04-26 14:00 ` Hongyi Zhao
2022-04-26 14:31 ` Thibaut Verron
2022-04-27 0:32 ` Hongyi Zhao
2022-04-27 1:14 ` Emanuel Berg via Users list for the GNU Emacs text editor
2022-04-27 7:59 ` Thibaut Verron [this message]
2022-04-27 8:33 ` Hongyi Zhao
2022-04-27 9:00 ` thibaut.verron
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=09b8f470-944c-1f96-ae38-5bf55aba4285@gmail.com \
--to=thibaut.verron@gmail.com \
--cc=help-gnu-emacs@gnu.org \
--cc=hongyi.zhao@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).