From mboxrd@z Thu Jan 1 00:00:00 1970 From: Robert Goldman Subject: Re: Fix for bug in org-capture Date: Tue, 16 Apr 2013 11:06:13 -0500 Message-ID: <516D76F5.7030007@sift.info> References: <516C7BE3.8030905@sift.info> <87a9ozorvw.fsf@bzg.ath.cx> Reply-To: rpgoldman@sift.info Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Return-path: Received: from eggs.gnu.org ([208.118.235.92]:40268) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1US8Qo-000293-3k for emacs-orgmode@gnu.org; Tue, 16 Apr 2013 12:08:31 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1US8Qm-0007nU-Jv for emacs-orgmode@gnu.org; Tue, 16 Apr 2013 12:08:30 -0400 In-Reply-To: <87a9ozorvw.fsf@bzg.ath.cx> List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org To: Bastien Cc: Org Mode Bastien wrote: > Hi Robert, > > Robert Goldman 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