Hmm...
but this point is really interesting at least worse to write down in the
manual.
From my understanding a
#+PROPERTY: var bar=2
sets bar globally to 2
somewhere and many lines and headers later
#+PROPERTY: var bar=5
would change this value to 5 for either the rest of the file or until a
new assignment is given...
in that way a property line would be an tree-independent global variable
in contrast, a property-block is only valid of the given tree (and
subtrees?).
This brings up the question if there is a need for
#+PROPERTY: const bar=2
which would behave exactly the same like var but issue an error message
if someone tries to set it again somewhere in the file.
Torsten
On 01/06/2012 04:28 PM, Eric Schulte wrote:
"Sebastien Vauban"<wxhgmqzgw...@spammotel.com> writes:
Hi Eric and all,
Eric Schulte wrote:
"Sebastien Vauban"<wxhgmqzgw...@spammotel.com> writes:
#+TITLE: Properties
#+AUTHOR: Seb Vauban
#+PROPERTY: var foo=1
#+PROPERTY: var+ bar=2
* Abstract
IIUC, properties are set in this way:
- on a file basis, before any heading, through the =PROPERTY= keyword,
- on a subtree basis, through the =PROPERTIES= block.
My comprehension is that the =PROPERTY= keyword may not be used inside "trees",
and should be ignored if that would happen.
While it is not normal usage, I think that it is legal for #+PROPERTY:
lines (or #+Option: lines etc...) to appear inside of subtrees.
I realize this is not especially a Babel question, but more a Org core
question...
Thanks for your answer -- which generates a new one, though: what is then the
expected *semantics* of such a construct?
There are at least 3 different views on such a construct: putting a PROPERTY
line inside a subtree...
- ... resets some values from that point up to the end of the subtree
- ... resets some values from that point up to the end of the buffer
- ... defines some values which can have already been by the subtree
I agree this is murky and whatever behavior we want should be clearly
thought out and documented in the manual. I would argue that you missed
another possible semantics, the simple semantics which are currently
implemented in which a property line *anywhere* in a buffer sets a
global property.
Cheers,
Best regards,
Seb
The following example shows that either:
- I'm wrong to think so,
- there is a bug.
What is the right assumption here?
* Subtree
Being located in a subtree, the following lines are ill-placed IMHO:
#+PROPERTY: var foo="Hello
#+PROPERTY: var+ world"
Though, they're well taken into account:
#+begin_src emacs-lisp
foo
#+end_src
#+results:
: Hello world
These lines have even wiped the definition of =bar= (because of the use of =var=
without any =+=):
#+begin_src emacs-lisp
(+ foo bar)
#+end_src
returns the error "Symbol's value as variable is void: bar."