diff options
author | Eric Schulte <eric.schulte@gmx.com> | 2012-01-20 11:00:46 -0700 |
---|---|---|
committer | Eric Schulte <eric.schulte@gmx.com> | 2012-01-20 11:00:46 -0700 |
commit | 5852cf7fbf4dfd6d8465b4752b7566c3f2be475e (patch) | |
tree | 197b0eb44e614a94f6248ead5df75c390a4c463a | |
parent | f2a9d838241652bd42f110aa731c963e16790667 (diff) | |
download | org-mode-5852cf7fbf4dfd6d8465b4752b7566c3f2be475e.tar.gz |
tangle the parent buffer of a code edit buffer
* lisp/org-src.el (org-src-in-org-buffer): Run commands in the parent
buffer.
(org-edit-src-save): Use new macro.
(org-src-tangle): Tangle the parent buffer.
-rw-r--r-- | lisp/org-src.el | 33 |
1 files changed, 21 insertions, 12 deletions
diff --git a/lisp/org-src.el b/lisp/org-src.el index 11ce461..f605ed9 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -659,21 +659,30 @@ the language, a switch telling if the content should be in a single line." (set-window-configuration org-edit-src-saved-temp-window-config) (setq org-edit-src-saved-temp-window-config nil)))) +(defmacro org-src-in-org-buffer (&rest body) + `(let ((p (point)) (m (mark)) msg) + (save-window-excursion + (org-edit-src-exit 'save) + ,@body + (setq msg (current-message)) + (if (eq org-src-window-setup 'other-frame) + (let ((org-src-window-setup 'current-window)) + (org-edit-src-code 'save)) + (org-edit-src-code 'save))) + (push-mark m 'nomessage) + (goto-char (min p (point-max))) + (message (or msg "")))) +(def-edebug-spec org-src-in-org-buffer (body)) + (defun org-edit-src-save () "Save parent buffer with current state source-code buffer." (interactive) - (let ((p (point)) (m (mark)) msg) - (save-window-excursion - (org-edit-src-exit 'save) - (save-buffer) - (setq msg (current-message)) - (if (eq org-src-window-setup 'other-frame) - (let ((org-src-window-setup 'current-window)) - (org-edit-src-code 'save)) - (org-edit-src-code 'save))) - (push-mark m 'nomessage) - (goto-char (min p (point-max))) - (message (or msg "")))) + (org-src-in-org-buffer (save-buffer))) + +(defun org-src-tangle (arg) + "Tangle the parent buffer." + (interactive) + (org-src-in-org-buffer (org-babel-tangle arg))) (defun org-src-mode-configure-edit-buffer () (when (org-bound-and-true-p org-edit-src-from-org-mode) |