Hi Daniele, Thanks for the suggestion and the accompanying patch. I've just applied a modified version of your patch (included below). Please let me know if this is insufficient for your needs.
Best,
>From 136bdc0e83358fa3f6af1d8b3b0cd71cace61efe Mon Sep 17 00:00:00 2001 From: Eric Schulte <schulte.e...@gmail.com> Date: Fri, 20 Sep 2013 15:07:15 -0600 Subject: [PATCH] org-babel-remove-result option keep result keyword This patch is based off of a request and an initial patch supplied by Daniele Pizzolli. * lisp/ob-core.el (org-babel-remove-result): Added an option to keep the results keyword when removing the content of results. --- lisp/ob-core.el | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/lisp/ob-core.el b/lisp/ob-core.el index cc6b7a9..e2404c1 100644 --- a/lisp/ob-core.el +++ b/lisp/ob-core.el @@ -2159,15 +2159,17 @@ code ---- the results are extracted in the syntax of the source (set-marker visible-beg nil) (set-marker visible-end nil)))))) -(defun org-babel-remove-result (&optional info) +(defun org-babel-remove-result (&optional info keep-keyword) "Remove the result of the current source block." (interactive) - (let ((location (org-babel-where-is-src-block-result nil info)) start) + (let ((location (org-babel-where-is-src-block-result nil info))) (when location - (setq start (- location 1)) (save-excursion - (goto-char location) (forward-line 1) - (delete-region start (org-babel-result-end)))))) + (goto-char location) + (when (looking-at org-babel-result-regexp) + (delete-region + (if keep-keyword (1+ (match-end 0)) (match-beginning 0)) + (progn (forward-line 1) (org-babel-result-end)))))))) (defun org-babel-result-end () "Return the point at the end of the current set of results." -- 1.8.4
Daniele Pizzolli <d...@toel.it> writes: > Hello @ll, > > this is my fist post on the list. Thanks to everybody for posting > interesting things and keeping org-mode improving! > > I am seeking help because of my limited elisp knowledge. > > This is my incomplete patch to extend org-babel-remove-result to keep > the org-babel-results-keyword when removing the results. > > I need to keep the org-babel-results-keyword because I want to commit > to my dvcs a clean file and easily evaluate the results at any time > later. > > Unfortunately running org-babel-remove-result on a snippet like the > following: > > #+BEGIN_SRC octave :results value file > % at the end produce an image > #+END_SRC > > #+ATTR_LATEX: :width 3cm > #+RESULTS: > [[file:image_01.png]] > > Will output: > > #+BEGIN_SRC octave :results value file > % at the end produce an image > #+END_SRC > > #+ATTR_LATEX: :width 3cm > > And a run of org-babel-execute-buffer will produce: > > #+BEGIN_SRC octave :results value file > % at the end produce an image > #+END_SRC > > #+RESULTS: > [[file:image_01.png]] > > #+ATTR_LATEX: :width 3cm > > changing the position of the LaTeX specific attribute #+ATTR_LATEX: in > way that it becomes useless. > > The patch add an optional argument to org-babel-remove-result but > relies to an hard-coded value of the length of the default > org-babel-results-keyword plus syntax elements: "#+RESULTS:". > > Instead of calculating lengths I think that is better to move to next > line. > > I also skipped a deletion of the last char assuming that is always a > new line. Is this assumption correct? If we delete the last line > we can end with: > > #+RESULTS: > ** some other section > > That will cause problem in the next evaluation. > > I will appreciate your suggestions to improve the patch myself. It > would be great also if anybody can implement it properly and get it merged. > > Thanks in advance, > Daniele Pizzolli > > > diff --git a/lisp/ob-core.el b/lisp/ob-core.el > index cc6b7a9..7517ebf 100644 > --- a/lisp/ob-core.el > +++ b/lisp/ob-core.el > @@ -2159,15 +2159,18 @@ code ---- the results are extracted in the syntax of > the source > (set-marker visible-beg nil) > (set-marker visible-end nil)))))) > > -(defun org-babel-remove-result (&optional info) > - "Remove the result of the current source block." > +(defun org-babel-remove-result (&optional info keep-keyword) > + "Remove the result of the current source block. Optionally > +keep the result keyword." > (interactive) > (let ((location (org-babel-where-is-src-block-result nil info)) start) > (when location > - (setq start (- location 1)) > + (setq start (if keep-keyword (+ location 10) (- location 1))) > (save-excursion > (goto-char location) (forward-line 1) > - (delete-region start (org-babel-result-end)))))) > + (delete-region > + start > + (if keep-keyword (- (org-babel-result-end) 1) > (org-babel-result-end))))))) > > -- Eric Schulte https://cs.unm.edu/~eschulte PGP: 0x614CA05D