[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [O] get name of source block
From: |
Andreas Leha |
Subject: |
Re: [O] get name of source block |
Date: |
Mon, 18 May 2015 12:07:55 +0100 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/24.4.50 (darwin) |
Hi Sebastien,
Sebastien Vauban <address@hidden> writes:
> Andreas Leha wrote:
>> for quite some time I've had the following in my .emacs:
>>
>> ;; This Snippet returns the name of the current source block.
>> ;; An elisp block to simplify the =:prologue= definition.
>> ;; Author: Eric Schulte
>> ;; It is useful to insert the debug message 'Entering foo()' as output.
>> ;; For R code blocks, enable it with this line:
>> ;; #+PROPERTY: header-args:R :session *R* :prologue (format
>> "print(\"entering %s\")" (get-current-name))
>> (defun get-current-name ()
>> (or (when org-babel-current-src-block-location
>> (save-excursion
>> (goto-char org-babel-current-src-block-location)
>> (while (and (forward-line -1)
>> (looking-at org-babel-multi-line-header-regexp)))
>> (when (looking-at org-babel-src-name-w-name-regexp)
>> (org-no-properties (match-string 3)))))
>> ""))
>>
>> That had stopped working during export (my main use-case) a few weeks
>> back. Now, org-babel-src-name-w-name-regexp is gone from the source
>> so that this snippet is completely broken.
>>
>> I would like to again have the name of the source block displayed
>> during execution of src blocks. Is there a function in org already?
>> And if not, how would the proposed function look like so that it works
>> during export as well?
>
> Seems to come from:
>
> * 49a656a ob-core: Remove `org-babel-src-name-w-name-regexp' <Nicolas
> Goaziou> (2015-05-01)
> * cec47a6 ob-core: Change `org-babel-named-src-block-regexp-for-name'
> signature <Nicolas Goaziou> (2015-05-01)
>
> Maybe looking at the diff would give you the way to translate the regexp
> into some newer form?
>
> Best regards,
> Seb
Yes, I was lazy and following the change to
`org-babel-named-src-block-regexp-for-name' is easy enough.
But how does that solve my first problem?
During export (and preview (C-c C-v v)) the code block name is not
displayed.
Here is an expample:
--8<---------------cut here---------------start------------->8---
#+PROPERTY: header-args:R :session *testR* :prologue (format "print(\"entering
%s\")" (get-current-name))
* Setup :noexport:
#+begin_src emacs-lisp :results none
(defun get-current-name ()
(or (when org-babel-current-src-block-location
(save-excursion
(goto-char org-babel-current-src-block-location)
(while (and (forward-line -1)
(looking-at org-babel-multi-line-header-regexp)))
(when (looking-at (org-babel-named-src-block-regexp-for-name))
(org-match-string-no-properties 9))))
""))
(message (get-current-name))
#+end_src
* Test echo name during export
Execute this source block (C-c C-c) and look into *testR*. There
should be a message "entering testname".
Export this file and look into *testR*. The message is "entering ".
#+name: testname
#+begin_src R
1:10
#+end_src
--8<---------------cut here---------------end--------------->8---
Thanks,
Andreas