emacs-orgmode@gnu.org archives
 help / color / mirror / code / Atom feed
* Provide org-insert-subitem
@ 2019-09-22  9:04 Dmitrii Korobeinikov
  2020-02-02  7:49 ` Bastien
  0 siblings, 1 reply; 18+ messages in thread
From: Dmitrii Korobeinikov @ 2019-09-22  9:04 UTC (permalink / raw)
  To: emacs-orgmode

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

In short:
org-insert-heading -> org-insert-subheading
org-insert-todo-heading -> org-insert-todo-subheading
org-insert-item -> ?

Maybe should provide org-insert-subitem for consistency?

Regards,
Dmitrii

[-- Attachment #2: Type: text/html, Size: 307 bytes --]

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

* Re: Provide org-insert-subitem
  2019-09-22  9:04 Provide org-insert-subitem Dmitrii Korobeinikov
@ 2020-02-02  7:49 ` Bastien
  2020-02-02 10:11   ` Dmitrii Korobeinikov
  2020-02-02 17:43   ` Adam Porter
  0 siblings, 2 replies; 18+ messages in thread
From: Bastien @ 2020-02-02  7:49 UTC (permalink / raw)
  To: Dmitrii Korobeinikov; +Cc: emacs-orgmode

Hi Dmitrii,

Dmitrii Korobeinikov <dim1212k@gmail.com> writes:

> In short:
> org-insert-heading -> org-insert-subheading
> org-insert-todo-heading -> org-insert-todo-subheading
> org-insert-item -> ?
>
> Maybe should provide org-insert-subitem for consistency?

`org-insert-subheading' and `org-insert-todo-subheading' are not used
anywhere in Org's code.  Do you them?  How?

I'm more inclined to delete these commands since they have no binding
than to add an `org-insert-subitem'.

Hitting <M-RET> then <M-right> seems swift and handy enough.

WDYT?

-- 
 Bastien

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

* Re: Provide org-insert-subitem
  2020-02-02  7:49 ` Bastien
@ 2020-02-02 10:11   ` Dmitrii Korobeinikov
  2020-02-02 17:43   ` Adam Porter
  1 sibling, 0 replies; 18+ messages in thread
From: Dmitrii Korobeinikov @ 2020-02-02 10:11 UTC (permalink / raw)
  To: Bastien; +Cc: emacs-orgmode

Hi, Bastien,

> `org-insert-subheading' and `org-insert-todo-subheading' are not used
> anywhere in Org's code.  Do you them?  How?

