emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
From: Nicolas Goaziou <mail@nicolasgoaziou.fr>
To: Oleh Krehel <ohwoeowho@gmail.com>
Cc: emacs-orgmode@gnu.org
Subject: Re: Is it possible to keep /all/ the heading properties in one place?
Date: Thu, 25 Feb 2016 21:16:46 +0100	[thread overview]
Message-ID: <87a8mo1r69.fsf@nicolasgoaziou.fr> (raw)
In-Reply-To: <87a8mooazg.fsf@gmail.com> (Oleh Krehel's message of "Thu, 25 Feb 2016 20:17:55 +0100")

Oleh Krehel <ohwoeowho@gmail.com> writes:

> Nicolas Goaziou <mail@nicolasgoaziou.fr> 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	other threads:[~2016-02-25 20:14 UTC|newest]

Thread overview: 29+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-02-25 10:59 Is it possible to keep /all/ the heading properties in one place? Oleh Krehel
2016-02-25 13:37 ` Nicolas Goaziou
2016-02-25 13:46   ` Oleh Krehel
2016-02-25 14:03     ` Nicolas Goaziou
2016-02-25 14:26       ` Oleh Krehel
2016-02-25 16:52         ` Nicolas Goaziou
2016-02-25 18:21           ` Eric S Fraga
2016-02-26 16:35             ` Rasmus
2016-02-28  9:35               ` Eric S Fraga
2016-02-28 11:32                 ` Rasmus
2016-02-28 12:44                   ` Eric S Fraga
2016-02-28 16:46                     ` Rasmus
2016-02-28 17:05                       ` Eric S Fraga
2016-02-25 19:17           ` Oleh Krehel
2016-02-25 20:16             ` Nicolas Goaziou [this message]
2016-02-26  8:18               ` Oleh Krehel
2016-02-28  8:59                 ` Nicolas Goaziou
2016-02-28 12:17                   ` Oleh Krehel
2016-02-28 16:34                     ` Thomas S. Dye
2016-02-29 10:05                       ` Nicolas Goaziou
2016-02-29 13:42                         ` Thomas S. Dye
2016-02-29 15:00                           ` Nicolas Goaziou
2016-02-29 13:53                         ` Marcin Borkowski
2016-02-29 15:05                           ` Nicolas Goaziou
2016-02-29 17:57                         ` Revisiting moving manual to Org (was: Is it possible to keep /all/ the heading properties in one place?) Kyle Meyer
2016-02-29 17:17                       ` Is it possible to keep /all/ the heading properties in one place? Achim Gratz
2016-02-29 18:01                         ` Thomas S. Dye
2016-02-29 18:47                           ` Nicolas Goaziou
2016-02-25 17:47 ` 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=87a8mo1r69.fsf@nicolasgoaziou.fr \
    --to=mail@nicolasgoaziou.fr \
    --cc=emacs-orgmode@gnu.org \
    --cc=ohwoeowho@gmail.com \
    /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).