emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: Org Mode List <emacs-orgmode@gnu.org>
Subject: [RFC] Remove Org Struct mode
Date: Sun, 20 Aug 2017 15:57:21 +0200	[thread overview]
Message-ID: <87mv6ul4u6.fsf@nicolasgoaziou.fr> (raw)

Hello,

I would like to remove Org Struct minor mode from Org code base. Here is
the rationale:

1. It is broken. It might look like using Org in another buffer, but it
   is not. In particular, it just cannot cope with lists, indentation,
   filling in, e.g., Message mode, as soon as we try something
   non-trivial. Really, that's a poor-man's Org mode.

2. Its implementation is very hackish. In particular, it is not modular
   at all. It rewrites some core functions according to the major mode
   in use. For example `org-fill-function' tries to handle specially
   text in a Message mode buffer, basically short-circuiting regular
   behaviour. There no support for other major modes. If we want some,
   we need to hard-code it.

3. Due to previous point, some basic Org functions are sub-optimal
   because they preserve compatibility with Org Struct mode. For example
   `org-forward-heading-same-level' must process every headline past the
   current one and check their level until an appropriate one is found.
   It would be faster to go looking for the next headline according to
   the number of stars we want.

4. It is somewhat outside Org mode's scope to provide such a feature. It
   is tempting to provide everything we can think of, but we should
   focus on the main task: handle Org files, i.e., files written in Org
   compatible syntax.

5. There are alternatives. E.g., outshine.el, outline-minor-mode, ...

I _do_ use `orgstruct++-mode'. But it is broken beyond repair.
Alternatives, which do not need to pay a technical debt, are certainly
better, or, at least, a saner ground for improvement.

I'm not opposed to an Org struct mode living in ELPA. But, as pointed
out, it is difficult to extract from code base without rewriting it
completely. If alternatives are serious enough, that would be
re-inventing the wheel, too.

The only thing that would be missing, AFAIK, is plain list handling.
However, I'm quite certain it is possible to re-use most code from
"org-list.el", using a dumbed down `org-list-struct' function. Indeed,
currently, `org-list-struct' requires to know about inlinetasks,
drawers, blocks... i.e., most of the Org syntax. This is not an option
in foreign buffers. Once `org-list-struct' (and maybe `org-in-item-p')
are simplified, other functions in "org-list.el" can be used as is.

I'm not talking about OrgTbl mode (yet). OrgTbl mode is different: it
doesn't suffer from points 1, 3 end 5. It is easier to extract it as an
external library, which someone should ultimately do.

To sum it up, I offer to remove `orgstruct-mode' (and
`orgstruct++-mode') from the code base. I can also offer my help to
anyone willing to extract some `list-minor-mode' and `table-minor-mode'
from Org.

WDYT?


Regards,

-- 
Nicolas Goaziou                                                0x80A93738

             reply	other threads:[~2017-08-20 13:57 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-08-20 13:57 Nicolas Goaziou [this message]
2017-08-20 14:56 ` [RFC] Remove Org Struct mode Neil Jerram
2017-08-20 17:04 ` Scott Randby
2017-08-20 18:04 ` Eric S Fraga
2017-08-21  5:47   ` Jarmo Hurri
2017-08-22  6:58     ` Marcin Borkowski
2017-08-22  8:32       ` Eric S Fraga
2017-08-21 12:48   ` Eduardo Mercovich
2017-08-20 22:06 ` Tim Cross
2017-08-21  2:48   ` numbchild
2017-08-21 11:59 ` Michael Brand
2017-08-22 12:21   ` Kaushal Modi
2017-08-22 17:48     ` Michael Brand
2017-09-05 18:48       ` Michael Brand
2017-09-09 18:20       ` Thorsten Jolitz
2017-09-09 19:04         ` Michael Brand
2017-08-21 15:15 ` Richard Lawrence
2017-08-22 12:16 ` Kaushal Modi
2017-08-22 13:45 ` Aaron Ecay
2017-08-22 13:50 ` Carsten Dominik
2017-08-27 16:34   ` Nicolas Goaziou
2017-08-27 20:28     ` Samuel Wales
2017-08-22 22:57 ` Eric Abrahamsen
2017-08-23 10:47 ` Rasmus
2017-08-23 11:33   ` Adam Porter
2017-08-23 12:24     ` Michael Brand
2017-08-23 15:14       ` Adam Porter
2017-08-23 21:00         ` Michael Brand
2017-08-27 13:07         ` Michael Brand
2017-09-02  8:03           ` Adam Porter
2017-08-23 19:17       ` Rasmus
2017-08-23 21:02         ` Michael Brand

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.orgmode.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87mv6ul4u6.fsf@nicolasgoaziou.fr \
    --to=mail@nicolasgoaziou.fr \
    --cc=emacs-orgmode@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.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

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