summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Davison <davison@stats.ox.ac.uk>2010-09-05 19:49:11 -0400
committerDan Davison <davison@stats.ox.ac.uk>2010-09-21 15:02:33 +0100
commit92249cffb0c899e51e2de0c5b3f252f186347bbf (patch)
tree4c7f3e35f6c5397ab98babf21f16ebb68431f53a
parent26b9263926b9bbf3b6ab1a31ead096793b12cab1 (diff)
downloadorg-mode-92249cffb0c899e51e2de0c5b3f252f186347bbf.tar.gz
Transmit active region from Org buffer to code edit buffer
* org-src.el (org-edit-src-code): If mark was inside code block then code edit buffer inherits mark with active region.
-rw-r--r--lisp/org-src.el14
1 files changed, 13 insertions, 1 deletions
diff --git a/lisp/org-src.el b/lisp/org-src.el
index 233058a..1e955cf 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -209,6 +209,7 @@ buffer."
(setq org-edit-src-saved-temp-window-config (current-window-configuration)))
(let ((line (org-current-line))
(col (current-column))
+ (mark (and (use-region-p) (mark)))
(case-fold-search t)
(info (org-edit-src-find-region-and-lang))
(babel-info (org-babel-get-src-block-info))
@@ -217,7 +218,8 @@ buffer."
(end (make-marker))
(preserve-indentation org-src-preserve-indentation)
(allow-write-back-p (null code))
- block-nindent total-nindent ovl lang lang-f single lfmt begline buffer msg)
+ block-nindent total-nindent ovl lang lang-f single lfmt buffer msg
+ begline markline markcol)
(if (not info)
nil
(setq beg (move-marker beg (nth 0 info))
@@ -235,6 +237,10 @@ buffer."
block-nindent (nth 5 info)
lang-f (intern (concat lang "-mode"))
begline (save-excursion (goto-char beg) (org-current-line)))
+ (if (and mark (>= mark beg) (<= mark end))
+ (save-excursion (goto-char mark)
+ (setq markline (org-current-line)
+ markcol (current-column))))
(if (equal lang-f 'table.el-mode)
(setq lang-f (lambda ()
(text-mode)
@@ -293,6 +299,12 @@ buffer."
(while (re-search-forward "^," nil t)
(if (eq (org-current-line) line) (setq total-nindent (1+ total-nindent)))
(replace-match "")))
+ (when markline
+ (org-goto-line (1+ (- markline begline)))
+ (org-move-to-column
+ (if preserve-indentation markcol (max 0 (- markcol total-nindent))))
+ (push-mark (point) 'no-message t)
+ (setq deactivate-mark nil))
(org-goto-line (1+ (- line begline)))
(org-move-to-column
(if preserve-indentation col (max 0 (- col total-nindent))))