emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* begin_src Indentation in org 9.4.4, 9.4.5
@ 2021-05-07 21:01 Nathaniel W Griswold
  2021-05-07 21:03 ` Nathaniel W Griswold
  0 siblings, 1 reply; 10+ messages in thread
From: Nathaniel W Griswold @ 2021-05-07 21:01 UTC (permalink / raw)
  To: emacs-orgmode

If i launch emacs with emacs -Q /tmp/blah.org

M-x org-insert-structure-template<RET>s<RET>sh<RET>echo hi<RET>echo hi<RET>

It looks like this:

omw

--
#+begin_src sh                                                                                                            
    echo hi                                                                                                              
  echo hi                                                                                                                
                                                                                                                         
#+end_src 
--                                                                                                               

Is this supposed to be the default behavior or am i doing something wrong?

Nate

^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-07 21:01 begin_src Indentation in org 9.4.4, 9.4.5 Nathaniel W Griswold
@ 2021-05-07 21:03 ` Nathaniel W Griswold
  2021-05-07 22:14   ` Nathaniel W Griswold
  0 siblings, 1 reply; 10+ messages in thread
From: Nathaniel W Griswold @ 2021-05-07 21:03 UTC (permalink / raw)
  To: emacs-orgmode

I messed up the paste, it's supposed to be:

--
#+begin_src sh
    echo hi
  echo hi

#+end_src
--

> On May 7, 2021, at 4:01 PM, Nathaniel W Griswold <nate@manicmind.earth> wrote:
> 
> If i launch emacs with emacs -Q /tmp/blah.org
> 
> M-x org-insert-structure-template<RET>s<RET>sh<RET>echo hi<RET>echo hi<RET>
> 
> It looks like this:
> 
> omw
> 
> --
> #+begin_src sh                                                                                                            
>    echo hi                                                                                                              
>  echo hi                                                                                                                
> 
> #+end_src 
> --                                                                                                               
> 
> Is this supposed to be the default behavior or am i doing something wrong?
> 
> Nate



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-07 21:03 ` Nathaniel W Griswold
@ 2021-05-07 22:14   ` Nathaniel W Griswold
  2021-05-08  2:22     ` Ihor Radchenko
  0 siblings, 1 reply; 10+ messages in thread
From: Nathaniel W Griswold @ 2021-05-07 22:14 UTC (permalink / raw)
  To: emacs-orgmode

Sorry i think i scared my email client. I looked at my raw message and some wacky stuff got inserted. I'm rewriting the original message here:

I am wondering if other people experience odd formatting when doing the following in org 9.4.4 and org 9.4.5:

# emacs -Q /tmp/blah.org

M-x org-insert-structure-template<RET>s<RET>sh<RET>echo hi<RET>echo hi<RET>



The formatting i get looks strange:

#+begin_src sh
    echo hi
  echo hi
#+end_src


Thank you


> On May 7, 2021, at 4:03 PM, Nathaniel W Griswold <nate@manicmind.earth> wrote:
> 
> I messed up the paste, it's supposed to be:
> 
> --
> #+begin_src sh
>    echo hi
>  echo hi
> 
> #+end_src
> --
> 



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-07 22:14   ` Nathaniel W Griswold
@ 2021-05-08  2:22     ` Ihor Radchenko
  2021-05-15 11:50       ` Bastien
  0 siblings, 1 reply; 10+ messages in thread
From: Ihor Radchenko @ 2021-05-08  2:22 UTC (permalink / raw)
  To: Nathaniel W Griswold; +Cc: emacs-orgmode

Nathaniel W Griswold <nate@manicmind.earth> writes:
> The formatting i get looks strange:
>
> #+begin_src sh
>     echo hi
>   echo hi
> #+end_src

Confirmed on master.


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-08  2:22     ` Ihor Radchenko
@ 2021-05-15 11:50       ` Bastien
  2021-05-15 11:51         ` Nathaniel W Griswold
  2021-05-17  9:02         ` Sébastien Miquel
  0 siblings, 2 replies; 10+ messages in thread
From: Bastien @ 2021-05-15 11:50 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Nathaniel W Griswold, emacs-orgmode

Hi Nathaniel,

Ihor Radchenko <yantar92@gmail.com> writes:

> Nathaniel W Griswold <nate@manicmind.earth> writes:
>> The formatting i get looks strange:
>>
>> #+begin_src sh
>>     echo hi
>>   echo hi
>> #+end_src
>
> Confirmed on master.

Fixed in the maint branch, thanks.

-- 
 Bastien


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-15 11:50       ` Bastien
@ 2021-05-15 11:51         ` Nathaniel W Griswold
  2021-05-17  9:02         ` Sébastien Miquel
  1 sibling, 0 replies; 10+ messages in thread
From: Nathaniel W Griswold @ 2021-05-15 11:51 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode, Ihor Radchenko

