emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] [RFC] Remove Org Struct mode


From: Neil Jerram
Subject: Re: [O] [RFC] Remove Org Struct mode
Date: Sun, 20 Aug 2017 15:56:30 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.2.1

I have been using org-mode for a few years now, but have never yet noticed org-struct mode. So removing org-struct would be no loss for me (and possibly a gain, if it eased ongoing org-mode maintenance and development).

OTOH I certainly do use and appreciate orgtbl minor mode, and it would be a big disadvantage for me if that function disappeared. I've no objection in principle, though, to reorganizing _how_ that function is provided.

Regards - Neil


On 20/08/17 14:57, Nicolas Goaziou wrote:
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,





reply via email to

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