emacs-orgmode
[Top][All Lists]
Advanced

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

Re: [O] Is it possible to keep /all/ the heading properties in one place


From: Nicolas Goaziou
Subject: Re: [O] Is it possible to keep /all/ the heading properties in one place?
Date: Thu, 25 Feb 2016 21:16:46 +0100

Oleh Krehel <address@hidden> writes:

> Nicolas Goaziou <address@hidden> writes:

>> I do not feel like asking users to write directly the AST for their
>> plain text documents, really.
>
> It's not an AST though. It's simply nested lists.

So is Lisp.

> Like JSON or XML but better. And the idea is to both have it automatic
> and manual. For example, `org-set-property' would work exactly as it
> does right now - interactively. But on the programming level it would
> use `read', `delete-sexp', `plist-put' and `prin1'. Isn't it much
> better to defer all the heavy lifting to the Elisp reader?

No it isn't, IMO.

It boils down to ask users to write Lisp by hand at some point. Not
everyone wants to use interactive tools. Unfortunately, writing Lisp is
not fun in a basic text editing environment.

> Additionally, LISP readers are readily available outside of Emacs.  It
> would ease other projects' Org-mode integration. Like mobile apps,
> taskwarrior, github, whatever - the people would be able to parse and
> modify Org with simply:
>
>     import lisp_reader
>
> instead of grokking the full Org property syntax

Here is the full Org property syntax:

--8<---------------cut here---------------start------------->8---
3.7 Property Drawers
────────────────────

  Property drawers are a special type of drawer containing properties
  attached to a headline.  They are located right after a [headline] and
  its [planning] information.

  ┌────
  │ HEADLINE
  │ PROPERTYDRAWER
  │ 
  │ HEADLINE
  │ PLANNING
  │ PROPERTYDRAWER
  └────

  PROPERTYDRAWER follows the pattern

  ┌────
  │ :PROPERTIES:
  │ CONTENTS
  │ :END:
  └────

  where CONTENTS consists of zero or more [node properties].


4.9 Node Properties
───────────────────

  Node properties can only exist in [property drawers].  Their pattern
  is any of the following

  ┌────
  │ :NAME: VALUE
  │ 
  │ :NAME+: VALUE
  │ 
  │ :NAME:
  │ 
  │ :NAME+:
  └────

  NAME can contain any non-whitespace character but cannot end with
  a plus sign.  It cannot be the empty string.

  VALUE can contain anything but a newline character.

--8<---------------cut here---------------end--------------->8---

I don't think this is very impressive nor particularly difficult to
implement.

> and all if its oddities and idiosyncrasies. Because the basic Org
> heading structure is genius simple. It's all the extra "stuff" than
> drags it down in terms of simplicity.

You may want to have a look at "outline.el", which is Org without all
the extra "stuff".

> The motivation is to have Org look simpler by virtue of /being/ simpler.
> Compare (require 'org-element) and hours of grokking it and looking up
> docs to simply:

You don't have to grok "org-element.el" which is but an implementation
of Org syntax. See <http://orgmode.org/worg/dev/org-syntax.html>
instead.

>     (defun all-props ()
>       (save-excursion
>         (goto-char (point-min))
>         (let (props)
>           (while (re-search-forward "^(properties" nil t)
>             (goto-char (match-beginning 0))
>             (push (read (current-buffer)) props))
>           (nreverse props))))
>     (mapcar (lambda (p)
>               (assoc 'deadline (cdr p)))
>             (all-props))
>     ;; =>
>     ;; ((deadline "<2016-02-26 Fri 17:00 +1w>") nil)

Alas, the Devil is in the detail:

  (example
   ...
   (properties ...))

Anyway, at this point I don't know what to add. You want to improve Org
and this is fine. However simplistic examples do not help understanding
the full picture, at least for me. So, implement your idea, test the
syntax, ask for feedback here. In the end, if it happens to be superior,
users will naturally switch to it, for the benefit of everyone.

You may also want to have a look at Skribilo
(http://www.nongnu.org/skribilo/), if you don't know it already.


Regards,

-- 
Nicolas



reply via email to

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