From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Re: outline-minor-mode and org-mode capabilities for programming languages Date: Mon, 10 May 2021 10:32:10 +0300 Message-ID: References: <87zgx3zu6e.fsf@zoho.eu> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13255"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.0.6 (2021-03-06) Cc: help-gnu-emacs@gnu.org To: Christopher Dimech Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Mon May 10 09:42:01 2021 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1lg0YB-0003J3-O5 for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 10 May 2021 09:41:59 +0200 Original-Received: from localhost ([::1]:38516 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lg0YA-0006to-Ht for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 10 May 2021 03:41:58 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:40670) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lg0T8-0004DT-GO for help-gnu-emacs@gnu.org; Mon, 10 May 2021 03:36:46 -0400 Original-Received: from stw1.rcdrun.com ([217.170.207.13]:39957) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lg0T6-0004UY-Dx for help-gnu-emacs@gnu.org; Mon, 10 May 2021 03:36:46 -0400 Original-Received: from localhost ([::ffff:197.239.7.47]) (AUTH: PLAIN securesender, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 00000000000ABF26.000000006098E289.00001ADE; Mon, 10 May 2021 00:36:40 -0700 Mail-Followup-To: Christopher Dimech , help-gnu-emacs@gnu.org Content-Disposition: inline In-Reply-To: Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.23 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: "help-gnu-emacs" Xref: news.gmane.io gmane.emacs.help:129652 Archived-At: * Christopher Dimech [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/