Re: begin_src Indentation in org 9.4.4, 9.4.5
Hi Sébastien, Sébastien Miquel 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
Re: begin_src Indentation in org 9.4.4, 9.4.5
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 >From 1be7fa790e68d1fc2d198eee81c0d3bb72156d08 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Miquel?= 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
Re: begin_src Indentation in org 9.4.4, 9.4.5
Hi Sébastien, Sébastien Miquel 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
Re: begin_src Indentation in org 9.4.4, 9.4.5
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
Re: begin_src Indentation in org 9.4.4, 9.4.5
!!! Great! > On May 15, 2021, at 6:50 AM, Bastien wrote: > > Hi Nathaniel, > > Ihor Radchenko writes: > >> Nathaniel W Griswold 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
Re: begin_src Indentation in org 9.4.4, 9.4.5
Hi Nathaniel, Ihor Radchenko writes: > Nathaniel W Griswold 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
Re: begin_src Indentation in org 9.4.4, 9.4.5
Nathaniel W Griswold writes: > The formatting i get looks strange: > > #+begin_src sh > echo hi > echo hi > #+end_src Confirmed on master.
Re: begin_src Indentation in org 9.4.4, 9.4.5
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-templatesshecho hiecho hi 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 wrote: > > I messed up the paste, it's supposed to be: > > -- > #+begin_src sh >echo hi > echo hi > > #+end_src > -- >
Re: begin_src Indentation in org 9.4.4, 9.4.5
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 wrote: > > If i launch emacs with emacs -Q /tmp/blah.org > > M-x org-insert-structure-templatesshecho hiecho hi > > 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
begin_src Indentation in org 9.4.4, 9.4.5
If i launch emacs with emacs -Q /tmp/blah.org M-x org-insert-structure-templatesshecho hiecho hi 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