From 405c2be7487c564e72a9f01a940f96dc19ff16ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Miquel?= Date: Wed, 23 Jun 2021 15:25:58 +0200 Subject: [PATCH] org-src.el (org-src--contents-for-write-back): Do not indent blank lines * lisp/org-src.el (org-src--contents-for-write-back): Do not indent blank lines, except for the current line. This was the original behaviour for all blank lines, before `857ae366b3`. --- lisp/org-src.el | 23 ++++++++++++++++------- 1 file changed, 16 insertions(+), 7 deletions(-) diff --git a/lisp/org-src.el b/lisp/org-src.el index 79f002e56..faacb53e3 100644 --- a/lisp/org-src.el +++ b/lisp/org-src.el @@ -443,14 +443,20 @@ Assume point is in the corresponding edit buffer." 0)))) (use-tabs? (and (> org-src--tab-width 0) t)) (source-tab-width org-src--tab-width) - (contents (org-with-wide-buffer (buffer-string))) - (write-back org-src--allow-write-back)) + (contents (org-with-wide-buffer + (let ((eol (progn (end-of-line) (point)))) + (list (buffer-substring (point-min) eol) + (buffer-substring eol (point-max)))))) + (write-back org-src--allow-write-back) + marker) (with-current-buffer write-back-buf ;; Reproduce indentation parameters from source buffer. (setq indent-tabs-mode use-tabs?) (when (> source-tab-width 0) (setq tab-width source-tab-width)) ;; Apply WRITE-BACK function on edit buffer contents. - (insert (org-no-properties contents)) + (insert (org-no-properties (car contents))) + (setq marker (point-marker)) + (insert (org-no-properties (car (cdr contents)))) (goto-char (point-min)) (when (functionp write-back) (save-excursion (funcall write-back))) ;; Add INDENTATION-OFFSET to every line in buffer, @@ -458,10 +464,13 @@ Assume point is in the corresponding edit buffer." (when (> indentation-offset 0) (while (not (eobp)) (skip-chars-forward " \t") - (let ((i (current-column))) - (delete-region (line-beginning-position) (point)) - (indent-to (+ i indentation-offset))) - (forward-line)))))) + (when (or (not (eolp)) ; ignore blank lines + (eq (point) (marker-position marker))) + (let ((i (current-column))) + (delete-region (line-beginning-position) (point)) + (indent-to (+ i indentation-offset)))) + (forward-line))) + (set-marker marker nil)))) (defun org-src--edit-element (datum name &optional initialize write-back contents remote) -- 2.32.0