emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Binding RET to org-return-and-maybe-indent
@ 2020-07-22 12:12 Jarmo Hurri
  2020-07-22 14:50 ` Kévin Le Gouguec
  0 siblings, 1 reply; 10+ messages in thread
From: Jarmo Hurri @ 2020-07-22 12:12 UTC (permalink / raw)
  To: emacs-orgmode


Hello.

Is there any downside to binding RET to org-return-and-maybe-indent?

I want to remove RET indentation in org mode. For example

# ---------------------------------------------------------------
* Demo of indentation
  - when I press return at the end of the word THIS
  - I get indentation
# ---------------------------------------------------------------

However, if I call org-return-and-maybe-indent at the same point, I do
not get indentation.

But would changing the binding of RET cause issues elsewhere?

I am running Org mode version 9.3.7 (release_9.3.7-694-g7069dc).

Jarmo



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

* Re: Binding RET to org-return-and-maybe-indent
  2020-07-22 12:12 Binding RET to org-return-and-maybe-indent Jarmo Hurri
@ 2020-07-22 14:50 ` Kévin Le Gouguec
  2020-07-23  5:55   ` Jarmo Hurri
  2020-07-23  9:52   ` Jarmo Hurri
  0 siblings, 2 replies; 10+ messages in thread
From: Kévin Le Gouguec @ 2020-07-22 14:50 UTC (permalink / raw)
  To: Jarmo Hurri; +Cc: emacs-orgmode

Jarmo Hurri <jarmo.hurri@iki.fi> writes:

> Is there any downside to binding RET to org-return-and-maybe-indent?
>
> I want to remove RET indentation in org mode. For example
>
> # ---------------------------------------------------------------
> * Demo of indentation
>   - when I press return at the end of the word THIS
>   - I get indentation
> # ---------------------------------------------------------------

RET indentation is something that has been introduced recently on the
master branch (which will become Org 9.4 soon).  In Org 9.3, with your
example, RET does not indent, while C-j does.

As ORG-NEWS notes, if you want RET to stop indenting, you can disable
electric-indent-mode in org-mode-hook:

#+begin_src emacs-lisp
(add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
#+end_src

> However, if I call org-return-and-maybe-indent at the same point, I do
> not get indentation.
>
> But would changing the binding of RET cause issues elsewhere?

I can't think of any bad side-effect, but my imagination might be
lacking.  The only downside I can think of is that RET will become
redundant with C-j.


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

* Re: Binding RET to org-return-and-maybe-indent
  2020-07-22 14:50 ` Kévin Le Gouguec
@ 2020-07-23  5:55   ` Jarmo Hurri
  2020-07-23  9:52   ` Jarmo Hurri
  1 sibling, 0 replies; 10+ messages in thread
From: Jarmo Hurri @ 2020-07-23  5:55 UTC (permalink / raw)
  To: emacs-orgmode


Hello Kévin.

Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:

> RET indentation is something that has been introduced recently on the
> master branch (which will become Org 9.4 soon).  In Org 9.3, with your
> example, RET does not indent, while C-j does.

I was wondering why this bothered me! Such a little thing can have a
drastic effect on your workflow when it is repeated so many times.

> As ORG-NEWS notes, if you want RET to stop indenting, you can disable
> electric-indent-mode in org-mode-hook:

Thanks, I now located this feature change description in ORG-NEWS.

>> But would changing the binding of RET cause issues elsewhere?
>
> I can't think of any bad side-effect, but my imagination might be
> lacking.  The only downside I can think of is that RET will become
> redundant with C-j.

Now I have two options. I will start by disabling electric-indent-mode
in org. If that causes weird side effects, then I will rebind RET.

Thank you for your most complete answer.

All the best, and stay safe.

Jarmo



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

* Re: Binding RET to org-return-and-maybe-indent
  2020-07-22 14:50 ` Kévin Le Gouguec
  2020-07-23  5:55   ` Jarmo Hurri
@ 2020-07-23  9:52   ` Jarmo Hurri
  2020-07-23 15:00     ` Kévin Le Gouguec
  1 sibling, 1 reply; 10+ messages in thread
From: Jarmo Hurri @ 2020-07-23  9:52 UTC (permalink / raw)
  To: emacs-orgmode


Hello again.

Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:

> As ORG-NEWS notes, if you want RET to stop indenting, you can disable
> electric-indent-mode in org-mode-hook:
>
> #+begin_src emacs-lisp
> (add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
> #+end_src

Unfortunately this has side effects: it changes at least the way
parentheses and indentation interact when opening a Babel source code
block. It might be a good idea to mention this in ORG-NEWS.

Next I will try to change the binding of RET.

All the best, and stay safe.

Jarmo



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

* Re: Binding RET to org-return-and-maybe-indent
  2020-07-23  9:52   ` Jarmo Hurri
@ 2020-07-23 15:00     ` Kévin Le Gouguec
  2020-07-24  4:26       ` Jarmo Hurri
  0 siblings, 1 reply; 10+ messages in thread
From: Kévin Le Gouguec @ 2020-07-23 15:00 UTC (permalink / raw)
  To: Jarmo Hurri; +Cc: emacs-orgmode

Jarmo Hurri <jarmo.hurri@iki.fi> writes:

>> #+begin_src emacs-lisp
>> (add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
>> #+end_src
>
> Unfortunately this has side effects: it changes at least the way
> parentheses and indentation interact when opening a Babel source code
> block. It might be a good idea to mention this in ORG-NEWS.

Could you give us a precise recipe?  (Starting from emacs -Q and an
empty Org buffer)

I've fiddled a bit with source blocks just now and I'm noticing some
weirdness that I suspect might be due to electric-indent-mode
re-indenting the previous line when hitting RET (or C-j when disabling
electric-indent-mode), but nothing specific to parentheses.

Since I'm a bit pressed for time ATM it would help if you could give a
step-by-step explanation of what goes wrong.


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

* Re: Binding RET to org-return-and-maybe-indent
  2020-07-23 15:00     ` Kévin Le Gouguec
@ 2020-07-24  4:26       ` Jarmo Hurri
  2020-07-24 16:59         ` Kévin Le Gouguec
  0 siblings, 1 reply; 10+ messages in thread
From: Jarmo Hurri @ 2020-07-24  4:26 UTC (permalink / raw)
  To: emacs-orgmode


Hi Kévin.

Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:

>>> #+begin_src emacs-lisp
>>> (add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
>>> #+end_src
>>
>> Unfortunately this has side effects: it changes at least the way
>> parentheses and indentation interact when opening a Babel source code
>> block. It might be a good idea to mention this in ORG-NEWS.
>
> Could you give us a precise recipe?  (Starting from emacs -Q and an
> empty Org buffer)
>
> I've fiddled a bit with source blocks just now and I'm noticing some
> weirdness that I suspect might be due to electric-indent-mode
> re-indenting the previous line when hitting RET (or C-j when disabling
> electric-indent-mode), but nothing specific to parentheses.

At the minimum it changes the way parentheses indent automatically when
editing source code blocks. Below is a minimal demo, documented using
our favorite system.

All the best, and stay safe.

Jarmo

* Demo of the effect of disabling elint
  1. Save this org into file =org-elint-disable.org=
  2. Save the following elisp into =minimal-org.el=, replacing the
     location of org mode with your path:
     #+begin_src elisp
       (add-to-list 'load-path (expand-file-name "~/src/org-mode/lisp"))
       (add-to-list 'load-path (expand-file-name "~/src/org-mode/contrib/lisp" t))
       (add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
     #+end_src
  3. Toggle the last line
     #+begin_src elisp
     (add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
     #+end_src
     in =minimal-org.el= to see the following effect:
     1. Open this file with
        #+begin_src sh
	  emacs -Q -l minimal-org.el org-elint-disable.org
        #+end_src
     2. Type C-c ' for (org-edit-special) in the source code block below,
	and follow the instructions on the comment line.
	#+begin_src java :exports none :classname Demo
	  class Demo
	  {
	      // 1st press RET at the end of this line, then type TAB and }
	#+end_src
  



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

* Re: Binding RET to org-return-and-maybe-indent
  2020-07-24  4:26       ` Jarmo Hurri
@ 2020-07-24 16:59         ` Kévin Le Gouguec
  2020-07-27 10:18           ` Jarmo Hurri
  0 siblings, 1 reply; 10+ messages in thread
From: Kévin Le Gouguec @ 2020-07-24 16:59 UTC (permalink / raw)
  To: Jarmo Hurri; +Cc: emacs-orgmode

Jarmo Hurri <jarmo.hurri@iki.fi> writes:

> * Demo of the effect of disabling elint
>   1. Save this org into file =org-elint-disable.org=
>   2. Save the following elisp into =minimal-org.el=, replacing the
>      location of org mode with your path:
>
>      #+begin_src elisp
>        (add-to-list 'load-path (expand-file-name "~/src/org-mode/lisp"))
>        (add-to-list 'load-path (expand-file-name "~/src/org-mode/contrib/lisp" t))
>        (add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
>      #+end_src
>
>   3. Toggle the last line
>
>      #+begin_src elisp
>      (add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
>      #+end_src
>
>      in =minimal-org.el= to see the following effect:
>      1. Open this file with
>
>         #+begin_src sh
> 	  emacs -Q -l minimal-org.el org-elint-disable.org
>         #+end_src
>
>      2. Type C-c ' for (org-edit-special) in the source code block below,
> 	and follow the instructions on the comment line.
>
> 	#+begin_src java :exports none :classname Demo
> 	  class Demo
> 	  {
> 	      // 1st press RET at the end of this line, then type TAB and }
> 	#+end_src

OK, here are my observations:

* Emacs 28, Org 9.3
  - RET: indented
  - TAB: nothing
  - }: de-indents
* Emacs 28, Org master, electric-indent-mode on
  - RET: indented
  - TAB: nothing
  - }: de-indents
* Emacs 28, Org master, electric-indent-mode off
  - RET: not indented
  - TAB: indents
  - }: does not indent

I think this is just because disabling electric-indent-mode is the wrong
thing to do: it should be electric-indent-local-mode.  The former
changes the default value of electric-indent-mode for *all buffers*,
whereas the intent is to only disable it in Org buffers; we don't want
to affect Org Src buffers…

If I replace (electric-indent-mode -1) with (electric-indent-local-mode
-1) in org-mode-hook, I get the behaviour we have with "Org 9.3" and
"Org master, electric-indent-mode on".

Can you tell me whether electric-indent-local-mode works better for you?
If it does, I'll followup with a patch to ORG-NEWS.


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

* Re: Binding RET to org-return-and-maybe-indent
  2020-07-24 16:59         ` Kévin Le Gouguec
@ 2020-07-27 10:18           ` Jarmo Hurri
  2020-07-27 13:12             ` [PATCH] Fix recommendation in ORG-NEWS (was: Binding RET to org-return-and-maybe-indent) Kévin Le Gouguec
  0 siblings, 1 reply; 10+ messages in thread
From: Jarmo Hurri @ 2020-07-27 10:18 UTC (permalink / raw)
  To: emacs-orgmode


Greetings Kévin.

Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:

> If I replace (electric-indent-mode -1) with
> (electric-indent-local-mode -1) in org-mode-hook, I get the behaviour
> we have with "Org 9.3" and "Org master, electric-indent-mode on".
>
> Can you tell me whether electric-indent-local-mode works better for
> you?  If it does, I'll followup with a patch to ORG-NEWS.

Seems to be working fine. Thank you very much.

All the best, and stay safe.

Jarmo



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

* [PATCH] Fix recommendation in ORG-NEWS (was: Binding RET to org-return-and-maybe-indent)
  2020-07-27 10:18           ` Jarmo Hurri
@ 2020-07-27 13:12             ` Kévin Le Gouguec
  2020-07-29  1:51               ` Kyle Meyer
  0 siblings, 1 reply; 10+ messages in thread
From: Kévin Le Gouguec @ 2020-07-27 13:12 UTC (permalink / raw)
  To: emacs-orgmode

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

Jarmo Hurri <jarmo.hurri@iki.fi> writes:

> Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:
>
>> Can you tell me whether electric-indent-local-mode works better for
>> you?  If it does, I'll followup with a patch to ORG-NEWS.
>
> Seems to be working fine. Thank you very much.

Thanks for the confirmation.

Here is a patch for ORG-NEWS, then:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: 0001-Fix-recommendation-in-9.4-release-notes.patch --]
[-- Type: text/x-patch, Size: 1139 bytes --]

From e5ed2be19d7ada3a0b6dd16fc220c4414b2af4e6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?K=C3=A9vin=20Le=20Gouguec?= <kevin.legouguec@gmail.com>
Date: Mon, 27 Jul 2020 15:00:03 +0200
Subject: [PATCH] Fix recommendation in 9.4 release notes

Cf. <https://orgmode.org/list/87pn8huuq2.fsf@iki.fi/t/#m4f86f6baf790e88ab905007757487a1f481cc579>.

Reported-by: Jarmo Hurri <jarmo.hurri@iki.fi>

* etc/ORG-NEWS (=RET= and =C-j= now obey ~electric-indent-mode~):
Recommend disabling electric-indent-local-mode rather than
electric-indent-mode, as the latter impacts all buffers rather than
just the newly-created Org buffer.
---
 etc/ORG-NEWS | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/etc/ORG-NEWS b/etc/ORG-NEWS
index bc93f8e4f..1ac7486a7 100644
--- a/etc/ORG-NEWS
+++ b/etc/ORG-NEWS
@@ -253,7 +253,7 @@ To get the previous behaviour back, disable ~electric-indent-mode~
 explicitly:
 
 #+begin_src emacs-lisp
-(add-hook 'org-mode-hook (lambda () (electric-indent-mode -1)))
+(add-hook 'org-mode-hook (lambda () (electric-indent-local-mode -1)))
 #+end_src
 
 *** New optional numeric argument for ~org-return~
-- 
2.27.0


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

* Re: [PATCH] Fix recommendation in ORG-NEWS (was: Binding RET to org-return-and-maybe-indent)
  2020-07-27 13:12             ` [PATCH] Fix recommendation in ORG-NEWS (was: Binding RET to org-return-and-maybe-indent) Kévin Le Gouguec
@ 2020-07-29  1:51               ` Kyle Meyer
  0 siblings, 0 replies; 10+ messages in thread
From: Kyle Meyer @ 2020-07-29  1:51 UTC (permalink / raw)
  To: Kévin Le Gouguec; +Cc: emacs-orgmode

Kévin Le Gouguec writes:

> Jarmo Hurri <jarmo.hurri@iki.fi> writes:
>
>> Kévin Le Gouguec <kevin.legouguec@gmail.com> writes:
>>
>>> Can you tell me whether electric-indent-local-mode works better for
>>> you?  If it does, I'll followup with a patch to ORG-NEWS.
>>
>> Seems to be working fine. Thank you very much.
>
> Thanks for the confirmation.
>
> Here is a patch for ORG-NEWS, then:

Thanks, looks good to me.  Applied (0fd9a6ad6).


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

end of thread, other threads:[~2020-07-29  1:51 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-07-22 12:12 Binding RET to org-return-and-maybe-indent Jarmo Hurri
2020-07-22 14:50 ` Kévin Le Gouguec
2020-07-23  5:55   ` Jarmo Hurri
2020-07-23  9:52   ` Jarmo Hurri
2020-07-23 15:00     ` Kévin Le Gouguec
2020-07-24  4:26       ` Jarmo Hurri
2020-07-24 16:59         ` Kévin Le Gouguec
2020-07-27 10:18           ` Jarmo Hurri
2020-07-27 13:12             ` [PATCH] Fix recommendation in ORG-NEWS (was: Binding RET to org-return-and-maybe-indent) Kévin Le Gouguec
2020-07-29  1:51               ` Kyle Meyer

Code repositories for project(s) associated with this 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).