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 09:22:51 +0300 Message-ID: References: <87zgx3zu6e.fsf@zoho.eu> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 7bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17849"; 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 08:28:16 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 1lfzOq-0004VW-33 for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 10 May 2021 08:28:16 +0200 Original-Received: from localhost ([::1]:41274 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1lfzOo-00010y-DJ for geh-help-gnu-emacs@m.gmane-mx.org; Mon, 10 May 2021 02:28:14 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:56500) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lfzNv-00010a-49 for help-gnu-emacs@gnu.org; Mon, 10 May 2021 02:27:19 -0400 Original-Received: from stw1.rcdrun.com ([217.170.207.13]:56471) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1lfzNt-0004IH-1d for help-gnu-emacs@gnu.org; Mon, 10 May 2021 02:27:18 -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 00000000000ABF23.000000006098D222.00001437; Sun, 09 May 2021 23:26:42 -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:129648 Archived-At: * Christopher Dimech [2021-05-10 04:49]: > Whilst I agree that programming language modes do their thing well, and org-mode > does its things well, the idea of headings and folding could be made to work much > better for programming languages. Additionally, there could be org-minor-mode > that is specific for programming languages. The people at org-mode would know > best about the capabilities and functionalities that would entail. We could also > take some information out on their implementation. You said org-minor-mode yet you maybe wish to say what features you think could Org mode provide to Emacs Lisp mode? It is unclear. Like should I mark functions with TODO/DONE? Should I be able to open up agenda to know which function is to be executed at which time? Should there be properties? Should I tag functions? Am I able to hyperlink one function to other? While this may sound apparently funny, I do think that type of editing would be useful. One way to implement it could be to use the database backed chunked editing where every function receives its database node and has its attributes which are quickly cycled with TAB. It could show the same what is shown in outline mode. As I am developing system that augments thought processing I could simply define an Emacs Lisp programming node, and enter in such node any chunks I wish. Then each specific function, thus database node, could be verified on the fly if it is correct. A huge program could be written that way and one could see which function is node is written correctly which one not. It could create a file on the fly for final distribution. One could reach any functions by its semantics, tags, properties, describe them fully and thus augment human perception. All the thousands of Emacs packages could be imported in that way which would allow re-using of the code in a new fantastic manner, searchable by semantics and indexes. No more worries on which function was taken from which package, program could tell how it was modified and would create the Commentar or log, and thus solve licensing issues automatically. Creating new specialized packages would be a breeze, just choose those functions needed by its semantics and new narrowed package could be created with its headers, licensing issues, modifications, as nothing of that human need to think of. User is creating function for what? List related stuff? Just choose the function by its semantic, completion or other menu system, even review it, and it is inserted into buffer to create a new function. When attributes and description of the code is well done, and it can be done fast, programmers would be able to tell in human language what they need to do, and algorithm could tell how to do it, and which available parts already exist. As we do not re-use enough. There are thousands of packages and we don't have quite a good database to find what we need. Example of lack of code re-use are various markup modes that in the essence all do the same, like HTML has , Markdown has its **bold** and Org has *bold*, then there is list of other similar markup that does essentially the same, code is re-written all over again instead of defining the tags or markup as some kind of data, and having it ready for user by some kind of universal mode that would find major mode and type of text and automatically assign the markup. And for each mode I have to use different key bindings, terrible. If I wish to markup something as "strong" or "bold" face, I want to use in every mode same key binding, not different. Importing functions into a database would not impair running program as a file or a distributing it, it could just help its structure better. It would allow the true collaboration: on the multiple functions on the same file several multiple users could work in parallel. On the same function people could work by using crdt.el package, each function and thus the node would have its automatic revision system, not file based revision, rather function or node based revision. It would be the Outline system, but Outline on a meta level. -- 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/