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

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

Re: outline-minor-mode and org-mode capabilities for programming languag


From: Jean Louis
Subject: Re: outline-minor-mode and org-mode capabilities for programming languages
Date: Mon, 10 May 2021 10:32:10 +0300
User-agent: Mutt/2.0.6 (2021-03-06)

* 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.

How you want to designate headlines? It has to have some key
string. Maybe with 5 ;;;;; on beginning?

;;;;; Headline

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. 

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.

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 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.


-- 
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/




reply via email to

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