diff --git a/lisp/org-src.el b/lisp/org-src.el index baa2b11..fc15a83 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -435,6 +435,19 @@ the fragment in the Org-mode buffer." (message "%s" msg) t))) +(defmacro org-src-do-in-edit-buffer (&rest body) + "Evaluate BODY in edit buffer if there is a code block at point. +Return t if a code block was found at point, nil otherwise." + `(when (org-edit-src-code) + ,@body + (org-edit-src-exit) t)) + +(defun org-src-tab-command () + "Do what TAB does in the edit buffer for code block at point." + (org-src-do-in-edit-buffer + (funcall (key-binding (kbd "TAB"))))) + +(add-hook 'org-tab-first-hook 'org-src-tab-command) (defun org-edit-src-find-region-and-lang () "Find the region and language for a local edit. Return a list with beginning and end of the region, a string representing