[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[O] Bug: [patch] also tangle headlines that begin with lower case string
From: |
Nicolas Richard |
Subject: |
[O] Bug: [patch] also tangle headlines that begin with lower case string "comment" [8.2.5h (release_8.2.5h-680-g12df70 @ /home/youngfrog/sources/org-mode/lisp/)] |
Date: |
Wed, 05 Mar 2014 16:44:12 +0100 |
Hi,
Trying to tangle code blocks in a headline line like:
#+begin_src org
,* Comment retrouver....
#+end_src
I struggled to understand what I was doing wrong because it didn't
tangle anything. In fact, the french word "Comment" was mistakenly
parsed as the org-comment-string, and so the headline was skipped. Let's
avoid that (see patch below).
I take the opportuinty to ask if we should try and make this function
use org-element instead.
My naïve approach doesn't work:
#+begin_src emacs-lisp
(save-excursion
(org-back-to-heading t)
(let ((elt (org-element-at-point)))
(while (and elt
(not
(org-element-property :commentedp elt)))
(setq elt
(org-element-property :parent elt)))
elt))
#+end_src
because an heading doesn't know what its parent heading is (the property
is nil). This can be fixed by doing:
#+begin_src emacs-lisp
(defun org-babel-under-commented-heading-p ()
"Return t if currently under a commented heading."
(unless (org-before-first-heading-p)
(save-excursion
(org-back-to-heading t)
(let ((elt (org-element-at-point)))
(while (and elt
(not
(org-element-property :commentedp elt)))
(setq elt
(and (org-up-heading-safe)
(org-element-at-point))))
elt))))
#+end_src
byt I'm not sure it is very pretty. Opinions ?
Anyway, here's the quicker fix :
From: Nicolas Richard <address@hidden>
Date: Wed, 5 Mar 2014 14:54:49 +0100
Subject: [PATCH] * ob-tangle.el (org-babel-under-commented-heading-p): Disable
case folding to avoid matching "Comment" at beg of headline.
---
lisp/ob-tangle.el | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/lisp/ob-tangle.el b/lisp/ob-tangle.el
index 0096ac9..9f0ea0d 100644
--- a/lisp/ob-tangle.el
+++ b/lisp/ob-tangle.el
@@ -361,7 +361,8 @@ that the appropriate major-mode is set. SPEC has the form:
"Return t if currently under a commented heading."
(unless (org-before-first-heading-p)
(if (let ((hd (nth 4 (org-heading-components))))
- (and hd (string-match (concat "^" org-comment-string) hd)))
+ (and hd (let (case-fold-search)
+ (string-match (concat "^" org-comment-string) hd))))
t
(save-excursion
(and (org-up-heading-safe)
--
Nico.
- [O] Bug: [patch] also tangle headlines that begin with lower case string "comment" [8.2.5h (release_8.2.5h-680-g12df70 @ /home/youngfrog/sources/org-mode/lisp/)],
Nicolas Richard <=