!!!

Great!

> On May 15, 2021, at 6:50 AM, Bastien <bzg@gnu.org> wrote:
> 
> Hi Nathaniel,
> 
> Ihor Radchenko <yantar92@gmail.com> writes:
> 
>> Nathaniel W Griswold <nate@manicmind.earth> writes:
>>> The formatting i get looks strange:
>>> 
>>> #+begin_src sh
>>>    echo hi
>>>  echo hi
>>> #+end_src
>> 
>> Confirmed on master.
> 
> Fixed in the maint branch, thanks.
> 
> -- 
> Bastien



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-15 11:50       ` Bastien
  2021-05-15 11:51         ` Nathaniel W Griswold
@ 2021-05-17  9:02         ` Sébastien Miquel
  2021-05-18  6:37           ` Bastien
  1 sibling, 1 reply; 10+ messages in thread
From: Sébastien Miquel @ 2021-05-17  9:02 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode

Hi Bastien,

The commit `bfda3cc7df31fa79222efb4c190618c3c85a3d04` breaks automatic
(electric) indentation  in src blocks for all configurations.

Here's what happens with the original issue.

When you press `RET` after the first ~hello hi~, the result is that
the first line is indented by two spaces, and the second (where the
point is) isn't.
  - since ~electric-indent-mode~ is on, ~org-return~ is called with
    `indent` set to `t`.
  - Since ~org-src-tab-acts-natively~ is `t`, indentation is done by
    calling `tab` in a src edit buffer, which by itself, does nothing.
  - The observed indentation comes from ~org-src--contents-for-write-back~.
    Since ~org-src--content-indentation~ is 2 and 
~org-src--preserve-indentation~
    is ~nil~, this functions further indents each *non blank* line by 2.

At this point, the first line is indented, cursor is at bol. Note
that you cannot indent your current empty line with `tab`. You can
either indent it manually, or call ~org-edit-special~.

When you write your second line, then press `RET`,
~org-src--contents-for-write-back~ will add an additional two spaces,
producing the reported result.

I think a reasonable fix is to have ~org-src--contents-for-write-back~
also indent blank lines. To do this, you need only remove following
line from its definition.

: (unless (eolp)        ;ignore blank lines

With this done and `bfda3cc7df31fa79222efb4c190618c3c85a3d04`
reverted, the original issue is fixed, and the behaviour is better:
when you press `RET` to enter a newline in a src block, it is
automatically indented.

The downside is that, unless ~org-src--preserve-indentation~ is `t`,
when editing a src block, every empty line will be indented with
spaces (according to ~org-edit-src-content-indentation~ + the
indentation of the #+begin_src line). I think this is reasonable, but
perhaps some might disagree.

Regards,

-- 
Sébastien Miquel



^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-17  9:02         ` Sébastien Miquel
@ 2021-05-18  6:37           ` Bastien
  2021-05-18 13:43             ` Sébastien Miquel
  0 siblings, 1 reply; 10+ messages in thread
From: Bastien @ 2021-05-18  6:37 UTC (permalink / raw)
  To: Sébastien Miquel; +Cc: emacs-orgmode

Hi Sébastien,

Sébastien Miquel <sebastien.miquel@posteo.eu> writes:

> The commit `bfda3cc7df31fa79222efb4c190618c3c85a3d04` breaks automatic
> (electric) indentation  in src blocks for all configurations.

Yes, this was intentional: there are many variables interfering in
this area, and preventing electric indentation for src code blocks
seemed acceptable to me.

Before I revert the commit and try your suggestion, can you share a
patch that add both changes (the revert and your fix) manually so I
can test it?  If this fixes the original issue while preserving
electric indentation, I'm okay with it.

Also, do you want to become the maintainer for org-src.el?  We need
more people taking charge of specific areas in Org's code.

Thanks,

-- 
 Bastien


^ permalink raw reply	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-18  6:37           ` Bastien
@ 2021-05-18 13:43             ` Sébastien Miquel
  2021-05-18 14:08               ` Bastien
  0 siblings, 1 reply; 10+ messages in thread
From: Sébastien Miquel @ 2021-05-18 13:43 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode

[-- Attachment #1: Type: text/plain, Size: 710 bytes --]

Hi Bastien,

Bastien writes:
> Before I revert the commit and try your suggestion, can you share a
> patch that add both changes (the revert and your fix) manually so I
> can test it?  If this fixes the original issue while preserving
> electric indentation, I'm okay with it.
Here's such a patch.

> Also, do you want to become the maintainer for org-src.el?  We need
> more people taking charge of specific areas in Org's code.
I do intend to keep monitoring this list and help around for the
foreseeable future, and I would certainly agree to whatever sort of
maintainer position eventually, but I hold no particular interest (or
deep understanding) in this specific file.

Regards,

-- 
Sébastien Miquel


[-- Attachment #2: 0001-org.el-org-src-contents-for-write-back-Indent-blank-.patch --]
[-- Type: text/x-patch, Size: 2585 bytes --]

From 1be7fa790e68d1fc2d198eee81c0d3bb72156d08 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?S=C3=A9bastien=20Miquel?= <sebastien.miquel@posteo.eu>
Date: Tue, 18 May 2021 14:39:33 +0200
Subject: [PATCH] org.el (org-src--contents-for-write-back): Indent blank lines

* lisp/org.el (org-src--contents-for-write-back): Indent blank lines.
* lisp/org-src.el (org-return): Revert part of commit bfda3cc7df.
---
 lisp/org-src.el | 9 ++++-----
 lisp/org.el     | 6 +-----
 2 files changed, 5 insertions(+), 10 deletions(-)

diff --git a/lisp/org-src.el b/lisp/org-src.el
index 5604e6568..79f002e56 100644
--- a/lisp/org-src.el
+++ b/lisp/org-src.el
@@ -453,15 +453,14 @@ Assume point is in the corresponding edit buffer."
       (insert (org-no-properties contents))
       (goto-char (point-min))
       (when (functionp write-back) (save-excursion (funcall write-back)))
-      ;; Add INDENTATION-OFFSET to every non-empty line in buffer,
+      ;; Add INDENTATION-OFFSET to every line in buffer,
       ;; unless indentation is meant to be preserved.
       (when (> indentation-offset 0)
 	(while (not (eobp))
 	  (skip-chars-forward " \t")
-	  (unless (eolp)		;ignore blank lines
-	    (let ((i (current-column)))
-	      (delete-region (line-beginning-position) (point))
-	      (indent-to (+ i indentation-offset))))
+	  (let ((i (current-column)))
+	    (delete-region (line-beginning-position) (point))
+	    (indent-to (+ i indentation-offset)))
 	  (forward-line))))))
 
 (defun org-src--edit-element
diff --git a/lisp/org.el b/lisp/org.el
index ae09f3e99..0add9bc2e 100644
--- a/lisp/org.el
+++ b/lisp/org.el
@@ -18018,10 +18018,6 @@ object (e.g., within a comment).  In these case, you need to use
 	     (delete-and-extract-region (point) (line-end-position))))
 	(org--newline indent arg interactive)
 	(save-excursion (insert trailing-data))))
