Darlan Cavalcante Moreira <darc...@gmail.com> writes: > I liked this suggestion. In a sense, it is similar to the "inherit" keyword > I had suggested before, but now the "keyword" (the plus sign) is part of > the variable name. >
Oh yes, I didn't realize that when I first posted this suggestion but it is very similar to your suggested "inherit" keyword, > > But the reason I really liked it is because it is clear to > understand. One can compare it to the "+=" operator some languages > have. That is, we can understand `:var: bar=2` as var="bar=2" and > `:var+: bar=2` as var+="bar=2".` > Agreed, it was the limitation of possible values which I didn't like about your "inherit" suggestion, but this approach switches the limitation to the property name rather than the property value which is somehow more appealing. Cheers -- Eric > > -- > Darlan > > At Fri, 4 Nov 2011 09:02:43 +0100, Rainer M Krug <r.m.k...@gmail.com> > wrote: >> >> On Thu, Nov 3, 2011 at 9:23 PM, Eric Schulte <schulte.e...@gmail.com> wrote: >> >> > One more idea that has occurred to me, it should give all of the >> > functionality which we desire (i.e., the ability for a property value to >> > span multiple lines and to be accumulated at the subtree level), and it >> > should require *no* new syntax. The only problem is it puts a >> > limitation on possible property names -- namely that they can not end >> > with the + character. >> > >> > The proposal is, when a property name ends in +, the value is appended >> > to the corresponding property, rather than replacing it, so >> > >> > #+PROPERTY: var foo=1 >> > #+PROPERTY: var bar=2 >> > >> > results in '(("var" . "bar=2")) >> > >> > #+PROPERTY: var foo=1 >> > #+PROPERTY: var+ , bar=2 >> > >> > results in '(("var" . "foo=1, bar=2")) >> > >> > This way subtree properties could be used as well, e.g., >> > >> > #+PROPERTY: var foo=1 >> > >> > * subtree >> > :PROPERTIES: >> > :var+: bar=2 >> > :CUSTOM_ID: something >> > :END: >> > >> > Just another thought. >> > >> >> I like that suggestion - it is clear, easy to understand, gives other >> advantages (you can "unset" variables in a subtree - which would be an >> added bonus) and does not require any large changes in org files. >> >> This suggestion would get my vote. >> >> Cheers, >> >> Rainer >> >> >> >> >> > Best -- Eric >> > >> > Eric Schulte <schulte.e...@gmail.com> writes: >> > >> > > I don't understand why the `org-accumulated-properties-alist' solution >> > > seems like a hack, could someone elaborate. To me that still feels like >> > > the most natural solution. >> > > >> > > more below... >> > > >> > >>>> 2) "Cumulative properties"? >> > >>>> >> > >>>> Here is a suggestion: use a syntaxe like >> > >>>> >> > >>>> #+var: foo 1 >> > >>> >> > >>> There is also "#+bind:", whose purpose is close enough. >> > >> >> > >> Indeed. Eric, would it be possible to use >> > >> >> > >> #+bind foo 1 >> > >> >> > >> instead of >> > >> >> > >> #+property var foo=1 >> > >> >> > > >> > > No, this would not for subtree-level properties, i.e., in a property >> > > block under a subtree there would be no way to tell if a property is a >> > > #+var:. I think if this were an approach, a more elegant solution would >> > > be for users to customize the `org-babel-default-header-args' variable >> > > using Emacs' file-local-variable feature -- which is possible now and >> > > may end up being the best solution. >> > > >> > >> >> > >>>> 3) Wrapping/folding long #+xxx lines? >> > >>>> >> > >>>> This is an independant request -- see Robert McIntyre's recent >> > >>>> question on the list. The problem is that fill-paragraph on >> > >>>> long #+xxx lines breaks the line into comment lines, which is >> > >>>> wrong. Filling like this: >> > >>>> >> > >>>> #+TBLFM: @3$1=@1$1+@2$1::@3$2=@1$2+@2$2::...::... >> > >>>> : @3$2=@1$2+@2$2::... >> > >>>> : @3$2=@1$2+@2$2::... >> > >>> >> > >>> #+tblfm: ... >> > >>> #+tblfm: ... >> > >>> #+tblfm: ... >> > >> >> > >> Not very elegant, but perhaps more efficient/consistent. >> > >> >> > > >> > > I like this solution, especially as I have often struggled with long and >> > > unreadable tblfm lines. The problem with using this for property lines >> > > would be in the case of >> > > >> > > #+property: foo bar >> > > #+property: baz qux >> > > >> > > whether the above should be parsed as >> > > >> > > '(("foo" . "bar") ("baz" . "qux")) >> > > >> > > or >> > > >> > > '(("foo" . "bar baz qux")) >> > > >> > >>>> But maybe generalizing the #+begin_xxx syntax for *all* #+xxx >> > >>>> keywords. This would make the current >> > >>>> org-internals-oriented/content-oriented difference between #+xxx >> > >>>> and #+begin_xxx obsolete >> > >>> >> > >>> I suggest to avoid such a thing. Here are a few, more or less valid, >> > >>> reasons: >> > >>> >> > >>> - That distinction is useful for the user (clear separation between >> > >>> contents and Org control). >> > >>> - It would penalize usage of special blocks. >> > >>> - The need is localized to very few keywords: it isn't worth the >> > added >> > >>> complexity. >> > >>> - It would be ugly: no more nice stacking of keywords, but a mix of >> > >>> blocks and keywords, and blocks on top of blocks... Org syntax may >> > >>> not be the prettiest ever, it doesn't deserve that. >> > >>> - It would be a real pain to parse. >> > >> >> > >> Well, I agree with most of the reasons. Glad you stated them clearly. >> > >> >> > > >> > > Yes, I agree some of the above are very motivating. >> > > >> > >> >> > >>>> but this would spare us the cost of new syntax. >> > >>> >> > >>> On the contrary, creating a block for each keyword would mean a lot of >> > >>> new syntax. >> > >>> >> > >>> We currently have 8 types of blocks (not counting dynamic blocks, whose >> > >>> syntax is a bit different), all requiring to be parsed differently: >> > >>> >> > >>> 1. Center blocks, >> > >>> 2. Comment blocks, >> > >>> 3. Example blocks, >> > >>> 4. Export blocks, >> > >>> 5. Quote blocks, >> > >>> 6. Special blocks, >> > >>> 7. Src blocks, >> > >>> 8. Verse blocks. >> > >> >> > >> I'm not sure what do you mean by "requiring to be parsed differently". >> > >> Can you explain it? I understand they should be treated differently by >> > >> the exporters, but I don't understand why they would need to be parsed >> > >> differently. >> > >> >> > > >> > > I also wouldn't think of this as new syntax, I don't see 8 rules for the >> > > 8 types above but rather one rule along the lines of #+begin_SOMETHING >> > > where the SOMETHING can be anything. >> > > >> > > Best -- Eric >> > > >> > >> >> > >> My idea was to avoid parsing both #+html and #+begin_html. And that >> > >> #+begin_xxx syntax is already available for folding, which is a feature >> > >> we might want for #+text and keywords like that. >> > >> >> > >> I would suggest this rule: #+begin_ is always for _content_ >> > >> while #+keyword is always for internals that are removed when >> > >> exporting. #+text, #+html, #+LaTeX are a few exception I can >> > >> think of. >> > >> >> > >> Best, >> > >> > -- >> > Eric Schulte >> > http://cs.unm.edu/~eschulte/ >> > >> > >> >> >> -- >> Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, >> UCT), Dipl. Phys. (Germany) >> >> Centre of Excellence for Invasion Biology >> Stellenbosch University >> South Africa >> >> Tel : +33 - (0)9 53 10 27 44 >> Cell: +33 - (0)6 85 62 59 98 >> Fax (F): +33 - (0)9 58 10 27 44 >> >> Fax (D): +49 - (0)3 21 21 25 22 44 >> >> email: rai...@krugs.de >> >> Skype: RMkrug -- Eric Schulte http://cs.unm.edu/~eschulte/