* programming for org-mode
@ 2010-07-15 4:52 Ivanov Dmitry
2010-07-15 17:26 ` Eric Schulte
0 siblings, 1 reply; 14+ messages in thread
From: Ivanov Dmitry @ 2010-07-15 4:52 UTC (permalink / raw)
To: emacs-orgmode
Hi, can anyone give me a tutorial for org-mode programming and it's API.
I just read Eric Schultes module org-collector.el, but I can't understand the code: how it is organized and how to write the elisp for org-mode.
Can anyone help?
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: programming for org-mode
2010-07-15 4:52 programming for org-mode Ivanov Dmitry
@ 2010-07-15 17:26 ` Eric Schulte
2010-07-15 20:15 ` David Maus
` (2 more replies)
0 siblings, 3 replies; 14+ messages in thread
From: Eric Schulte @ 2010-07-15 17:26 UTC (permalink / raw)
To: Ivanov Dmitry; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 856 bytes --]
So,
The way that I learned how to program in emacs lisp was mainly using two
commands `elisp-index-search' bound to `C-h e' on my system, and most
importantly `describe-function' bound to `C-h f'. With
`describe-function' you can look at the source code of functions whose
behavior you are familiar with, you can then copy portions of the code
to your *scratch* buffer where they can be edited and evaluated with
`eval-defun' bound to `C-M-x'. Now with Babel, instead of doing this in
the scratch buffer you could do this in emacs-lisp code blocks in an org
file, enabling notes and hierarchical organization -- it can be nice to
have your noodling all collected in one file for later reference.
If you are going to do any serious work with lisp, I would emphatically
recommend using paredit-mode, and becoming friends with the Sexp
movement functions
[-- Attachment #2.1: Type: text/plain, Size: 230 bytes --]
| C-M-f | runs the command paredit-forward |
| C-M-b | runs the command paredit-backward |
| C-M-u | runs the command backward-up-list |
| C-M-k | runs the command kill-sexp |
| C-y | runs the command yank |
[-- Attachment #2.2: Type: text/html, Size: 498 bytes --]
[-- Attachment #3: Type: text/plain, Size: 1471 bytes --]
They allow you to manipulate lisp code on the level of logical
expressions, the utility of which can not be over stated.
As for working with Org-mode in particular, I'd recommend looking at the
documentation and source-code of Org-mode functions with
`describe-function', and then looking for how these functions are
actually used in the Org-mode code base with `rgrep'.
For a more structured learning experience, I've heard very good things
about http://www.gnu.org/software/emacs/emacs-lisp-intro/, although I
haven't used it myself.
Hope this helps. Happy Hacking -- Eric
Ivanov Dmitry <usr345@gmail.com> writes:
> Hi, can anyone give me a tutorial for org-mode programming and it's API.
>
I'm afraid there is no such thing as an org-mode api, the closest you
could come would be
grep -i defun org/lisp/org.el
for a list of function names and their arguments, or run
`describe-function' then type "org-" into the minibuffer, tab complete,
and then search through the resulting function-names.
>
> I just read Eric Schultes module org-collector.el, but I can't
> understand the code: how it is organized and how to write the elisp
> for org-mode.
>
If you have any org-collector.el specific questions please let me know.
>
> Can anyone help?
>
>
> _______________________________________________
> Emacs-orgmode mailing list
> Please use `Reply All' to send replies to the list.
> Emacs-orgmode@gnu.org
> http://lists.gnu.org/mailman/listinfo/emacs-orgmode
[-- Attachment #4: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: programming for org-mode
2010-07-15 17:26 ` Eric Schulte
@ 2010-07-15 20:15 ` David Maus
2010-07-15 20:21 ` David Maus
2010-07-15 21:40 ` Nick Dokos
2010-08-05 12:33 ` Re[2]: " Ivanov Dmitry
2 siblings, 1 reply; 14+ messages in thread
From: David Maus @ 2010-07-15 20:15 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode, Ivanov Dmitry
[-- Attachment #1.1: Type: text/plain, Size: 1516 bytes --]
Eric Schulte wrote:
>[1 <text/plain (7bit)>]
>So,
>The way that I learned how to program in emacs lisp was mainly using two
>commands `elisp-index-search' bound to `C-h e' on my system, and most
>importantly `describe-function' bound to `C-h f'. With
>`describe-function' you can look at the source code of functions whose
>behavior you are familiar with, you can then copy portions of the code
>to your *scratch* buffer where they can be edited and evaluated with
>`eval-defun' bound to `C-M-x'. Now with Babel, instead of doing this in
>the scratch buffer you could do this in emacs-lisp code blocks in an org
>file, enabling notes and hierarchical organization -- it can be nice to
>have your noodling all collected in one file for later reference.
>If you are going to do any serious work with lisp, I would emphatically
>recommend using paredit-mode, and becoming friends with the Sexp
>movement functions
+1 and not to forget eldoc (M-x eldoc-mode)[1] that displays the
description of a variable or the arguments of a function in
minibuffer.
For hacking Org mode in particular there is a "Hacking" section in the
manual that explains the mapping and the property API.
For getting in touch with Emacs Lisp there's Xah Lee's Emacs Lisp
Tutorial, too[3].
HTH & happy hacking,
-- David
[1] http://www.emacswiki.org/emacs/?ElDoc
[2] http://orgmode.org/manual/Hacking.html
[3] http://xahlee.org/emacs/elisp.html
--
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de
[-- Attachment #1.2: Type: application/pgp-signature, Size: 230 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: programming for org-mode
2010-07-15 20:15 ` David Maus
@ 2010-07-15 20:21 ` David Maus
0 siblings, 0 replies; 14+ messages in thread
From: David Maus @ 2010-07-15 20:21 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode, Ivanov Dmitry
[-- Attachment #1.1: Type: text/plain, Size: 254 bytes --]
Ah, heck, just forgot:
Casting Spells in Lisp
http://www.lisperati.com/casting.html
Comic book about programming in Lisp, Emacs Lisp Version available.
-- David
--
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de
[-- Attachment #1.2: Type: application/pgp-signature, Size: 230 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: programming for org-mode
2010-07-15 17:26 ` Eric Schulte
2010-07-15 20:15 ` David Maus
@ 2010-07-15 21:40 ` Nick Dokos
2010-07-15 21:53 ` Eric Schulte
2010-08-05 12:33 ` Re[2]: " Ivanov Dmitry
2 siblings, 1 reply; 14+ messages in thread
From: Nick Dokos @ 2010-07-15 21:40 UTC (permalink / raw)
To: Eric Schulte; +Cc: nicholas.dokos, emacs-orgmode, Ivanov Dmitry
Eric Schulte <schulte.eric@gmail.com> wrote:
> ...
> If you are going to do any serious work with lisp, I would emphatically
> recommend using paredit-mode, and becoming friends with the Sexp
> movement functions
> +--------------------------------------------+
> | C-M-f | runs the command paredit-forward |
> |-------+------------------------------------|
> | C-M-b | runs the command paredit-backward |
> |-------+------------------------------------|
> | C-M-u | runs the command backward-up-list |
> |-------+------------------------------------|
> | C-M-k | runs the command kill-sexp |
> |-------+------------------------------------|
> | C-y | runs the command yank |
> +--------------------------------------------+
>
> They allow you to manipulate lisp code on the level of logical
> expressions, the utility of which can not be over stated.
>
I presume that paredit is useful because it's a minor mode, so you can
enable it on an org-mode buffer (e.g. using babel). But if you are
editing a .el file, then emacs-lisp mode provides all these facilities
(C-M-f -> forward-sexp, etc.) and you don't need paredit. Do I have
that right?
Thanks,
Nick
PS. The ultimate *reference* for emacs lisp is the Emacs Lisp Reference
manual
http://www.gnu.org/software/emacs/manual/html_node/elisp/index.html
At some point in one's emacs-lisp programming life, it will be necessary
to refer to it - but it is very much a reference manual, not a tutorial.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: programming for org-mode
2010-07-15 21:40 ` Nick Dokos
@ 2010-07-15 21:53 ` Eric Schulte
2010-07-15 22:17 ` Nick Dokos
0 siblings, 1 reply; 14+ messages in thread
From: Eric Schulte @ 2010-07-15 21:53 UTC (permalink / raw)
To: nicholas.dokos; +Cc: emacs-orgmode, Ivanov Dmitry
Hi Nick,
Nick Dokos <nicholas.dokos@hp.com> writes:
> Eric Schulte <schulte.eric@gmail.com> wrote:
>
>> ...
>> If you are going to do any serious work with lisp, I would emphatically
>> recommend using paredit-mode, and becoming friends with the Sexp
>> movement functions
>> +--------------------------------------------+
>> | C-M-f | runs the command paredit-forward |
>> |-------+------------------------------------|
>> | C-M-b | runs the command paredit-backward |
>> |-------+------------------------------------|
>> | C-M-u | runs the command backward-up-list |
>> |-------+------------------------------------|
>> | C-M-k | runs the command kill-sexp |
>> |-------+------------------------------------|
>> | C-y | runs the command yank |
>> +--------------------------------------------+
>>
>> They allow you to manipulate lisp code on the level of logical
>> expressions, the utility of which can not be over stated.
>>
>
> I presume that paredit is useful because it's a minor mode, so you can
> enable it on an org-mode buffer (e.g. using babel).
No, even for emacs-lisp code blocks I use C-c ' to edit the code in
emacs-lisp mode. I do have "[" and "]" globally bound to
`insert-parenthesis' and `move-past-close-and-reindent' respectively,
but that's probably a little too radical for most users.
I only enable paredit minor-mode in lispy modes.
> But if you are editing a .el file, then emacs-lisp mode provides all
> these facilities (C-M-f -> forward-sexp, etc.) and you don't need
> paredit. Do I have that right?
>
Not quite,
Paredit has a number of nice features aside from sexp movement,
including /electric/ insertion of both open and close parenthesis,
brackets and quotation's which greatly increase the speed with which one
can write lisp code -- all the while ensuring that the code in the
buffer is /valid/ in terms of balanced parenthesis.
Cheers -- Eric
>
> Thanks,
> Nick
>
> PS. The ultimate *reference* for emacs lisp is the Emacs Lisp Reference
> manual
>
> http://www.gnu.org/software/emacs/manual/html_node/elisp/index.html
>
> At some point in one's emacs-lisp programming life, it will be necessary
> to refer to it - but it is very much a reference manual, not a tutorial.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: programming for org-mode
2010-07-15 21:53 ` Eric Schulte
@ 2010-07-15 22:17 ` Nick Dokos
0 siblings, 0 replies; 14+ messages in thread
From: Nick Dokos @ 2010-07-15 22:17 UTC (permalink / raw)
To: Eric Schulte; +Cc: nicholas.dokos, emacs-orgmode, Ivanov Dmitry
Eric Schulte <schulte.eric@gmail.com> wrote:
> > I presume that paredit is useful because it's a minor mode, so you can
> > enable it on an org-mode buffer (e.g. using babel).
>
> No, even for emacs-lisp code blocks I use C-c ' to edit the code in
> emacs-lisp mode. I do have "[" and "]" globally bound to
> `insert-parenthesis' and `move-past-close-and-reindent' respectively,
> but that's probably a little too radical for most users.
>
> I only enable paredit minor-mode in lispy modes.
>
Ah, OK.
> > But if you are editing a .el file, then emacs-lisp mode provides all
> > these facilities (C-M-f -> forward-sexp, etc.) and you don't need
> > paredit. Do I have that right?
> >
>
> Not quite,
>
> Paredit has a number of nice features aside from sexp movement,
> including /electric/ insertion of both open and close parenthesis,
> brackets and quotation's which greatly increase the speed with which one
> can write lisp code -- all the while ensuring that the code in the
> buffer is /valid/ in terms of balanced parenthesis.
>
Thanks for the explanation!
Nick
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re[2]: programming for org-mode
2010-07-15 17:26 ` Eric Schulte
2010-07-15 20:15 ` David Maus
2010-07-15 21:40 ` Nick Dokos
@ 2010-08-05 12:33 ` Ivanov Dmitry
[not found] ` <AANLkTi=wrOCCrZxRZTGgvNKGjy2jmnogiA91bYnHAExV@mail.gmail.com>
2010-08-07 13:12 ` Re[2]: " David Maus
2 siblings, 2 replies; 14+ messages in thread
From: Ivanov Dmitry @ 2010-08-05 12:33 UTC (permalink / raw)
To: Eric Schulte; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 642 bytes --]
Hi, Eric. I decided to draw schemes for functions in your module org-collector.el. And started from org-read-prop. Please, check my pdf file - my questions are marked with green. If there are no attachments allowed in the mailing list, you can get it here:
http://live-wtr.ru/org/org-collector.pdf
Can you explain, which function is called, when the user clicks C-c C-c on the line with #+BEGIN: propview? It's almost impossible to understand the complicated code of other programmer without a scheme. Did you see, how many questions emerged after I schematized just one simple function.
org-dblock-write:propview seems to be really hard.
[-- Attachment #2: org-collector.pdf --]
[-- Type: application/pdf, Size: 5988 bytes --]
[-- Attachment #3: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re[4]: programming for org-mode
[not found] ` <AANLkTi=wrOCCrZxRZTGgvNKGjy2jmnogiA91bYnHAExV@mail.gmail.com>
@ 2010-08-06 7:33 ` Ivanov Dmitry
0 siblings, 0 replies; 14+ messages in thread
From: Ivanov Dmitry @ 2010-08-06 7:33 UTC (permalink / raw)
To: Marcelo de Moraes Serpa; +Cc: emacs-orgmode
Hi, Marcelo.
I used Visio. Then saved as Postscript and converted to pdf, using ps2pdf.
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Re[2]: programming for org-mode
2010-08-05 12:33 ` Re[2]: " Ivanov Dmitry
[not found] ` <AANLkTi=wrOCCrZxRZTGgvNKGjy2jmnogiA91bYnHAExV@mail.gmail.com>
@ 2010-08-07 13:12 ` David Maus
2010-08-07 15:29 ` Re[4]: " Ivanov Dmitry
1 sibling, 1 reply; 14+ messages in thread
From: David Maus @ 2010-08-07 13:12 UTC (permalink / raw)
To: Ivanov Dmitry; +Cc: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 2547 bytes --]
Hi Ivanov,
Ivanov Dmitry wrote: >Hi, Eric. I decided to draw schemes for
functions in your module org-collector.el. And started from
org-read-prop. Please, check my pdf file - my questions are marked
with green. If there are no attachments allowed in the mailing list,
you can get it here:
>http://live-wtr.ru/org/org-collector.pdf
,----
| 01. (defun org-read-prop (prop)
| 02. "Convert the string property PROP to a number if appropriate.
| 03. Otherwise if prop looks like a list (meaning it starts with a
| 04. '(') then read it as lisp, otherwise return it unmodified as a
| 05. string."
| 06. (if (and (stringp prop) (not (equal prop "")))
| 07. (let ((out (string-to-number prop)))
| 08. (if (equal out 0)
| 09. (if (or (equal "(" (substring prop 0 1)) (equal "'" (substring prop 0 1)))
| 10. (read prop)
| 11. (if (string-match "^\\(+0\\|-0\\|0\\)$" prop)
| 12. 0
| 13. (progn (set-text-properties 0 (length prop) nil prop)
| 14. prop)))
| 15. out))
| 16. prop))
`----
If `prop' is a string and not empty, bind `out' to the result of
calling `string-to-number' with argument `prop'. `string-to-number'
returns 0 if the string was a zero or if the string didn't contain
convertable characters. Thus, if `out` ist /not/ zero, we return
`out'.
If it is, check if `prop' looks like a Lisp expression (Line 09). If
it looks like a Lisp expresion, return this expression.
C-h f read RET:
,----
| read is a built-in function in `C source code'.
|
| (read &optional STREAM)
|
| Read one Lisp expression as text from STREAM, return as Lisp object.
| If STREAM is nil, use the value of `standard-input' (which see).
| STREAM or the value of `standard-input' may be:
| a buffer (read from point and advance it)
| a marker (read from where it points and advance it)
| a function (call it with no arguments for each character,
| call it with a char as argument to push a char back)
| a string (takes text from string, starting at the beginning)
| t (read text line using minibuffer and use it, or read from
| standard input in batch mode).
|
| [back]
`----
If it didn't look like a Lisp expression, check if `out' is 0 because
`prop' is the string "0", "+0", or "-0". If this is the case, return
0. We don't use `unless' because in this case the function
`org-read-prop' would return nil.
HTH,
-- David
--
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de
[-- Attachment #1.2: Type: application/pgp-signature, Size: 230 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re[4]: programming for org-mode
2010-08-07 13:12 ` Re[2]: " David Maus
@ 2010-08-07 15:29 ` Ivanov Dmitry
2010-08-08 6:43 ` David Maus
0 siblings, 1 reply; 14+ messages in thread
From: Ivanov Dmitry @ 2010-08-07 15:29 UTC (permalink / raw)
To: David Maus; +Cc: emacs-orgmode
[-- Attachment #1: Type: text/plain, Size: 76 bytes --]
Thanks, David. I improved the scheme, added 2 question. Please, take a look.
[-- Attachment #2: org-collector.pdf --]
[-- Type: application/pdf, Size: 7133 bytes --]
[-- Attachment #3: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Re[4]: programming for org-mode
2010-08-07 15:29 ` Re[4]: " Ivanov Dmitry
@ 2010-08-08 6:43 ` David Maus
2010-08-08 15:49 ` Re[6]: " Ivanov Dmitry
0 siblings, 1 reply; 14+ messages in thread
From: David Maus @ 2010-08-08 6:43 UTC (permalink / raw)
To: Ivanov Dmitry; +Cc: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 1725 bytes --]
Ivanov Dmitry wrote:
>Thanks, David. I improved the scheme, added 2 question. Please, take a look.
1/
,----
| 09. (if (or (equal "(" (substring prop 0 1)) (equal "'" (substring prop 0 1)))
|
| vs.
|
| 09. (if (string-match "^'?(.*)$" prop)
`----
I wouldn't call it a flaw in the original check but a pragmatic
solution for the problem at this point. Ideally we want to check if
`prop' is a lisp expression so we can call `read' to return the
expression as lisp object. To achieve this we would need a function
that checks if the string `prop' is a valid s-expression[1]: Balanced
parentheses and valid lisp atoms. I am not an expert in regular
expressions but I think such a check can't be done with regexps but
requires an implementation of a lisp parser.
Example: (string-match "^'?(.*)$" "((foo baz)")) would return t but
"((foo baz)" is not a valid s-expression.
If we want (read prop) not to fail on an invalid s-exp but to threat
them as strings we can try to catch the error when executing `read':
,----
| (condition-case nil
| (read prop)
| (error prop))
`----
This would return the lisp object for `prop' if `prop' is a valid lisp
expression and the string `prop' otherwise (C-h f condition-case RET).
2/
,----
| 13. (progn (set-text-properties 0 (length prop) nil prop)
| 14. prop)))
`----
Setting the text-properties to nil indeed removes all
... text-properties, including colors. The `progn' is unnecessary
because the body of the else clause is not limited to one lisp
expression (C-h f if RET).
HTH,
-- David
[1] Note that the terms "s-expression", "lisp-expression", and "lisp
object" refer to one and the same structure.
[-- Attachment #1.2: Type: application/pgp-signature, Size: 230 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re[6]: programming for org-mode
2010-08-08 6:43 ` David Maus
@ 2010-08-08 15:49 ` Ivanov Dmitry
2010-08-09 19:16 ` David Maus
0 siblings, 1 reply; 14+ messages in thread
From: Ivanov Dmitry @ 2010-08-08 15:49 UTC (permalink / raw)
To: David Maus; +Cc: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 1608 bytes --]
I modified the scheme and the function. I think, that these 2 if-s just complicate the code for comprehension: we have 3 cases,
for each of them we should return the appropriate value.
Here is my variant of the function, including the fix, that you suggested:
(defun org-read-prop (prop)
"Convert the string property PROP to a number if appropriate.
Otherwise if prop looks like a list (meaning it starts with a
'(') then read it as lisp, otherwise return it unmodified as a
string."
(if (and (stringp prop) (not (equal prop "")))
(let ((out (string-to-number prop)))
(if (equal out 0)
(cond
((or
(equal "(" (substring prop 0 1))
(equal "'" (substring prop 0 1)))
(condition-case nil
(read prop)
(error prop)))
((string-match "^\\(+0\\|-0\\|0\\)$" prop)
0)
(t
(set-text-properties 0 (length prop) nil prop)
prop))
out))
prop))
All the tests work fine with the new version.
When I tried
(org-read-prop "(1 2 3))") -> (1 2 3)
It gave me (1 2 3), ignoring the last ')'. Seems to be the read function bug.
At last I got rid of these nasty little squares on the scheme :)
[-- Attachment #1.2: Type: text/html, Size: 4603 bytes --]
[-- Attachment #2: org-collector.pdf --]
[-- Type: application/pdf, Size: 6968 bytes --]
[-- Attachment #3: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
* Re: Re[6]: programming for org-mode
2010-08-08 15:49 ` Re[6]: " Ivanov Dmitry
@ 2010-08-09 19:16 ` David Maus
0 siblings, 0 replies; 14+ messages in thread
From: David Maus @ 2010-08-09 19:16 UTC (permalink / raw)
To: Ivanov Dmitry; +Cc: emacs-orgmode
[-- Attachment #1.1: Type: text/plain, Size: 1262 bytes --]
Ivanov Dmitry wrote:
>I modified the scheme and the function. I think, that these 2 if-s
>just complicate the code for comprehension: we have 3 cases, for each
>of them we should return the appropriate value.
Yes, `cond' is more suitable here.
>All the tests work fine with the new version.
>When I tried
>(org-read-prop "(1 2 3))") -> (1 2 3)
>It gave me (1 2 3), ignoring the last ')'. Seems to be the read
>function bug.
Not sure if it is a bug or the indended behavior. `read' returns the
first valid lisp expression in finds. E.g.
(read "(a b c) foo bar") => (a b c)
I think this is good enough at this place. A complete solutation
would require to parse the entire string.
>At last I got rid of these nasty little squares on the scheme :)
:D
Of course the next step for you would be to tame the beast called git
and prepare a proper patch. The steps are:
1. create a topic branch for the fix
2. change the function, commit to topic branch and provide a proper
commit message
(http://orgmode.org/worg/org-contribute.php#sec-4)
3. create a patch against current master
4. send the patch manually or using git send-email
Best,
-- David
--
OpenPGP... 0x99ADB83B5A4478E6
Jabber.... dmjena@jabber.org
Email..... dmaus@ictsoc.de
[-- Attachment #1.2: Type: application/pgp-signature, Size: 230 bytes --]
[-- Attachment #2: Type: text/plain, Size: 201 bytes --]
_______________________________________________
Emacs-orgmode mailing list
Please use `Reply All' to send replies to the list.
Emacs-orgmode@gnu.org
http://lists.gnu.org/mailman/listinfo/emacs-orgmode
^ permalink raw reply [flat|nested] 14+ messages in thread
end of thread, other threads:[~2010-08-09 19:16 UTC | newest]
Thread overview: 14+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-07-15 4:52 programming for org-mode Ivanov Dmitry
2010-07-15 17:26 ` Eric Schulte
2010-07-15 20:15 ` David Maus
2010-07-15 20:21 ` David Maus
2010-07-15 21:40 ` Nick Dokos
2010-07-15 21:53 ` Eric Schulte
2010-07-15 22:17 ` Nick Dokos
2010-08-05 12:33 ` Re[2]: " Ivanov Dmitry
[not found] ` <AANLkTi=wrOCCrZxRZTGgvNKGjy2jmnogiA91bYnHAExV@mail.gmail.com>
2010-08-06 7:33 ` Re[4]: " Ivanov Dmitry
2010-08-07 13:12 ` Re[2]: " David Maus
2010-08-07 15:29 ` Re[4]: " Ivanov Dmitry
2010-08-08 6:43 ` David Maus
2010-08-08 15:49 ` Re[6]: " Ivanov Dmitry
2010-08-09 19:16 ` David Maus
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.