I use them as intended: for convenience. Basically, I have a binding for this:

  (defun my/insert-heading ()
    (interactive)
    (end-of-line)
    (cond
     ((string-match (rx (and bol (0+ white) "- [")) (thing-at-point
'line t)) (command-execute 'org-insert-todo-heading))
     ((string-match (rx (and bol (0+ white) "-")) (thing-at-point
'line t)) (command-execute 'org-insert-item))
     (t (if (my/org-heading-collapsed-p) (evil-open-below 1))
(command-execute 'org-insert-heading) (evil-normal-state))))

and a similar function for sub-things. This makes it very easy to
insert (sub)headings/items/todo-items, all with just two bindings.

> Hitting <M-RET> then <M-right> seems swift and handy enough.

Sometimes that would have to be <M-RET> <M-RET> <M-right> when the
items in the list are seperated with a newline. That's an awful lot of
combinations for such a basic task, which I do quite often.

> WDYT?

To me, these functions seem fundamental enough to warrant the
according out-of-the-box experience.

Best,
Dmitrii

вс, 2 февр. 2020 г. в 13:49, Bastien <bzg@gnu.org>:
>
> Hi Dmitrii,
>
> Dmitrii Korobeinikov <dim1212k@gmail.com> writes:
>
> > In short:
> > org-insert-heading -> org-insert-subheading
> > org-insert-todo-heading -> org-insert-todo-subheading
> > org-insert-item -> ?
> >
> > Maybe should provide org-insert-subitem for consistency?
>
> `org-insert-subheading' and `org-insert-todo-subheading' are not used
> anywhere in Org's code.  Do you them?  How?
>
> I'm more inclined to delete these commands since they have no binding
> than to add an `org-insert-subitem'.
>
> Hitting <M-RET> then <M-right> seems swift and handy enough.
>
> WDYT?
>
> --
>  Bastien

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

* Re: Provide org-insert-subitem
  2020-02-02  7:49 ` Bastien
  2020-02-02 10:11   ` Dmitrii Korobeinikov
@ 2020-02-02 17:43   ` Adam Porter
  2020-02-12  8:33     ` Bastien
  1 sibling, 1 reply; 18+ messages in thread
From: Adam Porter @ 2020-02-02 17:43 UTC (permalink / raw)
  To: emacs-orgmode

Bastien <bzg@gnu.org> writes:

> `org-insert-subheading' and `org-insert-todo-subheading' are not used
> anywhere in Org's code.  Do you them?  How?
>
> I'm more inclined to delete these commands since they have no binding
> than to add an `org-insert-subitem'.
>
> Hitting <M-RET> then <M-right> seems swift and handy enough.

Please do not delete org-insert-subheading!  I use it every day and have
for years.  :) It would be much less convenient to have to use two
commands.

BTW, in my version of Org, org-insert-subheading works on both list
items and subheadings, so there's no need for a separate
org-insert-subitem command:

  Insert a new subheading and demote it.
  Works for outline headings and for plain lists alike.

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

* Re: Provide org-insert-subitem
  2020-02-02 17:43   ` Adam Porter
@ 2020-02-12  8:33     ` Bastien
  2020-02-12 21:28       ` Adam Porter
  0 siblings, 1 reply; 18+ messages in thread
From: Bastien @ 2020-02-12  8:33 UTC (permalink / raw)
  To: Adam Porter; +Cc: emacs-orgmode

Adam Porter <adam@alphapapa.net> writes:

> Please do not delete org-insert-subheading!

Done :)

I still find it strange to keep functions that are used nowhere in the
Org's core--except of course for functions that explicitely mention as
usable by the user (e.g. `org-clock-persistence-insinuate'.)

I'd rather have these functions stored in a org-utils.el library for
those who care.

This is not urgent, of course, we can have this discussion later on.

-- 
 Bastien

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

* Re: Provide org-insert-subitem
  2020-02-12  8:33     ` Bastien
@ 2020-02-12 21:28       ` Adam Porter
  2020-02-13  5:13         ` Corwin Brust
  2020-02-13  8:04         ` Bastien
  0 siblings, 2 replies; 18+ messages in thread
From: Adam Porter @ 2020-02-12 21:28 UTC (permalink / raw)
  To: emacs-orgmode

Hi Bastien,

Bastien <bzg@gnu.org> writes:

> I still find it strange to keep functions that are used nowhere in the
> Org's core--except of course for functions that explicitely mention as
> usable by the user (e.g. `org-clock-persistence-insinuate'.)
>
> I'd rather have these functions stored in a org-utils.el library for
> those who care.

I'm not sure what you mean about functions mentioned as usable by the
user.  org-insert-subheading is an interactive command, so it's
explicitly usable by the user.  And it's in org.el, so it's in Org's
"core", right?  I guess we're thinking in different terms.

Inserting a subheading or subitem is a very common operation in an
outlining and list-making tool, so it would seem like a significant
regression to remove it.

I'm not opposed to reorganizing the code, of course, as long as it
remains loaded as a command when org-mode is activated.

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

* Re: Provide org-insert-subitem
  2020-02-12 21:28       ` Adam Porter
@ 2020-02-13  5:13         ` Corwin Brust
  2020-02-13  8:04         ` Bastien
  1 sibling, 0 replies; 18+ messages in thread
From: Corwin Brust @ 2020-02-13  5:13 UTC (permalink / raw)
  To: Adam Porter; +Cc: emacs-orgmode

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

Hi,

On Wed, Feb 12, 2020, 15:28 Adam Porter <adam@alphapapa.net> wrote:

> Hi Bastien,
>
> Bastien <bzg@gnu.org> writes:
>
> > I still find it strange to keep functions that are used nowhere in the
> > Org's core--except of course for functions that explicitely mention as
> > usable by the user (e.g. `org-clock-persistence-insinuate'.)
>

[snip]

And it's in org.el, so it's in Org's
> "core", right?  I guess we're thinking in different terms.
>
> Inserting a subheading or subitem is a very common operation in an
> outlining and list-making tool, so it would seem like a significant
> regression to remove it.
>

I think there's an implied -and usually misleading‐ correlation between the
importance of a function and the count of self-references -meaning uses in
the defining package- shown from help buffers.    It would be cool to see
uses tracked as we byte-compile or something.

I'm not opposed to reorganizing the code, of course, as long as it
> remains loaded as a command when org-mode is activated.
>

I'm a fan of interactive methods in obvious, easy to reach places.

[-- Attachment #2: Type: text/html, Size: 2083 bytes --]

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

* Re: Provide org-insert-subitem
  2020-02-12 21:28       ` Adam Porter
  2020-02-13  5:13         ` Corwin Brust
@ 2020-02-13  8:04         ` Bastien
  2020-02-13 18:45           ` Adam Porter
  1 sibling, 1 reply; 18+ messages in thread
From: Bastien @ 2020-02-13  8:04 UTC (permalink / raw)
  To: Adam Porter; +Cc: emacs-orgmode

Hi Adam,

First of all, don't be afraid, I don't have a grand plan for "cleaning
up" things.

> I'm not sure what you mean about functions mentioned as usable by the
> user.  org-insert-subheading is an interactive command, so it's
> explicitly usable by the user.

Yes, org-insert-subheading is interactive and usable and in Org's core
but how can a user *discover* this command?

There is no keybinding for it and no mention in the manual.  Even as a
function, it is not even used in Org codebase.

The ways I can see for a user to discover this command is by trying to
complete M-x org-insert TAB or by reading Org's code (or other code in
the wild using it.)

So to me it's a "utility" command: something that Org does not depend
on, something that provides a useful feature, but not useful enough to
have a keybinding in Org's core or to be used as a function in Org's
core.

> And it's in org.el, so it's in Org's
> "core", right?  I guess we're thinking in different terms.

Well, my thinking is not about core vs not-core, it is more on how to
advertize such commands and functions.  I would recommand putting them
in org-utils.el but I'm not sure.  And yes, I'm not entirely convinced
such a library, if it existed, should live in Org's core :)

Best,

-- 
 Bastien

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

* Re: Provide org-insert-subitem
  2020-02-13  8:04         ` Bastien
@ 2020-02-13 18:45           ` Adam Porter
  2020-02-14 10:02             ` Bastien
  0 siblings, 1 reply; 18+ messages in thread
From: Adam Porter @ 2020-02-13 18:45 UTC (permalink / raw)
  To: emacs-orgmode

Bastien <bzg@gnu.org> writes:

> First of all, don't be afraid, I don't have a grand plan for "cleaning
> up" things.

Don't worry, I trust you.  :)  Org wouldn't be what it is today without
your work, and I'm grateful for how much time you've been putting into
improving Org lately.

>> I'm not sure what you mean about functions mentioned as usable by the
>> user.  org-insert-subheading is an interactive command, so it's
>> explicitly usable by the user.
>
> Yes, org-insert-subheading is interactive and usable and in Org's core
> but how can a user *discover* this command?
>
> There is no keybinding for it and no mention in the manual.  Even as a
> function, it is not even used in Org codebase.
>
> The ways I can see for a user to discover this command is by trying to
> complete M-x org-insert TAB or by reading Org's code (or other code in
> the wild using it.)

I guess what happened here is that I found that command years ago,
probably from either reading someone else's config online or, as you
say, using completion (I discover so many things using Helm
completion--I'm constantly using "C-h f org-" when working on
Org-related code).  Then I bound it to S-RET in my config, and I've been
using it ever since.  To me it feels like just as much a part of Org as
any other Org command.

> So to me it's a "utility" command: something that Org does not depend
> on, something that provides a useful feature, but not useful enough to
> have a keybinding in Org's core or to be used as a function in Org's
> core.

What if we document it in the manual?  For example, in section 2.5,
"Structure editing", we have:

    `M-<RET>'     (`org-insert-heading')
         Insert a new heading/item with the same level as the one at point.

    `C-<RET>'     (`org-insert-heading-respect-content')
         Insert a new heading at the end of the current subtree.  

    `M-S-<RET>'     (`org-insert-todo-heading')
         Insert new TODO entry with same level as current heading.  See
         also the variable `org-treat-insert-todo-heading-as-state-change'.  

    `C-S-<RET>'     (`org-insert-todo-heading-respect-content')
         Insert new TODO entry with same level as current heading.  Like
         `C-<RET>', the new headline will be inserted after the current
         subtree.  

What if we add:

    `S-<RET>'     (`org-insert-subheading')
         Insert a new subheading and demote it.
         Works for outline headings and for plain lists alike.

Note that I also propose binding it to S-<RET>.  It seems that, by
default, that key is currently bound in Org buffers to
org-table-copy-down:

    Copy the value of the current field one row below.

That's surely a useful function, but I feel like it probably isn't
widely used enough to deserve to be bound to S-<RET> in all contexts.
Of course, frequent users of this command, feel free to correct me, lest
I be a hypocrite.  ;)

If that seems agreeable, then I'd also propose renaming the command
(preserving its old name in an alias, of course) to something which
would not imply that it only works in outlines, perhaps
org-insert-subitem or org-insert-demoted.

In the longer term , perhaps we could make a new, contextual command
that would call one command in tables and another command in non-table
contexts.  If there were a clever way we could make similar, roughly
corresponding actions in both tables and tree structures use the same
bindings contextually, that might be useful.  I think it would be
reasonable, because if point is in a table, the user probably won't want
to insert a new outline heading in the middle of it.

What do you think?  Thanks.

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

* Re: Provide org-insert-subitem
  2020-02-13 18:45           ` Adam Porter
@ 2020-02-14 10:02             ` Bastien
  2023-12-08  2:51               ` Adam Porter
  0 siblings, 1 reply; 18+ messages in thread
From: Bastien @ 2020-02-14 10:02 UTC (permalink / raw)
  To: Adam Porter; +Cc: emacs-orgmode

Hi Adam,

Adam Porter <adam@alphapapa.net> writes:

> What do you think?

I think that's a good idea to promote org-insert-subheading either by
binding it to a key or another way.

I already have some drafty code that might touch things in this (very
sensible) area, so if you don't mind, I'll come back to the details of
your suggestions when I can articulate them with the few ideas I have
in mind.  And after 9.4 is out.

But yes, there is room for enhancements here.

Don't hesitate to bump this thread in a few weeks if I don't share my
ideas since then.

Best,

-- 
 Bastien

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

* Re: Provide org-insert-subitem
  2020-02-14 10:02             ` Bastien
@ 2023-12-08  2:51               ` Adam Porter
  2023-12-09 14:09                 ` Ihor Radchenko
  0 siblings, 1 reply; 18+ messages in thread
From: Adam Porter @ 2023-12-08  2:51 UTC (permalink / raw)
  To: bzg; +Cc: emacs-orgmode

Hi Bastien,

> I think that's a good idea to promote org-insert-subheading either by
> binding it to a key or another way.
> 
> I already have some drafty code that might touch things in this (very
> sensible) area, so if you don't mind, I'll come back to the details of
> your suggestions when I can articulate them with the few ideas I have
> in mind.  And after 9.4 is out.
> 
> But yes, there is room for enhancements here.
> 
> Don't hesitate to bump this thread in a few weeks if I don't share my
> ideas since then.

Well, it's been a few years since I forgot to bump this thread. [0]  :) 
I just rediscovered it after wondering why the command 
org-insert-subheading still doesn't have a default binding.  May we 
revisit this?  I find myself wanting to insert a subheading almost every 
day, and I have to "M-x org-insert-subheading RET".

Of course I could bind it myself, and in one of my configs I have, but I 
still think it deserves a default binding, even if it were to be a 
"smart" command that worked like org-table-copy-down when in a table and 
does org-insert-subheading otherwise (because I still think that "S-RET" 
is an obviously appropriate binding for this command).

What do you think?  =)

Thanks,
Adam

0: https://yhetil.org/orgmode/875zg9trjo.fsf@bzg.fr/


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

* Re: Provide org-insert-subitem
  2023-12-08  2:51               ` Adam Porter
@ 2023-12-09 14:09                 ` Ihor Radchenko
  2023-12-09 17:53                   ` Bastien Guerry
  0 siblings, 1 reply; 18+ messages in thread
From: Ihor Radchenko @ 2023-12-09 14:09 UTC (permalink / raw)
  To: Adam Porter; +Cc: bzg, emacs-orgmode

Adam Porter <adam@alphapapa.net> writes:

> Well, it's been a few years since I forgot to bump this thread. [0]  :) 
> I just rediscovered it after wondering why the command 
> org-insert-subheading still doesn't have a default binding.  May we 
> revisit this?  I find myself wanting to insert a subheading almost every 
> day, and I have to "M-x org-insert-subheading RET".
>
> Of course I could bind it myself, and in one of my configs I have, but I 
> still think it deserves a default binding, even if it were to be a 
> "smart" command that worked like org-table-copy-down when in a table and 
> does org-insert-subheading otherwise (because I still think that "S-RET" 
> is an obviously appropriate binding for this command).
>
> What do you think?  =)

I think that it still makes sense, even after all these years ;)
Would you be interested to submit a patch?

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Provide org-insert-subitem
  2023-12-09 14:09                 ` Ihor Radchenko
@ 2023-12-09 17:53                   ` Bastien Guerry
  2023-12-14 15:00                     ` Ihor Radchenko
  2023-12-17  5:59                     ` Adam Porter
  0 siblings, 2 replies; 18+ messages in thread
From: Bastien Guerry @ 2023-12-09 17:53 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Adam Porter, emacs-orgmode

Hi Adam,

Ihor Radchenko <yantar92@posteo.net> writes:

> Adam Porter <adam@alphapapa.net> writes:
>
>> Well, it's been a few years since I forgot to bump this thread. [0]  :) 
>> I just rediscovered it after wondering why the command 
>> org-insert-subheading still doesn't have a default binding.  May we 
>> revisit this?  I find myself wanting to insert a subheading almost every 
>> day, and I have to "M-x org-insert-subheading RET".
>>
>> Of course I could bind it myself, and in one of my configs I have, but I 
>> still think it deserves a default binding, even if it were to be a 
>> "smart" command that worked like org-table-copy-down when in a table and 
>> does org-insert-subheading otherwise (because I still think that "S-RET" 
>> is an obviously appropriate binding for this command).
>>
>> What do you think?  =)
>
> I think that it still makes sense, even after all these years ;)

+1!  Thanks for reviving this thread.

I would suggest a larger set of enhancements here:

- S-RET on a heading copies down the heading.

  For that we would need a new command `org-clone-subtree' bound to
  S-RET that would immediately copy the heading at point. This command
  would accept a universal argument to allow for a number a clones and
  two universal arguments for adding a time shift.

  `org-clone-subtree-with-time-shift' would continue to be bound to
  `C-c C-x c' but would be really a call to `org-clone-subtree'

- S-RET on a list item calls `org-insert-subitem`, a new command.

- C-M-RET on a heading calls `org-insert-subheading', the existing
  command.

- C-M-RET on a list item calls `org-insert-subitem', a new command.

S-RET already "copy down" a table cells, so I'm really suggesting a
generalization of the current keybinding.

I like C-M-RET better than S-RET because inserting a subheading is
like a "subkey" or inserting a heading.

These improvements seem consistent.  WDYT?

-- 
 Bastien Guerry


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

* Re: Provide org-insert-subitem
  2023-12-09 17:53                   ` Bastien Guerry
@ 2023-12-14 15:00                     ` Ihor Radchenko
  2023-12-25  9:14                       ` Bastien
  2023-12-17  5:59                     ` Adam Porter
  1 sibling, 1 reply; 18+ messages in thread
From: Ihor Radchenko @ 2023-12-14 15:00 UTC (permalink / raw)
  To: Bastien Guerry; +Cc: Adam Porter, emacs-orgmode

Bastien Guerry <bzg@gnu.org> writes:

>>> Of course I could bind it myself, and in one of my configs I have, but I 
>>> still think it deserves a default binding, even if it were to be a 
>>> "smart" command that worked like org-table-copy-down when in a table and 
>>> does org-insert-subheading otherwise (because I still think that "S-RET" 
>>> is an obviously appropriate binding for this command).
>>>
>>> What do you think?  =)
>>
>> I think that it still makes sense, even after all these years ;)
>
> +1!  Thanks for reviving this thread.
>
> I would suggest a larger set of enhancements here:
>
> - S-RET on a heading copies down the heading.
>
>   For that we would need a new command `org-clone-subtree' bound to
>   S-RET that would immediately copy the heading at point. This command
>   would accept a universal argument to allow for a number a clones and
>   two universal arguments for adding a time shift.
>
>   `org-clone-subtree-with-time-shift' would continue to be bound to
>   `C-c C-x c' but would be really a call to `org-clone-subtree'
> ...
> S-RET already "copy down" a table cells, so I'm really suggesting a
> generalization of the current keybinding.

