With this patch TAB in a code block aligns the code according to the major mode. The macro could be used to do the same thing for other commands (i.e. allow other commands to be invoked in the Org buffer, but actually carried out in the code buffer.)
Patch attached and in branch src-block-tab at g...@github.com:dandavison/org-devel.git.
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
Dan
_______________________________________________ Emacs-orgmode mailing list Please use `Reply All' to send replies to the list. Emacs-orgmode@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-orgmode