lang/org: add eval handler

With this, gr and gR will now work in babel blocks to execute a subset
of the block (or the whole thing, if you'd like). Results are displayed
in a popup buffer (or overlay if :tools (eval +overlay) is enabled).
This commit is contained in:
Henrik Lissner 2020-08-05 18:23:19 -04:00
parent 80e1e8ff9a
commit 8ae0e79918
No known key found for this signature in database
GPG key ID: 5F6C0EA160557395
3 changed files with 31 additions and 10 deletions

View file

@ -0,0 +1,29 @@
;;; lang/org/autoload/org-babel.el -*- lexical-binding: t; -*-
;;;###autoload
(defun +org-eval-handler (beg end)
"TODO"
(save-excursion
(if (not (cl-loop for pos in (list beg (point) end)
if (save-excursion (goto-char pos) (org-in-src-block-p t))
return (goto-char pos)))
(message "Nothing to evaluate at point")
(org-babel-where-is-src-block-head)
(let ((beg (max beg (match-beginning 5)))
(end (min end (match-end 5)))
(major-mode
(org-src-get-lang-mode (or (org-eldoc-get-src-lang)
(user-error "No lang specified for this src block")))))
(+eval/region beg end)))))
;;
;;; Hooks
;;;###autoload
(defun +org-clear-babel-results-h ()
"Remove the results block for the org babel block at point."
(when (and (org-in-src-block-p t)
(org-babel-where-is-src-block-result))
(org-babel-remove-result)
t))

View file

@ -468,14 +468,6 @@ All my (performant) foldings needs are met between this and `org-show-subtree'
(org-cycle-internal-local)
t)))))
;;;###autoload
(defun +org-clear-babel-results-h ()
"Remove the results block for the org babel block at point."
(when (and (org-in-src-block-p t)
(org-babel-where-is-src-block-result))
(org-babel-remove-result)
t))
;;;###autoload
(defun +org-make-last-point-visible-h ()
"Unfold subtree around point if saveplace places us in a folded region."