This makes sense.

> - S-RET on a list item calls `org-insert-subitem`, a new command.

Did you mean `org-clone-item'?

> - C-M-RET on a heading calls `org-insert-subheading', the existing
>   command.
>
> - C-M-RET on a list item calls `org-insert-subitem', a new command.
>
> I like C-M-RET better than S-RET because inserting a subheading is
> like a "subkey" or inserting a heading.

I tried to play around a bit with various flavours of X-<RET> commands
and I am not sure if I like C-M-RET:

1. For org-insert-heading, we have multiple variants that allow
   inserting heading at point, after current subtree, and the same
   variants for TODO heading. We don't have enough key combinations left
   to allow all the equivalents for subheadings.

2. With `org-cycle-level-after-item/entry-creation' set to t (default),
   it is actually very easy to create a subheading/subitem using the
   available C/M-[S]-<RET> commands. Just do M-<RET> <TAB>. And the same
   will work for inserting todo headings.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

* Re: Provide org-insert-subitem
  2023-12-09 17:53                   ` Bastien Guerry
  2023-12-14 15:00                     ` Ihor Radchenko
@ 2023-12-17  5:59                     ` Adam Porter
  2023-12-25  9:21                       ` Bastien
  1 sibling, 1 reply; 18+ messages in thread
From: Adam Porter @ 2023-12-17  5:59 UTC (permalink / raw)
  To: Bastien Guerry, Ihor Radchenko; +Cc: emacs-orgmode