-     ;; FIXME: In a source block, don't try to indent as it may result
-     ;; in weird results due to `electric-indent-mode' being `t'.
-     ((eq element-type 'src-block)
-      (org--newline nil nil nil))
      (t
       ;; Do not auto-fill when point is in an Org property drawer.
       (let ((auto-fill-function (and (not (org-at-property-p))
@@ -19167,7 +19163,7 @@ Also align node properties according to `org-property-format'."
 		       (line-beginning-position 2))))
 	     nil)
 	    ((and (eq type 'src-block)
-                  org-src-tab-acts-natively
+		  org-src-tab-acts-natively
 		  (> (line-beginning-position)
 		     (org-element-property :post-affiliated element))
 		  (< (line-beginning-position)
-- 
2.31.1


^ permalink raw reply related	[flat|nested] 10+ messages in thread

* Re: begin_src Indentation in org 9.4.4, 9.4.5
  2021-05-18 13:43             ` Sébastien Miquel
@ 2021-05-18 14:08               ` Bastien
  0 siblings, 0 replies; 10+ messages in thread
From: Bastien @ 2021-05-18 14:08 UTC (permalink / raw)
  To: Sébastien Miquel; +Cc: emacs-orgmode

Hi Sébastien,

Sébastien Miquel <sebastien.miquel@posteo.eu> writes:

> Here's such a patch.

Applied, thanks a lot.

>> Also, do you want to become the maintainer for org-src.el?  We need
>> more people taking charge of specific areas in Org's code.
> I do intend to keep monitoring this list and help around for the
> foreseeable future, and I would certainly agree to whatever sort of
> maintainer position eventually, but I hold no particular interest (or
> deep understanding) in this specific file.

Sure, I understand.  Thanks for your time in helping with this!

Best,

-- 
 Bastien


^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2021-05-18 14:08 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-05-07 21:01 begin_src Indentation in org 9.4.4, 9.4.5 Nathaniel W Griswold
2021-05-07 21:03 ` Nathaniel W Griswold
2021-05-07 22:14   ` Nathaniel W Griswold
2021-05-08  2:22     ` Ihor Radchenko
2021-05-15 11:50       ` Bastien
2021-05-15 11:51         ` Nathaniel W Griswold
2021-05-17  9:02         ` Sébastien Miquel
2021-05-18  6:37           ` Bastien
2021-05-18 13:43             ` Sébastien Miquel
2021-05-18 14:08               ` Bastien

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).