On Thu, Mar 31, 2011 at 3:39 PM, Carsten Dominik <carsten.dominik@gmail.com> wrote:

On Mar 31, 2011, at 7:05 AM, Steven Haryanto wrote:

> Hi all,
>
> I'm writing an Org parser for Perl[1]. There are a few things about the syntax which are still unclear to me.
>
> 1. The manual says that multiple (different) in-buffer settings can be specified on the same line, but so far I haven't found such example anywhere. What is the syntax for this?

This only applied to the #+STARTUP settings which can have a number
of keywords on a single line, like

#+STARTUP: align hidestars odd

>
> 2. For settings that can be applied near a block or table, like:
>
>  |1|2
>  |2|6
>  #+TBLFM: @2$1=@1$1*2::@2$2=@1$2*3
>
> does it matter if it is specified before/after? Can there be separating lines between them? E.g.

Yes, there can be other lines in between, even though
this is probably not a good idea.  The way the parser works
is that it runs through the buffer, finds CAPTURE etc and
applies it the next thing (table, link,...) that wants it.

>
>  #+CAPTION: Some caption
>  some text <-- allowed?
>  #+LABEL: ...
>  some more text <-- allowed?
>  |...|...|
>  |...|...|
>
> (And btw, multiple #+TBLFM below a table doesn't seem to work on my Emacs, all formulas need to be specified on a single (long) TBLFM setting.)

Yes, only one TBLFM line per table.

>
> 3. What constitutes a valid tag? Emacs doesn't seem to recognize tags (e.g. align them) if they contain a dash.

Tags are matched by [[:alnum:]_@#%:]+

Dashes are not allowed because this would be cumbersome for the
agenda tags matcher which uses "-" as NOT.

>
> 4. What is the difference between TYP_TODO/TODO/SEQ_TODO?

TODO and SEQ_TODO are the same.  TYP_TODO is slightly different
in operation.  When you press C-c C-t in a line with the keyword
defined by TYP_TODO, the task will immediately switch to DONE,
instead of to the next state in the sequence.  I do believe the
manual explains this quite well, but I don't believe many people use this.


> (IIRC, the manual is not clear on this). Or between TAGS/FILETAGS.

TAGS defines tags that will be used in the buffer
and defines fast keyboard shortcuts for them.  Though
you are allowed to also use tags that are not in tis list.

FILETAGS defines tags that are *inherited* by all trees in the buffer,
You can imagine FILETAGS as the tags specified on a level zero headline
of which all level one headlines in the buffer are children.

HTH.


 Thanks for the clear up, Carsten! I've implemented some of the points (like regex for tags) into the parser, and the rest into the project's todo list. Btw, you probably meant [[:alnum:]_@#%]+ (without the colon)? Since the colon is used to separate between tags?

Regards,
Steven