Hi Bastien, Ihor,

On 12/9/23 11:53, Bastien Guerry wrote:
> Hi Adam,
> 
> Ihor Radchenko <yantar92@posteo.net> writes:
> 
>> Adam Porter <adam@alphapapa.net> writes:
>>
>>> Well, it's been a few years since I forgot to bump this thread. [0]  :)
>>> I just rediscovered it after wondering why the command
>>> org-insert-subheading still doesn't have a default binding.  May we
>>> revisit this?  I find myself wanting to insert a subheading almost every
>>> day, and I have to "M-x org-insert-subheading RET".
>>>
>>> Of course I could bind it myself, and in one of my configs I have, but I
>>> still think it deserves a default binding, even if it were to be a
>>> "smart" command that worked like org-table-copy-down when in a table and
>>> does org-insert-subheading otherwise (because I still think that "S-RET"
>>> is an obviously appropriate binding for this command).
>>>
>>> What do you think?  =)
>>
>> I think that it still makes sense, even after all these years ;)
> 
> +1!  Thanks for reviving this thread.
> 
> I would suggest a larger set of enhancements here:
> 
> - S-RET on a heading copies down the heading.
> 
>    For that we would need a new command `org-clone-subtree' bound to
>    S-RET that would immediately copy the heading at point. This command
>    would accept a universal argument to allow for a number a clones and
>    two universal arguments for adding a time shift.
> 
>    `org-clone-subtree-with-time-shift' would continue to be bound to
>    `C-c C-x c' but would be really a call to `org-clone-subtree'
> 
> - S-RET on a list item calls `org-insert-subitem`, a new command.
> 
> - C-M-RET on a heading calls `org-insert-subheading', the existing
>    command.
> 
> - C-M-RET on a list item calls `org-insert-subitem', a new command.
> 
> S-RET already "copy down" a table cells, so I'm really suggesting a
> generalization of the current keybinding.
> 
> I like C-M-RET better than S-RET because inserting a subheading is
> like a "subkey" or inserting a heading.
> 
> These improvements seem consistent.  WDYT?

