new interactive function for removing code block results
* lisp/ob-keys.el (org-babel-key-bindings): Bound to C-c C-v k. * lisp/ob.el (org-babel-map-regexp): New generic mapping macro. (org-babel-map-inline-src-blocks): Rewritten to use new macro. (org-babel-kill-results): Remove some or all results in the current file. * lisp/ob-lob.el (org-babel-map-call-lines): Map over all lob call lines in the current file. * doc/orgcard.tex: Document new keybinding.
This commit is contained in:
parent
36974045b6
commit
72817926d7
|
@ -447,6 +447,7 @@ formula, \kbd{:=} a field formula.
|
||||||
\key{check code block at point for errors}{C-c C-v c}
|
\key{check code block at point for errors}{C-c C-v c}
|
||||||
\key{view expanded body of code block at point}{C-c C-v v}
|
\key{view expanded body of code block at point}{C-c C-v v}
|
||||||
\key{view information about code block at point}{C-c C-v I}
|
\key{view information about code block at point}{C-c C-v I}
|
||||||
|
\key{delete some or all results in current buffer}{C-c C-v k}
|
||||||
\key{go to named code block}{C-c C-v g}
|
\key{go to named code block}{C-c C-v g}
|
||||||
\key{go to named result}{C-c C-v r}
|
\key{go to named result}{C-c C-v r}
|
||||||
\key{go to the head of the current code block}{C-c C-v u}
|
\key{go to the head of the current code block}{C-c C-v u}
|
||||||
|
|
|
@ -63,6 +63,8 @@ functions which are assigned key bindings, and see
|
||||||
("g" . org-babel-goto-named-src-block)
|
("g" . org-babel-goto-named-src-block)
|
||||||
("r" . org-babel-goto-named-result)
|
("r" . org-babel-goto-named-result)
|
||||||
("\C-r" . org-babel-goto-named-result)
|
("\C-r" . org-babel-goto-named-result)
|
||||||
|
("k" . org-babel-kill-results)
|
||||||
|
("\C-k" . org-babel-kill-results)
|
||||||
("\C-b" . org-babel-execute-buffer)
|
("\C-b" . org-babel-execute-buffer)
|
||||||
("b" . org-babel-execute-buffer)
|
("b" . org-babel-execute-buffer)
|
||||||
("\C-s" . org-babel-execute-subtree)
|
("\C-s" . org-babel-execute-subtree)
|
||||||
|
|
|
@ -87,7 +87,14 @@ If you change the value of this variable then your files may
|
||||||
"\\|" org-babel-inline-lob-one-liner-regexp "\\)")
|
"\\|" org-babel-inline-lob-one-liner-regexp "\\)")
|
||||||
"Regexp to match calls to predefined source block functions.")
|
"Regexp to match calls to predefined source block functions.")
|
||||||
|
|
||||||
;; functions for executing lob one-liners
|
;;;###autoload
|
||||||
|
(defmacro org-babel-map-call-lines (file &rest body)
|
||||||
|
"Evaluate BODY forms on each #+call line in FILE.
|
||||||
|
If FILE is nil evaluate BODY forms on source blocks in current
|
||||||
|
buffer."
|
||||||
|
(declare (indent 1))
|
||||||
|
`(org-babel-map-regexp ,org-babel-block-lob-one-liner-regexp ,file ,@body))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun org-babel-lob-execute-maybe ()
|
(defun org-babel-lob-execute-maybe ()
|
||||||
"Execute a Library of Babel source block, if appropriate.
|
"Execute a Library of Babel source block, if appropriate.
|
||||||
|
|
30
lisp/ob.el
30
lisp/ob.el
|
@ -65,6 +65,7 @@
|
||||||
(declare-function orgtbl-to-orgtbl "org-table" (table params))
|
(declare-function orgtbl-to-orgtbl "org-table" (table params))
|
||||||
(declare-function org-babel-tangle-comment-links "ob-tangle" (&optional info))
|
(declare-function org-babel-tangle-comment-links "ob-tangle" (&optional info))
|
||||||
(declare-function org-babel-lob-get-info "ob-lob" nil)
|
(declare-function org-babel-lob-get-info "ob-lob" nil)
|
||||||
|
(declare-function org-babel-map-call-lines "ob-lob" (file &rest body))
|
||||||
(declare-function org-babel-ref-split-args "ob-ref" (arg-string))
|
(declare-function org-babel-ref-split-args "ob-ref" (arg-string))
|
||||||
(declare-function org-babel-ref-parse "ob-ref" (assignment))
|
(declare-function org-babel-ref-parse "ob-ref" (assignment))
|
||||||
(declare-function org-babel-ref-resolve "ob-ref" (ref))
|
(declare-function org-babel-ref-resolve "ob-ref" (ref))
|
||||||
|
@ -721,12 +722,11 @@ end-body --------- point at the end of the body"
|
||||||
(unless visited-p (kill-buffer to-be-removed))
|
(unless visited-p (kill-buffer to-be-removed))
|
||||||
(goto-char point))))
|
(goto-char point))))
|
||||||
|
|
||||||
;;;###autoload
|
(defmacro org-babel-map-regexp (regexp file &rest body)
|
||||||
(defmacro org-babel-map-inline-src-blocks (file &rest body)
|
"Evaluate BODY forms on each match of REGEXP in FILE.
|
||||||
"Evaluate BODY forms on each inline source-block in FILE.
|
|
||||||
If FILE is nil evaluate BODY forms on source blocks in current
|
If FILE is nil evaluate BODY forms on source blocks in current
|
||||||
buffer."
|
buffer."
|
||||||
(declare (indent 1))
|
(declare (indent 2))
|
||||||
(let ((tempvar (make-symbol "file")))
|
(let ((tempvar (make-symbol "file")))
|
||||||
`(let* ((,tempvar ,file)
|
`(let* ((,tempvar ,file)
|
||||||
(visited-p (or (null ,tempvar)
|
(visited-p (or (null ,tempvar)
|
||||||
|
@ -736,13 +736,21 @@ buffer."
|
||||||
(when ,tempvar (find-file ,tempvar))
|
(when ,tempvar (find-file ,tempvar))
|
||||||
(setq to-be-removed (current-buffer))
|
(setq to-be-removed (current-buffer))
|
||||||
(goto-char (point-min))
|
(goto-char (point-min))
|
||||||
(while (re-search-forward org-babel-inline-src-block-regexp nil t)
|
(while (re-search-forward ,regexp nil t)
|
||||||
(goto-char (match-beginning 1))
|
(goto-char (match-beginning 1))
|
||||||
(save-match-data ,@body)
|
(save-match-data ,@body)
|
||||||
(goto-char (match-end 0))))
|
(goto-char (match-end 0))))
|
||||||
(unless visited-p (kill-buffer to-be-removed))
|
(unless visited-p (kill-buffer to-be-removed))
|
||||||
(goto-char point))))
|
(goto-char point))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defmacro org-babel-map-inline-src-blocks (file &rest body)
|
||||||
|
"Evaluate BODY forms on each inline source-block in FILE.
|
||||||
|
If FILE is nil evaluate BODY forms on source blocks in current
|
||||||
|
buffer."
|
||||||
|
(declare (indent 1))
|
||||||
|
`(org-babel-map-regexp ,org-babel-inline-src-block-regexp ,file ,@body))
|
||||||
|
|
||||||
;;;###autoload
|
;;;###autoload
|
||||||
(defun org-babel-execute-buffer (&optional arg)
|
(defun org-babel-execute-buffer (&optional arg)
|
||||||
"Execute source code blocks in a buffer.
|
"Execute source code blocks in a buffer.
|
||||||
|
@ -1325,6 +1333,7 @@ With optional prefix argument ARG, jump backward ARG many source blocks."
|
||||||
(goto-char (match-beginning 5))))
|
(goto-char (match-beginning 5))))
|
||||||
(org-babel-where-is-src-block-head)))
|
(org-babel-where-is-src-block-head)))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
(defun org-babel-demarcate-block (&optional arg)
|
(defun org-babel-demarcate-block (&optional arg)
|
||||||
"Wrap or split the code in the region or on the point.
|
"Wrap or split the code in the region or on the point.
|
||||||
When called from inside of a code block the current block is
|
When called from inside of a code block the current block is
|
||||||
|
@ -1367,6 +1376,17 @@ region is not active then the point is demarcated."
|
||||||
"#+end_src\n"))
|
"#+end_src\n"))
|
||||||
(goto-char start) (move-end-of-line 1)))))
|
(goto-char start) (move-end-of-line 1)))))
|
||||||
|
|
||||||
|
;;;###autoload
|
||||||
|
(defun org-babel-kill-results (arg)
|
||||||
|
"Remove the results from the current code block or call line.
|
||||||
|
When called with prefix argument remove all results in the current file."
|
||||||
|
(interactive "P")
|
||||||
|
(if (null arg)
|
||||||
|
(org-babel-remove-result)
|
||||||
|
(org-babel-map-call-lines nil (org-babel-remove-result))
|
||||||
|
(org-babel-map-src-blocks nil (org-babel-remove-result))
|
||||||
|
(org-babel-map-inline-src-blocks nil (org-babel-remove-result))))
|
||||||
|
|
||||||
(defvar org-babel-lob-one-liner-regexp)
|
(defvar org-babel-lob-one-liner-regexp)
|
||||||
(defvar org-babel-inline-lob-one-liner-regexp)
|
(defvar org-babel-inline-lob-one-liner-regexp)
|
||||||
(defun org-babel-where-is-src-block-result (&optional insert info hash indent)
|
(defun org-babel-where-is-src-block-result (&optional insert info hash indent)
|
||||||
|
|
Loading…
Reference in New Issue