* PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
@ 2023-02-22 7:29 Karl Fogel
2023-02-22 15:57 ` Max Nikulin
0 siblings, 1 reply; 12+ messages in thread
From: Karl Fogel @ 2023-02-22 7:29 UTC (permalink / raw)
To: Org Mode
Hey everyone, is there a reason we don't bind
`org-fold-hide-subtree' by default in Org Mode?
I bind it to C-<tab> and now find this to be one of the most
useful keybindings in Org Mode. I suspect my workflow is pretty
typical.
The use case is simple:
When reading material within a certain heading level, one often
decides that one is done with that section (and therefore done
with everything inside it -- including anything at deeper levels
of nesting). So one just folds the entire subtree around point
and moves on, without changing the visibility of any of the
sibling-or-higher subtrees around it (because often the next place
one is going is one of them).
This is one of my most frequent actions in Org Mode. In fact, I
think it might be the most common Org Mode command I run.
It seems like an obvious thing have bound to a key, and yet Org
Mode doesn't bind it by default. Should we?
(I put it on "C-<tab>" because that's normally unbound in Org
Mode, and because so many of the Org Mode cycling commands involve
modified tab already. But I don't feel strongly about the
particular key, as long as it's fast to type; maybe there's a
better key available.)
I looked for prior discussion about this in the archives and
didn't find anything:
https://list.orgmode.org/?q=org-fold-hide-subtree
Best regards,
-Karl
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-22 7:29 PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode Karl Fogel
@ 2023-02-22 15:57 ` Max Nikulin
2023-02-22 17:01 ` Karl Fogel
0 siblings, 1 reply; 12+ messages in thread
From: Max Nikulin @ 2023-02-22 15:57 UTC (permalink / raw)
To: emacs-orgmode
On 22/02/2023 14:29, Karl Fogel wrote:
> I put it on "C-<tab>" because that's normally unbound in Org Mode, and
> because so many of the Org Mode cycling commands involve modified tab
> already.
Perhaps C-<tab> is not the best choice:
9092c289b6bea38bb519e6c59a60237ae5af8f08
author Bastien Mon Jun 1 14:39:28 2020 +0200
Bind `org-force-cycle-archived' to C-c C-TAB
* lisp/org-keys.el (org-mode-map): Bind `org-force-cycle-archived'
to C-c C-TAB instead of C-TAB to avoid conflict with native Emacs
keybinding.
...
-(org-defkey org-mode-map (kbd "C-<tab>") #'org-force-cycle-archived)
+(org-defkey org-mode-map (kbd "C-c C-<tab>") #'org-force-cycle-archived)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-22 15:57 ` Max Nikulin
@ 2023-02-22 17:01 ` Karl Fogel
2023-02-23 2:35 ` Max Nikulin
0 siblings, 1 reply; 12+ messages in thread
From: Karl Fogel @ 2023-02-22 17:01 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
On 22 Feb 2023, Max Nikulin wrote:
>On 22/02/2023 14:29, Karl Fogel wrote:
>> I put it on "C-<tab>" because that's normally unbound in Org
>> Mode,
>> and because so many of the Org Mode cycling commands involve
>> modified tab already.
>
>Perhaps C-<tab> is not the best choice:
>
>9092c289b6bea38bb519e6c59a60237ae5af8f08
>author Bastien Mon Jun 1 14:39:28 2020 +0200
>
>Bind `org-force-cycle-archived' to C-c C-TAB
>
>* lisp/org-keys.el (org-mode-map): Bind
>`org-force-cycle-archived'
>to C-c C-TAB instead of C-TAB to avoid conflict with native Emacs
>keybinding.
Ah, clearly it is not a good choice -- thank you for noticing
that.
I think there are two separate questions here:
1) Would it be useful to bind `org-fold-hide-subtree' by default?
2) If yes to (1), then is there a good key to bind it to? (C-c
C-something, I guess.)
If we agree on (1), then let's figure out the answer to (2). I
don't know if anyone else agrees about (1) yet, though.
By the way, the binding in my Org Mode hook looks like this:
(when (not (keymap-lookup nil "C-<tab>"))
(keymap-local-set "C-<tab>" 'org-fold-hide-subtree))
So FWIW C-<tab> is not bound in Org Mode buffers for me, in Emacs
30.x (i.e., recent development builds). However, I agree with
Bastien's logic: C-<tab> is not in the reserved keymap space, so
Emacs might bind it (and perhaps does bind it in other modes).
I don't know how widely-used `org-cycle-force-archived' is (that's
the new name of that function). I don't use it, personally, so if
we decide against (1)+(2) above, then perhaps I'll just override
that binding for myself instead.
Best regards,
-Karl
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-22 17:01 ` Karl Fogel
@ 2023-02-23 2:35 ` Max Nikulin
2023-02-23 4:48 ` Samuel Wales
2023-02-23 19:02 ` PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode Karl Fogel
0 siblings, 2 replies; 12+ messages in thread
From: Max Nikulin @ 2023-02-23 2:35 UTC (permalink / raw)
To: emacs-orgmode
On 23/02/2023 00:01, Karl Fogel wrote:
>
> (when (not (keymap-lookup nil "C-<tab>"))
> (keymap-local-set "C-<tab>" 'org-fold-hide-subtree))
>
> So FWIW C-<tab> is not bound in Org Mode buffers for me, in Emacs 30.x
> (i.e., recent development builds).
lisp/tab-bar.el:130: (unless (global-key-binding [(control tab)])
lisp/tab-bar.el:131: (global-set-key [(control tab)] #'tab-next))
Minibuffer file cache completion should not be relevant to Org buffers.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-23 2:35 ` Max Nikulin
@ 2023-02-23 4:48 ` Samuel Wales
2023-02-25 8:01 ` Key binding in help (was: Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.) Max Nikulin
2023-02-23 19:02 ` PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode Karl Fogel
1 sibling, 1 reply; 12+ messages in thread
From: Samuel Wales @ 2023-02-23 4:48 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
huh i had put org-next-link there. i wish define-key could have a
button in a help page like functions and vars do so you could go to
where you define it. [there are probably 300 competing packages that
do exactly that.]
On 2/22/23, Max Nikulin <manikulin@gmail.com> wrote:
> On 23/02/2023 00:01, Karl Fogel wrote:
>>
>> (when (not (keymap-lookup nil "C-<tab>"))
>> (keymap-local-set "C-<tab>" 'org-fold-hide-subtree))
>>
>> So FWIW C-<tab> is not bound in Org Mode buffers for me, in Emacs 30.x
>> (i.e., recent development builds).
>
> lisp/tab-bar.el:130: (unless (global-key-binding [(control tab)])
> lisp/tab-bar.el:131: (global-set-key [(control tab)] #'tab-next))
>
> Minibuffer file cache completion should not be relevant to Org buffers.
>
>
>
--
The Kafka Pandemic
A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-23 2:35 ` Max Nikulin
2023-02-23 4:48 ` Samuel Wales
@ 2023-02-23 19:02 ` Karl Fogel
2023-02-25 0:13 ` Karl Fogel
1 sibling, 1 reply; 12+ messages in thread
From: Karl Fogel @ 2023-02-23 19:02 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
On 23 Feb 2023, Max Nikulin wrote:
>On 23/02/2023 00:01, Karl Fogel wrote:
>> (when (not (keymap-lookup nil "C-<tab>"))
>> (keymap-local-set "C-<tab>" 'org-fold-hide-subtree))
>> So FWIW C-<tab> is not bound in Org Mode buffers for me, in
>> Emacs
>> 30.x (i.e., recent development builds).
>
>lisp/tab-bar.el:130: (unless (global-key-binding [(control
>tab)])
>lisp/tab-bar.el:131: (global-set-key [(control tab)]
>#'tab-next))
>
>Minibuffer file cache completion should not be relevant to Org
>buffers.
Ah, I don't use tab-bar at all (at least not as far as I know), so
I'm not 100% sure what the above is saying.
Are you saying that the only current default binding for C-<tab>
in Emacs is that one in tab-bar.el, and therefore we should feel
free to rebind it in Org Mode? If so, we should still be
cautious, since Emacs has policies for maintaining the keybinding
space. Generally, the space "C-c C-<LETTER>" is reserved for
major modes, so ideally we should find something in there if we
can -- although Org Mode has used up a lot of that space already
:-), so I'm not sure what's left, unless we decide to swap out
some existing binding in favor of this one.
(I realize this contradicts what I said in my inital post. I had
forgotten that C-<tab> was not part of the mode-reserved space.)
Best regards,
-Karl
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-23 19:02 ` PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode Karl Fogel
@ 2023-02-25 0:13 ` Karl Fogel
2023-02-25 11:26 ` Max Nikulin
0 siblings, 1 reply; 12+ messages in thread
From: Karl Fogel @ 2023-02-25 0:13 UTC (permalink / raw)
To: emacs-orgmode
Okay, today I did some research and found that every "C-c
C-<letter>" binding is used in Org Mode except for "C-c C-g".
While that one is technically reserved for the mode's use, I
suspect the reason it's unbound is that people are accustomed to
using C-g as a quit command (and they get that effect if they
accidentally type C-c, because then they type C-g and it's just an
undefined key -- i.e., it quits, which is what the user wanted).
Note that while "C-c C-h" does not appear to be bound, it actually
is: it gets you a help buffer about the Org Mode keybindings
(which then, ironically, does not list "C-c C-h" as one of the
bindings).
(It's not clear to me whether Emacs's conventions consider "C-c
C-i" to be a letter or whether they treat "C-i" as "TAB" and
consider it special; based on the previous evidence in this
thread, maybe the latter, so we shouldn't consider "C-c C-i" to be
available.)
I think what this is telling me is that Org Mode keybinding real
estate is quite valuable :-), and that unless there are other
people who feel as strongly as I do that `org-fold-hide-subtree'
is amazingly useful, we probably won't decide to bind it by
default in Org Mode. So I should just continue to bind it to a
custom key myself and continue to live a glorious life all alone
in my private keymap splendour.
Best regards,
-Karl
I wrote:
>On 23 Feb 2023, Max Nikulin wrote:
>>On 23/02/2023 00:01, Karl Fogel wrote:
>>> =C2=A0(when (not (keymap-lookup nil "C-<tab>"))
>>> =C2=A0=C2=A0 (keymap-local-set "C-<tab>"
>>> 'org-fold-hide-subtree))
>>> So FWIW C-<tab> is not bound in Org Mode buffers for me, in=20
>>> Emacs
>>> 30.x (i.e., recent development builds).
>>
>>lisp/tab-bar.el:130: (unless (global-key-binding [(control=20
>>tab)])
>>lisp/tab-bar.el:131: (global-set-key [(control tab)]=20
>>#'tab-next))
>>
>>Minibuffer file cache completion should not be relevant to
>>Org=20
>>buffers.
>
>Ah, I don't use tab-bar at all (at least not as far as I know),
>so=20
>I'm not 100% sure what the above is saying.
>
>Are you saying that the only current default binding for
>C-<tab>=20
>in Emacs is that one in tab-bar.el, and therefore we should
>feel=20
>free to rebind it in Org Mode? If so, we should still be=20
>cautious, since Emacs has policies for maintaining the
>keybinding=20
>space. Generally, the space "C-c C-<LETTER>" is reserved for=20
>major modes, so ideally we should find something in there if
>we=20
>can -- although Org Mode has used up a lot of that space
>already=20
>:-), so I'm not sure what's left, unless we decide to swap out=20
>some existing binding in favor of this one.
>
>(I realize this contradicts what I said in my inital post. I
>had=20
>forgotten that C-<tab> was not part of the mode-reserved space.)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Key binding in help (was: Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.)
2023-02-23 4:48 ` Samuel Wales
@ 2023-02-25 8:01 ` Max Nikulin
2023-02-25 23:32 ` Samuel Wales
0 siblings, 1 reply; 12+ messages in thread
From: Max Nikulin @ 2023-02-25 8:01 UTC (permalink / raw)
To: emacs-orgmode
On 23/02/2023 11:48, Samuel Wales wrote:
> huh i had put org-next-link there. i wish define-key could have a
> button in a help page like functions and vars do so you could go to
> where you define it. [there are probably 300 competing packages that
> do exactly that.]
C-h f org-next-link
displays at the top:
It is bound to C-c C-x C-n, <menu-bar> <Org> <Hyperlinks> <Next link>.
Is it the feature you are asking for? This one is available out of the box.
Unfortunately it is not trivial to discover binding from a file that is
not loaded. Actually I found `tab-next' in the manual at first. Earlier
attempts with "C-<tab>" and "C-TAB" failed due to "[(control tab)]" is
used in tab-bar.el.
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-25 0:13 ` Karl Fogel
@ 2023-02-25 11:26 ` Max Nikulin
2023-02-25 17:33 ` Karl Fogel
0 siblings, 1 reply; 12+ messages in thread
From: Max Nikulin @ 2023-02-25 11:26 UTC (permalink / raw)
To: emacs-orgmode
On 25/02/2023 07:13, Karl Fogel wrote:
> Okay, today I did some research and found that every "C-c C-<letter>"
> binding is used in Org Mode except for "C-c C-g". While that one is
> technically reserved for the mode's use
No, there is an explicit exception for C-g, see (info "(elisp) Key
Binding Conventions") in "Tips and Conventions" appendix.
https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html
> (It's not clear to me whether Emacs's conventions consider "C-c C-i" to
> be a letter or whether they treat "C-i" as "TAB" and consider it
> special; based on the previous evidence in this thread, maybe the
> latter, so we shouldn't consider "C-c C-i" to be available.)
It might be a problem to distinguish C-i and <tab> in text terminal.
Issues with "C-c C-," raised on this list
- (info "(emacs) Named ASCII Chars")
https://www.gnu.org/software/emacs/manual/html_node/emacs/Named-ASCII-Chars.html
- (info "(elisp) Function Keys")
https://www.gnu.org/software/emacs/manual/html_node/elisp/Function-Keys.html
A similar issue exists with C-S-letter
- (info "(emacs) Modifier Keys")
https://www.gnu.org/software/emacs/manual/html_node/emacs/Modifier-Keys.html
- (info "(elisp) Other Char Bits")
https://www.gnu.org/software/emacs/manual/html_node/elisp/Other-Char-Bits.html
> I think what this is telling me is that Org Mode keybinding real estate
> is quite valuable :-),
Even C-c C-x prefix is quite busy. Other modifiers might be a rescue:
C-c M-something.
However perhaps M-x with fuzzy completion allowing typos (and ideally
synonyms) might be a better solution.
>> Are you saying that the only current default binding for C-<tab>=20
>> in Emacs is that one in tab-bar.el, and therefore we should feel=20
>> free to rebind it in Org Mode?
No, [Ctrl+Tab] and [Ctrl+Shift+Tab] is widely used in other applications
to switch to next/previous tabs. I would strongly prefer to keep it
consistent across as much applications as possible. (There are corner
cases like e.g. vim with multiple tabs running in a terminal application
having several tabs as well. E.g. gnome terminal is able to pass
[Ctrl+PgDn], a [Ctrl+Tab] alternative, while it has single tab, but
intercepts the same shortcut when more terminal tabs are opened, so vim
keys have to be used.)
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.
2023-02-25 11:26 ` Max Nikulin
@ 2023-02-25 17:33 ` Karl Fogel
0 siblings, 0 replies; 12+ messages in thread
From: Karl Fogel @ 2023-02-25 17:33 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
On 25 Feb 2023, Max Nikulin wrote:
>On 25/02/2023 07:13, Karl Fogel wrote:
>> Okay, today I did some research and found that every "C-c
>> C-<letter>" binding is used in Org Mode except for "C-c
>> C-g". While
>> that one is technically reserved for the mode's use
>
>No, there is an explicit exception for C-g, see (info "(elisp)
>Key
>Binding Conventions") in "Tips and Conventions" appendix.
>https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Binding-Conventions.html
Ah, thanks for pointing that out.
>Even C-c C-x prefix is quite busy. Other modifiers might be a
>rescue:
>C-c M-something.
>
>However perhaps M-x with fuzzy completion allowing typos (and
>ideally
>synonyms) might be a better solution.
Well, sure -- we get that for free.
I think we can consider this proposal over. While I find
`org-fold-hide-subtree' very useful, the Org Mode default keyspace
is very busy already, and we don't hear anyone proposing to drop
something else in favor of `org-fold-hide-subtree'. Anyone can
custom-bind it themselves, of course (which is what I'll continue
doing).
>No, [Ctrl+Tab] and [Ctrl+Shift+Tab] is widely used in other
>applications to switch to next/previous tabs. I would strongly
>prefer
>to keep it consistent across as much applications as
>possible. (There
>are corner cases like e.g. vim with multiple tabs running in a
>terminal application having several tabs as well. E.g. gnome
>terminal
>is able to pass [Ctrl+PgDn], a [Ctrl+Tab] alternative, while it
>has
>single tab, but intercepts the same shortcut when more terminal
>tabs
>are opened, so vim keys have to be used.)
Agreed.
Best regards,
-Karl
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Key binding in help (was: Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.)
2023-02-25 8:01 ` Key binding in help (was: Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.) Max Nikulin
@ 2023-02-25 23:32 ` Samuel Wales
2023-03-08 15:27 ` Max Nikulin
0 siblings, 1 reply; 12+ messages in thread
From: Samuel Wales @ 2023-02-25 23:32 UTC (permalink / raw)
To: Max Nikulin; +Cc: emacs-orgmode
what i meant was that i have a binding, org-next-link, bound to c-tab.
i acccomplished this with (define-key org-mode-map (quote [C-tab])
(quote org-next-link)) [kbd would be better].
i did similar with org-link-minor-mode. i was just offtopicing that
it would be useful to jump to those definitions.
i.e. like m-. on a function name, if that is set up to work, or c-h f
command tab ret to go to the fuction definition, but for keys.
On 2/25/23, Max Nikulin <manikulin@gmail.com> wrote:
> On 23/02/2023 11:48, Samuel Wales wrote:
>> huh i had put org-next-link there. i wish define-key could have a
>> button in a help page like functions and vars do so you could go to
>> where you define it. [there are probably 300 competing packages that
>> do exactly that.]
>
> C-h f org-next-link
>
> displays at the top:
>
> It is bound to C-c C-x C-n, <menu-bar> <Org> <Hyperlinks> <Next link>.
>
> Is it the feature you are asking for? This one is available out of the box.
>
> Unfortunately it is not trivial to discover binding from a file that is
> not loaded. Actually I found `tab-next' in the manual at first. Earlier
> attempts with "C-<tab>" and "C-TAB" failed due to "[(control tab)]" is
> used in tab-bar.el.
>
>
>
--
The Kafka Pandemic
A blog about science, health, human rights, and misopathy:
https://thekafkapandemic.blogspot.com
^ permalink raw reply [flat|nested] 12+ messages in thread
* Re: Key binding in help (was: Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.)
2023-02-25 23:32 ` Samuel Wales
@ 2023-03-08 15:27 ` Max Nikulin
0 siblings, 0 replies; 12+ messages in thread
From: Max Nikulin @ 2023-03-08 15:27 UTC (permalink / raw)
To: emacs-orgmode
On 26/02/2023 06:32, Samuel Wales wrote:
> i acccomplished this with (define-key org-mode-map (quote [C-tab])
> (quote org-next-link)) [kbd would be better].
...
> i.e. like m-. on a function name, if that is set up to work, or c-h f
> command tab ret to go to the fuction definition, but for keys.
I do not mind to have such feature as well. If you really want to get
it, you should send a feature request to bug-gnu-emacs.
>> On 23/02/2023 11:48, Samuel Wales wrote:
>>> [there are probably 300 competing packages that
>>> do exactly that.]
I expect that it should be implemented in Emacs core since updated
`define-key' should be available rather early during initialization.
Looking into
https://www.gnu.org/software/emacs/manual/html_node/elisp/Format-of-Keymaps.html
https://www.gnu.org/software/emacs/manual/html_node/elisp/Key-Lookup.html
I do not see a ready to use slot for location of key definition. Another
point is that keymap extension should not noticeably affect performance.
^ permalink raw reply [flat|nested] 12+ messages in thread
end of thread, other threads:[~2023-03-08 15:28 UTC | newest]
Thread overview: 12+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-02-22 7:29 PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode Karl Fogel
2023-02-22 15:57 ` Max Nikulin
2023-02-22 17:01 ` Karl Fogel
2023-02-23 2:35 ` Max Nikulin
2023-02-23 4:48 ` Samuel Wales
2023-02-25 8:01 ` Key binding in help (was: Re: PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode.) Max Nikulin
2023-02-25 23:32 ` Samuel Wales
2023-03-08 15:27 ` Max Nikulin
2023-02-23 19:02 ` PROPOSAL: Bind `org-fold-hide-subtree' by default in Org Mode Karl Fogel
2023-02-25 0:13 ` Karl Fogel
2023-02-25 11:26 ` Max Nikulin
2023-02-25 17:33 ` Karl Fogel
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.