Not that I necessarily object, but that seems like a lot of new things 
to me.  The immediate, simple benefit I seek is provided by this code in 
my config now, binding it to "S-<return>" in org-mode-map:

   (defun ap/org-shift-return (&optional arg)
     "Call `org-insert-subheading' or `org-table-copy-down'."
     (interactive "p")
     (cond ((org-at-table-p)
            (org-table-copy-down arg))
           (t
            (org-insert-subheading arg))))

The "C-M-RET" binding doesn't feel quite right to me.  Using "shift" 
feels like a mnemonic for "sub", whereas "C-M" seems like it should do 
something much less frequently used, since it requires two modifiers.

Ihor also made some good points in his message about the combinations of 
commands to insert before/after, with/without TODO, etc, and that 
"M-<RET> <TAB>" is already a quick way to insert a subheading (I wasn't 
aware of the option `org-cycle-level-after-item/entry-creation').  So 
maybe this idea of mine isn't as important as I thought.  :)

Thanks,
Adam


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

* Re: Provide org-insert-subitem
  2023-12-14 15:00                     ` Ihor Radchenko
@ 2023-12-25  9:14                       ` Bastien
  2023-12-25  9:40                         ` Ihor Radchenko
  0 siblings, 1 reply; 18+ messages in thread
From: Bastien @ 2023-12-25  9:14 UTC (permalink / raw)
  To: Ihor Radchenko; +Cc: Adam Porter, emacs-orgmode

Ihor Radchenko <yantar92@posteo.net> writes:

>> S-RET already "copy down" a table cells, so I'm really suggesting a
>> generalization of the current keybinding.
>
> This makes sense.
>
>> - S-RET on a list item calls `org-insert-subitem`, a new command.
>
> Did you mean `org-clone-item'?

Yes, sorry (`org-clone-item' is better than `org-item-copy-down', the
other idea that comes naturally.)

