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 <[email protected]>
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.