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: Christopher Dimech
Subject: Re: outline-minor-mode and org-mode capabilities for programming languages
Date: Mon, 10 May 2021 10:32:16 +0200

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



reply via email to

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