>> - C-M-RET on a heading calls `org-insert-subheading', the existing
>>   command.
>>
>> - C-M-RET on a list item calls `org-insert-subitem', a new command.
>>
>> I like C-M-RET better than S-RET because inserting a subheading is
>> like a "subkey" or inserting a heading.
>
> I tried to play around a bit with various flavours of X-<RET> commands
> and I am not sure if I like C-M-RET:
>
> 1. For org-insert-heading, we have multiple variants that allow
>    inserting heading at point, after current subtree, and the same
>    variants for TODO heading. We don't have enough key combinations left
>    to allow all the equivalents for subheadings.
>
> 2. With `org-cycle-level-after-item/entry-creation' set to t (default),
>    it is actually very easy to create a subheading/subitem using the
>    available C/M-[S]-<RET> commands. Just do M-<RET> <TAB>. And the same
>    will work for inserting todo headings.

I'm not sure I follow the reasoning here: do you say that we don't
need to find a keybinding for `org-insert-subheading/subitem' because
it is already easy enough to insert a subheading/item using a certain
combinaison of commands?

Or do you suggest we need to find another prefix than "C-M-"? Which
one?

What matter the most to me here is the consistency of commands, but if
the keybindings can reflect that, all the better.

-- 
 Bastien


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

* Re: Provide org-insert-subitem
  2023-12-17  5:59                     ` Adam Porter
@ 2023-12-25  9:21                       ` Bastien
  0 siblings, 0 replies; 18+ messages in thread
