From: Christopher Dimech <dimech@gmx.com>
To: Jean Louis <bugs@gnu.support>
Cc: help-gnu-emacs@gnu.org
Subject: Re: outline-minor-mode and org-mode capabilities for programming languages
Date: Mon, 10 May 2021 10:32:16 +0200 [thread overview]
Message-ID: <trinity-8bcc693d-6e96-47b1-8508-dabf47a2320e-1620635536309@3c-app-mailcom-bs04> (raw)
In-Reply-To: <YJjheh+FKdEeZZkx@protected.localdomain>
> Sent: Monday, May 10, 2021 at 7:32 PM
> From: "Jean Louis" <bugs@gnu.support>
> To: "Christopher Dimech" <dimech@gmx.com>
> Cc: help-gnu-emacs@gnu.org
> Subject: Re: outline-minor-mode and org-mode capabilities for programming languages
>
> * Christopher Dimech <dimech@gmx.com> [2021-05-10 09:53]:
> > Mainly catering for highligting, headlines and folding to start
> > with.
>
> Isn't that what outline-minor-mode is for?
>
> There are already other packages, I have been testing it, and they
> worked similar to outline-minor-mode and could fold things.
Folding of functions is good, folding by headings not so good.
> How you want to designate headlines? It has to have some key
> string. Maybe with 5 ;;;;; on beginning?
>
> ;;;;; Headline
How about extending it to subheadings like org-mode. It is a good idea
to use the comment declaration for defining headings, and also use * for
heading levels as in org-mode. For languages with multiline comments
I simply used *, then changed to org-mode. In elisp I made a multiline
comment function.
For texinfo, which has multi-line comment capability I have been doing
@ignore
* Heading
@end ignore
@ignore
** Subheading
@end ignore
> Evaluate this, and you get highlighting of headlines:
> (highlight-regexp "^;;;;;.*$" 'hi-yellow)
>
> But I think you have to first play with:
> {M-x customize-group RET outline RET}
>
> as there is highlighting already included.
>
> For headings, I think each mode need different definition on what is
> heading.
They should always go with the comment declaration for the language. Most likely
good, but then one cannot easily switch to org-mode. Then again, if the topics
of discussion are resolved, there wauld not me much need to change to org-mode for
certain org-mode operations.
> So you can define heading with `outline-heading-alist'
>
> outline-heading-alist is a variable defined in ‘outline.el’.
>
> Its value is nil
>
> Automatically becomes buffer-local when set.
>
> Alist associating a heading for every possible level.
> Each entry is of the form (HEADING . LEVEL).
> This alist is used two ways: to find the heading corresponding to
> a given level and to find the level of a given heading.
> If a mode or document needs several sets of outline headings (for example
> numbered and unnumbered sections), list them set by set and sorted by level
> within each set. For example in texinfo mode:
>
> (setq outline-heading-alist
> '(("@chapter" . 2) ("@section" . 3) ("@subsection" . 4)
> ("@subsubsection" . 5)
> ("@unnumbered" . 2) ("@unnumberedsec" . 3)
> ("@unnumberedsubsec" . 4) ("@unnumberedsubsubsec" . 5)
> ("@appendix" . 2) ("@appendixsec" . 3)...
> ("@appendixsubsec" . 4) ("@appendixsubsubsec" . 5) ..))
>
> Instead of sorting the entries in each set, you can also separate the
> sets with nil.
>
> You asked for:
>
> - highligting,
> - headlines; and
> - folding
>
> And I have demonstrated that more or less, that already exists in
> outline-minor-mode, play with highlighting options, folding already
> exists, and headings you may define yourself.
I am suggesting to clean things up and put all the capabilities into a single
minor mode. We can keep it to outline-minor-mode.
> Let us say I have this comment and I keep just one space after ;;;;
>
> ;;;; ⟦⟦ LIST FUNCTIONS ⟧⟧
>
> Folded text
>
> ;;;; ⟦⟦⟦ MORE LIST FUNCTIONS ⟧⟧⟧
>
> (setq outline-heading-alist
> '((";;;; ⟦" . 1) (";;;; ⟦⟦" . 2) (";;;; ⟦⟦⟦" . 3)))
>
> this appears to work on my side in Emacs Lisp mode, but not in
> fundamental. I can fold those headings and they remain visible.
>
> > > Like should I mark functions with TODO/DONE?
> >
> > No
>
> Those mentioned meta level features can look abstract to you, but they
> are very real to me so far. It leans to subject of literate
> programming, similar to programming by using Org Babel and embedded
> functions that are described and later interpolated into the
> script. Just that I can do that on the higher level rich attributes
> and references and relations to other functions. As humans we are so
> late with literate programming. That would help so many other people.
I agree with you up to a point. For starters let's just clean things up
with the capabilities that are already implemented. Literate schemes are
good for organisational purposes, but for programming, literate schemes
make everything much more cumbersome, and ultimately yield to total disaster
in terms of efficiency in going through the code base. One thing that does help
is self documuntation if kept brief within the code file.
> > I suggest that outline-minor-mode be also refactored and revamped, as I have
> > seen much additional code on top of it (outline-magic, orgstruct,
> > outshine).
>
> For now, those features which you asked for, already exist, you may
> try customizations, you are just few minutes away from having
> highlighting, folding is already there, and defining headlines.
Opening-closing headings with the mouse would be good. Will spend the few minutes
and get back to you, as per your advice. Then see what capabilities from the other
add-ons are redundant.
> --
> Jean
>
> Take action in Free Software Foundation campaigns:
> https://www.fsf.org/campaigns
>
> Sign an open letter in support of Richard M. Stallman
> https://stallmansupport.org/
> https://rms-support-letter.github.io/
>
>
>
next prev parent reply other threads:[~2021-05-10 8:32 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-05-09 8:53 outline-minor-mode and org-mode capabilities for programming languages Christopher Dimech
2021-05-09 9:11 ` Jean Louis
2021-05-09 12:35 ` Christopher Dimech
2021-05-09 12:45 ` Jean Louis
2021-05-09 13:00 ` Christopher Dimech
2021-05-09 16:27 ` Jean Louis
2021-05-09 17:35 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-09 17:50 ` Jean Louis
2021-05-09 18:02 ` Emanuel Berg via Users list for the GNU Emacs text editor
2021-05-09 19:09 ` Jean Louis
2021-05-10 1:49 ` Christopher Dimech
2021-05-10 6:22 ` Jean Louis
2021-05-10 6:53 ` Christopher Dimech
2021-05-10 7:32 ` Jean Louis
2021-05-10 8:32 ` Christopher Dimech [this message]
2021-05-10 9:29 ` Christopher Dimech
2021-05-10 9:31 ` Jean Louis
2021-05-10 10:01 ` Christopher Dimech
2021-05-10 11:43 ` Jean Louis
2021-05-10 12:52 ` Christopher Dimech
2021-05-10 17:05 ` Jean Louis
2021-05-11 2:00 ` Christopher Dimech
2021-05-10 10:27 ` Christopher Dimech
2021-05-10 11:53 ` Jean Louis
2021-05-10 12:32 ` Christopher Dimech
2021-05-10 16:07 ` Jean Louis
2021-05-11 2:26 ` Christopher Dimech
2021-05-10 8:46 ` Christopher Dimech
2021-05-10 9:15 ` Christopher Dimech
2021-05-10 9:33 ` Jean Louis
2021-05-10 6:08 ` Christopher Dimech
2021-05-10 1:25 ` Christopher Dimech
2021-05-09 13:02 ` Christopher Dimech
2021-05-09 16:34 ` Jean Louis
2021-05-09 14:02 ` Stefan Monnier via Users list for the GNU Emacs text editor
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=trinity-8bcc693d-6e96-47b1-8508-dabf47a2320e-1620635536309@3c-app-mailcom-bs04 \
--to=dimech@gmx.com \
--cc=bugs@gnu.support \
--cc=help-gnu-emacs@gnu.org \
/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).