unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Thibaut Verron <thibaut.verron@gmail.com>
To: David Masterson <dsmasterson92630@outlook.com>,
	Hongyi Zhao <hongyi.zhao@gmail.com>
Cc: help-gnu-emacs <help-gnu-emacs@gnu.org>
Subject: Re: Code folding in Emacs.
Date: Thu, 14 Oct 2021 10:21:59 +0200	[thread overview]
Message-ID: <0323cdae-b22c-c9e2-7ff6-77568b1a5e57@gmail.com> (raw)
In-Reply-To: <SJ0PR03MB54554A24C7B486C4EE10B5789BB89@SJ0PR03MB5455.namprd03.prod.outlook.com>

On 14/10/2021 07:47, David Masterson wrote:
> Hongyi Zhao <hongyi.zhao@gmail.com> writes:
>
>> I just found the following code snippet from here [1] for code folding in Emacs:
>>
>>
>> (global-set-key (kbd "<C-f5>") 'set-selective-display-dlw)
>>
>> (defun set-selective-display-dlw (&optional level)
>>    "Fold text indented same of more than the cursor.
>> If level is set, set the indent level to LEVEL.
>> If 'selective-display' is already set to LEVEL, clicking
>> F5 again will unset 'selective-display' by setting it to 0."
>>    (interactive "P")
>>    (if (eq selective-display (1+ (current-column)))
>>        (set-selective-display 0)
>>      (set-selective-display (or level (1+ (current-column))))))
>>
>> The above code trick seems very simple, but it works for many
>> languages. So I recommend it here.
>>
>> [1] https://discourse.julialang.org/t/code-folding-for-emacs/41421/3
> See Origami.

Which is, sadly, now unmaintained. Most notably, it lacks documentation 
on how to specify a parser, all one can do is guess based on the 
existing ones. There are forks attempting to clear those gaps, but afaik 
it's not there yet -- and they face distribution issues, with package 
repositories refusing to keep several packages with the same name.

It would be great if Emacs had something like origami built-in, aka a 
folding framework with a more flexible way to specify folding points 
than regexps (hideshow) or headers (outline). Essentially something like 
smie, but for folding: define functions to test if we are at an opener, 
at a closer, to find the closer for an opener, to find the subnodes if 
applicable, and let the package merge it all, construct the folding tree 
and take care of the folding.





      reply	other threads:[~2021-10-14  8:21 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-10  8:16 Code folding in Emacs Hongyi Zhao
2021-10-10 11:37 ` tolugboji
2021-10-10 11:54   ` Hongyi Zhao
2021-10-10 12:42     ` tolugboji
2021-10-10 13:16       ` Hongyi Zhao
2021-10-10 13:49         ` tolugboji
2021-10-10 16:35     ` Daniel Fleischer
2021-10-11  0:39       ` Hongyi Zhao
2021-10-11 12:09       ` Hongyi Zhao
2021-10-11 12:56         ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-10 14:29 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-10-10 20:11 ` Eric S Fraga
2021-10-14  5:47 ` David Masterson
2021-10-14  8:21   ` Thibaut Verron [this message]

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=0323cdae-b22c-c9e2-7ff6-77568b1a5e57@gmail.com \
    --to=thibaut.verron@gmail.com \
    --cc=dsmasterson92630@outlook.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).