From: Bastien @ 2023-12-25  9:21 UTC (permalink / raw)
  To: Adam Porter; +Cc: Ihor Radchenko, emacs-orgmode

Hi Adam,

Adam Porter <adam@alphapapa.net> writes:

> The "C-M-RET" binding doesn't feel quite right to me.  Using "shift"
> feels like a mnemonic for "sub", whereas "C-M" seems like it should do
> something much less frequently used, since it requires two
> modifiers.

I agree that S- suggests "sub".

I've been playing around with C-RET, M-RET, S-RET and I do believe
there is room for improvement here, along with a dedicated keybinding
for `org-insert-subheading/subitem'.  I will refine my proposal later
on.

> Ihor also made some good points in his message about the combinations
> of commands to insert before/after, with/without TODO, etc, and that
> "M-<RET> <TAB>" is already a quick way to insert a subheading (I
> wasn't aware of the option
> `org-cycle-level-after-item/entry-creation').  So maybe this idea of
> mine isn't as important as I thought.  :)

Even if we end up not binding a new key for `org-insert-subheading',
it will be good to add org-clone-item and org-insert-subitem and
perhaps to improve bindings in this area. I will think again about
this.

Thanks!

-- 
 Bastien


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

* Re: Provide org-insert-subitem
  2023-12-25  9:14                       ` Bastien
