summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Schulte <eric.schulte@gmx.com>2012-01-20 11:00:46 -0700
committerEric Schulte <eric.schulte@gmx.com>2012-01-20 11:00:46 -0700
commit5852cf7fbf4dfd6d8465b4752b7566c3f2be475e (patch)
tree197b0eb44e614a94f6248ead5df75c390a4c463a
parentf2a9d838241652bd42f110aa731c963e16790667 (diff)
downloadorg-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.el33
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)