emacs-orgmode
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [O] Fix for bug in org-capture


From: Robert Goldman
Subject: Re: [O] Fix for bug in org-capture
Date: Tue, 16 Apr 2013 11:06:13 -0500
User-agent: Postbox 3.0.7 (Macintosh/20130119)

Bastien wrote:
> Hi Robert,
> 
> Robert Goldman <address@hidden> writes:
> 
>> I tried to make two submenus to my org-capture templates: a prefix key
>> "t" (for TODO) and a prefix key "T" (for today's TODO).
>>
>> When I tried to use them, the "T" key did not appear and was not accepted.
>>
>> Looking more deeply, it appears that it was filtered out by a mistakenly
>> case-folding (or at least potentially case-folding) search in org-capture.
> 
> I cannot reproduce this.
> 
> I have these two captures templates:
> 
> (setq org-capture-templates
>       '(
>       ("Ir" "Information read" entry (file+headline "~/org/garden.org" 
> "Infos")
>        "* TODO %?%a :Read:\n  :PROPERTIES:\n  :CAPTURED: %U\n  :END:\n\n%i" 
> :prepend t)
> 
>       ("IR" "Information read (!)" entry (file+headline "~/org/garden.org" 
> "Infos")
>        "* TODO %?%a :Read:\n  :PROPERTIES:\n  :CAPTURED: %U\n  :END:\n\n%i" 
> :prepend t :immediate-finish t)
>        ))
> 
> They are both recognized well.

This isn't actually the same as my bug (which I didn't explain
adequately).  A closer equivalent to mine would have been to have both
"i" and "I", not both "r" and "R".

Here's the bit of my config:

(defvar rpg-org-remember-todo-template
    "* TODO %^{todo title}\n   %?")

(setq org-capture-templates
      `(
        ("t" "Templates for TODO items.")
        ("tw" "Work Todo" entry (file+headline "~/org/todo.org" "Tasks")
,rpg-org-remember-todo-template)
        ("tp" "Personal Todo" entry (file+headline "~/personal/org/todo.org"
"Tasks") ,rpg-org-remember-todo-template)
        ("T" "Templates for today TODO items.")
        ("Tw" "Today work todo" entry (file+headline "~/org/todo.org"
"Tasks")
                  "* TODO %^{todo title}\n   SCHEDULED: %t\n   %?")
        ("Tp" "Today personal todo" entry (file+headline
"~/personal/org/todo.org" "Tasks")
                  "* TODO %^{todo title}\n   SCHEDULED: %t\n   %?"))

You will see above that it's the prefix keys, not the suffix keys that
causes the problem.

Also, note that if I delete the lines defining the prefix keys:

        ("t" "Templates for TODO items.")
        ("T" "Templates for today TODO items.")

the problem goes away.  You don't seem to have such definitions in your
code.

> 
> Maybe you can try with this minimal example and tell if you can
> still reproduce the problem?  Also let us know what version of Org
> you are using.

I can replicate this with head pulled within the past hour.
> 
>> I am attaching a diff which has the two line fix for this bug.
> 
> I'll apply it if we can reproduce and narrow down the problem.

BTW, I would actually argue that my fix is right, even if you could not
replicate down the problem.  This use of the string matching function
incorrectly allows global state to bleed into the functioning of the
calling function.  If you *know* (as here) that case-fold-search should
be nil (because the org manual dictates that these keys are case
sensitive), then you should never allow a surrounding binding of
case-fold-search to bleed into the function.

The use of dynamic binding complicates replication, because global state
(binding of case-fold-search) dictates whether this function as written
behaves correctly or not.

Hope that clarifies,
cheers,
r





reply via email to

[Prev in Thread] Current Thread [Next in Thread]