@ 2023-12-25  9:40                         ` Ihor Radchenko
  0 siblings, 0 replies; 18+ messages in thread
From: Ihor Radchenko @ 2023-12-25  9:40 UTC (permalink / raw)
  To: Bastien; +Cc: Adam Porter, emacs-orgmode

Bastien <bzg@gnu.org> writes:

>> 1. For org-insert-heading, we have multiple variants that allow
>>    inserting heading at point, after current subtree, and the same
>>    variants for TODO heading. We don't have enough key combinations left
>>    to allow all the equivalents for subheadings.
>>
>> 2. With `org-cycle-level-after-item/entry-creation' set to t (default),
>>    it is actually very easy to create a subheading/subitem using the
>>    available C/M-[S]-<RET> commands. Just do M-<RET> <TAB>. And the same
>>    will work for inserting todo headings.
>
> I'm not sure I follow the reasoning here: do you say that we don't
> need to find a keybinding for `org-insert-subheading/subitem' because
> it is already easy enough to insert a subheading/item using a certain
> combinaison of commands?

> Or do you suggest we need to find another prefix than "C-M-"? Which
> one?

I mean that it seems to be easy to insert subheading/subitem already.

You can try:

* Heading<point>
M-RET TAB

or

* Heading<point>
C-S-RET TAB

or

- item<point>
M-RET TAB

We even have this documented in the Structural Editing section of the
manual:

‘<TAB>’ (‘org-cycle’)
     In a new entry with no text yet, the first ‘<TAB>’ demotes the
     entry to become a child of the previous one.  The next ‘<TAB>’
     makes it a parent, and so on, all the way to top level.  Yet
     another ‘<TAB>’, and you are back to the initial level.

Probably, we should mention "subitem/subheading" words in the index or
find some other way to emphasize that it is possible to demote
subheading with TAB.

> What matter the most to me here is the consistency of commands, but if
> the keybindings can reflect that, all the better.

For me, it is important to keep consistency of the keys as well - these
are the core Org keys, and they should be as intuitive as possible.

-- 
Ihor Radchenko // yantar92,
Org mode contributor,
Learn more about Org mode at <https://orgmode.org/>.
Support Org development at <https://liberapay.com/org-mode>,
or support my work at <https://liberapay.com/yantar92>


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

end of thread, other threads:[~2023-12-25  9:38 UTC | newest]

Thread overview: 18+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-09-22  9:04 Provide org-insert-subitem Dmitrii Korobeinikov
2020-02-02  7:49 ` Bastien
2020-02-02 10:11   ` Dmitrii Korobeinikov
2020-02-02 17:43   ` Adam Porter
2020-02-12  8:33     ` Bastien
2020-02-12 21:28       ` Adam Porter
2020-02-13  5:13         ` Corwin Brust
2020-02-13  8:04         ` Bastien
2020-02-13 18:45           ` Adam Porter
2020-02-14 10:02             ` Bastien
2023-12-08  2:51               ` Adam Porter
2023-12-09 14:09                 ` Ihor Radchenko
2023-12-09 17:53                   ` Bastien Guerry
2023-12-14 15:00                     ` Ihor Radchenko
2023-12-25  9:14                       ` Bastien
2023-12-25  9:40                         ` Ihor Radchenko
2023-12-17  5:59                     ` Adam Porter
2023-12-25  9:21                       ` 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).