Hi Nicolas,

Nicolas Goaziou <m...@nicolasgoaziou.fr> writes:

> Sebastian Miele <sebastian.mi...@gmail.com> writes:
>
>> The Org default of org-edit-src-content-indentation is 2. I like that
>> value and leave it that way. Worg's root .dir-locals sets it to 0
>> buffer-locally in at least many Worg's Org files. Hence, when I edit an
>> src block in a Worg file, the value of org-edit-src-content-indentation
>> in the edit buffer is 2. But the correct value in that case is 0.
>
> Then I think we should do the same as what is done for, e.g.,
> `org-src--preserve-indentation`, i.e. store the initial value from
> `org-src--edit-element', and use it in
> `org-src--contents-for-write-back'.
>
> WDYT?

That's perfectly fine with me. An updated patch is attached.

Best wishes
Sebastian
>From a8575e16e2496b2bdcddaaae2532f510a5b18908 Mon Sep 17 00:00:00 2001
From: Sebastian Miele <sebastian.mi...@gmail.com>
Date: Wed, 9 Oct 2019 01:00:50 +0000
Subject: [PATCH] Respect buffer-local value of
 `org-edit-src-content-indentation'

* lisp/org-src.el (org-src--content-indentation): Introduce
permanently buffer-local variable for storing away the potentially
buffer-local value of `org-edit-src-content-indentation' in the source
buffer.

(org-src--contents-for-write-back): Use `org-src--content-indentation'
instead of `org-edit-src-content-indentation' in the edit buffer.

(org-src--edit-element): Set `org-src--content-indentation' in editing
buffer.  For greater clarity and consistency, rename already existing
let-bound variable `ind' to `block-ind'.

* etc/ORG-NEWS: Add entry.
---
 etc/ORG-NEWS    |  4 ++++
 lisp/org-src.el | 15 ++++++++++-----
 2 files changed, 14 insertions(+), 5 deletions(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index 283f32e0c..eab9e021b 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -434,6 +434,10 @@ leave unfolded subtrees unfolded.
 I.e. treat the whole file as if it was a subtree.
 
 *** Respect narrowing when agenda command is restricted to buffer
+*** Respect buffer-local value of ~org-edit-src-content-indentation~
+
+Use the potentially buffer-local value of `org-edit-src-content-indentation'
+from the source buffer instead of that from the editing buffer.
 
 * Version 9.2
 ** Incompatible changes
diff --git a/lisp/org-src.el b/lisp/org-src.el
index 9134d5b5d..418f3a662 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -258,6 +258,9 @@ issued in the language major mode buffer."
 (defvar-local org-src--block-indentation nil)
 (put 'org-src--block-indentation 'permanent-local t)
 
+(defvar-local org-src--content-indentation nil)
+(put 'org-src--content-indentation 'permanent-local t)
+
 (defvar-local org-src--end-marker nil)
 (put 'org-src--end-marker 'permanent-local t)
 
@@ -422,7 +425,7 @@ Assume point is in the corresponding edit buffer."
         (if org-src--preserve-indentation 0
           (+ (or org-src--block-indentation 0)
              (if (memq org-src--source-type '(example-block src-block))
-                 org-edit-src-content-indentation
+                 org-src--content-indentation
                0))))
        (use-tabs? (and (> org-src--tab-width 0) t))
        (source-tab-width org-src--tab-width)
@@ -484,9 +487,10 @@ Leave point in edit buffer."
             (source-file-name (buffer-file-name (buffer-base-buffer)))
             (source-tab-width (if indent-tabs-mode tab-width 0))
             (type (org-element-type datum))
-            (ind (org-with-wide-buffer
-                  (goto-char (org-element-property :begin datum))
-                  (current-indentation)))
+            (block-ind (org-with-wide-buffer
+                        (goto-char (org-element-property :begin datum))
+                        (current-indentation)))
+            (content-ind org-edit-src-content-indentation)
             (preserve-ind
              (and (memq type '(example-block src-block))
                   (or (org-element-property :preserve-indent datum)
@@ -529,7 +533,8 @@ Leave point in edit buffer."
        (setq org-src--end-marker end)
        (setq org-src--remote remote)
        (setq org-src--source-type type)
-       (setq org-src--block-indentation ind)
+       (setq org-src--block-indentation block-ind)
+       (setq org-src--content-indentation content-ind)
        (setq org-src--preserve-indentation preserve-ind)
        (setq org-src--overlay overlay)
        (setq org-src--allow-write-back write-back)
-- 
2.24.0

Reply via email to