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)))))))