summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Goaziou <mail@nicolasgoaziou.fr>2015-08-14 00:17:47 +0200
committerNicolas Goaziou <mail@nicolasgoaziou.fr>2015-08-14 00:17:47 +0200
commit719a201c3bb2e8bc35b53a372090a9e04d26f275 (patch)
tree33166d8fd4cdf2bf0e821523b51f617bd5d9d4a1
parent0500bd09e242d3580b04dd755608f706cc6eafd9 (diff)
downloadorg-mode-719a201c3bb2e8bc35b53a372090a9e04d26f275.tar.gz
org-src: Fix remote editing
* lisp/org-src.el (org-src--contents-area): Make sure buffer is widened before extracting contents of area.
-rw-r--r--lisp/org-src.el60
1 files changed, 29 insertions, 31 deletions
diff --git a/lisp/org-src.el b/lisp/org-src.el
index 8529494..8cd9781 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -283,37 +283,35 @@ which see. BEG and END are buffer positions."
DATUM is an element or object. Return a list (BEG END CONTENTS)
where BEG and END are buffer positions and CONTENTS is a string."
(let ((type (org-element-type datum)))
- (cond
- ((eq type 'footnote-definition)
- (let* ((beg (org-with-wide-buffer
- (goto-char (org-element-property :post-affiliated datum))
- (search-forward "]")))
- (end (or (org-element-property :contents-end datum) beg)))
- (list beg end (buffer-substring-no-properties beg end))))
- ((org-element-property :contents-begin datum)
- (let ((beg (org-element-property :contents-begin datum))
- (end (org-element-property :contents-end datum)))
- (list beg end (buffer-substring-no-properties beg end))))
- ((memq type '(example-block export-block src-block))
- (list (org-with-wide-buffer
- (goto-char (org-element-property :post-affiliated datum))
- (line-beginning-position 2))
- (org-with-wide-buffer
- (goto-char (org-element-property :end datum))
- (skip-chars-backward " \r\t\n")
- (line-beginning-position 1))
- (org-element-property :value datum)))
- ((memq type '(fixed-width table))
- (let ((beg (org-element-property :post-affiliated datum))
- (end (org-with-wide-buffer
- (goto-char (org-element-property :end datum))
- (skip-chars-backward " \r\t\n")
- (line-beginning-position 2))))
- (list beg
- end
- (if (eq type 'fixed-width) (org-element-property :value datum)
- (buffer-substring-no-properties beg end)))))
- (t (error "Unsupported element or object: %s" type)))))
+ (org-with-wide-buffer
+ (cond
+ ((eq type 'footnote-definition)
+ (let* ((beg (progn
+ (goto-char (org-element-property :post-affiliated datum))
+ (search-forward "]")))
+ (end (or (org-element-property :contents-end datum) beg)))
+ (list beg end (buffer-substring-no-properties beg end))))
+ ((org-element-property :contents-begin datum)
+ (let ((beg (org-element-property :contents-begin datum))
+ (end (org-element-property :contents-end datum)))
+ (list beg end (buffer-substring-no-properties beg end))))
+ ((memq type '(example-block export-block src-block))
+ (list (progn (goto-char (org-element-property :post-affiliated datum))
+ (line-beginning-position 2))
+ (progn (goto-char (org-element-property :end datum))
+ (skip-chars-backward " \r\t\n")
+ (line-beginning-position 1))
+ (org-element-property :value datum)))
+ ((memq type '(fixed-width table))
+ (let ((beg (org-element-property :post-affiliated datum))
+ (end (progn (goto-char (org-element-property :end datum))
+ (skip-chars-backward " \r\t\n")
+ (line-beginning-position 2))))
+ (list beg
+ end
+ (if (eq type 'fixed-width) (org-element-property :value datum)
+ (buffer-substring-no-properties beg end)))))
+ (t (error "Unsupported element or object: %s" type))))))
(defun org-src--make-source-overlay (beg end edit-buffer)
"Create overlay between BEG and END positions and return it.