diff options
author | Dan Davison <davison@stats.ox.ac.uk> | 2010-09-05 19:49:11 -0400 |
---|---|---|
committer | Dan Davison <davison@stats.ox.ac.uk> | 2010-09-21 15:02:33 +0100 |
commit | 92249cffb0c899e51e2de0c5b3f252f186347bbf (patch) | |
tree | 4c7f3e35f6c5397ab98babf21f16ebb68431f53a | |
parent | 26b9263926b9bbf3b6ab1a31ead096793b12cab1 (diff) | |
download | org-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.el | 14 |
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)))) |