all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* Suggested experimental test
@ 2021-03-20  9:03 Gregory Heytings
  2021-03-20 11:14 ` Jean Louis
                   ` (2 more replies)
  0 siblings, 3 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-20  9:03 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel

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


>
> This concludes our first experimental test on the devel branch.  The 
> amount of feedback wasn't overwhelming, but we did get some -- and I 
> guess the `M-o' command wasn't very popular, so I'm not really that 
> surprised.
>
> So I think it was a moderately successful experiment, and we should use 
> this way of trying out user interface changes more.
>

May I suggest the attached, slightly more controversial, experimental 
test?

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: Type: text/x-diff; name=0001-lisp-loadup.el-Change-the-C-o-open-line-binding-expe.patch, Size: 2185 bytes --]

From 8282fa547f79230a112da9e4e49c4149d4c31f7f Mon Sep 17 00:00:00 2001
From: Gregory Heytings <gregory@heytings.org>
Date: Fri, 19 Mar 2021 18:51:49 +0000
Subject: [PATCH] * lisp/loadup.el: Change the 'C-o' ('open-line') binding
 experimentally

---
 lisp/loadup.el | 34 ++++++++++++++++++++++++++++++++++
 1 file changed, 34 insertions(+)

diff --git a/lisp/loadup.el b/lisp/loadup.el
index 4a0b8f508c..02808365f0 100644
--- a/lisp/loadup.el
+++ b/lisp/loadup.el
@@ -477,6 +477,40 @@
 
 \f
 
+(define-key global-map "\C-o" #'free-ctl-o)
+
+(defun free-ctl-o ()
+  (interactive)
+  (setq prefix-arg current-prefix-arg)
+  (message "Repeat C-o to insert newlines after point, or type C-h or ? for help")
+  (let ((map (make-sparse-keymap)))
+    (define-key map (kbd "C-o") #'open-line)
+    (define-key map (kbd "C-h") #'free-ctl-o-explain)
+    (define-key map (kbd "?") #'free-ctl-o-explain)
+    (set-transient-map map t)))
+
+(defun free-ctl-o-explain ()
+  (interactive)
+  (switch-to-buffer "*Change to C-o*")
+  (let ((inhibit-read-only t))
+    (erase-buffer)
+    (insert "[Type `q' to exit this buffer.]\n\n"
+            "We've disabled the normal `C-o' binding for a month (until April\n"
+            "23th, 2021) in the development version of GNU Emacs, while keeping\n"
+            "the `open-line' command that was bound to `C-o' on repeated `C-o'.\n\n"
+            "If this change doesn't annoy too many people, the plan is to leave\n"
+            "the `C-o' key unbound, except when it is repeated, for usage by\n"
+            "third-party packages.\n\n"
+            "If you wish to restore the `C-o' binding, you can put the following\n"
+            "in your .emacs or .emacs.d/init.el file:\n\n"
+            "(global-set-key (kbd \"C-o\") #'open-line)\n\n"
+            "If you wish to protest this change, please send you thoughts to the\n"
+            "emacs-devel@gnu.org mailing list.\n"))
+  (goto-char (point-min))
+  (special-mode))
+
+\f
+
 (if dump-mode
     (let ((output (cond ((equal dump-mode "pdump") "emacs.pdmp")
                         ((equal dump-mode "dump") "emacs")
-- 
2.30.1


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

* Re: Suggested experimental test
  2021-03-20  9:03 Suggested experimental test Gregory Heytings
@ 2021-03-20 11:14 ` Jean Louis
  2021-03-20 11:27   ` Eli Zaretskii
  2021-03-20 11:34   ` Gregory Heytings
  2021-03-20 12:37 ` Proposal to remove C-o binding [was: Suggested experimental test] Alan Mackenzie
  2021-03-21  6:53 ` Suggested experimental test Lars Ingebrigtsen
  2 siblings, 2 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-20 11:14 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Lars Ingebrigtsen, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-20 12:04]:
> +            "We've disabled the normal `C-o' binding for a month (until April\n"
> +            "23th, 2021) in the development version of GNU Emacs,
> while keeping\n

Yes, go ahead and make the test, why not. I like testing, but I also
do not like changing this C-o to anything else than what it is. This
time I will immediately revert it back due to how many times I use C-o
in Emacs. C-o is in other editors because of Emacs standard
keybindings also in many other Emacs related editors. I use zile
editor, and mg editor and e3em editor depeding on what system I am,
console or GUI, and if Emacs is installed or not. In all those editors
I use C-o

Also is one test like M-o now suppposed to endorse many new tests that
are going against standard and well used keybindings.

Imagine just how that impacts people who depend on instructions spread
all over Internet for Emacs standard key bindings.

Rutgers School of Arts and Sciences publishes it:
https://resources.cs.rutgers.edu/docs/emacs-command-summary/

Yale has article "How to use Emacs" in the clas
https://zoo.cs.yale.edu/classes/cs210/help/emacs.html

Stanford:
http://www-tcad.stanford.edu/local/DOC/emacs_21.html

Michigan State University:
https://www.cse.msu.edu/Resources/Facilities/Howto/TextEditing.php

Columbia:
https://cuit.columbia.edu/emacs

Before making proposals out of the blue, I suggest that from a list of
all key bindings then make:

- a list of very basic standard and wide spread key bindings shall be
  made, that most probably should not change, as that is where one has
  to be reluctant. C-f is a sample member of this list, IMHO C-o as
  well.

- with a list of other keys possible for some changes due to their
  improper placement, as we have seen that M-o was improperly placed
  globally instead of only in enriched mode.

- do tests on the latter.

Jean



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

* Re: Suggested experimental test
  2021-03-20 11:14 ` Jean Louis
@ 2021-03-20 11:27   ` Eli Zaretskii
  2021-03-20 11:34   ` Gregory Heytings
  1 sibling, 0 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-20 11:27 UTC (permalink / raw)
  To: Jean Louis; +Cc: gregory, larsi, emacs-devel

> Date: Sat, 20 Mar 2021 14:14:42 +0300
> From: Jean Louis <bugs@gnu.support>
> Cc: Lars Ingebrigtsen <larsi@gnus.org>, emacs-devel@gnu.org
> 
> - with a list of other keys possible for some changes due to their
>   improper placement, as we have seen that M-o was improperly placed
>   globally instead of only in enriched mode.

M-o is useful in Text mode (and hence many of its derivatives), not
just in Enriched mode.



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

* Re: Suggested experimental test
  2021-03-20 11:14 ` Jean Louis
  2021-03-20 11:27   ` Eli Zaretskii
@ 2021-03-20 11:34   ` Gregory Heytings
  1 sibling, 0 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-20 11:34 UTC (permalink / raw)
  To: Jean Louis; +Cc: Lars Ingebrigtsen, emacs-devel


>
> Before making proposals out of the blue, I suggest...
>

Before commenting on a proposed experiment, I suggest to read it (not just 
its two first lines), and possibly to try it.



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

* Proposal to remove C-o binding [was: Suggested experimental test]
  2021-03-20  9:03 Suggested experimental test Gregory Heytings
  2021-03-20 11:14 ` Jean Louis
@ 2021-03-20 12:37 ` Alan Mackenzie
  2021-03-21  6:53 ` Suggested experimental test Lars Ingebrigtsen
  2 siblings, 0 replies; 154+ messages in thread
From: Alan Mackenzie @ 2021-03-20 12:37 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Lars Ingebrigtsen, emacs-devel

Hello, Gregory.

On Sat, Mar 20, 2021 at 09:03:39 +0000, Gregory Heytings wrote:


> > This concludes our first experimental test on the devel branch.  The 
> > amount of feedback wasn't overwhelming, but we did get some -- and I 
> > guess the `M-o' command wasn't very popular, so I'm not really that 
> > surprised.

I anticipate there will be quite a lot of resentment about this when we
release Emacs 28.1.

> > So I think it was a moderately successful experiment, and we should use 
> > this way of trying out user interface changes more.

Hmm.

> May I suggest the attached, slightly more controversial, experimental 
> test?

I suggest it remains just a suggestion - at least for now.  We won't know
how well or badly the removal of M-o will go until after the release of
Emacs 28.

C-o is a much used binding.  Replacing it with the less convenient C-o
C-o binding is going to annoy people greatly.

Also, we don't really need to free up C-o - we've already got all of M-o
unused.  Where is this all going to stop?

[ .... ]

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: Suggested experimental test
  2021-03-20  9:03 Suggested experimental test Gregory Heytings
  2021-03-20 11:14 ` Jean Louis
  2021-03-20 12:37 ` Proposal to remove C-o binding [was: Suggested experimental test] Alan Mackenzie
@ 2021-03-21  6:53 ` Lars Ingebrigtsen
  2021-03-21  8:35   ` Alfred M. Szmidt
  2021-03-21 10:48   ` Gregory Heytings
  2 siblings, 2 replies; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-21  6:53 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

Gregory Heytings <gregory@heytings.org> writes:

> May I suggest the attached, slightly more controversial, experimental
> test?

Removing `C-o' has already been suggested, and there's already been a
lot of negative feedback on that, if I remember correctly.  So I don't
think there's much point in doing this experiment.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-21  6:53 ` Suggested experimental test Lars Ingebrigtsen
@ 2021-03-21  8:35   ` Alfred M. Szmidt
  2021-03-21 13:20     ` Gregory Heytings
  2021-03-21 10:48   ` Gregory Heytings
  1 sibling, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-21  8:35 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: gregory, emacs-devel

   > May I suggest the attached, slightly more controversial, experimental
   > test?

   Removing `C-o' has already been suggested, and there's already been a
   lot of negative feedback on that, if I remember correctly.  So I don't
   think there's much point in doing this experiment.

I think there was less negative feedback about C-o than about removing
M-o M-s and friends.  Yet that was removed, and not even moved to
another binding -- indeed, rather calls for keeping at least some
where promptly ignored.

Why not just remove all keybindings?  



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

* Re: Suggested experimental test
  2021-03-21  6:53 ` Suggested experimental test Lars Ingebrigtsen
  2021-03-21  8:35   ` Alfred M. Szmidt
@ 2021-03-21 10:48   ` Gregory Heytings
  2021-03-21 10:58     ` Sv: " arthur miller
                       ` (3 more replies)
  1 sibling, 4 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-21 10:48 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel


>> May I suggest the attached, slightly more controversial, experimental 
>> test?
>
> Removing `C-o' has already been suggested, and there's already been a 
> lot of negative feedback on that, if I remember correctly.  So I don't 
> think there's much point in doing this experiment.
>

Well... the suggested experiment does not remove C-o, it changes C-o in a 
way that is, I believe, painless.  We cannot know whether it is indeed 
painless without experimenting at a larger scale.  The few who objected 
against changing C-o may well find out, after trying it out, that this 
small change is not as bad as they thought.

As far as I remember, there has not been a lot of negative feedback on 
changing C-o, the negative feedback was (to my surprise) mostly about the 
possibility of changing the behavior of C-z.



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

* Sv: Suggested experimental test
  2021-03-21 10:48   ` Gregory Heytings
@ 2021-03-21 10:58     ` arthur miller
  2021-03-21 13:20       ` Gregory Heytings
                         ` (2 more replies)
  2021-03-22 10:14     ` Jean Louis
                       ` (2 subsequent siblings)
  3 siblings, 3 replies; 154+ messages in thread
From: arthur miller @ 2021-03-21 10:58 UTC (permalink / raw)
  To: Gregory Heytings, Lars Ingebrigtsen; +Cc: emacs-devel@gnu.org

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

I don't understand why people are so passionately wasting time
on arguing about shortcuts. As I understand Emacs it is supposed
to be molded after each ones preference. Personally to me I rebind
almost anything to my liking and what makes sense to me.

So go ahead please, do any change you wish to C-o or whatever
other shortcut, including C-z, M-x or C-x if you would like 🙂.
________________________________
Från: Emacs-devel <emacs-devel-bounces+arthur.miller=live.com@gnu.org> för Gregory Heytings <gregory@heytings.org>
Skickat: den 21 mars 2021 11:48
Till: Lars Ingebrigtsen <larsi@gnus.org>
Kopia: emacs-devel@gnu.org <emacs-devel@gnu.org>
Ämne: Re: Suggested experimental test


>> May I suggest the attached, slightly more controversial, experimental
>> test?
>
> Removing `C-o' has already been suggested, and there's already been a
> lot of negative feedback on that, if I remember correctly.  So I don't
> think there's much point in doing this experiment.
>

Well... the suggested experiment does not remove C-o, it changes C-o in a
way that is, I believe, painless.  We cannot know whether it is indeed
painless without experimenting at a larger scale.  The few who objected
against changing C-o may well find out, after trying it out, that this
small change is not as bad as they thought.

As far as I remember, there has not been a lot of negative feedback on
changing C-o, the negative feedback was (to my surprise) mostly about the
possibility of changing the behavior of C-z.


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

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

* Re: Suggested experimental test
  2021-03-21 10:58     ` Sv: " arthur miller
@ 2021-03-21 13:20       ` Gregory Heytings
  2021-03-21 18:16       ` Sv: " Alfred M. Szmidt
  2021-03-22 10:24       ` Sv: " Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-21 13:20 UTC (permalink / raw)
  To: arthur miller; +Cc: emacs-devel


>
> I don't understand why people are so passionately wasting time on 
> arguing about shortcuts. As I understand Emacs it is supposed to be 
> molded after each ones preference.
>

Of course Emacs can be molded to ones preferences, but the discussion is 
about Emacs' default bindings, about sensible defaults that improve Emacs' 
user experience for newcomers.  This is not a waste of time, at least not 
more than, say, creating new color themes, or improving the help-for-help 
screen.



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

* Re: Suggested experimental test
  2021-03-21  8:35   ` Alfred M. Szmidt
@ 2021-03-21 13:20     ` Gregory Heytings
  2021-03-21 18:16       ` Alfred M. Szmidt
  0 siblings, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-21 13:20 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: emacs-devel


>
> I think there was less negative feedback about C-o than about removing 
> M-o M-s and friends.  Yet that was removed, and not even moved to 
> another binding -- indeed, rather calls for keeping at least some where 
> promptly ignored.
>

Don't worry, they are not ignored, but it is not possible to do everything 
in one go.



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

* Re: Suggested experimental test
  2021-03-21 13:20     ` Gregory Heytings
@ 2021-03-21 18:16       ` Alfred M. Szmidt
  2021-03-21 22:16         ` Gregory Heytings
  0 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-21 18:16 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

   > I think there was less negative feedback about C-o than about removing 
   > M-o M-s and friends.  Yet that was removed, and not even moved to 
   > another binding -- indeed, rather calls for keeping at least some where 
   > promptly ignored.

   Don't worry, they are not ignored, but it is not possible to do everything 
   in one go.

So is the plan to readd keybindings center-FOO?  What about C-o --
that seems to be hitting the trash can, for whatever reason.  Some of
these bindings (C-o for example) have existed for 40 years in Emacs
(M-o M-s was once upon a time on M-s).

There was alot of thought put into it back then, and the intent was to
make it easy to write code and text.  That was the main intent of
Emacs, and main design decisions in the bindings.  These "freeing up
keybindings" initiatives make it harder for people to use Emacs, not
easier.



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

* Re: Sv: Suggested experimental test
  2021-03-21 10:58     ` Sv: " arthur miller
  2021-03-21 13:20       ` Gregory Heytings
@ 2021-03-21 18:16       ` Alfred M. Szmidt
  2021-03-22  5:11         ` Richard Stallman
  2021-03-22 10:24       ` Sv: " Jean Louis
  2 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-21 18:16 UTC (permalink / raw)
  To: arthur miller; +Cc: gregory, larsi, emacs-devel

If I go to the bakery and buy a tiger sponge cake, I don't expect
coming home with an unbaked cake and all the ingredients in a shooping
bag with broken eggs, and then having a baker with the galls telling
me that I'm wasting my time asking for a pre-baked cake cause "this is
better, you can do anything you want".

I just want a tiger sponge cake, and eat it.

Emacs is first and for most a text editor for code and prose, and not
some bag of pre-mixed ingredients that one has to bake first before
using it.



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

* Re: Suggested experimental test
  2021-03-21 18:16       ` Alfred M. Szmidt
@ 2021-03-21 22:16         ` Gregory Heytings
  2021-03-21 22:54           ` Alfred M. Szmidt
                             ` (3 more replies)
  0 siblings, 4 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-21 22:16 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: emacs-devel


>
> So is the plan to readd keybindings center-FOO?
>

There is no clear predefined plan, just some ideas I'm currently 
experimenting with.

>
> What about C-o -- that seems to be hitting the trash can, for whatever 
> reason.  Some of these bindings (C-o for example) have existed for 40 
> years in Emacs (M-o M-s was once upon a time on M-s).
>
> There was alot of thought put into it back then, and the intent was to 
> make it easy to write code and text.  That was the main intent of Emacs, 
> and main design decisions in the bindings.  These "freeing up 
> keybindings" initiatives make it harder for people to use Emacs, not 
> easier.
>

C-o is not at all "hitting the trash can", at the moment there is nothing 
more than a proposal to conduct an experiment to make a (small?) change to 
its meaning.

Even among the C-LETTER and M-LETTER keys, there are quite a few whose 
meaning have changed during the last 40 years.  I know at least of: C-h, 
C-l, M-g, M-j, M-n, M-o, M-p, M-r and M-s.  That's 9 keys out of 52.

C-o was described as follows in the 1985 Emacs manual: "When you want to 
insert a new line of text before an existing line, you can do it by typing 
the new line of text, followed by RET.  However, it may be easier to see 
what you are doing if you first make a blank line and then insert the 
desired text into it.  This is easy to do using the key C-o, which inserts 
a newline after point but leaves point in front of the newline.  After 
C-o, type the text for the new line. C-o F O O has the same effect as F O 
O RET, except for the final location of point."  It seems clear that C-o 
was thought as a convenience command, not as an essential editing command.

C-o is, by the way, not even mentioned in the tutorial.

Emacs evolves very conservatively, and if at some point it becomes clear 
that some key binding is not useful for 99.9% of its users, there is no 
reason to keep it as is just because 40 years ago, under very different 
circumstances, it was considered convenient or useful.  I'd say that Emacs 
is a bit like the C programming language, which evolves as conservatively 
as (or perhaps even more conservatively than) Emacs.  Just because a 
function was considered useful and was included in the standard library 30 
years ago does not mean that it should forever remain in the standard 
library.



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

* Re: Suggested experimental test
  2021-03-21 22:16         ` Gregory Heytings
@ 2021-03-21 22:54           ` Alfred M. Szmidt
  2021-03-21 23:05             ` Gregory Heytings
  2021-03-22  3:33           ` Eli Zaretskii
                             ` (2 subsequent siblings)
  3 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-21 22:54 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel


   > What about C-o -- that seems to be hitting the trash can, for whatever 
   > reason.  Some of these bindings (C-o for example) have existed for 40 
   > years in Emacs (M-o M-s was once upon a time on M-s).
   >
   > There was alot of thought put into it back then, and the intent was to 
   > make it easy to write code and text.  That was the main intent of Emacs, 
   > and main design decisions in the bindings.  These "freeing up 
   > keybindings" initiatives make it harder for people to use Emacs, not 
   > easier.

   C-o is not at all "hitting the trash can", at the moment there is nothing 
   more than a proposal to conduct an experiment to make a (small?) change to 
   its meaning.

It isn't a small change to remove a feature completely.  When asked to
keep _a_ binding, it has been meet with silence and it has been more
important to inconvinence users than to listen to them, so I can only
assume that this will a similar case for C-o.  The overal tone of the
discussion of removing keybindings has been to remove them without
considering users, and that it is more important to free them up at
all costs.

   C-o is, by the way, not even mentioned in the tutorial.

Not everything is mentioned in the tutorial, nor can it.

   Emacs evolves very conservatively, and if at some point it becomes clear 
   that some key binding is not useful for 99.9% of its users, there is no 
   reason to keep it as is just because 40 years ago, under very different 
   circumstances, it was considered convenient or useful.

emacs-devel is not even 1% of people using Emacs, and the more I see
these statements the more I am inclined to think that people on this
list don't use Emacs.  When it has been suggested to actually do a
poll, it is far to cumbersome, and instead complicated schemes are
devised.




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

* Re: Suggested experimental test
  2021-03-21 22:54           ` Alfred M. Szmidt
@ 2021-03-21 23:05             ` Gregory Heytings
  2021-03-21 23:13               ` Alfred M. Szmidt
  2021-03-22 11:07               ` Jean Louis
  0 siblings, 2 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-21 23:05 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: emacs-devel


>
> It isn't a small change to remove a feature completely.  When asked to 
> keep _a_ binding, it has been meet with silence and it has been more 
> important to inconvinence users than to listen to them, so I can only 
> assume that this will a similar case for C-o.
>

Your assumption is wrong.  Please have a look at the proposed experiment: 
it moves open-line to repeated C-o.



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

* Re: Suggested experimental test
  2021-03-21 23:05             ` Gregory Heytings
@ 2021-03-21 23:13               ` Alfred M. Szmidt
  2021-03-21 23:46                 ` Gregory Heytings
  2021-03-22 11:07               ` Jean Louis
  1 sibling, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-21 23:13 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

   > It isn't a small change to remove a feature completely.  When asked to 
   > keep _a_ binding, it has been meet with silence and it has been more 
   > important to inconvinence users than to listen to them, so I can only 
   > assume that this will a similar case for C-o.

   Your assumption is wrong.  

Neither center-line nor center-paragraph have been given an
alternative binding.  The same is also applicable for facemenu.
Despite requests for it.
 
   Please have a look at the proposed experiment: it moves open-line
   to repeated C-o.

A proposal is not reality, and such a behaviour would be yet again
beyond annoying.  How about doing polls first instead of doing this
blind experiments where it will be far to late when these changes
sneak into Emacs for them to be changed back.



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

* Re: Suggested experimental test
  2021-03-21 23:13               ` Alfred M. Szmidt
@ 2021-03-21 23:46                 ` Gregory Heytings
  2021-03-22  0:40                   ` Alfred M. Szmidt
  2021-03-22 11:21                   ` Jean Louis
  0 siblings, 2 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-21 23:46 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: emacs-devel


>>> It isn't a small change to remove a feature completely.  When asked to 
>>> keep _a_ binding, it has been meet with silence and it has been more 
>>> important to inconvinence users than to listen to them, so I can only 
>>> assume that this will a similar case for C-o.
>>
>> Your assumption is wrong.
>
> Neither center-line nor center-paragraph have been given an alternative 
> binding.  The same is also applicable for facemenu. Despite requests for 
> it.
>

This is another topic, unrelated to the current one, and as I said earlier 
I'm currently experimenting ways to readd these commands.  I do this 
thinking specifically of you.

>> Please have a look at the proposed experiment: it moves open-line to 
>> repeated C-o.
>
> A proposal is not reality, and such a behaviour would be yet again 
> beyond annoying.  How about doing polls first instead of doing this 
> blind experiments
>

What kind of poll would you like to see?  What would you consider to be a 
significant enough fraction of Emacs users?  How would you poll them? 
There has been a survey a few months ago, and in spite of the fact that 
there were more than 7000 replies, many complained that the results were 
not representative.

Moreover, polling with abstract questions is not a good way to discuss UI 
changes.  The point of conducting experiments on the trunk is that users 
concretely experiment potential changes.

>
> where it will be far to late when these changes sneak into Emacs for 
> them to be changed back.
>

Fortunately, such changes are easy to revert for users who would dislike 
them, and the way to revert them is documented in the NEWS file.

As I said, there have been many changes even to the C-LETTER and M-LETTER 
keys in the past, when it was thought that the key in question could be 
used in a better way.  Another example, which I forgot in my previous 
list, is C-c, which was changed from exit-recursive-edit to a prefix key 
in Emacs 16, and exit-recursive-edit was moved to C-M-c.



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

* Re: Suggested experimental test
  2021-03-21 23:46                 ` Gregory Heytings
@ 2021-03-22  0:40                   ` Alfred M. Szmidt
  2021-03-22 10:05                     ` Gregory Heytings
  2021-03-22 11:21                   ` Jean Louis
  1 sibling, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22  0:40 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

   > Neither center-line nor center-paragraph have been given an alternative 
   > binding.  The same is also applicable for facemenu. Despite requests for 
   > it.

   This is another topic, unrelated to the current one, and as I said earlier 
   I'm currently experimenting ways to readd these commands.  I do this 
   thinking specifically of you.

Thanks, I'm flattered, but I'd hope you rather consider those who do
not read this list first than grumpy Emacs users.

   >> Please have a look at the proposed experiment: it moves open-line to 
   >> repeated C-o.
   >
   > A proposal is not reality, and such a behaviour would be yet again 
   > beyond annoying.  How about doing polls first instead of doing this 
   > blind experiments

   What kind of poll would you like to see?  What would you consider to be a 
   significant enough fraction of Emacs users?  How would you poll them? 
   There has been a survey a few months ago, and in spite of the fact that 
   there were more than 7000 replies, many complained that the results were 
   not representative.

The best polling suggestion I've seen so far has been from rms, and
those have had good track records over the years.

   Moreover, polling with abstract questions is not a good way to discuss UI 
   changes.  The point of conducting experiments on the trunk is that users 
   concretely experiment potential changes.

I think you can make these questions less abstract, even to the point
of a yes / no question.  "Do you use M-o (frobnicate-line)? Yes/No.".
Sending out a questionare for each release would be unrealistic, so
one could accumulate a set of proposal in release 20, send it out
during release 21, and delibrate and implement for 22.

One could also add some extra details, like if the change is for
something in a very recent version such a long cycle isn't required,
but if it is has existed since Emacs 18 it is.

   > where it will be far to late when these changes sneak into Emacs for 
   > them to be changed back.

   Fortunately, such changes are easy to revert for users who would dislike 
   them, and the way to revert them is documented in the NEWS file.

From my experience, it isn't the case.  The usual argument is that "we
just changed it, lets keep it for a bit more" -- and then it becomes
permanent.

   As I said, there have been many changes even to the C-LETTER and M-LETTER 
   keys in the past, when it was thought that the key in question could be 
   used in a better way.  Another example, which I forgot in my previous 
   list, is C-c, which was changed from exit-recursive-edit to a prefix key 
   in Emacs 16, and exit-recursive-edit was moved to C-M-c.

Elided much of that since if I didn't, my reply would become a rather
longer rant.  Changing the semantics slightly is I think less annoying
than completle removing a keybinding.

The bare minimum I think is that if removing a long standing
keybinding, it should at least get a new one.  Make it a three stage
rocket, M-s got punted to M-o M-s .. this could get punted to H-x M-o
M-s (or something slighly more paltable) ... and then removed.  With
actual polls inbetween to get a feel of what people outside this list
prefer, but also a heavier handed touch of deciding on an actual
policy of how exactly bindings should be mapped.

The way Emacs did it is that C- is smaller than M- which is smaller
than C-M-.  Right now, there is no such decision process, and its
quite random.  As an example if I do not recall incorrectly, C-o used
to insert new line, M-o would also adjust for indentation, and C-M-o
would keep the same indentation as the current line.

It is these small things that make Emacs make sense for new users.



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

* Re: Suggested experimental test
  2021-03-21 22:16         ` Gregory Heytings
  2021-03-21 22:54           ` Alfred M. Szmidt
@ 2021-03-22  3:33           ` Eli Zaretskii
  2021-03-22 10:05             ` Gregory Heytings
  2021-03-22  8:59           ` Rudolf Schlatte
  2021-03-22 10:49           ` Jean Louis
  3 siblings, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22  3:33 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: ams, emacs-devel

> Date: Sun, 21 Mar 2021 22:16:59 +0000
> From: Gregory Heytings <gregory@heytings.org>
> Cc: emacs-devel@gnu.org
> 
> Even among the C-LETTER and M-LETTER keys, there are quite a few whose 
> meaning have changed during the last 40 years.  I know at least of: C-h, 
> C-l, M-g, M-j, M-n, M-o, M-p, M-r and M-s.  That's 9 keys out of 52.

Please describe those changes one by one.  At least for some of these
keys I'm unaware of any changes in their bindings, so I'm curious what
exactly is considered a "change" in this context.



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

* Re: Suggested experimental test
  2021-03-21 18:16       ` Sv: " Alfred M. Szmidt
@ 2021-03-22  5:11         ` Richard Stallman
  0 siblings, 0 replies; 154+ messages in thread
From: Richard Stallman @ 2021-03-22  5:11 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: gregory, larsi, arthur.miller, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > Emacs is first and for most a text editor for code and prose, and not
  > some bag of pre-mixed ingredients that one has to bake first before
  > using it.

Yes, exactly.  We do not release Emacs as a kit for making editors.
Emacs _is an editor_.


-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





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

* Re: Suggested experimental test
  2021-03-21 22:16         ` Gregory Heytings
  2021-03-21 22:54           ` Alfred M. Szmidt
  2021-03-22  3:33           ` Eli Zaretskii
@ 2021-03-22  8:59           ` Rudolf Schlatte
  2021-03-22 10:05             ` Gregory Heytings
  2021-03-22 10:49           ` Jean Louis
  3 siblings, 1 reply; 154+ messages in thread
From: Rudolf Schlatte @ 2021-03-22  8:59 UTC (permalink / raw)
  To: emacs-devel

Gregory Heytings <gregory@heytings.org> writes:

>>
>> So is the plan to readd keybindings center-FOO?
>>
>
> There is no clear predefined plan, just some ideas I'm currently
> experimenting with.

[...]

> C-o is not at all "hitting the trash can", at the moment there is
> nothing more than a proposal to conduct an experiment to make a
> (small?) change to its meaning.

Could you maybe repeat what change is planned?  I looked at the proposed
patch and it seems to only remove the C-o keybinding.  Apologies if the
proposal was posted already; I don't assume the plan is to leave C-o
unbound?

Since I use C-o frequently, I'm curious what will happen when my fingers
press it while editing text, and to what extent I will have to
reconfigure standard Emacs keybindings (which is something I try to
avoid).




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

* Re: Suggested experimental test
  2021-03-22  0:40                   ` Alfred M. Szmidt
@ 2021-03-22 10:05                     ` Gregory Heytings
  2021-03-22 18:14                       ` Alfred M. Szmidt
  0 siblings, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 10:05 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: emacs-devel


>>> Neither center-line nor center-paragraph have been given an 
>>> alternative binding.  The same is also applicable for facemenu. 
>>> Despite requests for it.
>>
>> This is another topic, unrelated to the current one, and as I said 
>> earlier I'm currently experimenting ways to readd these commands.  I do 
>> this thinking specifically of you.
>
> Thanks, I'm flattered, but I'd hope you rather consider those who do not 
> read this list first than grumpy Emacs users.
>

I do consider them, too.  But I think that "grumpy Emacs users" who 
express themselves also speak for (at least some of) those who do not read 
this list.

>> Moreover, polling with abstract questions is not a good way to discuss 
>> UI changes.  The point of conducting experiments on the trunk is that 
>> users concretely experiment potential changes.
>
> I think you can make these questions less abstract, even to the point of 
> a yes / no question.  "Do you use M-o (frobnicate-line)? Yes/No.". 
> Sending out a questionare for each release would be unrealistic,
>

That doesn't answer the main question: how do you concretely poll these 
users? and what would you consider to be a significant enough fraction of 
Emacs users for the poll to be representative?  Would 500 answers be 
enough? 1000? 5000? 10000?

What would you do with the result of such a poll?  What if only 50 or 100 
in those 10000 answer "yes"?  Should the feature be kept for those 50 or 
100?

Moreover the result of a yes/no poll like "Do you use M-o 
(frobnicate-line)?" is not very useful:

"No, I don't use it, because I did not know it exists"
"No, I don't use it, I know it exists and I'm sure I'll never use it"
"No, I don't use it at the moment, but I may use it in the future"
"Yes, I do use it, but I use viper-mode/evil-mode, so it's not bound to M-o"
"Yes, I do use it, but I bind it to another key in my init file and use M-o for something else"
"Yes, I do use it, but not frequently, so I wouldn't mind if it were moved to another key"
"Yes, I do use it, but not frequently, and I wouldn't mind if I had to use M-x frobnicate-line instead"
"Yes, I do use it frequently, but I wouldn't mind if it were moved to another key"
"Yes, I do use it frequently, and would prefer that it remains on the same key"
"Yes, I do use it frequently, and would rebind it to the current key in my init file if its binding changed"
...

are all valid answers with very different consequences, that cannot be 
seen in a yes/no poll.

>
> so one could accumulate a set of proposal in release 20, send it out 
> during release 21, and delibrate and implement for 22.
>

That would be unrealistic, it would mean a four to six years waiting 
period before an UI change can be implemented, long enough to discourage 
anyone in advance to even envision the possibility of proposing such a 
change.

>> Fortunately, such changes are easy to revert for users who would 
>> dislike them, and the way to revert them is documented in the NEWS 
>> file.
>
> From my experience, it isn't the case.
>

Of course it is, for example the way to revert the M-o change is 
documented in the NEWS file, both for those who would like to only revert 
facemenu, and for those who would like to only revert the two center-foo 
commands.

>> Another example, which I forgot in my previous list, is C-c, which was 
>> changed from exit-recursive-edit to a prefix key in Emacs 16, and 
>> exit-recursive-edit was moved to C-M-c.
>
> Changing the semantics slightly is I think less annoying than completle 
> removing a keybinding.
>

Changing "C-c" from exit-recursive-edit to a prefix key was not changing 
its semantics slightly, and the proposed experiment in this thread is not 
about completely removing a key binding, it is about changing its 
semantics slightly.



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

* Re: Suggested experimental test
  2021-03-22  3:33           ` Eli Zaretskii
@ 2021-03-22 10:05             ` Gregory Heytings
  2021-03-22 11:37               ` Philip Kaludercic
                                 ` (2 more replies)
  0 siblings, 3 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 10:05 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: ams, emacs-devel


>> Even among the C-LETTER and M-LETTER keys, there are quite a few whose 
>> meaning have changed during the last 40 years.  I know at least of: 
>> C-h, C-l, M-g, M-j, M-n, M-o, M-p, M-r and M-s.  That's 9 keys out of 
>> 52.
>
> Please describe those changes one by one.  At least for some of these 
> keys I'm unaware of any changes in their bindings, so I'm curious what 
> exactly is considered a "change" in this context.
>

C-c: was initially exit-recursive-edit, and was changed to a prefix key 
for modes in Emacs 16; exit-recursive-edit was then moved to C-M-c

C-h: was initially (and in other Emacsen) the same as C-b, and was (very 
early in the development of GNU Emacs) changed into the help character

C-l: was 'recenter' up to and including Emacs 22, then became 
'recenter-top-bottom', which changes its semantics when is repeated

C-z: was initially (and in other Emacsen) a prefix character, was at some 
point bound exit-recursive-edit, then became (in GNU Emacs 1.11) bound to 
suspend-emacs

M-g: was initially bound to fill-region, was used for facemenu in Emacs 
19-21, and is used for goto-like commands since Emacs 22

M-j: was initially unused, became indent-new-comment-line in Emacs 1.7

M-n and M-p: were initially unused, became what they are now in Emacs 17

M-o: was unused before Emacs 22, was used for facemenu in Emacs 22-27

M-r: was initially unused, became 'move-to-window-line' in Emacs 16, then 
became 'move-to-window-line-top-bottom', which changed its semantics when 
it is repeated

M-s: was initially unused, became center-line for text-modes in Emacs 16, 
and is used for search-like commands since Emacs 23



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

* Re: Suggested experimental test
  2021-03-22  8:59           ` Rudolf Schlatte
@ 2021-03-22 10:05             ` Gregory Heytings
  0 siblings, 0 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 10:05 UTC (permalink / raw)
  To: Rudolf Schlatte; +Cc: emacs-devel


>> C-o is not at all "hitting the trash can", at the moment there is 
>> nothing more than a proposal to conduct an experiment to make a 
>> (small?) change to its meaning.
>
> Could you maybe repeat what change is planned?  I looked at the proposed 
> patch and it seems to only remove the C-o keybinding.
>

No change is planned, at the moment there is nothing more than a proposal 
to conduct an experiment to make a (small?) change to its meaning, namely 
to move the open-line command to repeated C-o.

>
> Since I use C-o frequently, I'm curious what will happen when my fingers 
> press it while editing text, and to what extent I will have to 
> reconfigure standard Emacs keybindings (which is something I try to 
> avoid).
>

This is precisely the purpose of time-limited experiments, during which 
users such as you can see what happens with their fingers, whether they 
can adapt to the new default binding, or whether they have to reconfigure 
something.



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

* Re: Suggested experimental test
  2021-03-21 10:48   ` Gregory Heytings
  2021-03-21 10:58     ` Sv: " arthur miller
@ 2021-03-22 10:14     ` Jean Louis
  2021-03-22 12:06     ` Lars Ingebrigtsen
  2021-03-22 18:42     ` Sean Whitton
  3 siblings, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-22 10:14 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Lars Ingebrigtsen, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-21 13:52]:
> 
> > > May I suggest the attached, slightly more controversial,
> > > experimental test?
> > 
> > Removing `C-o' has already been suggested, and there's already been a
> > lot of negative feedback on that, if I remember correctly.  So I don't
> > think there's much point in doing this experiment.
> > 
> 
> Well... the suggested experiment does not remove C-o, it changes C-o in a
> way that is, I believe, painless.  We cannot know whether it is indeed
> painless without experimenting at a larger scale.  The few who objected
> against changing C-o may well find out, after trying it out, that this small
> change is not as bad as they thought.

We learned in sales to take the viewpoint of a customer to understand
customer better. Now imagine people using C-o for decades and now C-o
does not do what it is supposed to do, but then in other editors
related to Emacs it does what is supposed to do. This impacts users
greatly.

I am multi-editor user, so imagine I start using in vi editor
something like `i i' to insert letters, or `O O' to insert new line,
then one Emacs version will be claiming that C-o does this, the other
that C-o C-o does what C-o was doing. Counting with millions of Emacs
users that brings some implications.



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

* Re: Sv: Suggested experimental test
  2021-03-21 10:58     ` Sv: " arthur miller
  2021-03-21 13:20       ` Gregory Heytings
  2021-03-21 18:16       ` Sv: " Alfred M. Szmidt
@ 2021-03-22 10:24       ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-22 10:24 UTC (permalink / raw)
  To: arthur miller; +Cc: Gregory Heytings, Lars Ingebrigtsen, emacs-devel@gnu.org

* arthur miller <arthur.miller@live.com> [2021-03-21 13:59]:
> I don't understand why people are so passionately wasting time
> on arguing about shortcuts. As I understand Emacs it is supposed
> to be molded after each ones preference. Personally to me I rebind
> almost anything to my liking and what makes sense to me.

To help you understand from my perspective, I am maintaining multiple
remote servers, and have multiple computers, and each time when
working on those computers I do not use any custom key bindings, and I
do some extensive, personally important editing. Some computers use
older Emacs versions, only one is using the development version, some
are on different free operating systems, currently we use 4 different
operating systems. I do expect Emacs to behave by how we used to know
it by habit.

Being passionate is virtue and benefit for Emacs development. I cannot
see it as a waste of time as by following last months or years of
development I can just see great improvements without which I would
not be able to do my work right now. It is easy, after all
discussions, to then say how some of emails were waste of time, but
that falls into the context of saying that it is easy to be general
after the battle. Discussions bring about good things, and they create
new software and incite people to create new software.

Many disagreements may bring some programmers to make new useful
software, we can see that in case of ergonomical key bindings in the
package `ergoemacs-mode' of Xah, we can see that disagreements come up
with new excellent Emacs extensions like Spacemacs or Doom Emacs, that
people like so much.

Emacs may be customizes as one wish, but there are expectations by
Emacs users that can annoy and break the habits. That is price. If the
price is affordable, then changing some key bindings like M-o is quite
alright as for now.

If we however start changing key bindings like it is some kind of a
priority, we will see decline of Emacs users as some may find it
silly. Human editors tend to learn methods and rely on its software.



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

* Re: Suggested experimental test
  2021-03-21 22:16         ` Gregory Heytings
                             ` (2 preceding siblings ...)
  2021-03-22  8:59           ` Rudolf Schlatte
@ 2021-03-22 10:49           ` Jean Louis
  3 siblings, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-22 10:49 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Alfred M. Szmidt, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-22 01:18]:
> C-o is not at all "hitting the trash can", at the moment there is nothing
> more than a proposal to conduct an experiment to make a (small?) change to
> its meaning.

I hope you started keeping notes of number of those who agree and
those who disagree, did you? In my opinion the experiment started by
introducing it. Some disagreer could read in the patch what is going
on, and there is no need for it to be experimented, as the
disagreement is already there due to high usage of C-o personally. But
I can understand that your experiment comes from a different view
point, I can bet you do not use C-o as much as I do, you probably
never use it, am I right?

Me I learned about it long time ago, and I use it in every Emacs-like
editor. Did you hear of zile-on-guile editor? There is also Emacs that
runs on Guile, there is mg, e3em, zile, those are most common that I
use, but I may sometimes use 

> C-o was described as follows in the 1985 Emacs manual: "When you want to
> insert a new line of text before an existing line, you can do it by typing
> the new line of text, followed by RET.  However, it may be easier to see
> what you are doing if you first make a blank line and then insert the
> desired text into it.  This is easy to do using the key C-o, which inserts a
> newline after point but leaves point in front of the newline.  After C-o,
> type the text for the new line. C-o F O O has the same effect as F O O RET,
> except for the final location of point."  It seems clear that C-o was
> thought as a convenience command, not as an essential editing
> command.

I do understand the above.

Because cursor is often located at the beginning of the line, C-o
opens up new line and allows me to basically insert new line of
text. The behavior described in this paragraph is somewhat different
than the behavior described in the above paragraph from 1985. It is
inserting a new line in this specific example, do you see? 

Another personal usage of C-o is whe cursor is located somewhere on
the line, but not at beginning of the line, then C-a C-o is what I
mostly use. That is how I insert new line above the current one with
cursor in such position. You can see that this behavior in this
paragraph is definitely not the same as the behavior described in 1985
manual, but also not same as behavior in the previous paragraph.

I could be doing instead C-a RET C-p or C-a RET ARROW-UP -- and I am
kind of thankful for C-a C-o sequence as that is what I use so often.

At this point I would like to know, how do you insert new line? Do you
insert them at all?

124 -- ONE LINE --
345 -- LAST LINE --
       ^
When your cursor is on the letter L in the second line above, what do
you do to insert one line there?

When your cursor is on the number 3 on last line, what do you do to
insert new line?

Both questions are beyond the behavior as described in the 1985 manual
that you assume to be the default and not usable behavior today. This
analysis is also part of your experiment, and I am genuinely
interested how people insert new line above the current line. I use
C-o or C-a C-o combination when cursor is not at beginning of the
line. 

> Emacs evolves very conservatively, and if at some point it becomes clear
> that some key binding is not useful for 99.9% of its users, there is no
> reason to keep it as is just because 40 years ago, under very different
> circumstances, it was considered convenient or useful.

If you have a list of number of people agreeing and disagreeing, then
you can make one true mathematical percentage as result. As now you
presented some information and then also your opinion that somehow
relates 99.9% to C-o not being useful, but opinions should not be
biased, as if you do the experiment, count the number of people
agreeing or disagreeing. Also explain how you insert new lines, and if
you insert them at all. Give some reasoning.

In vi and vim editors I use often O to insert new line, it is little
easier than C-o as it works with cursor being anywhere on the
line. The point is, I do insert empty lines all the time, every single
day, every hour.

> I'd say that Emacs is a bit like the C programming language, which
> evolves as conservatively as (or perhaps even more conservatively
> than) Emacs.  Just because a function was considered useful and was
> included in the standard library 30 years ago does not mean that it
> should forever remain in the standard library.

Yes, I do agree on that, but you are relating that statement which is
opinion to experiment, which was supposed to be some observable
countable fact, and experiment would not even involve casual Emacs
users, only those people reading this mailing list. It could not be
really complete without getting feedback from many other users.

How do you insert new lines? 

Jean



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

* Re: Suggested experimental test
  2021-03-21 23:05             ` Gregory Heytings
  2021-03-21 23:13               ` Alfred M. Szmidt
@ 2021-03-22 11:07               ` Jean Louis
  1 sibling, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-22 11:07 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Alfred M. Szmidt, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-22 02:06]:
> > It isn't a small change to remove a feature completely.  When asked to
> > keep _a_ binding, it has been meet with silence and it has been more
> > important to inconvinence users than to listen to them, so I can only
> > assume that this will a similar case for C-o.
> 
> Your assumption is wrong.  Please have a look at the proposed
> experiment: it moves open-line to repeated C-o.

If you have followed my personal usage of C-o from my previous email:

- behavior #1, cursor at beginnin of line, C-o inserts new line, and I
  start typing

- behavior #2, cursor anywhere else on the line, C-a C-o moves to
  beginning of line, opens new line

- behavior #3 is the one explained in 1985 manual, to start typing
  text in the middle of the line while bringin the remainder of text
  down -- this one I do not use

then now please imagine how it would like like with your change:

- behavior #1 above, would require 2 key bindings instead of 1

- behavior #2, above, would require now 3 key bindings instead of 2

- behavior #3 as you explained from 1985 manual, I do not use, almost never

Among all those I would choose the vi like `O' to open new line, but
it does not work within Emacs key binding style.

I am not really fan of moving or customizing any default key bindings,
as for those personal customizations I use either Super key or Hyper
on Caps Lock or C-c LETTER bindings. Reason I am not fan of changing
default key bindings myself is that I wish to have consistent behavior
across multipe operating systems, multiple remote virtual private
servers that run multiple various free operating systems, across
multiple Emacs versions and across multiple Emacs-like editors.

But would I be fan of customizing some default key bindings I would
then replace C-o with C-a C-o like this:

(defun my-C-o ()
  "Opens new line regardless where is cursor positioned."
  (interactive)
  (move-beginning-of-line nil)
  (open-line 1))

(global-set-key (kbd "C-o") #'my-C-o)

But I am not doing that, as I do not like having habit on default key
bindings as that breaks my habits on those other computers where I do
not use any customizations.

Jean



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

* Re: Suggested experimental test
  2021-03-21 23:46                 ` Gregory Heytings
  2021-03-22  0:40                   ` Alfred M. Szmidt
@ 2021-03-22 11:21                   ` Jean Louis
  1 sibling, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-22 11:21 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Alfred M. Szmidt, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-22 02:47]:
> What kind of poll would you like to see?  What would you consider to be a
> significant enough fraction of Emacs users?  How would you poll them? There
> has been a survey a few months ago, and in spite of the fact that there were
> more than 7000 replies, many complained that the results were not
> representative.

You do not need a poll of many users. But you have to make proper
study. Editor and any software and computer usability may be measured
with few people only.

References:
https://www.nngroup.com/articles/why-you-only-need-to-test-with-5-users/
https://www.nngroup.com/videos/usability-testing-w-5-users-design-process/

In my opinion here we talk about usability related to inserting a new
line. The fundamental useful command is inserting a new line or
`open-line'.

What you are here proposing is to replace key binding with something
else like C-o C-o -- but you forget the fundamental usefulness of it.

How about talking about the fundamental feauture of opening a new line
or inserting new empty line and improving that, if at all possible?

How do you do?

How other users do it?

Why would it be more usable for user to press C-o C-o to insert new
line rather than C-o ? That is better discussed rather than purpose of
removing or replacing key bindings for purpose of some other commands
on C-o -- I hope you understand difference between those purposes.

Jean







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

* Re: Suggested experimental test
  2021-03-22 10:05             ` Gregory Heytings
@ 2021-03-22 11:37               ` Philip Kaludercic
  2021-03-22 12:20                 ` Gregory Heytings
  2021-03-22 17:38               ` Eli Zaretskii
  2021-03-22 18:14               ` Alfred M. Szmidt
  2 siblings, 1 reply; 154+ messages in thread
From: Philip Kaludercic @ 2021-03-22 11:37 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Eli Zaretskii, ams, emacs-devel

Gregory Heytings <gregory@heytings.org> writes:

> M-n and M-p: were initially unused, became what they are now in Emacs 17

M-n and M-p are still unused? Or did the convention 

     A major mode can also rebind the keys ‘M-n’, ‘M-p’ and ‘M-s’.  The
     bindings for ‘M-n’ and ‘M-p’ should normally be some kind of moving
     forward and backward, but this does not necessarily mean cursor
     motion.

     (elisp) Major Mode Conventions

not exist before Emacs 17?

-- 
	Philip K.



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

* Re: Suggested experimental test
  2021-03-21 10:48   ` Gregory Heytings
  2021-03-21 10:58     ` Sv: " arthur miller
  2021-03-22 10:14     ` Jean Louis
@ 2021-03-22 12:06     ` Lars Ingebrigtsen
  2021-03-22 12:23       ` Gregory Heytings
                         ` (5 more replies)
  2021-03-22 18:42     ` Sean Whitton
  3 siblings, 6 replies; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 12:06 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

Gregory Heytings <gregory@heytings.org> writes:

> Well... the suggested experiment does not remove C-o, it changes C-o
> in a way that is, I believe, painless. 

Sorry; I didn't read the patch carefully.  So it basically moves `C-o'
to `C-o C-o' (and makes the `C-o' prefix open for new commands)?

I don't use `C-o' myself, so I can't really say to what degree this
would be annoying or not for users.  Any `C-o' users who have an opinion
here?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 11:37               ` Philip Kaludercic
@ 2021-03-22 12:20                 ` Gregory Heytings
  0 siblings, 0 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 12:20 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: Eli Zaretskii, ams, emacs-devel

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


>> M-n and M-p: were initially unused, became what they are now in Emacs 17
>
> M-n and M-p are still unused? Or did the convention
>
>     A major mode can also rebind the keys ‘M-n’, ‘M-p’ and ‘M-s’.  The bindings for ‘M-n’ and ‘M-p’ should normally be some kind of moving forward and backward, but this does not necessarily mean cursor motion.
>
>     (elisp) Major Mode Conventions
>
> not exist before Emacs 17?
>

No, M-n/M-p are of course not unused.  They were unused before Emacs 17 
(except in rmail mode).  The current convention for M-n/M-p started to 
exist with the binding of M-n/M-p in the minibuffer to move to the 
next/previous command in the command history in Emacs 17.  But of course 
at that point it was not formalized as a convention.

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

* Re: Suggested experimental test
  2021-03-22 12:06     ` Lars Ingebrigtsen
@ 2021-03-22 12:23       ` Gregory Heytings
  2021-03-22 16:15         ` Jean Louis
  2021-03-22 16:14       ` Jean Louis
                         ` (4 subsequent siblings)
  5 siblings, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 12:23 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: emacs-devel


>> Well... the suggested experiment does not remove C-o, it changes C-o in 
>> a way that is, I believe, painless.
>
> Sorry; I didn't read the patch carefully.  So it basically moves `C-o' 
> to `C-o C-o' (and makes the `C-o' prefix open for new commands)?
>

Yes and yes.

>
> I don't use `C-o' myself, so I can't really say to what degree this 
> would be annoying or not for users.  Any `C-o' users who have an opinion 
> here?
>

I think we won't really know without experimenting.



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

* Re: Suggested experimental test
  2021-03-22 12:06     ` Lars Ingebrigtsen
  2021-03-22 12:23       ` Gregory Heytings
@ 2021-03-22 16:14       ` Jean Louis
  2021-03-22 17:08         ` Gregory Heytings
  2021-03-22 17:20       ` Robin Tarsiger
                         ` (3 subsequent siblings)
  5 siblings, 1 reply; 154+ messages in thread
From: Jean Louis @ 2021-03-22 16:14 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Gregory Heytings, emacs-devel

* Lars Ingebrigtsen <larsi@gnus.org> [2021-03-22 15:07]:
> Gregory Heytings <gregory@heytings.org> writes:
> 
> > Well... the suggested experiment does not remove C-o, it changes C-o
> > in a way that is, I believe, painless. 
> 
> Sorry; I didn't read the patch carefully.  So it basically moves `C-o'
> to `C-o C-o' (and makes the `C-o' prefix open for new commands)?
> 
> I don't use `C-o' myself, so I can't really say to what degree this
> would be annoying or not for users.  Any `C-o' users who have an opinion
> here?

For now I count 3 people from mailing lists who already objected to
it, including me.

How do you Lars insert new lines, before the current line with cursor?

Jean



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

* Re: Suggested experimental test
  2021-03-22 12:23       ` Gregory Heytings
@ 2021-03-22 16:15         ` Jean Louis
  0 siblings, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-22 16:15 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Lars Ingebrigtsen, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-22 15:24]:
> 
> > > Well... the suggested experiment does not remove C-o, it changes C-o
> > > in a way that is, I believe, painless.
> > 
> > Sorry; I didn't read the patch carefully.  So it basically moves `C-o'
> > to `C-o C-o' (and makes the `C-o' prefix open for new commands)?
> > 
> 
> Yes and yes.
> 
> > 
> > I don't use `C-o' myself, so I can't really say to what degree this
> > would be annoying or not for users.  Any `C-o' users who have an opinion
> > here?
> > 
> 
> I think we won't really know without experimenting.

Gregory, don't you think that 3 users including me who expressed their
objections is not part of the experiment already?



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

* Re: Suggested experimental test
  2021-03-22 16:14       ` Jean Louis
@ 2021-03-22 17:08         ` Gregory Heytings
  2021-03-22 17:46           ` Alan Mackenzie
  2021-03-22 18:03           ` Jean Louis
  0 siblings, 2 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 17:08 UTC (permalink / raw)
  To: Jean Louis; +Cc: Lars Ingebrigtsen, emacs-devel


>>> Well... the suggested experiment does not remove C-o, it changes C-o 
>>> in a way that is, I believe, painless.
>>
>> Sorry; I didn't read the patch carefully.  So it basically moves `C-o' 
>> to `C-o C-o' (and makes the `C-o' prefix open for new commands)?
>>
>> I don't use `C-o' myself, so I can't really say to what degree this 
>> would be annoying or not for users.  Any `C-o' users who have an 
>> opinion here?
>
> For now I count 3 people from mailing lists who already objected to it, 
> including me.
>

I've only seen one (you), and perhaps a second one (Alfred), but I'm not 
quite sure because he initially thought that open-line would be removed.

>
> How do you Lars insert new lines, before the current line with cursor?
>

I can't speak for Lars, but if this is something that I frequently needed, 
I would either learn the C-p C-e C-m sequence, or make it a command in my 
init file, for example:

(global-set-key (kbd "M-RET") (lambda () (interactive) (previous-line) (end-of-line) (newline-and-indent)))

(M-RET has a similar purpose in org-mode.)

>
> Gregory, don't you think that 3 users including me who expressed their 
> objections is not part of the experiment already?
>

No, precisely because nobody actually experimented the potential change. 
You cannot give an opinion on a change before experimenting it for some 
time, say, at least a day.



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

* Re: Suggested experimental test
  2021-03-22 12:06     ` Lars Ingebrigtsen
  2021-03-22 12:23       ` Gregory Heytings
  2021-03-22 16:14       ` Jean Louis
@ 2021-03-22 17:20       ` Robin Tarsiger
  2021-03-22 17:40       ` Eli Zaretskii
                         ` (2 subsequent siblings)
  5 siblings, 0 replies; 154+ messages in thread
From: Robin Tarsiger @ 2021-03-22 17:20 UTC (permalink / raw)
  To: larsi; +Cc: emacs-devel

Lars Ingebrigtsen wrote:
> I don't use `C-o' myself, so I can't really say to what degree this
> would be annoying or not for users.  Any `C-o' users who have an opinion
> here?

I'm a corner case here, FWIW. I use C-o quite frequently to open a new
line... except I didn't like Emacs's line-splitting behavior! Instead
I define dxc/vim-style-open-line as (goto-char (point-at-eol))
(insert "\n") to approximate what 'o' does in Vim. I should possibly
add support for a prefix argument to switch to before the current
line, and maybe indentation...

I think I mentioned in an earlier thread that any redefinition of
C-o would probably make me grumble for a short while before adjusting
my customizations to compensate, if nothing else. But I'm also quite
sympathetic to the "increasing skew between people's keymaps creates
fragmentation issues" line of thought---I'm just already invested in
one branch of response to that in practice...

-RTT



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

* Re: Suggested experimental test
  2021-03-22 10:05             ` Gregory Heytings
  2021-03-22 11:37               ` Philip Kaludercic
@ 2021-03-22 17:38               ` Eli Zaretskii
  2021-03-22 17:48                 ` Gregory Heytings
  2021-03-22 18:14               ` Alfred M. Szmidt
  2 siblings, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 17:38 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: ams, emacs-devel

> Date: Mon, 22 Mar 2021 10:05:31 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: ams@gnu.org, emacs-devel@gnu.org
> 
> 
> >> Even among the C-LETTER and M-LETTER keys, there are quite a few whose 
> >> meaning have changed during the last 40 years.  I know at least of: 
> >> C-h, C-l, M-g, M-j, M-n, M-o, M-p, M-r and M-s.  That's 9 keys out of 
> >> 52.
> >
> > Please describe those changes one by one.  At least for some of these 
> > keys I'm unaware of any changes in their bindings, so I'm curious what 
> > exactly is considered a "change" in this context.
> >
> 
> C-c: was initially exit-recursive-edit, and was changed to a prefix key 
> for modes in Emacs 16; exit-recursive-edit was then moved to C-M-c
> 
> C-h: was initially (and in other Emacsen) the same as C-b, and was (very 
> early in the development of GNU Emacs) changed into the help character
> 
> C-l: was 'recenter' up to and including Emacs 22, then became 
> 'recenter-top-bottom', which changes its semantics when is repeated
> 
> C-z: was initially (and in other Emacsen) a prefix character, was at some 
> point bound exit-recursive-edit, then became (in GNU Emacs 1.11) bound to 
> suspend-emacs
> 
> M-g: was initially bound to fill-region, was used for facemenu in Emacs 
> 19-21, and is used for goto-like commands since Emacs 22
> 
> M-j: was initially unused, became indent-new-comment-line in Emacs 1.7
> 
> M-n and M-p: were initially unused, became what they are now in Emacs 17
> 
> M-o: was unused before Emacs 22, was used for facemenu in Emacs 22-27
> 
> M-r: was initially unused, became 'move-to-window-line' in Emacs 16, then 
> became 'move-to-window-line-top-bottom', which changed its semantics when 
> it is repeated
> 
> M-s: was initially unused, became center-line for text-modes in Emacs 16, 
> and is used for search-like commands since Emacs 23

Thanks, this matches my recollection: only 3 keys (M-g, M-o, M-s) were
changed recently enough to count for this discussion.  The rest are
ancient history (more than 35 years ago), and C-l's change is very
much minor (it _adds_ to the previous user-visible behavior, but
doesn't change it).

So my summary would be different: since 35 years ago, only a handful
of these keys were ever changed.



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

* Re: Suggested experimental test
  2021-03-22 12:06     ` Lars Ingebrigtsen
                         ` (2 preceding siblings ...)
  2021-03-22 17:20       ` Robin Tarsiger
@ 2021-03-22 17:40       ` Eli Zaretskii
  2021-03-22 17:55         ` Gregory Heytings
                           ` (2 more replies)
  2021-03-22 18:11       ` [EXTERNAL] " Stephan Mueller
  2021-03-22 20:33       ` Jose A. Ortega Ruiz
  5 siblings, 3 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 17:40 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: gregory, emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Mon, 22 Mar 2021 13:06:09 +0100
> Cc: emacs-devel@gnu.org
> 
> I don't use `C-o' myself, so I can't really say to what degree this
> would be annoying or not for users.  Any `C-o' users who have an opinion
> here?

I use it _a_lot_.



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

* Re: Suggested experimental test
  2021-03-22 17:08         ` Gregory Heytings
@ 2021-03-22 17:46           ` Alan Mackenzie
  2021-03-22 17:59             ` Gregory Heytings
                               ` (2 more replies)
  2021-03-22 18:03           ` Jean Louis
  1 sibling, 3 replies; 154+ messages in thread
From: Alan Mackenzie @ 2021-03-22 17:46 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Lars Ingebrigtsen, Jean Louis, emacs-devel

Hello, Gregory.

On Mon, Mar 22, 2021 at 17:08:32 +0000, Gregory Heytings wrote:

[ .... ]

> > For now I count 3 people from mailing lists who already objected to it, 
> > including me.

> I've only seen one (you), and perhaps a second one (Alfred), but I'm not 
> quite sure because he initially thought that open-line would be removed.

You ignored my objections on Saturday.  That makes at least 3 people
who've objected.  That's not counting the people who have merely
"commented" rather than objected whole-heartedly.

[ .... ]

> > Gregory, don't you think that 3 users including me who expressed their 
> > objections is not part of the experiment already?

> No, precisely because nobody actually experimented the potential change. 

There's no need for any "experiment".  It's perfectly obvious what you're
proposing and the effect it will have.

And describing it as an "experiment", as though your intention is purely
to discover something about Emacs use, is more than a little disingenuous.

There remains the possibility that you intend to push through this
removal of the C-o binding, and describing it as "an experiment" should
soften the resistance to it.  Of course, it is very easy to forget to
restore the binding once the "experiment" is over.

C-o is a much used binding, valued by lots of people, including me.

> You cannot give an opinion on a change before experimenting it for some 
> time, say, at least a day.

Anybody who wishes to experiment with this thing is perfectly able to
make the temporary adjustments to his own key maps without annoying other
users of the master branch.

-- 
Alan Mackenzie (Nuremberg, Germany).



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

* Re: Suggested experimental test
  2021-03-22 17:38               ` Eli Zaretskii
@ 2021-03-22 17:48                 ` Gregory Heytings
  2021-03-22 18:11                   ` Eli Zaretskii
  2021-03-22 18:15                   ` Alfred M. Szmidt
  0 siblings, 2 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 17:48 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: ams, emacs-devel


>>>> Even among the C-LETTER and M-LETTER keys, there are quite a few 
>>>> whose meaning have changed during the last 40 years.  I know at least 
>>>> of: C-h, C-l, M-g, M-j, M-n, M-o, M-p, M-r and M-s.  That's 9 keys 
>>>> out of 52.
>>>
>>> Please describe those changes one by one.  At least for some of these 
>>> keys I'm unaware of any changes in their bindings, so I'm curious what 
>>> exactly is considered a "change" in this context.
>>
>> C-c: was initially exit-recursive-edit, and was changed to a prefix key 
>> for modes in Emacs 16; exit-recursive-edit was then moved to C-M-c
>>
>> C-h: was initially (and in other Emacsen) the same as C-b, and was 
>> (very early in the development of GNU Emacs) changed into the help 
>> character
>>
>> C-l: was 'recenter' up to and including Emacs 22, then became 
>> 'recenter-top-bottom', which changes its semantics when is repeated
>>
>> C-z: was initially (and in other Emacsen) a prefix character, was at 
>> some point bound exit-recursive-edit, then became (in GNU Emacs 1.11) 
>> bound to suspend-emacs
>>
>> M-g: was initially bound to fill-region, was used for facemenu in Emacs 
>> 19-21, and is used for goto-like commands since Emacs 22
>>
>> M-j: was initially unused, became indent-new-comment-line in Emacs 1.7
>>
>> M-n and M-p: were initially unused, became what they are now in Emacs 
>> 17
>>
>> M-o: was unused before Emacs 22, was used for facemenu in Emacs 22-27
>>
>> M-r: was initially unused, became 'move-to-window-line' in Emacs 16, 
>> then became 'move-to-window-line-top-bottom', which changed its 
>> semantics when it is repeated
>>
>> M-s: was initially unused, became center-line for text-modes in Emacs 
>> 16, and is used for search-like commands since Emacs 23
>
> Thanks, this matches my recollection: only 3 keys (M-g, M-o, M-s) were 
> changed recently enough to count for this discussion.  The rest are 
> ancient history (more than 35 years ago), and C-l's change is very much 
> minor (it _adds_ to the previous user-visible behavior, but doesn't 
> change it).
>

You forget M-r, changed in Emacs 23.

>
> So my summary would be different: since 35 years ago, only a handful of 
> these keys were ever changed.
>

I was replying to Alfred, who said that nothing had changed during the 
last 40 years.



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

* Re: Suggested experimental test
  2021-03-22 17:40       ` Eli Zaretskii
@ 2021-03-22 17:55         ` Gregory Heytings
  2021-03-22 18:13           ` Eli Zaretskii
  2021-03-22 18:17         ` Lars Ingebrigtsen
  2021-03-22 20:56         ` Thierry Volpiatto
  2 siblings, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 17:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, emacs-devel


>> I don't use `C-o' myself, so I can't really say to what degree this 
>> would be annoying or not for users.  Any `C-o' users who have an 
>> opinion here?
>
> I use it _a_lot_.
>

But of course, as you said a month ago:

>
> This question also goes to everyone else in this long dispute who wants 
> their precious key bindings preserved: why is such a long discussion 
> needed when it is so easy to restore, in your init file, a binding you 
> want preserved?
>



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

* Re: Suggested experimental test
  2021-03-22 17:46           ` Alan Mackenzie
@ 2021-03-22 17:59             ` Gregory Heytings
  2021-03-22 18:23             ` Alfred M. Szmidt
  2021-03-23  6:09             ` Richard Stallman
  2 siblings, 0 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 17:59 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: emacs-devel


>
> And describing it as an "experiment", as though your intention is purely 
> to discover something about Emacs use, is more than a little 
> disingenuous.
>

Thank you so much for your kind words.



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

* Re: Suggested experimental test
  2021-03-22 17:08         ` Gregory Heytings
  2021-03-22 17:46           ` Alan Mackenzie
@ 2021-03-22 18:03           ` Jean Louis
  1 sibling, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-22 18:03 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Lars Ingebrigtsen, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-22 20:08]:
> 
> > > > Well... the suggested experiment does not remove C-o, it changes
> > > > C-o in a way that is, I believe, painless.
> > > 
> > > Sorry; I didn't read the patch carefully.  So it basically moves
> > > `C-o' to `C-o C-o' (and makes the `C-o' prefix open for new
> > > commands)?
> > > 
> > > I don't use `C-o' myself, so I can't really say to what degree this
> > > would be annoying or not for users.  Any `C-o' users who have an
> > > opinion here?
> > 
> > For now I count 3 people from mailing lists who already objected to it,
> > including me.
> > 
> 
> I've only seen one (you), and perhaps a second one (Alfred), but I'm not
> quite sure because he initially thought that open-line would be
> removed.

Plus Rudolf Schlatte who explained using `C-o` frequently. Those are 3 for now.

> > How do you Lars insert new lines, before the current line with cursor?
> > 
> 
> I can't speak for Lars, but if this is something that I frequently needed, I
> would either learn the C-p C-e C-m sequence, or make it a command in my init
> file, for example:
> 
> (global-set-key (kbd "M-RET") (lambda () (interactive) (previous-line) (end-of-line) (newline-and-indent)))
> 
> (M-RET has a similar purpose in org-mode.)

That is good that you tell how you do it. Sounds funny to me,
obviously we have different ways to getting to same result. I am
inserting lines frequently and I would never think of using `C-p C-e
C-m` -- which now makes sense, as from your side you probably do not
insert lines, so for you `C-o` does not make sense.

In considerations if some change is useful one has to consider also
what other people are doing when they want to achieve functionality X,
in this case `open-line` which is often used to insert new lines
before the current one.

From your viewpoint, you are already using 3 keys to get to the
result, for you is fine to replace `C-o` with `C-o C-o` as that one
would any way shorten your own 3-keys sequence. But it looks like you
do not even use C-o to open a new line, like `C-a C-o` seems something
you did not use when cursor is not at beginning of wthe line.

Meeting users and their behavior of editing in relation to specific
feature is better, it is more productive, and gives more insights.

> > Gregory, don't you think that 3 users including me who expressed their
> > objections is not part of the experiment already?
> 
> No, precisely because nobody actually experimented the potential
> change. You cannot give an opinion on a change before experimenting
> it for some time, say, at least a day.

I am also thankful for that insight. For me, the experiment begins
with the simple introduction at the moment of understanding it. For
you it begins then when people actually start using it -- but you miss
the fact that some people would not even start experimenting with it
as they do not find it useful in the first place and do not want to
change their habits.

Experiment should not be conducted for the sake of experiment
alone. It should be conducted to improve the usability or user
experience with editor.

In my opinion, experiments of changing key bindings should not be
conducted with the purpose of introduction of new commands, but with
the purpose of making usability or user experience or efficiency of
editing better.

Checklist for key binding experiments:

1. [ ] - Conduct research, is the key binding included in Emacs-like
   editors like Emacs on Guile, Zile on Guile, Zile, mg, e3m, MIT
   Scheme's Edwin, and maybe few other similar.

2. [ ] - Conduct online research if the command and key binding is
   frequently asked for by users, review occurences of mentioning the
   command and the key binding on EmacsWiki, manual, and other
   websites by using search engines.

3. [ ] - Instead of proposing the experiment too early, ask people how
   they are doing the functionality X -- don't ask if they are using
   specific command `you-name-it`; example is how I have asked you and
   Lars "How are you inserting new line from the current line?" -- and
   I am still curious how people are doing it. Question is not really
   related to `C-o` or `open-line` but to the result of it that could
   be achieved by various different ways.

4. [ ] - Decide what is your proposal to replace key binding, define
   it well, but don't publish on the mailing list (or do publish).

5. [ ] - Compare your proposal to the existing key binding and the
   command and make list of reasons why would your replaced key
   binding be more useful and beneficial for users, user experience or
   efficiency in editing than the already present key binding. For
   example if you have never used `C-o` it would be better to fully
   understand its usage as it can be you have quite different idea on
   how to insert new lines. But if you did not understand usage of
   `C-o` you should or could assume that your proposal is maybe
   biased by your own user experience.

6. [ ] - After the review, if you think your proposal is improving
   editing efficiency, or usability, or user experience, then propose
   the new change. Provide patch, initiate experiments, or ask people
   about it.

7. [ ] - Do not assume that experiment, objections, protests, begin
   with the actual invokation of the experiment, as people on the
   mailing list already understand by reading the Emacs Lisp code,
   consider their opinions as valid objections and count them even if
   they did not practically experiment with it -- as they obviously
   did not find it practical to experiment with.

8. [ ] - Count pro and contras. Even if there are more positives for
   your experiment, do not assume that it would really enhance user
   experience, or that you got users' feedback, as we are on this
   mailing list testing Emacs in development stage, while users will
   be using it in their daily life. Consider various implications,
   breaking habits of millions of people. Consider butterfly effects
   before introducing it in new stable version of Emacs.

Jean



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

* Re: Suggested experimental test
  2021-03-22 17:48                 ` Gregory Heytings
@ 2021-03-22 18:11                   ` Eli Zaretskii
  2021-03-22 18:15                   ` Alfred M. Szmidt
  1 sibling, 0 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 18:11 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: ams, emacs-devel

> Date: Mon, 22 Mar 2021 17:48:44 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: ams@gnu.org, emacs-devel@gnu.org
> 
> You forget M-r, changed in Emacs 23.

Right.  However, that's still a handful.

> > So my summary would be different: since 35 years ago, only a handful of 
> > these keys were ever changed.
> >
> 
> I was replying to Alfred, who said that nothing had changed during the 
> last 40 years.

Yes, but you said "many keys" have been changed.  I don't think that's
accurate, since the number of people here who used Emacs before v18.x
is less than the number of keys whose bindings were changed since then
;-)



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

* RE: [EXTERNAL] Re: Suggested experimental test
  2021-03-22 12:06     ` Lars Ingebrigtsen
                         ` (3 preceding siblings ...)
  2021-03-22 17:40       ` Eli Zaretskii
@ 2021-03-22 18:11       ` Stephan Mueller
  2021-03-22 18:34         ` Lars Ingebrigtsen
                           ` (2 more replies)
  2021-03-22 20:33       ` Jose A. Ortega Ruiz
  5 siblings, 3 replies; 154+ messages in thread
From: Stephan Mueller @ 2021-03-22 18:11 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Gregory Heytings; +Cc: emacs-devel@gnu.org

Since opinions are explicitly being solicited, and since I have not encountered a particular point in my not-necessarily-comprehensive reading of this thread, I'll add one:

I use C-o (usually followed by C-n) many times a day, instead of <Enter>, in order to suppress re-indentation of the current line in cases where that re-indentation will be incorrect for my purposes**.

Needing to hit C-o twice would make the workaround more painful.  I expect I would end up rebinding in my .emacs to restore the current behaviour.

Also, I find myself nodding in agreement to the argument (apologies for not recalling who made it in this thread) that as a long-standing and fairly 'basic' binding, it is in use in other editors that try to be Emacs-like.  Changing the default behaviour here would introduce confusion to the world and confound muscle memory.

stephan();

** Of course, addressing the indentation issue would be good, but that perpetually remains a task for another day -- it's not a configurable behaviour, and will require me to do substantial research into cperl mode to understand more.  That said, even in cases not involving my oddly formatted perl, auto-indentation seems generally accurate enough to keep using, and inaccurate enough to need a workaround multiple times daily.

-----Original Message-----
From: Emacs-devel <emacs-devel-bounces+stephan=sbmueller.net@gnu.org> On Behalf Of Lars Ingebrigtsen
Sent: Monday, March 22, 2021 5:06 AM
To: Gregory Heytings <gregory@heytings.org>
Cc: emacs-devel@gnu.org
Subject: [EXTERNAL] Re: Suggested experimental test

Gregory Heytings <gregory@heytings.org> writes:

> Well... the suggested experiment does not remove C-o, it changes C-o
> in a way that is, I believe, painless. 

Sorry; I didn't read the patch carefully.  So it basically moves `C-o'
to `C-o C-o' (and makes the `C-o' prefix open for new commands)?

I don't use `C-o' myself, so I can't really say to what degree this
would be annoying or not for users.  Any `C-o' users who have an opinion
here?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: https://nam06.safelinks.protection.outlook.com/?url=http%3A%2F%2Flars.ingebrigtsen.no%2F&amp;data=04%7C01%7CStephan.Mueller%40microsoft.com%7C6defb25382ae4b50aabc08d8ed2afd3e%7C72f988bf86f141af91ab2d7cd011db47%7C1%7C0%7C637520116190706836%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&amp;sdata=dsMofHZVHi9n24IzfOxmFyXFOEVpV9GttwoJ6kXtwWA%3D&amp;reserved=0




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

* Re: Suggested experimental test
  2021-03-22 17:55         ` Gregory Heytings
@ 2021-03-22 18:13           ` Eli Zaretskii
  2021-03-22 20:22             ` Gregory Heytings
  0 siblings, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 18:13 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: larsi, emacs-devel

> Date: Mon, 22 Mar 2021 17:55:31 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: Lars Ingebrigtsen <larsi@gnus.org>, emacs-devel@gnu.org
> 
> >> I don't use `C-o' myself, so I can't really say to what degree this 
> >> would be annoying or not for users.  Any `C-o' users who have an 
> >> opinion here?
> >
> > I use it _a_lot_.
> >
> 
> But of course, as you said a month ago:
> 
> >
> > This question also goes to everyone else in this long dispute who wants 
> > their precious key bindings preserved: why is such a long discussion 
> > needed when it is so easy to restore, in your init file, a binding you 
> > want preserved?

Sure.  But what I wrote then didn't prevent you-all from flooding this
list with precisely the discussions I tried to prevent.

And anyway, I was responding to Lars's question about the use of this
key.  I said nothing else.



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

* Re: Suggested experimental test
  2021-03-22 10:05             ` Gregory Heytings
  2021-03-22 11:37               ` Philip Kaludercic
  2021-03-22 17:38               ` Eli Zaretskii
@ 2021-03-22 18:14               ` Alfred M. Szmidt
  2 siblings, 0 replies; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22 18:14 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: eliz, emacs-devel



   >> Even among the C-LETTER and M-LETTER keys, there are quite a few whose 
   >> meaning have changed during the last 40 years.  I know at least of: 
   >> C-h, C-l, M-g, M-j, M-n, M-o, M-p, M-r and M-s.  That's 9 keys out of 
   >> 52.
   >
   > Please describe those changes one by one.  At least for some of these 
   > keys I'm unaware of any changes in their bindings, so I'm curious what 
   > exactly is considered a "change" in this context.


So 6 keybinding got added, not changed.  Two/Three got semantics
changed slightly.  And an equal amount got rebound to something else.
I don't think this means that they changed that much meaning over the
last 40 years.

Since you mentioned "other" Emacsen....

   C-c: was initially exit-recursive-edit, and was changed to a prefix key 
   for modes in Emacs 16; exit-recursive-edit was then moved to C-M-c

Zmacs / TECO had this unbound.

   C-h: was initially (and in other Emacsen) the same as C-b, and was (very 
   early in the development of GNU Emacs) changed into the help character

Not in TECO or ZMACS; C-h was unbound (though, the key on the keyboard
said help, but it was initiated using TOP-h or some such).

   C-l: was 'recenter' up to and including Emacs 22, then became 
   'recenter-top-bottom', which changes its semantics when is repeated

Same in Zmacs / TECO, ignoring the minor semantical difference.

   C-z: was initially (and in other Emacsen) a prefix character, was at some 
   point bound exit-recursive-edit, then became (in GNU Emacs 1.11) bound to 
   suspend-emacs

C-z has always meant to punt Emacs to the background since the early
days of Emacs.

   M-g: was initially bound to fill-region, was used for facemenu in Emacs 
   19-21, and is used for goto-like commands since Emacs 22

Which is also what TECO and Zmacs had it too (fill-region)...

   M-j: was initially unused, became indent-new-comment-line in Emacs 1.7

M-j was in Zmacs for changing fonts.

   M-n and M-p: were initially unused, became what they are now in Emacs 17

These where normaly mode specific, but generally speaking comment
down/up line.

   M-o: was unused before Emacs 22, was used for facemenu in Emacs
   22-27

Once upon a time, this was "this indentation", i.e. new line but keep
same column.

   M-r: was initially unused, became 'move-to-window-line' in Emacs
   16, then became 'move-to-window-line-top-bottom', which changed its
   semantics when it is repeated

Zmacs / Teco have this as "move to screen edge".

   M-s: was initially unused, became center-line for text-modes in
   Emacs 16, and is used for search-like commands since Emacs 23

Center line in TECO / Zmacs.



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

* Re: Suggested experimental test
  2021-03-22 10:05                     ` Gregory Heytings
@ 2021-03-22 18:14                       ` Alfred M. Szmidt
  2021-03-22 19:06                         ` Gregory Heytings
  0 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22 18:14 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

   That doesn't answer the main question: how do you concretely poll these 
   users? and what would you consider to be a significant enough fraction of 
   Emacs users for the poll to be representative?  Would 500 answers be 
   enough? 1000? 5000? 10000?

I don't have the link at hand, but RMS had posted how to do exactly
this time of poll.  I can try to locate it for you if you want.

   What would you do with the result of such a poll?  What if only 50 or 100 
   in those 10000 answer "yes"?  Should the feature be kept for those 50 or 
   100?

The idea behind a poll is to gather some data and get an idea of the
overal situation.  emacs-devel isn't a very good place for such
information.

   Moreover the result of a yes/no poll like "Do you use M-o 
   (frobnicate-line)?" is not very useful:

What is the issue understanding those answers? They give some insight
as to what users might prefer and what they do.

   > so one could accumulate a set of proposal in release 20, send it out 
   > during release 21, and delibrate and implement for 22.

   That would be unrealistic, it would mean a four to six years waiting 
   period before an UI change can be implemented, long enough to discourage 
   anyone in advance to even envision the possibility of proposing such a 
   change.

Would that be a bad thing? Why is there such a hurry to change
_existing_ behaviour, or specifically _removing_ existing behaviour?
We aren't talking about every single UI change.  Emacs is stable, and
significant changes in the UI should take time (I consider C-o to be
more significant than M-o -- which at least when it got modified the
key got a different useful meaning).

   >> Fortunately, such changes are easy to revert for users who would
   >> dislike them, and the way to revert them is documented in the
   >> NEWS file.
   >
   > From my experience, it isn't the case.

   Of course it is, for example the way to revert the M-o change is
   documented in the NEWS file, both for those who would like to only
   revert facemenu, and for those who would like to only revert the
   two center-foo commands.

We are misscommunicating, I am talking about restoring the previous
behaviour in Emacs, not on a per user basis.  

The point here is that the suggestions have been removing
featues, without replacing them. exit-recursive-edit got moved to a
different binding, and the semantics of C-c got changed to something
useful.



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

* Re: Suggested experimental test
  2021-03-22 17:48                 ` Gregory Heytings
  2021-03-22 18:11                   ` Eli Zaretskii
@ 2021-03-22 18:15                   ` Alfred M. Szmidt
  1 sibling, 0 replies; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22 18:15 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: eliz, emacs-devel

   > So my summary would be different: since 35 years ago, only a handful of 
   > these keys were ever changed.

   I was replying to Alfred, who said that nothing had changed during the 
   last 40 years.

Eh? I didn't say that at all.



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

* Re: Suggested experimental test
  2021-03-22 17:40       ` Eli Zaretskii
  2021-03-22 17:55         ` Gregory Heytings
@ 2021-03-22 18:17         ` Lars Ingebrigtsen
  2021-03-22 18:50           ` Eli Zaretskii
  2021-03-22 20:56         ` Thierry Volpiatto
  2 siblings, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 18:17 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gregory, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> I don't use `C-o' myself, so I can't really say to what degree this
>> would be annoying or not for users.  Any `C-o' users who have an opinion
>> here?
>
> I use it _a_lot_.

`M-o M-o' seemed to be a command that many people were unaware of, but
when they learned of what it was used for, they recognised the utility
of such a command.  (I was certainly one of them.)

I've tried using `C-o' here and there, but it never seems to do what I
want, so I wonder what the practical use case for this command is.  I'm
probably missing something.

That is, I expected the command to go from this:

(defun eww-detect-charset (html-p)
  (let ((case-fold-search| t)

to this:

(defun eww-detect-charset (html-p)
  (let ((case-fold-search|
         t)

Instead it gives me this:

(defun eww-detect-charset (html-p)
  (let ((case-fold-search|
 t)

The | character gives the point position.

In text-like modes it seems less awkward, since I just `M-q' afterwards
anyway.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 17:46           ` Alan Mackenzie
  2021-03-22 17:59             ` Gregory Heytings
@ 2021-03-22 18:23             ` Alfred M. Szmidt
  2021-03-23  6:09             ` Richard Stallman
  2 siblings, 0 replies; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22 18:23 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: gregory, larsi, bugs, emacs-devel

Well said.

   And describing it as an "experiment", as though your intention is purely
   to discover something about Emacs use, is more than a little disingenuous.

It is exactly how M-o was forced through, "an experiment" -- people
objected, those who just didn't care the keybinding (i.e. people who
had already rebound it, or didn't use it) weren't effected.





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

* Re: Suggested experimental test
  2021-03-22 18:11       ` [EXTERNAL] " Stephan Mueller
@ 2021-03-22 18:34         ` Lars Ingebrigtsen
  2021-03-22 18:56           ` Eli Zaretskii
  2021-03-25 17:04           ` [EXTERNAL] " Stephan Mueller
  2021-03-22 19:37         ` Stefan Monnier
  2021-03-22 19:42         ` Dmitry Gutov
  2 siblings, 2 replies; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 18:34 UTC (permalink / raw)
  To: Stephan Mueller; +Cc: Gregory Heytings, emacs-devel@gnu.org

Stephan Mueller <Stephan.Mueller@microsoft.com> writes:

> I use C-o (usually followed by C-n) many times a day, instead of
> <Enter>, in order to suppress re-indentation of the current line in
> cases where that re-indentation will be incorrect for my purposes**.

Oh, I see -- it's useful as an alternative to `RET' exactly when
re-indentation does the wrong thing?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-21 10:48   ` Gregory Heytings
                       ` (2 preceding siblings ...)
  2021-03-22 12:06     ` Lars Ingebrigtsen
@ 2021-03-22 18:42     ` Sean Whitton
  3 siblings, 0 replies; 154+ messages in thread
From: Sean Whitton @ 2021-03-22 18:42 UTC (permalink / raw)
  To: Gregory Heytings, Lars Ingebrigtsen; +Cc: emacs-devel

Hello Gregory,

On Sun 21 Mar 2021 at 10:48AM GMT, Gregory Heytings wrote:

>>> May I suggest the attached, slightly more controversial, experimental
>>> test?
>>
>> Removing `C-o' has already been suggested, and there's already been a
>> lot of negative feedback on that, if I remember correctly.  So I don't
>> think there's much point in doing this experiment.
>>
>
> Well... the suggested experiment does not remove C-o, it changes C-o in a
> way that is, I believe, painless.  We cannot know whether it is indeed
> painless without experimenting at a larger scale.  The few who objected
> against changing C-o may well find out, after trying it out, that this
> small change is not as bad as they thought.
>
> As far as I remember, there has not been a lot of negative feedback on
> changing C-o, the negative feedback was (to my surprise) mostly about the
> possibility of changing the behavior of C-z.

To be honest, changing C-o feels like changing C-y -- in fact, I
probably type C-o more often than I type C-y.

-- 
Sean Whitton



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

* Re: Suggested experimental test
  2021-03-22 18:17         ` Lars Ingebrigtsen
@ 2021-03-22 18:50           ` Eli Zaretskii
  2021-03-22 19:09             ` Lars Ingebrigtsen
  0 siblings, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 18:50 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: gregory, emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: gregory@heytings.org,  emacs-devel@gnu.org
> Date: Mon, 22 Mar 2021 19:17:25 +0100
> 
> That is, I expected the command to go from this:
> 
> (defun eww-detect-charset (html-p)
>   (let ((case-fold-search| t)
> 
> to this:
> 
> (defun eww-detect-charset (html-p)
>   (let ((case-fold-search|
>          t)
> 
> Instead it gives me this:
> 
> (defun eww-detect-charset (html-p)
>   (let ((case-fold-search|
>  t)

This command isn't supposed to reindent the next line, it just inserts
a newline.  My main use for it is to move line(s) downward when point
is in column zero.  The 'o' in C-o stands for "open" a line.



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

* Re: Suggested experimental test
  2021-03-22 18:34         ` Lars Ingebrigtsen
@ 2021-03-22 18:56           ` Eli Zaretskii
  2021-03-22 19:13             ` Lars Ingebrigtsen
  2021-03-22 20:22             ` Gregory Heytings
  2021-03-25 17:04           ` [EXTERNAL] " Stephan Mueller
  1 sibling, 2 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 18:56 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: gregory, emacs-devel, Stephan.Mueller

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Date: Mon, 22 Mar 2021 19:34:34 +0100
> Cc: Gregory Heytings <gregory@heytings.org>,
>  "emacs-devel@gnu.org" <emacs-devel@gnu.org>
> 
> Stephan Mueller <Stephan.Mueller@microsoft.com> writes:
> 
> > I use C-o (usually followed by C-n) many times a day, instead of
> > <Enter>, in order to suppress re-indentation of the current line in
> > cases where that re-indentation will be incorrect for my purposes**.
> 
> Oh, I see -- it's useful as an alternative to `RET' exactly when
> re-indentation does the wrong thing?

Yes, but not only that -- it doesn't move point to the next line,
unlike RET.



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

* Re: Suggested experimental test
  2021-03-22 18:14                       ` Alfred M. Szmidt
@ 2021-03-22 19:06                         ` Gregory Heytings
  2021-03-22 19:56                           ` [External] : " Drew Adams
  2021-03-22 21:08                           ` Alfred M. Szmidt
  0 siblings, 2 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 19:06 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: emacs-devel


>
> I don't have the link at hand, but RMS had posted how to do exactly this 
> time of poll.  I can try to locate it for you if you want.
>

I would indeed be interested in seeing it.

>
> The point here is that the suggestions have been removing featues, 
> without replacing them. exit-recursive-edit got moved to a different 
> binding, and the semantics of C-c got changed to something useful.
>

Once again, the point of the suggested experiment is _not_ to remove a 
feature.  open-line would be moved to a different binding, and the 
semantics of C-o would be changed to something useful.

(Obviously, I'm not proposing this just to leave the that key unused.)



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

* Re: Suggested experimental test
  2021-03-22 18:50           ` Eli Zaretskii
@ 2021-03-22 19:09             ` Lars Ingebrigtsen
  2021-03-22 19:55               ` Lars Ingebrigtsen
  2021-03-22 20:22               ` Gregory Heytings
  0 siblings, 2 replies; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 19:09 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gregory, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> This command isn't supposed to reindent the next line, it just inserts
> a newline.  My main use for it is to move line(s) downward when point
> is in column zero.  The 'o' in C-o stands for "open" a line.

I see.  Yes, that seems useful.

Gregory, I don't think there's much point in doing this experiment --
the pushback is already substantial, so I think we have the data we need
already.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 18:56           ` Eli Zaretskii
@ 2021-03-22 19:13             ` Lars Ingebrigtsen
  2021-03-22 19:19               ` Eli Zaretskii
  2021-03-22 19:21               ` chad
  2021-03-22 20:22             ` Gregory Heytings
  1 sibling, 2 replies; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 19:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gregory, Stephan.Mueller, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> > I use C-o (usually followed by C-n) many times a day, instead of
>> > <Enter>, in order to suppress re-indentation of the current line in
>> > cases where that re-indentation will be incorrect for my purposes**.
>> 
>> Oh, I see -- it's useful as an alternative to `RET' exactly when
>> re-indentation does the wrong thing?
>
> Yes, but not only that -- it doesn't move point to the next line,
> unlike RET.

Right, but in the use case described, the `C-o' is followed by `C-n', so
it's just to suppress faulty re-indentation, apparently.

And I think that's a valid use case -- Emacs does get these things wrong
now and then, and having an escape hatch readily available seems
useful.  Perhaps the doc string of `RET' (i.e., `newline-and-indent' in
most modes) should mention (and link to) to `C-o'?  

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 19:13             ` Lars Ingebrigtsen
@ 2021-03-22 19:19               ` Eli Zaretskii
  2021-03-22 19:25                 ` Lars Ingebrigtsen
  2021-03-22 19:21               ` chad
  1 sibling, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 19:19 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: gregory, Stephan.Mueller, emacs-devel

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: gregory@heytings.org,  emacs-devel@gnu.org,  Stephan.Mueller@microsoft.com
> Date: Mon, 22 Mar 2021 20:13:49 +0100
> 
> And I think that's a valid use case -- Emacs does get these things wrong
> now and then, and having an escape hatch readily available seems
> useful.

That's true.  I use C-o in those cases as well.

> Perhaps the doc string of `RET' (i.e., `newline-and-indent' in most
> modes) should mention (and link to) to `C-o'?

I don't see why not.



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

* Re: Suggested experimental test
  2021-03-22 19:13             ` Lars Ingebrigtsen
  2021-03-22 19:19               ` Eli Zaretskii
@ 2021-03-22 19:21               ` chad
  2021-03-22 19:26                 ` Eli Zaretskii
  2021-03-22 19:28                 ` Lars Ingebrigtsen
  1 sibling, 2 replies; 154+ messages in thread
From: chad @ 2021-03-22 19:21 UTC (permalink / raw)
  To: Lars Ingebrigtsen
  Cc: Eli Zaretskii, EMACS development team, Gregory Heytings,
	Stephan.Mueller

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

On Mon, Mar 22, 2021 at 12:14 PM Lars Ingebrigtsen <larsi@gnus.org> wrote:

> Eli Zaretskii <eliz@gnu.org> writes:
>
> >> > I use C-o (usually followed by C-n) many times a day, instead of
> >> > <Enter>, in order to suppress re-indentation of the current line in
> >> > cases where that re-indentation will be incorrect for my purposes**.
> >>
> >> Oh, I see -- it's useful as an alternative to `RET' exactly when
> >> re-indentation does the wrong thing?
> >
> > Yes, but not only that -- it doesn't move point to the next line,
> > unlike RET.
>
> Right, but in the use case described, the `C-o' is followed by `C-n', so
> it's just to suppress faulty re-indentation, apparently.
>
> And I think that's a valid use case -- Emacs does get these things wrong
> now and then, and having an escape hatch readily available seems
> useful.  Perhaps the doc string of `RET' (i.e., `newline-and-indent' in
> most modes) should mention (and link to) to `C-o'?
>

I'm having a hard time finding a behavior difference between `C-o C-n' and
`C-j' in these contexts. Can someone help me understand the difference?

Thanks in advance,
~Chad

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

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

* Re: Suggested experimental test
  2021-03-22 19:19               ` Eli Zaretskii
@ 2021-03-22 19:25                 ` Lars Ingebrigtsen
  2021-03-22 19:49                   ` Stefan Monnier
  0 siblings, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 19:25 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gregory, Stephan.Mueller, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Perhaps the doc string of `RET' (i.e., `newline-and-indent' in most
>> modes) should mention (and link to) to `C-o'?
>
> I don't see why not.

Now done.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 19:21               ` chad
@ 2021-03-22 19:26                 ` Eli Zaretskii
  2021-03-22 19:51                   ` Stefan Monnier
  2021-03-22 19:28                 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 19:26 UTC (permalink / raw)
  To: chad; +Cc: larsi, emacs-devel, gregory, Stephan.Mueller

> From: chad <yandros@gmail.com>
> Date: Mon, 22 Mar 2021 12:21:23 -0700
> Cc: Eli Zaretskii <eliz@gnu.org>, Gregory Heytings <gregory@heytings.org>, Stephan.Mueller@microsoft.com, 
> 	EMACS development team <emacs-devel@gnu.org>
> 
> I'm having a hard time finding a behavior difference between `C-o C-n' and `C-j' in these contexts. Can
> someone help me understand the difference?

C-j doesn't only insert a newline.  In fact, in some modes it does
something utterly different.  That's a stark contrast to what C-o with
or without C-n does.



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

* Re: Suggested experimental test
  2021-03-22 19:21               ` chad
  2021-03-22 19:26                 ` Eli Zaretskii
@ 2021-03-22 19:28                 ` Lars Ingebrigtsen
  2021-03-22 19:56                   ` [External] : " Drew Adams
  1 sibling, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 19:28 UTC (permalink / raw)
  To: chad
  Cc: Eli Zaretskii, EMACS development team, Gregory Heytings,
	Stephan.Mueller

chad <yandros@gmail.com> writes:

> I'm having a hard time finding a behavior difference between `C-o C-n'
> and `C-j' in these contexts. Can someone help me understand the
> difference?

That's true, but `C-j' is sometimes more complicated:

---
It is bound to C-j.

(electric-newline-and-maybe-indent)

Insert a newline.
If ‘electric-indent-mode’ is enabled, that’s that, but if it
is *disabled* then additionally indent according to major mode.
---

But, yes, `C-j' is often the command to use when `RET' does too much.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: [EXTERNAL] Re: Suggested experimental test
  2021-03-22 18:11       ` [EXTERNAL] " Stephan Mueller
  2021-03-22 18:34         ` Lars Ingebrigtsen
@ 2021-03-22 19:37         ` Stefan Monnier
  2021-03-22 19:42         ` Dmitry Gutov
  2 siblings, 0 replies; 154+ messages in thread
From: Stefan Monnier @ 2021-03-22 19:37 UTC (permalink / raw)
  To: Stephan Mueller; +Cc: Lars Ingebrigtsen, Gregory Heytings, emacs-devel@gnu.org

> I use C-o (usually followed by C-n) many times a day, instead of <Enter>, in
> order to suppress re-indentation of the current line in cases where that
> re-indentation will be incorrect for my purposes**.

FWIW, normally you can replace `C-o C-n` with `C-j`.

[ I'm not sure `cperl-mode` is sufficiently normal in this respect, tho
  (one of the reasons why I prefer `perl-mode`).  ]


        Stefan




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

* Re: [EXTERNAL] Re: Suggested experimental test
  2021-03-22 18:11       ` [EXTERNAL] " Stephan Mueller
  2021-03-22 18:34         ` Lars Ingebrigtsen
  2021-03-22 19:37         ` Stefan Monnier
@ 2021-03-22 19:42         ` Dmitry Gutov
  2 siblings, 0 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-22 19:42 UTC (permalink / raw)
  To: Stephan Mueller, Lars Ingebrigtsen, Gregory Heytings; +Cc: emacs-devel@gnu.org

On 22.03.2021 20:11, Stephan Mueller wrote:
> I use C-o (usually followed by C-n) many times a day, instead of <Enter>, in order to suppress re-indentation of the current line in cases where that re-indentation will be incorrect for my purposes**.

Same.

Probably less frequently, though, now that I

   (global-set-key (kbd "RET") 'newline-and-indent)

in my init script. Though this customization choice bears its own downsides.



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

* Re: Suggested experimental test
  2021-03-22 19:25                 ` Lars Ingebrigtsen
@ 2021-03-22 19:49                   ` Stefan Monnier
  2021-03-22 19:52                     ` Lars Ingebrigtsen
  0 siblings, 1 reply; 154+ messages in thread
From: Stefan Monnier @ 2021-03-22 19:49 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel, gregory, Stephan.Mueller

>>> Perhaps the doc string of `RET' (i.e., `newline-and-indent' in most
>>> modes) should mention (and link to) to `C-o'?
>> I don't see why not.

Maybe because it already says:

    To just insert a newline, use \\[electric-indent-just-newline].


-- Stefan




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

* Re: Suggested experimental test
  2021-03-22 19:26                 ` Eli Zaretskii
@ 2021-03-22 19:51                   ` Stefan Monnier
  2021-03-22 20:04                     ` Eli Zaretskii
  0 siblings, 1 reply; 154+ messages in thread
From: Stefan Monnier @ 2021-03-22 19:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stephan.Mueller, chad, gregory, larsi, emacs-devel

> C-j doesn't only insert a newline.  In fact, in some modes it does
> something utterly different.

AFAIC this is a bug in those modes.


        Stefan




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

* Re: Suggested experimental test
  2021-03-22 19:49                   ` Stefan Monnier
@ 2021-03-22 19:52                     ` Lars Ingebrigtsen
  2021-03-22 20:54                       ` Stefan Monnier
  0 siblings, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 19:52 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel, gregory, Stephan.Mueller

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Maybe because it already says:
>
>     To just insert a newline, use \\[electric-indent-just-newline].

Not here (in Emacs 28)...

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 19:09             ` Lars Ingebrigtsen
@ 2021-03-22 19:55               ` Lars Ingebrigtsen
  2021-03-22 22:02                 ` Stefan Kangas
  2021-03-22 20:22               ` Gregory Heytings
  1 sibling, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 19:55 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gregory, emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Gregory, I don't think there's much point in doing this experiment --
> the pushback is already substantial, so I think we have the data we need
> already.

The tenor of discussion in this thread has been shocking, though, with
people ascribing nefarious motivations to Gregory's suggestion.  Please
stop doing this -- it makes this mailing list distinctly unfriendly.

People should be free to make suggestions without being sniped at.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* RE: [External] : Re: Suggested experimental test
  2021-03-22 19:28                 ` Lars Ingebrigtsen
@ 2021-03-22 19:56                   ` Drew Adams
  2021-03-22 20:56                     ` Stefan Monnier
  0 siblings, 1 reply; 154+ messages in thread
From: Drew Adams @ 2021-03-22 19:56 UTC (permalink / raw)
  To: Lars Ingebrigtsen, chad
  Cc: Eli Zaretskii, Stephan.Mueller@microsoft.com, Gregory Heytings,
	EMACS development team

> It is bound to C-j.
> (electric-newline-and-maybe-indent)
> 
> Insert a newline.
> If ‘electric-indent-mode’ is enabled, that’s that, but if it
> is *disabled* then additionally indent according to major mode.

I turned that off as soon as `C-j' was co-opted by it.
I prefer the classic Emacs RET and C-j behavior.

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

* RE: [External] : Re: Suggested experimental test
  2021-03-22 19:06                         ` Gregory Heytings
@ 2021-03-22 19:56                           ` Drew Adams
  2021-03-22 21:03                             ` Alfred M. Szmidt
  2021-03-22 21:08                           ` Alfred M. Szmidt
  1 sibling, 1 reply; 154+ messages in thread
From: Drew Adams @ 2021-03-22 19:56 UTC (permalink / raw)
  To: Gregory Heytings, Alfred M. Szmidt; +Cc: emacs-devel@gnu.org

> Obviously, I'm not proposing this just to leave the that key unused.

Oh, but I wish that _were_ the proposal...  Unused AND
with an intention not to bind it by default at all.

If we can remove preloading of facemenu or whatever
then why can't we remove this or that default binding?

Post the change in NEWS, with the code to reenable
it for anyone who needs it: (global-set-key ...).

I'm in favor of freeing up `C-o' for preferential
use by 3rd-party code (e.g. as a prefix key or a
repeating command or ...).

I sympathize with anyone who has a longstanding habit
of using some key that's been bound by default.  But
nothing is easier for a user than binding such a key.

Voila.  You asked for opinions.  Apologies to all
who objected to the proposed change for other/opposite
reasons.

My objection is not to removal of the existing binding;
it's to binding `C-o' in some other default way.

Just unbind it and declare Emacs's intention, at least
for the foreseeable future, to not bind it by default.
Give it up to 3rd-party code, unless/until Emacs really
gets a screaming/important need to bind it by default.



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

* Re: Suggested experimental test
  2021-03-22 19:51                   ` Stefan Monnier
@ 2021-03-22 20:04                     ` Eli Zaretskii
  2021-03-22 20:11                       ` Lars Ingebrigtsen
  2021-03-22 20:49                       ` Stefan Monnier
  0 siblings, 2 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-22 20:04 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stephan.Mueller, yandros, gregory, larsi, emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: chad <yandros@gmail.com>,  larsi@gnus.org,  emacs-devel@gnu.org,
>   gregory@heytings.org,  Stephan.Mueller@microsoft.com
> Date: Mon, 22 Mar 2021 15:51:32 -0400
> 
> > C-j doesn't only insert a newline.  In fact, in some modes it does
> > something utterly different.
> 
> AFAIC this is a bug in those modes.

??? Including lisp-interaction-mode?



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

* Re: Suggested experimental test
  2021-03-22 20:04                     ` Eli Zaretskii
@ 2021-03-22 20:11                       ` Lars Ingebrigtsen
  2021-03-22 20:16                         ` Lars Ingebrigtsen
  2021-03-22 20:49                       ` Stefan Monnier
  1 sibling, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 20:11 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Stephan.Mueller, yandros, gregory, Stefan Monnier, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> ??? Including lisp-interaction-mode?

Heh.  

(1 2 |3 4)

and C-j in *scratch* gives me

(1 2 
2
3 4)

Which is kinda sorta natural (it evalued 2 and inserted it, and then did
a newline), but that sure is quirky, and is quite removed from "just
insert a newline".

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 20:11                       ` Lars Ingebrigtsen
@ 2021-03-22 20:16                         ` Lars Ingebrigtsen
  2021-03-23  7:04                           ` Eli Zaretskii
  0 siblings, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 20:16 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: yandros, emacs-devel, gregory, Stefan Monnier, Stephan.Mueller

Lars Ingebrigtsen <larsi@gnus.org> writes:

>> ??? Including lisp-interaction-mode?
>
> Heh.  
>
> (1 2 |3 4)
>
> and C-j in *scratch* gives me

Oops, never mind -- C-j in that mode is `eval-print-last-sexp', which is
a totally different thing.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 18:13           ` Eli Zaretskii
@ 2021-03-22 20:22             ` Gregory Heytings
  2021-03-23  8:06               ` Eli Zaretskii
  0 siblings, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 20:22 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: larsi, emacs-devel


>>>> I don't use `C-o' myself, so I can't really say to what degree this 
>>>> would be annoying or not for users.  Any `C-o' users who have an 
>>>> opinion here?
>>>
>>> I use it _a_lot_.
>>
>> But of course, as you said a month ago:
>>
>>> This question also goes to everyone else in this long dispute who 
>>> wants their precious key bindings preserved: why is such a long 
>>> discussion needed when it is so easy to restore, in your init file, a 
>>> binding you want preserved?
>
> Sure.  But what I wrote then didn't prevent you-all from flooding this 
> list with precisely the discussions I tried to prevent.
>

I'm sorry for this, that's not what I wanted.  What would be the way to 
conduct such an experiment without provoking such a flooding, for those 
who do not have write access to the trunk?

IMO Emacs is now in a position that is similar to that of Emacs 16, when 
RMS introduced modes.  He realized that he needed a prefix key for them, 
and he did not choose to use one of the yet unused meta keys: instead he 
repurposed C-c and moved its command somewhere else.  The need for such a 
prefix key is something that he could not have envisioned while writing 
Emacs 1, it became apparent only later.  Likewise, some time later, when 
user configuration files became common, the C-c LETTER keys were freed. 
Again the need for this could not have been seen beforehand, and again RMS 
did not choose to use a free meta key for this.

Now the situation is that third-party packages are becoming more and more 
popular, something which couldn't have been envisioned twenty years ago, 
and these packages can't be installed in a simple way, that is, without 
asking users to fiddle with their configuration files, to define some 
global key bindings that these packages need.  I don't see why we 
shouldn't act in the same way RMS acted, that is, by repurposing one 
control key for them.



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

* Re: Suggested experimental test
  2021-03-22 18:56           ` Eli Zaretskii
  2021-03-22 19:13             ` Lars Ingebrigtsen
@ 2021-03-22 20:22             ` Gregory Heytings
  2021-03-23  8:09               ` Eli Zaretskii
  1 sibling, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 20:22 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, Stephan.Mueller, emacs-devel


>>> I use C-o (usually followed by C-n) many times a day, instead of 
>>> <Enter>, in order to suppress re-indentation of the current line in 
>>> cases where that re-indentation will be incorrect for my purposes**.
>>
>> Oh, I see -- it's useful as an alternative to `RET' exactly when 
>> re-indentation does the wrong thing?
>
> Yes, but not only that -- it doesn't move point to the next line, unlike 
> RET.
>

Why should a control key must be reserved forever for that very specific 
purpose, and for that very specific purpose only, in the default Emacs 
bindings?  That's something that could be moved on, say, M-RET (and 
possibly improved).



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

* Re: Suggested experimental test
  2021-03-22 19:09             ` Lars Ingebrigtsen
  2021-03-22 19:55               ` Lars Ingebrigtsen
@ 2021-03-22 20:22               ` Gregory Heytings
  2021-03-22 20:36                 ` Lars Ingebrigtsen
  1 sibling, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-22 20:22 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel


>> This command isn't supposed to reindent the next line, it just inserts 
>> a newline.  My main use for it is to move line(s) downward when point 
>> is in column zero.  The 'o' in C-o stands for "open" a line.
>
> I see.  Yes, that seems useful.
>
> Gregory, I don't think there's much point in doing this experiment -- 
> the pushback is already substantial, so I think we have the data we need 
> already.
>

That's unfortunate, but I see your point.  A few voices who complain 
loudly without even trying things are, alas, enough to prevent progress.

>
> The tenor of discussion in this thread has been shocking, though, with 
> people ascribing nefarious motivations to Gregory's suggestion.  Please 
> stop doing this -- it makes this mailing list distinctly unfriendly.
>

Thank you, Lars.



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

* Re: Suggested experimental test
  2021-03-22 12:06     ` Lars Ingebrigtsen
                         ` (4 preceding siblings ...)
  2021-03-22 18:11       ` [EXTERNAL] " Stephan Mueller
@ 2021-03-22 20:33       ` Jose A. Ortega Ruiz
  5 siblings, 0 replies; 154+ messages in thread
From: Jose A. Ortega Ruiz @ 2021-03-22 20:33 UTC (permalink / raw)
  To: emacs-devel

On Mon, Mar 22 2021, Lars Ingebrigtsen wrote:

> Gregory Heytings <gregory@heytings.org> writes:
>
>> Well... the suggested experiment does not remove C-o, it changes C-o
>> in a way that is, I believe, painless. 
>
> Sorry; I didn't read the patch carefully.  So it basically moves `C-o'
> to `C-o C-o' (and makes the `C-o' prefix open for new commands)?
>
> I don't use `C-o' myself, so I can't really say to what degree this
> would be annoying or not for users.  Any `C-o' users who have an opinion
> here?

I use C-o very, very often, to the point that i am sure that i will
pretty soon rebind it to its former meaning (and lose easy accesibility
to the new map, most possibly to my disadvantage, but old habits die
hard).  Something similar happened to me with M-g, if memory serves, but
admittedly here the fact that repeating it "will work" might ameliorate
my reaction.

Cheers,
jao
-- 
Sometimes I think we're alone in the universe, and sometimes I think we're
not. In either case, the idea is quite staggering.
 -Arthur C Clarke, writer (1917- )




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

* Re: Suggested experimental test
  2021-03-22 20:22               ` Gregory Heytings
@ 2021-03-22 20:36                 ` Lars Ingebrigtsen
  2021-03-22 21:03                   ` Alfred M. Szmidt
  0 siblings, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 20:36 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Eli Zaretskii, emacs-devel

Gregory Heytings <gregory@heytings.org> writes:

> That's unfortunate, but I see your point.  A few voices who complain
> loudly without even trying things are, alas, enough to prevent
> progress.

Excessive volume does not influence anything (in the direction the
voices want to go).  At least not for me; quite the opposite.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 20:04                     ` Eli Zaretskii
  2021-03-22 20:11                       ` Lars Ingebrigtsen
@ 2021-03-22 20:49                       ` Stefan Monnier
  2021-03-22 21:02                         ` [External] : " Drew Adams
  2021-03-23  7:09                         ` Eli Zaretskii
  1 sibling, 2 replies; 154+ messages in thread
From: Stefan Monnier @ 2021-03-22 20:49 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Stephan.Mueller, yandros, gregory, larsi, emacs-devel

>> > C-j doesn't only insert a newline.  In fact, in some modes it does
>> > something utterly different.
>> AFAIC this is a bug in those modes.
> ??? Including lisp-interaction-mode?

lisp-interaction-mode is a weird beast, indeed.


        Stefan "who uses IELM instead"




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

* Re: Suggested experimental test
  2021-03-22 19:52                     ` Lars Ingebrigtsen
@ 2021-03-22 20:54                       ` Stefan Monnier
  2021-03-22 21:04                         ` Lars Ingebrigtsen
  0 siblings, 1 reply; 154+ messages in thread
From: Stefan Monnier @ 2021-03-22 20:54 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Eli Zaretskii, emacs-devel, gregory, Stephan.Mueller

Lars Ingebrigtsen [2021-03-22 20:52:19] wrote:
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> Maybe because it already says:
>>     To just insert a newline, use \\[electric-indent-just-newline].
> Not here (in Emacs 28)...

I guess this is a misunderstanding coming from:

    Perhaps the doc string of `RET' (i.e., `newline-and-indent' in most
    modes) should mention (and link to) to `C-o'?

RET is supposed to be bound to `newline` by default, pretty
much everywhere.  There are many modes which still bind RET to
`newline-and-indent`, but that's a historical accident that we should
fix because it disregards the user's choice to enable or disable
`electric-indent(-local)-mode`.

The docstring of `newline` (the thing bound to RET by default, AFAIC)
does include the line above, AFAICT.  I don't see a string need for
`newline-and-indent` to point to something else (like `open-line`) since
this is a command which should basically never be bound except by an
explicit choice of the end-user.


        Stefan




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

* Re: Suggested experimental test
  2021-03-22 17:40       ` Eli Zaretskii
  2021-03-22 17:55         ` Gregory Heytings
  2021-03-22 18:17         ` Lars Ingebrigtsen
@ 2021-03-22 20:56         ` Thierry Volpiatto
  2 siblings, 0 replies; 154+ messages in thread
From: Thierry Volpiatto @ 2021-03-22 20:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Lars Ingebrigtsen, gregory, emacs-devel

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


Eli Zaretskii <eliz@gnu.org> writes:

>> From: Lars Ingebrigtsen <larsi@gnus.org>
>> Date: Mon, 22 Mar 2021 13:06:09 +0100
>> Cc: emacs-devel@gnu.org
>> 
>> I don't use `C-o' myself, so I can't really say to what degree this
>> would be annoying or not for users.  Any `C-o' users who have an opinion
>> here?
>
> I use it _a_lot_.

Same here.

Here another use case (C-o is not == to C-e RET):

(setq fill-column 70)
(auto-fill-mode 1)

for some reasons you want to add fooooo word at eol 001 and insert a new
line between 001 and 002.

;; 001 aaaaa aaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa
;; 002 aaaaaaa aaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaa aaaaa aaaaa

to endup with this:

;; 001 aaaaa aaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa aaaaaaa fooooo

;; 002 aaaaaaa aaaaaaa aaaaaaaaa aaaaaaaaa aaaaaaaaa aaaaaa aaaaa aaaaa

Thanks to C-o C-n, otherwise you have to C-n C-a RET C-p after typing fooooo.


-- 
Thierry

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 686 bytes --]

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

* Re: [External] : Re: Suggested experimental test
  2021-03-22 19:56                   ` [External] : " Drew Adams
@ 2021-03-22 20:56                     ` Stefan Monnier
  2021-03-22 21:19                       ` Drew Adams
  0 siblings, 1 reply; 154+ messages in thread
From: Stefan Monnier @ 2021-03-22 20:56 UTC (permalink / raw)
  To: Drew Adams
  Cc: Stephan.Mueller@microsoft.com, EMACS development team,
	Gregory Heytings, Lars Ingebrigtsen, chad, Eli Zaretskii

> I prefer the classic Emacs RET and C-j behavior.

You mean the one where RET sometimes indents and sometimes doesn't
depending on the preference of the major mode's author?  ;-)


        Stefan




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

* RE: [External] : Re: Suggested experimental test
  2021-03-22 20:49                       ` Stefan Monnier
@ 2021-03-22 21:02                         ` Drew Adams
  2021-03-23  7:09                         ` Eli Zaretskii
  1 sibling, 0 replies; 154+ messages in thread
From: Drew Adams @ 2021-03-22 21:02 UTC (permalink / raw)
  To: Stefan Monnier, Eli Zaretskii
  Cc: larsi@gnus.org, yandros@gmail.com, emacs-devel@gnu.org,
	gregory@heytings.org, Stephan.Mueller@microsoft.com

> > Including lisp-interaction-mode?
> lisp-interaction-mode is a weird beast, indeed.
>         Stefan "who uses IELM instead"

+1.  Drew, who uses emacs-lisp-mode instead.




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

* Re: [External] : Re: Suggested experimental test
  2021-03-22 19:56                           ` [External] : " Drew Adams
@ 2021-03-22 21:03                             ` Alfred M. Szmidt
  2021-03-22 21:26                               ` Drew Adams
  0 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22 21:03 UTC (permalink / raw)
  To: Drew Adams; +Cc: gregory, emacs-devel

   > Obviously, I'm not proposing this just to leave the that key
   > unused.

   Oh, but I wish that _were_ the proposal...  Unused AND
   with an intention not to bind it by default at all.

Seeing that to get sensible behaviour in Emacs is to re-bind it, why
can't you do the same and ignore whatever it is bound too?



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

* Re: Suggested experimental test
  2021-03-22 20:36                 ` Lars Ingebrigtsen
@ 2021-03-22 21:03                   ` Alfred M. Szmidt
  0 siblings, 0 replies; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22 21:03 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: gregory, eliz, emacs-devel

   Excessive volume does not influence anything (in the direction the
   voices want to go).  At least not for me; quite the opposite.

If you are going to ignore input because you get input, why bother
with these "experiments" at all?



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

* Re: Suggested experimental test
  2021-03-22 20:54                       ` Stefan Monnier
@ 2021-03-22 21:04                         ` Lars Ingebrigtsen
  2021-03-23  7:18                           ` Eli Zaretskii
  0 siblings, 1 reply; 154+ messages in thread
From: Lars Ingebrigtsen @ 2021-03-22 21:04 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel, gregory, Stephan.Mueller

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> I guess this is a misunderstanding coming from:
>
>     Perhaps the doc string of `RET' (i.e., `newline-and-indent' in most
>     modes) should mention (and link to) to `C-o'?
>
> RET is supposed to be bound to `newline` by default, pretty
> much everywhere.  There are many modes which still bind RET to
> `newline-and-indent`, but that's a historical accident that we should
> fix because it disregards the user's choice to enable or disable
> `electric-indent(-local)-mode`.

And I had a

(global-set-key "\C-m" 'newline-and-indent)

at 3% in my .emacs file, which makes about 15 years old, I think, and I
had no idea that it was there.

> The docstring of `newline` (the thing bound to RET by default, AFAIC)
> does include the line above, AFAICT.  I don't see a string need for
> `newline-and-indent` to point to something else (like `open-line`) since
> this is a command which should basically never be bound except by an
> explicit choice of the end-user.

This end user had no recollection of doing so, so I think it still makes
sense to point to `C-o' here.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no



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

* Re: Suggested experimental test
  2021-03-22 19:06                         ` Gregory Heytings
  2021-03-22 19:56                           ` [External] : " Drew Adams
@ 2021-03-22 21:08                           ` Alfred M. Szmidt
  1 sibling, 0 replies; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-22 21:08 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

   > I don't have the link at hand, but RMS had posted how to do exactly this 
   > time of poll.  I can try to locate it for you if you want.

   I would indeed be interested in seeing it.

Attached is one way of polling users that was suggested.

===File ~/how-to-poll-users.text============================
Content-Type: text/plain; charset=Utf-8
From: Richard Stallman <rms@gnu.org>
To: Dmitry Gutov <dgutov@yandex.ru>
Cc: luangruo@yahoo.com, seb@k-7.ch, pcr910303@icloud.com, emacs-devel@gnu.org
In-Reply-To: <0ce06d95-0593-bc55-983f-6b6601503a1a@yandex.ru> (message from
 Dmitry Gutov on Tue, 21 Apr 2020 16:55:39 +0300)
Subject: How to poll the users
Reply-To: rms@gnu.org
Date: Tue, 21 Apr 2020 23:14:05 -0400

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > Also note that we don't really have the ability to poll even our 
  > existing users,

We have done it many times.  Here's the method I developed for polls
in the past:

* Make a file for the replies to go into.

* Make a mailing address which drops all mail into the file.

* Mail to info-gnu-emacs and help-gnu-emacs, and any other suitable
place, presenting the proposed change in sufficient detail that people
can judge it, and where to email the response, as well as what kind of
information we seek.

What we seek is not "votes", but understanding.  If you are for the
change, please explain why.  Would it help you directly?  If so, in
what scenario, and what would the benefit be?  And how important?

Or is it that you think it will help Emacs development by helping
others?  Please distinguish between what you know and what you guess.

Likewise, if you are against the change, please explain why.  Would it
inconvenience you directly?  If so, in what scenario, and what would
the inconvenience be?  And how important?

Or is it that you think it will harm Emacs development by
inconveniencing others?

We invite you also to propose changes in the proposal that would
improve it, for you -- saying in what scenario, and how.

* We state a deadline some weeks in the future, but since there is no
hurry, we wait some extra time before we look at the responses.

* Ultimately, we do not restrict ourselves to choosing between "make
the change" and "don't make it".  The best outcome is that the
feedback enables us to design a way to please almost everyone.




-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)




============================================================



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

* RE: [External] : Re: Suggested experimental test
  2021-03-22 20:56                     ` Stefan Monnier
@ 2021-03-22 21:19                       ` Drew Adams
  0 siblings, 0 replies; 154+ messages in thread
From: Drew Adams @ 2021-03-22 21:19 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: Stephan.Mueller@microsoft.com, EMACS development team,
	Gregory Heytings, Lars Ingebrigtsen, chad, Eli Zaretskii

> > I prefer the classic Emacs RET and C-j behavior.
> 
> You mean the one where RET sometimes indents and sometimes doesn't
> depending on the preference of the major mode's author?  ;-)

I suppose I do.  But the major modes I use
haven't presented a problem for me in that regard.

I use C-j to get a newline + indent behavior, just
as it always did.  And RET to get a newline-only
behavior, just as it always did.

I don't get any weird RET behavior in any modes
I use - RET just inserts a newline.  I do get
mode-specific behavior for C-j.

(Not important; just the reverse.)
___

I do find it interesting that the doc string of
`electric-indent-mode' says nothing about C-j
or RET.  Yet NEWS for Emacs 24.4 put that key
change front and center:

 *** `electric-indent-mode' is now enabled by default.
 Typing RET reindents the current line and indents the
 new line. `C-j' inserts a newline but does not indent.
 In some programming modes, additional characters are
 electric (eg `{').



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

* RE: [External] : Re: Suggested experimental test
  2021-03-22 21:03                             ` Alfred M. Szmidt
@ 2021-03-22 21:26                               ` Drew Adams
  2021-03-23  8:06                                 ` Alfred M. Szmidt
  0 siblings, 1 reply; 154+ messages in thread
From: Drew Adams @ 2021-03-22 21:26 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: gregory@heytings.org, emacs-devel@gnu.org

>    > Obviously, I'm not proposing this just to leave the that key
>    > unused.
> 
>    Oh, but I wish that _were_ the proposal...  Unused AND
>    with an intention not to bind it by default at all.
> 
> Seeing that to get sensible behaviour in Emacs is to re-bind it, why
> can't you do the same and ignore whatever it is bound too?

As a user, of course I can.  I'm talking about 3rd-party
code.

And sure, 3rd-party code can likewise trample on Emacs
default bindings.  But that's asking for trouble.

I don't think we want to _encourage_ that.  But by
binding more and more keys by default, Emacs dev does
indeed risk encouraging just that - a wild free-for-all.



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

* Re: Suggested experimental test
  2021-03-22 19:55               ` Lars Ingebrigtsen
@ 2021-03-22 22:02                 ` Stefan Kangas
  2021-03-22 22:33                   ` [External] : " Drew Adams
  2021-03-22 22:44                   ` Dmitry Gutov
  0 siblings, 2 replies; 154+ messages in thread
From: Stefan Kangas @ 2021-03-22 22:02 UTC (permalink / raw)
  To: Lars Ingebrigtsen, Eli Zaretskii; +Cc: gregory, emacs-devel

Lars Ingebrigtsen <larsi@gnus.org> writes:

> Lars Ingebrigtsen <larsi@gnus.org> writes:
>
>> Gregory, I don't think there's much point in doing this experiment --
>> the pushback is already substantial, so I think we have the data we need
>> already.
>
> The tenor of discussion in this thread has been shocking, though, with
> people ascribing nefarious motivations to Gregory's suggestion.  Please
> stop doing this -- it makes this mailing list distinctly unfriendly.
>
> People should be free to make suggestions without being sniped at.

+1

FWIW, I don't particularly see the need for freeing up a key for
third-party packages.

But if we're going to do that, `C-o' seems like a bad choice.  If it is
to be worth changing this keybinding to anything, it should be to
`find-file'.  That is, after all, what all other software assigns this
key to.



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

* RE: [External] : Re: Suggested experimental test
  2021-03-22 22:02                 ` Stefan Kangas
@ 2021-03-22 22:33                   ` Drew Adams
  2021-03-22 23:28                     ` Stefan Kangas
  2021-03-22 22:44                   ` Dmitry Gutov
  1 sibling, 1 reply; 154+ messages in thread
From: Drew Adams @ 2021-03-22 22:33 UTC (permalink / raw)
  To: Stefan Kangas, Lars Ingebrigtsen, Eli Zaretskii
  Cc: gregory@heytings.org, emacs-devel@gnu.org

> If it is to be worth changing this keybinding [`C-o']
> to anything, it should be to `find-file'.  That is,
> after all, what all other software assigns this key to.

Wow.  Just wow.

After all.  What's next?


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

* Re: Suggested experimental test
  2021-03-22 22:02                 ` Stefan Kangas
  2021-03-22 22:33                   ` [External] : " Drew Adams
@ 2021-03-22 22:44                   ` Dmitry Gutov
  2021-03-22 23:22                     ` Stefan Kangas
                                       ` (2 more replies)
  1 sibling, 3 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-22 22:44 UTC (permalink / raw)
  To: Stefan Kangas, Lars Ingebrigtsen, Eli Zaretskii; +Cc: gregory, emacs-devel

On 23.03.2021 00:02, Stefan Kangas wrote:
> But if we're going to do that, `C-o' seems like a bad choice.  If it is
> to be worth changing this keybinding to anything, it should be to
> `find-file'.  That is, after all, what all other software assigns this
> key to.

I think something like this is only worthwhile if we were changing a 
whole bunch of bindings. Like not just C-o, but also C-n and C-s, to 
their "other software" counterparts.

Perhaps not by default, but as a part of some "keybindings theme". Since 
the goal of the experiment was to free up the binding, that could've 
been beneficial in the context of such themes (the fewer important 
default bindings a theme touches, the fewer of them it has to reassign), 
but indeed not particularly critical given that C-o's current binding 
has no standard counterparts in other editors.



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

* Re: Suggested experimental test
  2021-03-22 22:44                   ` Dmitry Gutov
@ 2021-03-22 23:22                     ` Stefan Kangas
  2021-03-23  5:22                     ` Jean Louis
  2021-03-23  6:12                     ` Yuri Khan
  2 siblings, 0 replies; 154+ messages in thread
From: Stefan Kangas @ 2021-03-22 23:22 UTC (permalink / raw)
  To: Dmitry Gutov, Lars Ingebrigtsen, Eli Zaretskii; +Cc: gregory, emacs-devel

Dmitry Gutov <dgutov@yandex.ru> writes:

> On 23.03.2021 00:02, Stefan Kangas wrote:
>> But if we're going to do that, `C-o' seems like a bad choice.  If it is
>> to be worth changing this keybinding to anything, it should be to
>> `find-file'.  That is, after all, what all other software assigns this
>> key to.
>
> I think something like this is only worthwhile if we were changing a
> whole bunch of bindings. Like not just C-o, but also C-n and C-s, to
> their "other software" counterparts.

Perhaps.  But it also gets progressively harder to convince emacs-devel
about it the more keys you add into the mix.  Being an old crank, I'm
not even sure I'm very convinced myself.  ;-)

> Perhaps not by default, but as a part of some "keybindings theme".

Yes, it would definitely be interesting to see if making far-reaching
changes in keybindings could work out.  A theme/profile would be a good
and presumably uncontroversial method to find out.



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

* RE: [External] : Re: Suggested experimental test
  2021-03-22 22:33                   ` [External] : " Drew Adams
@ 2021-03-22 23:28                     ` Stefan Kangas
  0 siblings, 0 replies; 154+ messages in thread
From: Stefan Kangas @ 2021-03-22 23:28 UTC (permalink / raw)
  To: Drew Adams, Lars Ingebrigtsen, Eli Zaretskii
  Cc: gregory@heytings.org, emacs-devel@gnu.org

Drew Adams <drew.adams@oracle.com> writes:

> After all.  What's next?

Do you mean besides rebinding `C-p' to `print-buffer' in Emacs 28.1?



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

* Re: Suggested experimental test
  2021-03-22 22:44                   ` Dmitry Gutov
  2021-03-22 23:22                     ` Stefan Kangas
@ 2021-03-23  5:22                     ` Jean Louis
  2021-03-23  7:43                       ` Eli Zaretskii
  2021-03-23  6:12                     ` Yuri Khan
  2 siblings, 1 reply; 154+ messages in thread
From: Jean Louis @ 2021-03-23  5:22 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Lars Ingebrigtsen, gregory, Eli Zaretskii, Stefan Kangas,
	emacs-devel

* Dmitry Gutov <dgutov@yandex.ru> [2021-03-23 01:45]:
> Perhaps not by default, but as a part of some "keybindings theme". Since the
> goal of the experiment was to free up the binding, that could've been
> beneficial in the context of such themes (the fewer important default
> bindings a theme touches, the fewer of them it has to reassign), but indeed
> not particularly critical given that C-o's current binding has no standard
> counterparts in other editors.

Good idea!

Making an experimental theme that user can use with other themes
together is good idea that would not collide with anybody. Then NEWS
or other helpful information could ask users to test the key bindings
or other functions, and even users on Emacs stable could test it. The
experimental theme could be chosen from `customize-themes'. It could
also provide a reporting function so that users can send back their
impressions.

That way experiments go in parallel not disturbing the default key
bindings and users aware or willing to participate may do so.

Jean




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

* Re: Suggested experimental test
  2021-03-22 17:46           ` Alan Mackenzie
  2021-03-22 17:59             ` Gregory Heytings
  2021-03-22 18:23             ` Alfred M. Szmidt
@ 2021-03-23  6:09             ` Richard Stallman
  2 siblings, 0 replies; 154+ messages in thread
From: Richard Stallman @ 2021-03-23  6:09 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: gregory, larsi, bugs, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > > Gregory, don't you think that 3 users including me who expressed their 
  > > > objections is not part of the experiment already?

  > > No, precisely because nobody actually experimented the potential change. 

  > There's no need for any "experiment".  It's perfectly obvious what you're
  > proposing and the effect it will have.

What we don't know is how many users will oppose the change, nor what
reasons they will give us.  It is not absurd to try an experiment to
find out.

However, when people say before the experiment that they oppose the
removal, they do count.  They are users and they know they use this
feature.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





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

* Re: Suggested experimental test
  2021-03-22 22:44                   ` Dmitry Gutov
  2021-03-22 23:22                     ` Stefan Kangas
  2021-03-23  5:22                     ` Jean Louis
@ 2021-03-23  6:12                     ` Yuri Khan
  2021-03-24 23:41                       ` Dmitry Gutov
  2 siblings, 1 reply; 154+ messages in thread
From: Yuri Khan @ 2021-03-23  6:12 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Lars Ingebrigtsen, Gregory Heytings, Eli Zaretskii, Stefan Kangas,
	Emacs developers

On Tue, 23 Mar 2021 at 05:45, Dmitry Gutov <dgutov@yandex.ru> wrote:

> I think something like this is only worthwhile if we were changing a
> whole bunch of bindings. Like not just C-o, but also C-n and C-s, to
> their "other software" counterparts.

More importantly, we should have a bulletproof way to move things off
C-x and C-c. The workaround we have in cua-mode is time-sensitive and,
depending on network lag, I regularly get false negatives (switching
buffers on ‘C-x →’ when I meant to cut and move right) and false
positives (copy and overwrite region on ‘C-c C-c >’ when I meant to
‘python-indent-shift-right’).



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

* Re: Suggested experimental test
  2021-03-22 20:16                         ` Lars Ingebrigtsen
@ 2021-03-23  7:04                           ` Eli Zaretskii
  0 siblings, 0 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23  7:04 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: yandros, emacs-devel, gregory, monnier, Stephan.Mueller

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: Stephan.Mueller@microsoft.com,  yandros@gmail.com,
>   gregory@heytings.org,  Stefan Monnier <monnier@iro.umontreal.ca>,
>   emacs-devel@gnu.org
> Date: Mon, 22 Mar 2021 21:16:04 +0100
> 
> Lars Ingebrigtsen <larsi@gnus.org> writes:
> 
> >> ??? Including lisp-interaction-mode?
> >
> > Heh.  
> >
> > (1 2 |3 4)
> >
> > and C-j in *scratch* gives me
> 
> Oops, never mind -- C-j in that mode is `eval-print-last-sexp', which is
> a totally different thing.

Exactly my point.  Thus, "C-o C-n" is much more reliable.



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

* Re: Suggested experimental test
  2021-03-22 20:49                       ` Stefan Monnier
  2021-03-22 21:02                         ` [External] : " Drew Adams
@ 2021-03-23  7:09                         ` Eli Zaretskii
  1 sibling, 0 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23  7:09 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Stephan.Mueller, yandros, gregory, larsi, emacs-devel

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Cc: yandros@gmail.com,  larsi@gnus.org,  emacs-devel@gnu.org,
>   gregory@heytings.org,  Stephan.Mueller@microsoft.com
> Date: Mon, 22 Mar 2021 16:49:26 -0400
> 
> >> > C-j doesn't only insert a newline.  In fact, in some modes it does
> >> > something utterly different.
> >> AFAIC this is a bug in those modes.
> > ??? Including lisp-interaction-mode?
> 
> lisp-interaction-mode is a weird beast, indeed.

But it is very popular, and is the first thing a user faces when he or
she starts Emacs.

Remember, this was the answer to the question "why not use C-j instead
of C-o with or without C-n?"



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

* Re: Suggested experimental test
  2021-03-22 21:04                         ` Lars Ingebrigtsen
@ 2021-03-23  7:18                           ` Eli Zaretskii
  0 siblings, 0 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23  7:18 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: gregory, emacs-devel, monnier, Stephan.Mueller

> From: Lars Ingebrigtsen <larsi@gnus.org>
> Cc: Eli Zaretskii <eliz@gnu.org>,  gregory@heytings.org,
>   Stephan.Mueller@microsoft.com,  emacs-devel@gnu.org
> Date: Mon, 22 Mar 2021 22:04:05 +0100
> 
> > RET is supposed to be bound to `newline` by default, pretty
> > much everywhere.  There are many modes which still bind RET to
> > `newline-and-indent`, but that's a historical accident that we should
> > fix because it disregards the user's choice to enable or disable
> > `electric-indent(-local)-mode`.
> 
> And I had a
> 
> (global-set-key "\C-m" 'newline-and-indent)
> 
> at 3% in my .emacs file, which makes about 15 years old, I think, and I
> had no idea that it was there.

I think this is because originally C-j was bound to newline-and-indent
(and RET to newline).  newline-and-indent is very handy in editing in
PL modes, but keyboards with a separate LFD key are long gone.  So
when the modern keyboards became omnipresent, people tended to rebind
RET to newline-and-indent, so that (a) that could invoke it easily and
naturally, and (b) to work similarly to the few other editors that had
such a functionality.

But then came the electric-indent thingy, and the simple world we had
then was lost forever...



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

* Re: Suggested experimental test
  2021-03-23  5:22                     ` Jean Louis
@ 2021-03-23  7:43                       ` Eli Zaretskii
  2021-03-23 12:28                         ` Philip Kaludercic
  0 siblings, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23  7:43 UTC (permalink / raw)
  To: Jean Louis; +Cc: larsi, gregory, emacs-devel, stefankangas, dgutov

> Date: Tue, 23 Mar 2021 08:22:19 +0300
> From: Jean Louis <bugs@gnu.support>
> Cc: Lars Ingebrigtsen <larsi@gnus.org>, gregory@heytings.org,
>  Eli Zaretskii <eliz@gnu.org>, Stefan Kangas <stefankangas@gmail.com>,
>  emacs-devel@gnu.org
> 
> That way experiments go in parallel not disturbing the default key
> bindings and users aware or willing to participate may do so.

That just delays the dispute to the point when we want to consider
making some of the bindings the default.  So it basically may solve a
secondary problem -- how to conduct the experiment -- but not the main
problem, which is whether and how to change bindings that existed in
Emacs since about forever.



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

* Re: Suggested experimental test
  2021-03-22 20:22             ` Gregory Heytings
@ 2021-03-23  8:06               ` Eli Zaretskii
  2021-03-23 14:15                 ` Gregory Heytings
  0 siblings, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23  8:06 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: larsi, emacs-devel

> Date: Mon, 22 Mar 2021 20:22:21 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: larsi@gnus.org, emacs-devel@gnu.org
> 
> >>> This question also goes to everyone else in this long dispute who 
> >>> wants their precious key bindings preserved: why is such a long 
> >>> discussion needed when it is so easy to restore, in your init file, a 
> >>> binding you want preserved?
> >
> > Sure.  But what I wrote then didn't prevent you-all from flooding this 
> > list with precisely the discussions I tried to prevent.
> 
> I'm sorry for this, that's not what I wanted.  What would be the way to 
> conduct such an experiment without provoking such a flooding, for those 
> who do not have write access to the trunk?

I basically think you cannot.  Any such theme is bound to produce a
long heated discussion.  We cannot do anything practical to prevent
it.  That's life.

> IMO Emacs is now in a position that is similar to that of Emacs 16, when 
> RMS introduced modes.  He realized that he needed a prefix key for them, 
> and he did not choose to use one of the yet unused meta keys: instead he 
> repurposed C-c and moved its command somewhere else.  The need for such a 
> prefix key is something that he could not have envisioned while writing 
> Emacs 1, it became apparent only later.  Likewise, some time later, when 
> user configuration files became common, the C-c LETTER keys were freed. 
> Again the need for this could not have been seen beforehand, and again RMS 
> did not choose to use a free meta key for this.
> 
> Now the situation is that third-party packages are becoming more and more 
> popular, something which couldn't have been envisioned twenty years ago, 
> and these packages can't be installed in a simple way, that is, without 
> asking users to fiddle with their configuration files, to define some 
> global key bindings that these packages need.  I don't see why we 
> shouldn't act in the same way RMS acted, that is, by repurposing one 
> control key for them.

The difference is that 37 years have passed, and what was then a
recent keybinding in a program that had only a very limited user base
is now a keybinding many users have hardwired into their muscles.

Another thing that changed is that there are nowadays many more active
contributors to Emacs who have their own (and different!) views on
this subject.  See below.  It was easy to make such decisions when
Emacs was an RCS repository on Richard's own machine, and he was the
only one who actually made changes.

Yet another thing that's changed is that we nowadays have much fewer
free keys to work with, and many of those, while unbound globally, are
likely to be bound by some mode which is dear to someone.  Part of the
reasons for the differences in opinions is that different people use
different modes and have different usage patterns, and thus keybinding
that are important to some might be unimportant (or even unknown, as
these discussions repeatedly show!) to others.  How can we ever
significantly agree on removing or changing a keybinding under these
circumstances?

And one more thought, regarding the problem that 3rd-party packages
have: it can be argued that this is not our problem.  Why should users
of Emacs that never heard of package P and will likely never use it
pay the price? why couldn't the developers of P solve the problem
which is in a way caused by P and whose solution benefits the users of
P?  Some might think that shifting the price to the Emacs core is the
wrong way of dealing with the problem.  The solution could be for P to
use longer key sequences (which usurps fewer keys on the top level),
and if some users of P are unhappy about that, then those users could
rebind the commands privately to any key they like.  Think about it.



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

* Re: [External] : Re: Suggested experimental test
  2021-03-22 21:26                               ` Drew Adams
@ 2021-03-23  8:06                                 ` Alfred M. Szmidt
  0 siblings, 0 replies; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-23  8:06 UTC (permalink / raw)
  To: Drew Adams; +Cc: gregory, emacs-devel

   And sure, 3rd-party code can likewise trample on Emacs
   default bindings.  But that's asking for trouble.

And removing features from users isn't? :-)

   I don't think we want to _encourage_ that.  But by
   binding more and more keys by default, Emacs dev does
   indeed risk encouraging just that - a wild free-for-all.

There is plenty of keybindings available for third-party modes.  Emacs
could also just state a policy that 3rd party stuff can some
keybindings like C-o / M-o for other purposes, with a caveat emperor
instead of removing those features.



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

* Re: Suggested experimental test
  2021-03-22 20:22             ` Gregory Heytings
@ 2021-03-23  8:09               ` Eli Zaretskii
  2021-03-23 14:15                 ` Gregory Heytings
  2021-03-23 20:55                 ` chad
  0 siblings, 2 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23  8:09 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: larsi, Stephan.Mueller, emacs-devel

> Date: Mon, 22 Mar 2021 20:22:36 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: Lars Ingebrigtsen <larsi@gnus.org>, emacs-devel@gnu.org, 
>     Stephan.Mueller@microsoft.com
> 
> >>> I use C-o (usually followed by C-n) many times a day, instead of 
> >>> <Enter>, in order to suppress re-indentation of the current line in 
> >>> cases where that re-indentation will be incorrect for my purposes**.
> >>
> >> Oh, I see -- it's useful as an alternative to `RET' exactly when 
> >> re-indentation does the wrong thing?
> >
> > Yes, but not only that -- it doesn't move point to the next line, unlike 
> > RET.
> 
> Why should a control key must be reserved forever for that very specific 
> purpose, and for that very specific purpose only, in the default Emacs 
> bindings?

Opening an empty line is a very useful editing primitive, not unlike
going to the next line with RET.  Trying to change that will always
cause staunch resistance, especially when the purpose for which this
is done is vague and not perceived as important enough by enough
people.



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

* Re: Suggested experimental test
  2021-03-23  7:43                       ` Eli Zaretskii
@ 2021-03-23 12:28                         ` Philip Kaludercic
  2021-03-23 12:41                           ` Eli Zaretskii
  0 siblings, 1 reply; 154+ messages in thread
From: Philip Kaludercic @ 2021-03-23 12:28 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Jean Louis, emacs-devel, gregory, stefankangas, dgutov, larsi

Eli Zaretskii <eliz@gnu.org> writes:

>> Date: Tue, 23 Mar 2021 08:22:19 +0300
>> From: Jean Louis <bugs@gnu.support>
>> Cc: Lars Ingebrigtsen <larsi@gnus.org>, gregory@heytings.org,
>>  Eli Zaretskii <eliz@gnu.org>, Stefan Kangas <stefankangas@gmail.com>,
>>  emacs-devel@gnu.org
>> 
>> That way experiments go in parallel not disturbing the default key
>> bindings and users aware or willing to participate may do so.
>
> That just delays the dispute to the point when we want to consider
> making some of the bindings the default.  So it basically may solve a
> secondary problem -- how to conduct the experiment -- but not the main
> problem, which is whether and how to change bindings that existed in
> Emacs since about forever.

Forgive me for asking, maybe I'm missing something, but why should the
changes be made default?

Isn't the idea of providing a theme to change the behaviour that users
can enable or disable them easily, without the defaults having to change?

-- 
	Philip K.



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

* Re: Suggested experimental test
  2021-03-23 12:28                         ` Philip Kaludercic
@ 2021-03-23 12:41                           ` Eli Zaretskii
  2021-03-23 13:09                             ` Dmitry Gutov
  2021-03-24  5:07                             ` Jean Louis
  0 siblings, 2 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23 12:41 UTC (permalink / raw)
  To: Philip Kaludercic; +Cc: bugs, emacs-devel, gregory, stefankangas, dgutov, larsi

> From: Philip Kaludercic <philipk@posteo.net>
> Cc: Jean Louis <bugs@gnu.support>,  larsi@gnus.org,  gregory@heytings.org,
>   emacs-devel@gnu.org,  stefankangas@gmail.com,  dgutov@yandex.ru
> Date: Tue, 23 Mar 2021 13:28:19 +0100
> 
> > That just delays the dispute to the point when we want to consider
> > making some of the bindings the default.  So it basically may solve a
> > secondary problem -- how to conduct the experiment -- but not the main
> > problem, which is whether and how to change bindings that existed in
> > Emacs since about forever.
> 
> Forgive me for asking, maybe I'm missing something, but why should the
> changes be made default?

The context was the discussion of changes in key bindings.  If they
are not changed by default, how else can such a change be made?

> Isn't the idea of providing a theme to change the behaviour that users
> can enable or disable them easily, without the defaults having to change?

The theme suggestion was a proposal to conduct an experiment without
interfering with those who want no part in the experiment.  But
eventually, the intent is to change the default behavior, because
rebinding any key to any command is already possible, and nothing
prevents users from doing that in their private init files.  So having
a non-default theme that makes a bunch of such rebindings makes little
sense to me.



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

* Re: Suggested experimental test
  2021-03-23 12:41                           ` Eli Zaretskii
@ 2021-03-23 13:09                             ` Dmitry Gutov
  2021-03-23 13:27                               ` Philip Kaludercic
  2021-03-23 13:54                               ` Eli Zaretskii
  2021-03-24  5:07                             ` Jean Louis
  1 sibling, 2 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-23 13:09 UTC (permalink / raw)
  To: Eli Zaretskii, Philip Kaludercic
  Cc: larsi, stefankangas, gregory, bugs, emacs-devel

On 23.03.2021 14:41, Eli Zaretskii wrote:

>> Isn't the idea of providing a theme to change the behaviour that users
>> can enable or disable them easily, without the defaults having to change?
> 
> The theme suggestion was a proposal to conduct an experiment without
> interfering with those who want no part in the experiment.

It has another goal as well: to have bindings changed in a logical and 
consistent fashion.

Having find-file on both 'C-x C-f' and 'C-o' would make little sense to 
me, for example.

> But
> eventually, the intent is to change the default behavior, because
> rebinding any key to any command is already possible, and nothing
> prevents users from doing that in their private init files.  So having
> a non-default theme that makes a bunch of such rebindings makes little
> sense to me.

I think the above is more important than the goal of making it a default 
(which might or might not happen in 10 years or so, if we end up 
reaching some critical mass of users who dislike Emacs's historical 
bindings).

But even while the alternative keybindings theme is not the default, we 
would maintain it and keep it usable. Whenever we add something to the 
default set, we would consider adding a corresponding binding to that 
other theme, etc.

Having an alternative, well-considered set of bindings which new user 
can just toggle on and get comfortable should be valuable.



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

* Re: Suggested experimental test
  2021-03-23 13:09                             ` Dmitry Gutov
@ 2021-03-23 13:27                               ` Philip Kaludercic
  2021-03-23 14:00                                 ` Dmitry Gutov
  2021-03-23 13:54                               ` Eli Zaretskii
  1 sibling, 1 reply; 154+ messages in thread
From: Philip Kaludercic @ 2021-03-23 13:27 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: bugs, emacs-devel, gregory, stefankangas, Eli Zaretskii, larsi

Dmitry Gutov <dgutov@yandex.ru> writes:

> On 23.03.2021 14:41, Eli Zaretskii wrote:

>> But eventually, the intent is to change the default behavior, because
>> rebinding any key to any command is already possible, and nothing
>> prevents users from doing that in their private init files.  So
>> having a non-default theme that makes a bunch of such rebindings
>> makes little sense to me.
>
> I think the above is more important than the goal of making it a
> default (which might or might not happen in 10 years or so, if we end
> up reaching some critical mass of users who dislike Emacs's historical 
> bindings).
>
> But even while the alternative keybindings theme is not the default,
> we would maintain it and keep it usable. Whenever we add something to
> the default set, we would consider adding a corresponding binding to
> that other theme, etc.

You mean new default commands, right?

> Having an alternative, well-considered set of bindings which new user
> can just toggle on and get comfortable should be valuable.

Yes, this was my understanding too. Ideally, the splash screen could
instruct new users how to change the UX theme, making it easier to get
comfortable.

-- 
	Philip K.



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

* Re: Suggested experimental test
  2021-03-23 13:09                             ` Dmitry Gutov
  2021-03-23 13:27                               ` Philip Kaludercic
@ 2021-03-23 13:54                               ` Eli Zaretskii
  2021-03-23 17:04                                 ` Dmitry Gutov
  2021-03-23 21:06                                 ` chad
  1 sibling, 2 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23 13:54 UTC (permalink / raw)
  To: Dmitry Gutov; +Cc: philipk, bugs, emacs-devel, gregory, stefankangas, larsi

> Cc: bugs@gnu.support, larsi@gnus.org, gregory@heytings.org,
>  emacs-devel@gnu.org, stefankangas@gmail.com
> From: Dmitry Gutov <dgutov@yandex.ru>
> Date: Tue, 23 Mar 2021 15:09:50 +0200
> 
> Having an alternative, well-considered set of bindings which new user 
> can just toggle on and get comfortable should be valuable.

I doubt that, because we already tried that in CUA mode.  That one
actually was better posed to succeed, since its key bindings weren't
invented "out of thin air", but use widely accepted conventions.

That said, I have no objection to having non-default sets of key
bindings that users can turn on at will.  I was only responding to
what I thought was a proposal for conducting such experiments with the
eventual goal of making the bindings the default.



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

* Re: Suggested experimental test
  2021-03-23 13:27                               ` Philip Kaludercic
@ 2021-03-23 14:00                                 ` Dmitry Gutov
  0 siblings, 0 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-23 14:00 UTC (permalink / raw)
  To: Philip Kaludercic
  Cc: bugs, emacs-devel, gregory, stefankangas, Eli Zaretskii, larsi

On 23.03.2021 15:27, Philip Kaludercic wrote:
> Dmitry Gutov <dgutov@yandex.ru> writes:
> 
>> On 23.03.2021 14:41, Eli Zaretskii wrote:
> 
>>> But eventually, the intent is to change the default behavior, because
>>> rebinding any key to any command is already possible, and nothing
>>> prevents users from doing that in their private init files.  So
>>> having a non-default theme that makes a bunch of such rebindings
>>> makes little sense to me.
>>
>> I think the above is more important than the goal of making it a
>> default (which might or might not happen in 10 years or so, if we end
>> up reaching some critical mass of users who dislike Emacs's historical
>> bindings).
>>
>> But even while the alternative keybindings theme is not the default,
>> we would maintain it and keep it usable. Whenever we add something to
>> the default set, we would consider adding a corresponding binding to
>> that other theme, etc.
> 
> You mean new default commands, right?

Yup.

Or other changes in the default set (moves, removals, replacements).

>> Having an alternative, well-considered set of bindings which new user
>> can just toggle on and get comfortable should be valuable.
> 
> Yes, this was my understanding too. Ideally, the splash screen could
> instruct new users how to change the UX theme, making it easier to get
> comfortable.

Some initial screen could do that, yes. Or at least we would tell about 
in the same places we mention cua-mode now.



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

* Re: Suggested experimental test
  2021-03-23  8:09               ` Eli Zaretskii
@ 2021-03-23 14:15                 ` Gregory Heytings
  2021-03-23 14:31                   ` Eli Zaretskii
                                     ` (2 more replies)
  2021-03-23 20:55                 ` chad
  1 sibling, 3 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-23 14:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel


>>>>> I use C-o (usually followed by C-n) many times a day, instead of 
>>>>> <Enter>, in order to suppress re-indentation of the current line in 
>>>>> cases where that re-indentation will be incorrect for my purposes**.
>>>>
>>>> Oh, I see -- it's useful as an alternative to `RET' exactly when 
>>>> re-indentation does the wrong thing?
>>>
>>> Yes, but not only that -- it doesn't move point to the next line, 
>>> unlike RET.
>>
>> Why should a control key must be reserved forever for that very 
>> specific purpose, and for that very specific purpose only, in the 
>> default Emacs bindings?
>
> Opening an empty line is a very useful editing primitive, not unlike 
> going to the next line with RET.
>

I'd bet it is useful, as it is, only for 0.5% of Emacs users, perhaps even 
less.  No other editor I know has that feature.  And I'd bet that 90% of 
those 0.5% would be happier with a better open-line primitive, for example 
one which can be called when point is in the middle of a line, like "o" 
and "O" in vi.  The discussion showed that those who use it use it at BOL, 
and that it wasn't used alone, but as part of a sequence, for example C-a 
C-o or C-o C-n.  Nobody even mentioned the fact that open-line uses the 
fill-prefix and the left-margin.

As I said, an improved version of that command could for example be put on 
M-RET.  Here's an attempt:

(defun smart-open-line (&optional arg)
   (interactive "*p")
   (when (> arg 0)
     (beginning-of-line)
     (let ((p (point-marker)))
       (dotimes (_ arg) (insert "\n"))
       (goto-char p)))
   (when (< arg 0)
     (setq arg (abs arg))
     (beginning-of-line)
     (forward-line 1)
     (dotimes (_ arg) (insert "\n"))
     (forward-line -1)))
(global-set-key (kbd "M-RET") 'smart-open-line)

And even assuming that it is useful as it is, that doesn't answer the main 
question: why should a control character key be reserved forever for that 
very specific purpose, and for that very specific purpose only?

>
> Trying to change that will always cause staunch resistance, especially 
> when the purpose for which this is done is vague and not perceived as 
> important enough by enough people.
>

I could have clarified the purpose indeed, but the risk would have been to 
start two parallel discussions.



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

* Re: Suggested experimental test
  2021-03-23  8:06               ` Eli Zaretskii
@ 2021-03-23 14:15                 ` Gregory Heytings
  2021-03-23 14:37                   ` Eli Zaretskii
  2021-03-24  6:10                   ` Jean Louis
  0 siblings, 2 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-23 14:15 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: larsi, emacs-devel


>
> The difference is that 37 years have passed, and what was then a recent 
> keybinding in a program that had only a very limited user base is now a 
> keybinding many users have hardwired into their muscles.
>
> Another thing that changed is that there are nowadays many more active 
> contributors to Emacs who have their own (and different!) views on this 
> subject.  See below.  It was easy to make such decisions when Emacs was 
> an RCS repository on Richard's own machine, and he was the only one who 
> actually made changes.
>
> Yet another thing that's changed is that we nowadays have much fewer 
> free keys to work with, and many of those, while unbound globally, are 
> likely to be bound by some mode which is dear to someone.  Part of the 
> reasons for the differences in opinions is that different people use 
> different modes and have different usage patterns, and thus keybinding 
> that are important to some might be unimportant (or even unknown, as 
> these discussions repeatedly show!) to others.  How can we ever 
> significantly agree on removing or changing a keybinding under these 
> circumstances?
>

I see your points, but all this is rather sad, because it means that Emacs 
is forever locked by what looks very much like a historical accident.

>
> And one more thought, regarding the problem that 3rd-party packages 
> have: it can be argued that this is not our problem.  Why should users 
> of Emacs that never heard of package P and will likely never use it pay 
> the price? why couldn't the developers of P solve the problem which is 
> in a way caused by P and whose solution benefits the users of P?  Some 
> might think that shifting the price to the Emacs core is the wrong way 
> of dealing with the problem.  The solution could be for P to use longer 
> key sequences (which usurps fewer keys on the top level), and if some 
> users of P are unhappy about that, then those users could rebind the 
> commands privately to any key they like.  Think about it.
>

I'm not sure if the above ("this is not our problem") is your opinion, or 
if you just present a possible viewpoint you do not necessarily share. 
This has been discussed to death already, and (as you already know) IMO it 
is a problem that will have to be solved by Emacs itself, sooner or later. 
It does not apply to a single package P, or only to a few packages.

Just type emacs -Q, M-x list-packages RET, RET.  The package you now see 
('ace-window') asks you to fiddle with your init file by adding a 
'global-set-key' to it.  The second package in the list ('ack') does the 
same.  And so forth.  That's not a problem for you and me, it is a problem 
for newcomers, and these 'global-set-key's should be done automatically, 
during the installation process.  Do you know any other software that asks 
you to change a configuration file manually to use an extension package?

As the author of Magit wrote when he added the "C-x g" global binding:

"Some [...] beginners will initially have a low threshold for things not 
working out of the box and I don't want to (continue to) scare them off by 
immediately forcing them to learn how to add key bindings and what that 
even means.  There's a lot of talk about making Emacs friendlier for 
beginners and this is a small step in that direction." [1]

[1] https://github.com/magit/magit/pull/4237#issuecomment-723495053



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

* Re: Suggested experimental test
  2021-03-23 14:15                 ` Gregory Heytings
@ 2021-03-23 14:31                   ` Eli Zaretskii
  2021-03-23 17:21                   ` Bob Rogers
  2021-03-24  5:42                   ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23 14:31 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

> Date: Tue, 23 Mar 2021 14:15:12 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: emacs-devel@gnu.org
> 
> > Opening an empty line is a very useful editing primitive, not unlike 
> > going to the next line with RET.
> 
> I'd bet it is useful, as it is, only for 0.5% of Emacs users, perhaps even 
> less.  No other editor I know has that feature.

There's lot of good and useful stuff in Emacs that is not known to
"the crowd".  The right way of dealing with that is popularize it, not
delete it or make it harder or less convenient to use.  IMO, at least,
FWIW.

> And I'd bet that 90% of those 0.5% would be happier with a better
> open-line primitive, for example one which can be called when point
> is in the middle of a line, like "o" and "O" in vi.

You are welcome to add such a command, or find a clever way of
tweaking C-o to do that.  Then let's meet in, like, 20 years and see
how many percents of Emacs users like it or even know about it.

> The discussion showed that those who use it use it at BOL, 
> and that it wasn't used alone, but as part of a sequence, for example C-a 
> C-o or C-o C-n.  Nobody even mentioned the fact that open-line uses the 
> fill-prefix and the left-margin.

The discussion revealed more than that, but if you believe only 0.5%
find this command useful, how is that relevant?  If anything, it
reinforces my point above.

> And even assuming that it is useful as it is, that doesn't answer the main 
> question: why should a control character key be reserved forever for that 
> very specific purpose, and for that very specific purpose only?

I did try to answer that.

> > Trying to change that will always cause staunch resistance, especially 
> > when the purpose for which this is done is vague and not perceived as 
> > important enough by enough people.
> >
> 
> I could have clarified the purpose indeed, but the risk would have been to 
> start two parallel discussions.

Oh, I think I understand the reason.  It wasn't my mood that I was
describing, and you already know what I think about disputes about the
default key bindings.



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

* Re: Suggested experimental test
  2021-03-23 14:15                 ` Gregory Heytings
@ 2021-03-23 14:37                   ` Eli Zaretskii
  2021-03-23 16:51                     ` Gregory Heytings
  2021-03-24  6:10                   ` Jean Louis
  1 sibling, 1 reply; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23 14:37 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: larsi, emacs-devel

> Date: Tue, 23 Mar 2021 14:15:26 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: larsi@gnus.org, emacs-devel@gnu.org
> 
> I see your points, but all this is rather sad, because it means that Emacs 
> is forever locked by what looks very much like a historical accident.

I disagree, on both counts: Emacs isn't locked, and what we have is
not an accident.  The utmost easiness with which users can change the
key bindings means there isn't, and can never be, a lockdown.

> I'm not sure if the above ("this is not our problem") is your opinion, or 
> if you just present a possible viewpoint you do not necessarily share. 

Does it matter?

> Just type emacs -Q, M-x list-packages RET, RET.  The package you now see 
> ('ace-window') asks you to fiddle with your init file by adding a 
> 'global-set-key' to it.  The second package in the list ('ack') does the 
> same.  And so forth.  That's not a problem for you and me, it is a problem 
> for newcomers, and these 'global-set-key's should be done automatically, 
> during the installation process.  Do you know any other software that asks 
> you to change a configuration file manually to use an extension package?

I disagree that it's a problem.  Customizing key bindings is an
integral part of using Emacs wisely and efficiently, and the sooner
newcomers learn that the better.  Emacs is unlike many other editors
in this regard.

> As the author of Magit wrote when he added the "C-x g" global binding:
> 
> "Some [...] beginners will initially have a low threshold for things not 
> working out of the box and I don't want to (continue to) scare them off by 
> immediately forcing them to learn how to add key bindings and what that 
> even means.  There's a lot of talk about making Emacs friendlier for 
> beginners and this is a small step in that direction." [1]
> 
> [1] https://github.com/magit/magit/pull/4237#issuecomment-723495053

I can only say I disagree, with all due respect to Magit and its
authors.  Trying to make everybody happy with the default Emacs key
bindings is a dead end.  Trying to solve that unsolvable problem is a
waste of energy.



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

* Re: Suggested experimental test
  2021-03-23 14:37                   ` Eli Zaretskii
@ 2021-03-23 16:51                     ` Gregory Heytings
  2021-03-23 17:13                       ` Eli Zaretskii
                                         ` (2 more replies)
  0 siblings, 3 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-23 16:51 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: larsi, emacs-devel


>> I see your points, but all this is rather sad, because it means that 
>> Emacs is forever locked by what looks very much like a historical 
>> accident.
>
> I disagree, on both counts: Emacs isn't locked, and what we have is not 
> an accident.
>

I think you understood what I meant: the "C-o" key is locked in the 
default bindings, and the fact that "C-o" was bound to open-line is a 
historical accident.

>
> I disagree that it's a problem.  Customizing key bindings is an integral 
> part of using Emacs wisely and efficiently, and the sooner newcomers 
> learn that the better.  Emacs is unlike many other editors in this 
> regard.
>

Let's (again) agree to disagree then.  IMO Emacs should aim at being fully 
usable, including all its extensions, without ever having to edit 
configuration files manually (and without restarting Emacs).

Packages that need to define keys globally should have a way to do that, 
just like major and minor mode packages.

Major and minor mode packages can define keys that work out of the box in 
buffers in which these modes are enabled.  I suppose everyone would agree 
that asking users who install a foo-mode package to add

(define-key foo-mode-map (kbd "<some key>") #'foo-mode-do-something)

lines in their init configuration file (and to restart Emacs) before being 
able to use foo-mode would be cumbersome.

>
> Trying to make everybody happy with the default Emacs key bindings is a 
> dead end.  Trying to solve that unsolvable problem is a waste of energy.
>

That's not at all what I aim(ed) at.  And the problem I want(ed) to solve 
is not unsolvable, it has a simple solution.



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

* Re: Suggested experimental test
  2021-03-23 13:54                               ` Eli Zaretskii
@ 2021-03-23 17:04                                 ` Dmitry Gutov
  2021-03-23 21:06                                 ` chad
  1 sibling, 0 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-23 17:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: philipk, bugs, emacs-devel, gregory, stefankangas, larsi

On 23.03.2021 15:54, Eli Zaretskii wrote:
>> Cc: bugs@gnu.support, larsi@gnus.org, gregory@heytings.org,
>>   emacs-devel@gnu.org, stefankangas@gmail.com
>> From: Dmitry Gutov <dgutov@yandex.ru>
>> Date: Tue, 23 Mar 2021 15:09:50 +0200
>>
>> Having an alternative, well-considered set of bindings which new user
>> can just toggle on and get comfortable should be valuable.
> 
> I doubt that, because we already tried that in CUA mode.  That one
> actually was better posed to succeed, since its key bindings weren't
> invented "out of thin air", but use widely accepted conventions.

CUA mode is only halfway there (if that). It doesn't reach the other 
common bindings, such as C-o for 'open file', C-n for 'new file', C-s 
for 'save file', C-f for 'search forward', C-y for 'redo', C-a for 
'select all'.

And its dispatch is timer-based, as Yuri reminds us. Which is a constant 
source of subtle annoyance which makes its use untenable long-term, 
IMHO. Only as a set of training wheels for new users, but I wonder if 
even that is a good role for it, given that those annoyances create a 
worse impression of the editor for users who enabled it.

> That said, I have no objection to having non-default sets of key
> bindings that users can turn on at will.  I was only responding to
> what I thought was a proposal for conducting such experiments with the
> eventual goal of making the bindings the default.

You said "having a non-default theme that makes a bunch of such 
rebindings makes little sense to me". I have hopefully addressed that.

And as for making such a theme a default, that's far off enough in the 
future not to worry about it much. But OTOH if we manage to make this 
"keybinding theme" approach work, even a switch to a different theme by 
default won't have to be too painful for the many existing users, since 
they would be able to turn on the "Emacs classic" keybinding theme, 
which we will surely create by then.



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

* Re: Suggested experimental test
  2021-03-23 16:51                     ` Gregory Heytings
@ 2021-03-23 17:13                       ` Eli Zaretskii
  2021-03-23 18:08                       ` Alfred M. Szmidt
  2021-03-24  6:32                       ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Eli Zaretskii @ 2021-03-23 17:13 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: larsi, emacs-devel

> Date: Tue, 23 Mar 2021 16:51:47 +0000
> From: Gregory Heytings <gregory@heytings.org>
> cc: larsi@gnus.org, emacs-devel@gnu.org
> 
> >> I see your points, but all this is rather sad, because it means that 
> >> Emacs is forever locked by what looks very much like a historical 
> >> accident.
> >
> > I disagree, on both counts: Emacs isn't locked, and what we have is not 
> > an accident.
> 
> I think you understood what I meant: the "C-o" key is locked in the 
> default bindings, and the fact that "C-o" was bound to open-line is a 
> historical accident.

Yes, understood and disagreed with both.



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

* Re: Suggested experimental test
  2021-03-23 14:15                 ` Gregory Heytings
  2021-03-23 14:31                   ` Eli Zaretskii
@ 2021-03-23 17:21                   ` Bob Rogers
  2021-03-24  5:42                   ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Bob Rogers @ 2021-03-23 17:21 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

   From: Gregory Heytings <gregory@heytings.org>
   Date: Tue, 23 Mar 2021 14:15:12 +0000

   > Opening an empty line is a very useful editing primitive, not unlike 
   > going to the next line with RET.

   I'd bet it is useful, as it is, only for 0.5% of Emacs users, perhaps
   even less.  No other editor I know has that feature . . .

True of oodles of Emacs features.

   And I'd bet that 90% of those 0.5% would be happier with a better
   open-line primitive, for example one which can be called when point
   is in the middle of a line . . .

I use it *mostly* in the middle of lines.  I think you'd lose that bet,
and probably the first as well.

					-- Bob Rogers
					   http://www.rgrjr.com/



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

* Re: Suggested experimental test
  2021-03-23 16:51                     ` Gregory Heytings
  2021-03-23 17:13                       ` Eli Zaretskii
@ 2021-03-23 18:08                       ` Alfred M. Szmidt
  2021-03-23 21:06                         ` Gregory Heytings
  2021-03-24  6:32                       ` Jean Louis
  2 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-23 18:08 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: eliz, larsi, emacs-devel

   >> I see your points, but all this is rather sad, because it means that 
   >> Emacs is forever locked by what looks very much like a historical 
   >> accident.
   >
   > I disagree, on both counts: Emacs isn't locked, and what we have is not 
   > an accident.

   I think you understood what I meant: the "C-o" key is locked in the 
   default bindings, and the fact that "C-o" was bound to open-line is a 
   historical accident.

C-o is bound where it is because when Emacs was written, someone --
most probpobly RMS -- bound it there, so it isn't really a historical
accident but rather an active design decision. There is also a reason
why C-x C-o where it is.




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

* Re: Suggested experimental test
  2021-03-23  8:09               ` Eli Zaretskii
  2021-03-23 14:15                 ` Gregory Heytings
@ 2021-03-23 20:55                 ` chad
  1 sibling, 0 replies; 154+ messages in thread
From: chad @ 2021-03-23 20:55 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Gregory Heytings, EMACS development team, Lars Ingebrigtsen,
	Stephan.Mueller

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

On Tue, Mar 23, 2021 at 1:10 AM Eli Zaretskii <eliz@gnu.org> wrote:

> > Why should a control key must be reserved forever for that very specific
> > purpose, and for that very specific purpose only, in the default Emacs
> > bindings?
>
> Opening an empty line is a very useful editing primitive, not unlike
> going to the next line with RET.  Trying to change that will always
> cause staunch resistance, especially when the purpose for which this
> is done is vague and not perceived as important enough by enough
> people.
>

Let's set aside the historical/hysterical impact for a second and look at
the input/effect table (which is why I asked for help understanding the
difference between "`C-o C-n' and `C-j' -- for which you all have my
thanks):

I take as given that "opening an empty line is a useful primitive", along
with "insert a newline at point" and also "insert a newline at point and
maybe do some context-specific DWIMish stuff". I think there's plenty of
support for this position, even for people who don't regularly perform all
of those operations. That gives us ~3 distinct solid effects (more on this
later).

On the input side, we sure want RET to be one of those ~3, and I think we
can agree that it's default should be the 2nd or maybe the 3rd effect. I
personally think that `C-j' is nicely intuitive for a newline-related
command, but that might be a sign of my age. M-RET is also very intuitive
for an alternative-newline command, seems to work in tty, and is used in a
large variety of other contexts (running the gamut from "Org mode in emacs"
to "editing inside spreadsheet cells"), so it seems like a solid choice.
From what I have seen, `C-o' has the main benefit that a large subset of
emacs users have been using it for a very long time, and the secondary
benefits of an mnemonic binding with "open line" and similarity (although
at least somewhat an uncanny-valley jarring one) to vi's 'o'. Both `C-j'
and `C-o' have a slight infelicity with being unused in other editing
environments, but that seems like a tertiary consideration to me.

To this, we can add  the historical wrinkles around electric-indent
recently brought up on this thread, which changed the C-j/RET pair from
newline/newline-and-indent to electric-newline-and-maybe-indent/newline --
note the functional swap. This thread contains some evidence of potential
issues left over from this change, i.e. mode bindings that seem like maybe
they should have been updated to match the "electric swap".

*Without getting into the conversation about changing defaults*, do we
generally agree that:
- These seem like the relevant operations
- These seem like the relevant potential keybinds (perhaps among others)
- That there is reason to investigate some of the bindings that are
currently in emacs-28 to see if they are confusing when combined with the
current "electric newline" bindings?

Thanks in advance,
~Chad

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

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

* Re: Suggested experimental test
  2021-03-23 13:54                               ` Eli Zaretskii
  2021-03-23 17:04                                 ` Dmitry Gutov
@ 2021-03-23 21:06                                 ` chad
  1 sibling, 0 replies; 154+ messages in thread
From: chad @ 2021-03-23 21:06 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Philip K., Jean Louis, EMACS development team, Gregory Heytings,
	Stefan Kangas, Dmitry Gutov, Lars Ingebrigtsen

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

On Tue, Mar 23, 2021 at 7:05 AM Eli Zaretskii <eliz@gnu.org> wrote:

> > Cc: bugs@gnu.support, larsi@gnus.org, gregory@heytings.org,
> >  emacs-devel@gnu.org, stefankangas@gmail.com
> > From: Dmitry Gutov <dgutov@yandex.ru>
> > Date: Tue, 23 Mar 2021 15:09:50 +0200
> >
> > Having an alternative, well-considered set of bindings which new user
> > can just toggle on and get comfortable should be valuable.
>
> I doubt that, because we already tried that in CUA mode.  That one
> actually was better posed to succeed, since its key bindings weren't
> invented "out of thin air", but use widely accepted conventions.
>

FWIW, over the years, I have seen several people who were very interested
in CUA mode who eventually turned it off due to it working "most but not
all of the time". This experience is pretty old, but internet searches show
similar feedback continuing since then. In practice, it means that users
who might have recommended cua-mode instead anti-recommend it.

When I've looked at it for other people, it seems like an issue that can't
actually be fixed, because the people who care enough to change the
bindings need them to be absolutely %100 reliable, which the time-based
approach isn't. I'm afraid that I can't help more than that -- emacs'
default bindings are far more ingrained for me than the CUA bindings (a
fact that I learned to accept long ago when moving away from emacs' `C-w'
and `C-q').

This is all to say: cua-mode has its own set of problems as an example.
~Chad

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

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

* Re: Suggested experimental test
  2021-03-23 18:08                       ` Alfred M. Szmidt
@ 2021-03-23 21:06                         ` Gregory Heytings
  2021-03-23 21:43                           ` Alfred M. Szmidt
                                             ` (2 more replies)
  0 siblings, 3 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-23 21:06 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: eliz, larsi, emacs-devel


>
> C-o is bound where it is because when Emacs was written, someone -- most 
> probpobly RMS -- bound it there, so it isn't really a historical 
> accident but rather an active design decision. There is also a reason 
> why C-x C-o where it is.
>

I digged further in my archives.  In case some are interested:

As most of you know, the original Emacs was written in TECO.  C-o was a 
command of TECO's real-time editing feature (which was entered with C-r), 
which was imported into Emacs.  The purpose of C-o in TECO was to optimize 
redisplay: when point on in the middle of a non-empty line, C-o F O O 
required less redisplay than F O O RET.

C-o in the original Emacs didn't quite do what C-o now does: the line(s) 
created by C-o were "eated" by the text that was inserted.  In other 
words, RET in the line(s) created with C-o did not push the next lines 
down, it went on the next created line (if any).  In other words again, 
let's assume the following initial situation:

  A
|D
  E

where | is the point.  After C-u 2 C-o B RET C RET, the buffer was now:

  A
  B
  C
|D
  E

In other words again, C-o was meant to "create some blank space on the 
screen" (not in the buffer) to optimize redisplay.

Do you now see the "historical accident"?



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

* Re: Suggested experimental test
  2021-03-23 21:06                         ` Gregory Heytings
@ 2021-03-23 21:43                           ` Alfred M. Szmidt
  2021-03-23 21:57                             ` Gregory Heytings
  2021-03-24  5:16                           ` Richard Stallman
  2021-03-24  6:39                           ` Jean Louis
  2 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-23 21:43 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: eliz, larsi, emacs-devel

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 1492 bytes --]

[WARNING: I AM A TECO EMACS USER!]

   C-o in the original Emacs didn't quite do what C-o now does: the line(s) 
   created by C-o were "eated" by the text that was inserted.  In other 
   words, RET in the line(s) created with C-o did not push the next lines 
   down, it went on the next created line (if any).  

It does exactly the same thing it does today.  Maybe you are confusing
this with the way the gap buffer works?

   In other words again, 
   let's assume the following initial situation:

     A
   |D
     E

   where | is the point.  After C-u 2 C-o B RET C RET, the buffer was now:

     A
     B
     C
   |D
     E

That is not the behaviour of TECO emacs, you would have two extra two
newlines there, like in GNU emacs.

"So, FOO Return is equivalent to C-o FOO."

>   You can make several blank lines by typing ‘C-o’ several times, or by
>giving it a numeric argument specifying how many blank lines to make.
>*Note Arguments::, for how.  If you have a fill prefix, the ‘C-o’
>command inserts the fill prefix on the new line, if typed at the
>beginning of a line.  *Note Fill Prefix::.
>
>   The easy way to get rid of extra blank lines is with the command ‘C-x
>C-o’ (‘delete-blank-lines’).  If point lies within a run of several
>blank lines, ‘C-x C-o’ deletes all but one of them.  If point is on a
>single blank line, ‘C-x C-o’ deletes it.  If point is on a nonblank
>line, ‘C-x C-o’ deletes all following blank lines, if any exists.





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

* Re: Suggested experimental test
  2021-03-23 21:43                           ` Alfred M. Szmidt
@ 2021-03-23 21:57                             ` Gregory Heytings
  2021-03-23 22:08                               ` Alfred M. Szmidt
  0 siblings, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-23 21:57 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: eliz, larsi, emacs-devel


>
> [WARNING: I AM A TECO EMACS USER!]
>

Of which version?

>
> It does exactly the same thing it does today.
>

No it didn't.  See AIM memo 554, written by RMS, dated October 1981:

"If you want to insert many lines, you can type many C-O's at the 
beginning (or you can give C-O an argument to tell it how many blank lines 
to make [...]).  As you then insert lines of text, you will notice that 
Return behaves strangely: it "uses up" the blank lines instead of pushing 
them down."



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

* Re: Suggested experimental test
  2021-03-23 21:57                             ` Gregory Heytings
@ 2021-03-23 22:08                               ` Alfred M. Szmidt
  2021-03-23 22:14                                 ` Gregory Heytings
  2021-03-24  5:15                                 ` Richard Stallman
  0 siblings, 2 replies; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-23 22:08 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: eliz, larsi, emacs-devel

   > [WARNING: I AM A TECO EMACS USER!]

   Of which version?

162.

   > It does exactly the same thing it does today.

   No it didn't.  

I stand by my claim, maybe you should login on an ITS machine before
trying to contradict someone who uses the system on a semi-regular
basis?



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

* Re: Suggested experimental test
  2021-03-23 22:08                               ` Alfred M. Szmidt
@ 2021-03-23 22:14                                 ` Gregory Heytings
  2021-03-23 22:42                                   ` Alfred M. Szmidt
  2021-03-24  5:15                                 ` Richard Stallman
  1 sibling, 1 reply; 154+ messages in thread
From: Gregory Heytings @ 2021-03-23 22:14 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: eliz, larsi, emacs-devel


>>> It does exactly the same thing it does today.
>>
>> No it didn't.
>
> I stand by my claim, maybe you should login on an ITS machine before 
> trying to contradict someone who uses the system on a semi-regular 
> basis?
>

I gave a quote of the 1981 manual written by RMS, for "EMACS version 161" 
(AIM memo 554), which everyone can download and read.  It's very well 
possible that C-o was changed in version 162.



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

* Re: Suggested experimental test
  2021-03-23 22:14                                 ` Gregory Heytings
@ 2021-03-23 22:42                                   ` Alfred M. Szmidt
  2021-03-23 23:05                                     ` Gregory Heytings
  0 siblings, 1 reply; 154+ messages in thread
From: Alfred M. Szmidt @ 2021-03-23 22:42 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: eliz, larsi, emacs-devel

   It's very well possible that C-o was changed in version 162.

From what I can see (release notes, older versions), it wasn't.  Much
of the memo is a direct copy of the manual, so it is more plausible
that this is just a very old note that didn't get pruned from the memo
and refers to a very early Emacs which quickly modifed the behaviour.

If you want, we can continue the archeology somewhere else, don't
think this is teco-history@ ;)



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

* Re: Suggested experimental test
  2021-03-23 22:42                                   ` Alfred M. Szmidt
@ 2021-03-23 23:05                                     ` Gregory Heytings
  0 siblings, 0 replies; 154+ messages in thread
From: Gregory Heytings @ 2021-03-23 23:05 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: eliz, larsi, emacs-devel


>
> From what I can see (release notes, older versions), it wasn't.  Much of 
> the memo is a direct copy of the manual, so it is more plausible that 
> this is just a very old note that didn't get pruned from the memo and 
> refers to a very early Emacs which quickly modifed the behaviour.
>

I stand by what I said, except that I now understand that it's the 
behavior of RET that was changed.  But that doesn't change the fact that 
C-o was initially meant to optimize redisplay by creating some blank space 
before filling it.  See below:

Date: 12 September 1981 03:11-EDT
From: Richard M. Stallman <RMS at MIT-AI>
Subject: poll on C-S, C-O, and Return
To: INFO-EMACS-RECIPIENTS at MIT-AI

What do you think of these two suggested changes to EMACS?

1) Make Altmode not be ignored when it terminates a search, so that it
would still function as a Metizer.  Some other character would have to
be provided instead as a way of terminating a search and doing nothing
else.  C-D was suggested, but I don't like it.  I'd like to hear other
suggestions.

2) Make C-O do what C-A C-O Tab does now.

3) Also, how many people now find it useful or desirable that Return
eats up blank lines?  This feature was invented in the days when
terminals did not have insert/delete line.



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

* Re: Suggested experimental test
  2021-03-23 12:41                           ` Eli Zaretskii
  2021-03-23 13:09                             ` Dmitry Gutov
@ 2021-03-24  5:07                             ` Jean Louis
  2021-03-25  5:09                               ` Richard Stallman
  1 sibling, 1 reply; 154+ messages in thread
From: Jean Louis @ 2021-03-24  5:07 UTC (permalink / raw)
  To: Eli Zaretskii
  Cc: Philip Kaludercic, bugs, emacs-devel, gregory, stefankangas,
	dgutov, larsi

* Eli Zaretskii <eliz@gnu.org> [2021-03-23 15:42]:
> The context was the discussion of changes in key bindings.  If they
> are not changed by default, how else can such a change be made?

As a theme in Emacs Development it would allow easier testing without
changing defaults. But it includes Emacs Development only.

Another way could be as extension or package in ELPA, making a package
and publishing it in ELPA as:

experiment-001 -- would allow many Emacs users to test it, not just
developers. Package could supply feedback function. By pointing out
that it is experiment that needs user feedback, the results would be
richer with more facts from various Emacs versions as well.

That would be also one good way to ask users polls without influencing
their Emacs version.

If results are useful for some users, than a non-experimenting package
can be made that can be obtained from ELPA.

If results are appear to be useful for very many users, that could
then lead to new versions of Emacs.



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

* Re: Suggested experimental test
  2021-03-23 22:08                               ` Alfred M. Szmidt
  2021-03-23 22:14                                 ` Gregory Heytings
@ 2021-03-24  5:15                                 ` Richard Stallman
  1 sibling, 0 replies; 154+ messages in thread
From: Richard Stallman @ 2021-03-24  5:15 UTC (permalink / raw)
  To: Alfred M. Szmidt; +Cc: larsi, gregory, eliz, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  >    > It does exactly the same thing it does today.

  >    No it didn't.  

  > I stand by my claim, maybe you should login on an ITS machine before
  > trying to contradict someone who uses the system on a semi-regular
  > basis?

If you could disagree in a more friendly tone, it would make this
mailing list more civil to be on.

Could this disagreement perhaps be moved to emacs-tangents?

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





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

* Re: Suggested experimental test
  2021-03-23 21:06                         ` Gregory Heytings
  2021-03-23 21:43                           ` Alfred M. Szmidt
@ 2021-03-24  5:16                           ` Richard Stallman
  2021-03-24  6:39                           ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Richard Stallman @ 2021-03-24  5:16 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: larsi, ams, eliz, emacs-devel

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > C-o in the original Emacs didn't quite do what C-o now does: the line(s) 
  > created by C-o were "eated" by the text that was inserted.  In other 
  > words, RET in the line(s) created with C-o did not push the next lines 
  > down, it went on the next created line (if any).

For historical accuracy, I should correct that statement.

C-o inserted a line break in the buffer after point.
RET advanced over a newline into a blank line;
otherwise it inserted a newline.  In this way, RET would
eat up the blank lines.

Both of them operated by modifying the buffer, and the screen
reflected the buffer contents.

I sometimes made several black lines with C-u C-o or C-u C-u C-o,
then filled them in, advancing by RET.  At the end, if exta blank
lines remained, I removed them with C-x C-o.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





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

* Re: Suggested experimental test
  2021-03-23 14:15                 ` Gregory Heytings
  2021-03-23 14:31                   ` Eli Zaretskii
  2021-03-23 17:21                   ` Bob Rogers
@ 2021-03-24  5:42                   ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-24  5:42 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Eli Zaretskii, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-23 17:17]:
> 
> > > > > > I use C-o (usually followed by C-n) many times a day,
> > > > > > instead of <Enter>, in order to suppress re-indentation
> > > > > > of the current line in cases where that re-indentation
> > > > > > will be incorrect for my purposes**.
> > > > > 
> > > > > Oh, I see -- it's useful as an alternative to `RET' exactly
> > > > > when re-indentation does the wrong thing?
> > > > 
> > > > Yes, but not only that -- it doesn't move point to the next
> > > > line, unlike RET.
> > > 
> > > Why should a control key must be reserved forever for that very
> > > specific purpose, and for that very specific purpose only, in the
> > > default Emacs bindings?
> > 
> > Opening an empty line is a very useful editing primitive, not unlike
> > going to the next line with RET.
> > 
> 
> I'd bet it is useful, as it is, only for 0.5% of Emacs users, perhaps even
> less.  No other editor I know has that feature.

It cannot be argument here that other editors don't have features
built-in into Emacs. Those are known facts. Emacs is advanced
editor. Other editors simply don't have features of Emacs, unless they
are Emacs-like. But there are several Emacs-like editors: Edwin in MIT
Scheme, mg in OpenBSD, e3em, Zile, Zile on Guile, Emacs on Guile,
those are once that I use from time to time here, including as a
replacement for emacsclient (when something goes wrong). I have used
those multiple times during last month. More references:
https://wiki.gentoo.org/wiki/Project:Emacs/Emacs-like_editors

Now when you bet, I also bet you don't use Emacs-like editors, and I
am unsure how much you use Emacs beside those other editors you use. 

Another feature that many editors don't have is macro feature, editors
that do have macro features are always more advanced than
others. Because other editors do not have that feature, should we
disable macros in Emacs?

And then which other editors do you mention? Can we get the
disclosure? Your personal experiences should or could be reasoned to
understand those features you are referring to.

> And I'd bet that 90% of those 0.5% would be happier with a better
> open-line primitive, for example one which can be called when point
> is in the middle of a line, like "o" and "O" in vi.

I have mentioned my personal case and I said I would not like changing
default of C-o or getting habit with my personal customizations to
have C-o behave like O in vi. In relation to "o" in vi, I do not open
new line below the current one, but I agree that quicker key binding
would be nice. "o" from vi in Emacs is easily replaced with C-o as
instead of using the current line, then I would be simply using one
line below.

- "o" in vi -- frequently used, it opens new line after current line,
  regardless where is cursors located. In Emacs: go to one line below,
  beginning of line, press C-o

- "O" in vi - frequently used, opens new line before current line and
  places cursor at beginning of the line for writing, in Emacs, C-a
  C-o does the same.

Again, I would not like changing Emacs default behavior as for me who
works on various Emacs versions, including some older like few years
(OS never get updated on those computers) -- including using
Emacs-like editors frequently on remote VPS-es or remote computers,
sometimes on personal computer.

> The discussion showed that those who use it use it at BOL, and that
> it wasn't used alone, but as part of a sequence, for example C-a C-o
> or C-o C-n.  Nobody even mentioned the fact that open-line uses the
> fill-prefix and the left-margin.
> 
> As I said, an improved version of that command could for example be put on
> M-RET.  Here's an attempt:
> 
> (defun smart-open-line (&optional arg)
>   (interactive "*p")
>   (when (> arg 0)
>     (beginning-of-line)
>     (let ((p (point-marker)))
>       (dotimes (_ arg) (insert "\n"))
>       (goto-char p)))
>   (when (< arg 0)
>     (setq arg (abs arg))
>     (beginning-of-line)
>     (forward-fine 1)
>     (dotimes (_ arg) (insert "\n"))
>     (forward-line -1)))
> (global-set-key (kbd "M-RET") 'smart-open-line)

I have tried that version, it may be better than this one below that I
have ready -- but remember, I am not using it and do not want to
depend on it, that it does not change my finger work when I am working
on un-customized Emacs versions.

(defun my-C-o ()
  "Opens new line regardless where is cursor positioned."
  (interactive)
  (move-beginning-of-line nil)
  (open-line 1))

but I would like to ask not to bind M-RET to something by default in
Emacs, as it is used very efficiently in the package Hyperbole, and I
recommend that you try using Hyperbole to understand M-RET

> And even assuming that it is useful as it is, that doesn't answer
> the main question: why should a control character key be reserved
> forever for that very specific purpose, and for that very specific
> purpose only?

Because it is default for many years, learned and used by people and
adopted by other Emacs-like editors.

You can make then same question like why should C-a be used to jump to
beginning of the line or C-f to move one char forward. 

Nothing is forever.



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

* Re: Suggested experimental test
  2021-03-23 14:15                 ` Gregory Heytings
  2021-03-23 14:37                   ` Eli Zaretskii
@ 2021-03-24  6:10                   ` Jean Louis
  1 sibling, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-24  6:10 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Eli Zaretskii, larsi, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-23 17:19]:
> Just type emacs -Q, M-x list-packages RET, RET.  The package you now see
> ('ace-window') asks you to fiddle with your init file by adding a
> 'global-set-key' to it.  The second package in the list ('ack') does the
> same.  And so forth.  That's not a problem for you and me, it is a problem
> for newcomers, and these 'global-set-key's should be done automatically,
> during the installation process.

I really do not believe it is a problem for newcomers, but if you do,
I would like to see how you get that data.

Newcomers in almost any editor will be able to:

- move cursors with arrows
- insert chars with letters
- delete chars with backspace or DEL
- open and save files

That is it. More than that newcomers do not need. Almost every editor
will provide arrows as key bindings to move, saving and opening
files. 

As soon as newcomer starts installing `ace-window' it is not
"newcomer" any more. :-)

> Do you know any other software that asks you to change a
> configuration file manually to use an extension package?

Actually it is not software that asks user, but README or source
code. Software provides functions which user may use with M-x and for
convenience such can be placed in the menu or on key bindings. 

We already discussed that software could ask user about the proposed
key bindings and that it would be good so as it forwards artificial
intelligence in Emacs which now excels itself only in the "Emacs
Psychotherapist" part.

Your point is valid and useful. When asking which other software asks
you to change a configuration file manually, well, other software
usually do not install functions that become convenient when placed on
a key. So we do not speak just of extensions, we speak of how to make
commands from extensions more convenient. They however work without
key bindings. Key bindings is convenience for commands.

Let us consider example of Gimp as other software, not being editor
and having extensions. GIMP works with GTK, and GTK allows changing
key bindings for every menu function on the fly. Isn't that handy?

Again, to allow such change for any function on the fly, one has to
configure it in: /home/data1/protected/.gtkrc-2.0.mine to be:

gtk-can-change-accels = 1

Then user can go to favorite function such as "Blur" and press key on
the menu item such as C-9 to assign Blur to C-9 on the fly.

From there on I see your proposal that users should be spared of
customizing key bindings very positive for progress of Emacs.

I do not know if Emacs GTK version allows GTK to change key bindings
by pressing a key on the menu, but it should in my opinion, follow the
example of GTK and GIMP above, and various other GTK based software,
at least in GTK version of Emacs. Maybe it does, I have never tried. 

To improve Emacs in general, I would propose that:

- Package authors should be nudged by instructions from the manual to
  make menu for the package by default, and that users can be asked
  upon installation if they wish to have menu turned on -- and how to
  turn it on later if they did not decide to turn it on. Menus could
  be sub-menu of new Extensions menu, as that way the menu line would
  not be full of various packages' menus.

- Once user is in any menu, user could then press a key and assign key
  bindings. If user attempts to assign default key binding, Emacs
  would ask user twice about that decision. Otherwise any empty key
  bindings could be assigned to menu.

- Package key binding assignment function. Instead or in addition to
  the menu system above that would allow simple customization by using
  mouse, Emacs could have a built in general function that summarizes
  all interactive commands from a package and asks user how to assign
  key bindings. This solves the problem on individual basis for each
  user separately, and does not ask package authors to do anything
  special.

Package key binding assignment function
=======================================

It would work as following:

- when package P is loaded, Emacs would create automatically new
  interactive function named P-assign-keys

- function `P-assign-keys' would encompass all interactive functions
  from package P

- it would ask user:

  - For the function P-function-1 "This function erases screen as
    example" -- would you like to assign key bindings?

    When user attempts to assign default key bindings, user would be
    asked twice if sure.

    When user attempts to assign already assigned, but not default key
    binding, function would say it is already assigned and again ask
    user twice

    If key is not bound, it would just get assigned.

- package authors could propose some default key bindings in a list
  that would be used by general key binding assignment function

That way all keys can be assigned interactively with user having
control how to do it. Package authors would not need to do anything
special. If they do propose some key bindings, they could provide a
list, and that list could be used by the general key bindings
assignment function. When `P-assign-keys' is invoked, it would display
some key bindings that package author recommended as default. Authors
could also exclude some functions from `P-assign-keys' processing
unless user press C-u to assign key bindings to all.

That would eliminate users to make key bindings, but it would also not
impose on users any new key bindings without users' control. 

Upon installation of a package, user could be asked if one wishes to
assign key bindings immediately.

> As the author of Magit wrote when he added the "C-x g" global binding:
> 
> "Some [...] beginners will initially have a low threshold for things not
> working out of the box and I don't want to (continue to) scare them off by
> immediately forcing them to learn how to add key bindings and what that even
> means.  There's a lot of talk about making Emacs friendlier for beginners
> and this is a small step in that direction." [1]
> 
> [1] https://github.com/magit/magit/pull/4237#issuecomment-723495053

Sorry, the above paragraph is to me contradictory, as who uses Magit
cannot be a beginner, and I telling people how to change key bindings
results with programmers who contribute to Emacs or make their own
packages. Let us not shoot in our own foot by sparing people to learn
something new.

Jean



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

* Re: Suggested experimental test
  2021-03-23 16:51                     ` Gregory Heytings
  2021-03-23 17:13                       ` Eli Zaretskii
  2021-03-23 18:08                       ` Alfred M. Szmidt
@ 2021-03-24  6:32                       ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-24  6:32 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: Eli Zaretskii, larsi, emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-23 20:53]:
> IMO Emacs should aim at being fully usable, including all its
> extensions, without ever having to edit configuration files manually
> (and without restarting Emacs).

From that specific view point how you think Emacs should work that
users ever edit configuration file manually, I do understand it. It
would increase the usability of Emacs by beginners, but it would hide
the configuration file which is program and software that users
create. We have got butterfly effect in Emacs from where you and other
people came to improve Emacs and created many other software.

Reference: https://en.wikipedia.org/wiki/Butterfly_effect

Because Emacs was never Android with "click and play" features, it
created so many programmers. Because it is programmable Editor it
helped many programmers to extend Emacs.

Would we have all the features in Emacs by the system "Click and Play"
very easy to go -- we would have less people collaborating on creating
free software and also software extending Emacs. 

We can see that in example on Android devices where users are
clueless, totally clueless that they can change, modify, create some
software. They are not told so, they are shaped as consumers, used,
who use applications and considered as number, not human, without any
collaboration or participation in software. They have no idea what is
Android, how it runs, how could they contribute, not even file bugs,
few free software repositories help on that like F-Droid -- but from
beginners' view point, software is too usable, but users may not even
be aware that it is software, as all what they did is "click and
play". It shaped our society to have largest number of computer users
ever, also the largest number of programmers, but it made the worse
ever ratio of number of programmers to number of computers!

Emacs such as it is, is raising the number of programmers to the
number of computers, as it gives incentives to users, incidentally or
planned, to evaluate things, to work with other software, to configure
this and that, and that is how programmers evolve.

I would not be thus changing Emacs into situation where use is not
supposed to think and create, as that situation we already have with
Android and society of computer users who do not even know they are
computer users.

From the general view point of Emacs usability for beginners,
beginners use arrows, they move cursor, use mouse, insert letters,
symbols and numbers, open and save files. Emacs is thus very user
friendly. I was beginner, we all were beginners, was it difficult to
open and save files, write files? It was never difficult to me.

> Major and minor mode packages can define keys that work out of the box in
> buffers in which these modes are enabled.  I suppose everyone would agree
> that asking users who install a foo-mode package to add
> 
> (define-key foo-mode-map (kbd "<some key>") #'foo-mode-do-something)
> 
> lines in their init configuration file (and to restart Emacs) before being
> able to use foo-mode would be cumbersome.

I am sure it may look cumbersome, but user installing it is not a
beginner. If it is beginner, one will start looking into function
definition, it is incitement to learn programming, and yields with new
Emacs contributors and programmers making extensions for software.

By hiding configurations, we would limit evolvement of number of
programmers in future.

One other good example of people becoming programmers by casual
incitement is the scratch buffer. Removing it, would make less
programmers. Providing scratch buffers in various languages, would
make more programmers.

Jean



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

* Re: Suggested experimental test
  2021-03-23 21:06                         ` Gregory Heytings
  2021-03-23 21:43                           ` Alfred M. Szmidt
  2021-03-24  5:16                           ` Richard Stallman
@ 2021-03-24  6:39                           ` Jean Louis
  2 siblings, 0 replies; 154+ messages in thread
From: Jean Louis @ 2021-03-24  6:39 UTC (permalink / raw)
  To: Gregory Heytings; +Cc: emacs-devel

* Gregory Heytings <gregory@heytings.org> [2021-03-24 00:07]:
> 
> > 
> > C-o is bound where it is because when Emacs was written, someone -- most
> > probpobly RMS -- bound it there, so it isn't really a historical
> > accident but rather an active design decision. There is also a reason
> > why C-x C-o where it is.
> > 
> 
> I digged further in my archives.  In case some are interested:
> 
> As most of you know, the original Emacs was written in TECO.  C-o was a
> command of TECO's real-time editing feature (which was entered with C-r),
> which was imported into Emacs.  The purpose of C-o in TECO was to optimize
> redisplay: when point on in the middle of a non-empty line, C-o F O O
> required less redisplay than F O O RET.

As "Emacs" by name, it was maybe in TECO, but we are here in GNU
Emacs, not in TECO by its name.

Please see this timeline (no accuracy guarantee) from:
https://www.jwz.org/doc/emacs-timeline.html


1976    TECMAC and TMACS
        a pair of "TECO-macro realtime editors."
        by Guy Steele, Dave Moon, Richard Greenblatt,
        Charles Frankston, et al.
          |
          |
1976    EMACS
        by Richard Stallman, Guy Steele,       EINE (EINE Is Not EMACS)
        and Dave Moon.                         by Dan Weinreb.
        Merger of TECMAC and TMACS, plus       for MIT Lisp Machine.
        a dynamic loader and Meta-key cmds.    First Emacs written in Lisp.
        Ran on ITS and TWENEX (Tops-20)                |
        written in TECO and PDP 10 assembly.           |
                                                       |
                                                       |
1978    Multics Emacs                         ZWEI (ZWEI Was EINE Initially)
        by Bernie Greenberg.                  by Dan Weinreb and Mike McMahon.
        written in MacLisp;                            |
        also used Lisp as its                          |
        extension language.                            |
1980                                         ZMACS (direct descendant of ZWEI)
                                             on Symbolics LM-2, LMI LispM,
                                             and later, TI Explorer (1983-1989)
1981               Gosling Emacs                       :
                   by James Gosling                    :
                   written in C; with "Mocklisp"
                   as its extension language.
                       /      |
1983                  /       |
                     /   Unipress Emacs (6-may-83)
                    /    $395 commercial product.
1984               /                                   Hemlock
                  /                                    by Bill Chiles,
                 /                                     Rob MacLachlan, et al.
1985  GNU Emacs 13.0? (20-mar-85)                      written in Spice Lisp
      by Richard Stallman.                             (CMU Common Lisp)
      initial public release?                              :
             |                                             :
      GNU Emacs 15.10 (11-apr-85)                          :
             |
      GNU Emacs 15.34 (07-may-85)
             |
      GNU Emacs 16.56 (15-jul-85)
      (Gosling code expunged
      for copyright reasons)
             |
             |
      GNU Emacs 16.60 (19-sep-85)
      (contained first patches from
      the net, including preliminary
      SYSV support)
             |
             |
      GNU Emacs 17.36 (20-dec-85)
      (included TeX manual; first
      version that worked on SYSV
      out of the box)
             |
             |
1986  GNU Emacs 18.24 beta (02-oct-86)
             |
1987  GNU Emacs 18.41 (22-mar-87)
             |
      GNU Emacs 18.45 (02-jun-87)
             |
      GNU Emacs 18.49 (18-sep-87)
             |   \
             |    \________________________________________________
             |                                                     \
             |                                                      \
             |                                           Early work on Epoch begins (1987)
             |                                           by Alan M. Carroll
1988  GNU Emacs 18.50 (13-feb-88)                                     |
             |                                                        |
      GNU Emacs 18.51 (07-may-88)                                     |
             |                                                        |
      GNU Emacs 18.52 (01-sep-88)                                     |
             |                                            Epoch 1.0 (14-dec-88)
             |                                            by Alan M. Carroll with Simon Kaplan
1989  GNU Emacs 18.53 (24-feb-89)                                     |
             |   \                                                    |
             |    \________________________________________________   |   _____
             |                                                        |        \
      GNU Emacs 18.54 (26-apr-89)                                     |         \
             |                                                        |          \
      GNU Emacs 18.55 (23-aug-89)                                     |           \ 
             |    |                                                   |            \
             |    |                                                   |     NEmacs 3.2.1 (15-dec-89)
             |    |                                                   |     "Nihongo Emacs": a fork
             |    |                                                   |     with multi-byte Japanese
             |    |                                                   |     language support.
             |    |                                                   |             |
             |    |                                       Epoch 2.0 (23-dec-89)     |
             |    |                                                   |             |
             |    |                                                   |             |
1990         |    |                                       Epoch 3.1 (06-feb-90)     |
             |    |                                                   |             |
             |    \                                                   |     NEmacs 3.3.1 (3-mar-90)
             |     \                                                  |             |
             |      \                                     Epoch 3.2 (11-dec-90)     |
             |       \                                    last Carroll release.     |
             |        \____ (sporadic work on                         |             |
             |               GNU Emacs 19 begins)                     |             |
             |                     |                                  |             |
             |                     |                                  |             |
             |                     |                      Epoch 4.0 (27-aug-90)     |
             |                     |                      Now maintained by NCSA.   |
             |                     |                                  |             |
1991  GNU Emacs 18.57 (??-jan-91)  |                                  |             |
             |                     |                                  |             |
      GNU Emacs 18.58 (??-???-91)  |                                  |             |
             |                     |                                  |             |
1992         |                     |___                               |     MULE 0.9.0b (4-mar-92)
             |                     |   \                              |     "Multilingual
             |                     |    \                             |     Enhancements to Emacs":
             |                     |     \                            |     support for input methods
             |                     |      \                           |     and various languages
             |                     |   Lucid Emacs 19.0 (??-apr-92)   |     including Japanese,
             |                     |   by Jamie Zawinski et al.       |     Chinese, Korean, Greek,
             |                     |      |                           |     Hebrew, and Cyrillic.
             |                     |   Lucid Emacs 19.1 (04-jun-92)   |             |
             |                     |      |                           |             |
             |                     |   Lucid Emacs 19.2 (19-jun-92)   |             |
             |                     |      |                           |             |
             |                     |   Lucid Emacs 19.3 (09-sep-92)   |             |
      GNU Emacs 18.59 (31-oct-92)  |      |                           |             |
             |                     |      |                           |             |
1993         |                    /    Lucid Emacs 19.4 (21-jan-93)   |             |
             |                   /        |                           |             |
             |                  /      Lucid Emacs 19.5 (05-feb-93)   |             |
             |                 /       (trade-show giveaway CD only)  |             |
             |                /           |                           |             |
             |   ____________/         Lucid Emacs 19.6 (09-apr-93)   |             |
             |  /                         |                           |             |
             | /                          |                           |             |
      GNU Emacs 19.7 beta (22-may-93)     |                          /|             |
      first public v19 beta               |                         / |             |
             |                            |                        /  |  ...___     |
      GNU Emacs 19.8 beta (27-may-93)     |                       /   |        \    |
             |        \                   |                      /    |         \   |
             |         \________________  |  ___________________/     |     MULE 1.0 (1-aug-93)
             |                          \ | /                         |     (based on GNU Emacs 18.59)
             |                         Lucid Emacs 19.8 (06-sep-93)   |             |
             |                         (Epoch merger, preliminary     |             |
             |                          I18N support)                 |             |
             |                            |                           |             |
      GNU Emacs 19.22 beta (28-nov-93)    |                           |             |
             |                            |                           |             |
1994         |                         Lucid Emacs 19.9 (12-may-94)  /              |
             |                         (scrollbars, Athena)         /               |
             |                            |                        /                |
      GNU Emacs 19.23 beta (17-may-94)    |                       /                 |
             |            \               |                      /                  |
             |             \____________  |  ___________________/                   |
             |                          \ | /                                       |
             |                         Lucid Emacs 19.10 (27-may-94)                |
             |                         last JWZ release.                            |
             |                            |                                         |
      GNU Emacs 19.24 beta (16-may-94)    |                                         |
             |                            |                               ...___    |
             |                            |                                     \   |
             |                            |                                      \  |
             |                            |                                 MULE 2.0 (6-aug-94)
             |                            |                                 (based on GNU Emacs 19.25)
             |                            |                                         |
             |                         XEmacs 19.11 (13-sep-94)                     |
             |                         Lucid Emacs -> XEmacs renaming.              |
             |                         now maintained by Chuck Thompson             |
             |                         and Ben Wing.                                |
             |                            |                                         |
      GNU Emacs 19.27 beta (14-sep-94)    |                                         |
             |                            |                                         |
      GNU Emacs 19.28 (01-nov-94)         |                                         |
      first official v19 release.         |                               ...___    |
             |                            |                                     \   |
             |                            |                                      \  |
             |                            |                                 MULE 2.2 (28-dec-94)
             |                            |                                 (based on GNU Emacs 19.28)
             |                            |                                         |
             |                            |                                         |
1995         |                            |                                 MULE 2.3 (24-jul-95)
             |                            |                                         .
             |                         XEmacs 19.12 (23-jun-95)                     .
             |                         (tty support)    \                           .
      GNU Emacs 19.29 (21-jun-95)         |              \                          .
             |                            |        (work on 20.x begins)            .
      GNU Emacs 19.30 (24-nov-95)         |               :                         .
             |           \                |               :                         .
             |            \_____________  |                                         .
             |                          \ |                                         .
             |                         XEmacs 19.13 (01-sep-95)                     .
1996  GNU Emacs 19.31 (25-may-96)         |                                         .
             |                         XEmacs 19.14 (23-jun-96)                     .
      GNU Emacs 19.34 (21-aug-96)         |                   \                     .
1997         |                         XEmacs 20.0 (09-feb-97) \                    .
             |                         now maintained by        \                   .
             |                         Steve Baur.               |                  .
             |                            |           XEmacs 19.15 (26-mar-97)      .
             |                            |                      |                  .
             |                         XEmacs 20.1 (15-apr-97)   |                  .
             |                            |                      |                  .
             |                         XEmacs 20.2 (16-may-97)   |                  .
      GNU Emacs 20.1 (17-sep-97)          |                      |                  .
             |                            |                      |                  .
      GNU Emacs 20.2 (20-sep-97)          |                      |                  .
             |                            |           XEmacs 19.16 (31-oct-97)     .
             |                            |                                       .
             |                         XEmacs 20.3 (21-nov-97)                   .
             |                            |                                     /
             |                            |    ________________________________/
             |                            |   /
             |                            |  /
1998         |                         XEmacs 20.4 (28-feb-98)
             |                         first reasonably stable
             |                         release with MULE support.
             |                         XEmacs "core" and "packages"
             |                         now packaged separately.
             |                            |
             |                            |
             |                         XEmacs 21.0-pre5 (18-jul-98)
             |                         Numbering scheme goes wonky due to
             |                         switch to stable + unstable branches.
      GNU Emacs 20.3 (19-aug-98)          |
             |                            |
             |                         XEmacs 21.0.60 (10-dec-98)
             |                           /  \___________________
             |                          /                       \
1999         |                         /             XEmacs 21.2.9 (03-feb-99)
             |                        /              (trunk / unstable branch)
             |                       /                           |
             |                XEmacs 21.1.3 (26-jun-99)          |
             |                (stable / maintenance branch)      |
             |                maintained by Vin Shelton.         |
             |                       |                           |
      GNU Emacs 20.4 (12-jul-99)     |                           |
             |                       |                           |
2000         |                       |               XEmacs 21.2.27 (18-jan-00)
             |                       |                           |
             |                XEmacs 21.1.9  (13-feb-00)         |
             |                       |                           |
      GNU Emacs 21.1 (20-oct-01)     |               XEmacs 21.2.36 (04-oct-00)
             |                       |                           |
2001         |                XEmacs 21.1.14 (27-jan-01)         |
             |                (branch retired)                   |
             |                                       XEmacs 21.2.40 (08-jan-01)
             |                             ____________________/ |
             |                            /                      |
             |                           /           XEmacs 21.5.0  (18-apr-01)
             |                          /            (trunk / unstable branch)
             |                         /                         |
             |                XEmacs 21.4.0  (16-apr-01)         |
             |                (stable / maintenance branch)      |
             |                Maintained by Stephen Turnbull.    |
             |                Shipped by Red Hat, Debian,        |
             |                Mandrake, etc.                     |
             |                        |                          |
2002  GNU Emacs 21.2 (16-mar-02)      |              XEmacs 21.5.6  (05-apr-02)
             |                        |                          |
             |                XEmacs 21.4.7  (04-may-02)         |
             |                        |                          |
2003         |                XEmacs 21.4.12 (15-jan-03)         |
             |                first "stable" 21.4                |
             |                        |                          |
      GNU Emacs 21.3 (19-mar-03)      |                          |
             |                        |                          |
             |                XEmacs 21.4.13 (25-may-03)         |
             |                maintained by Vin Shelton.         |
             |                        |                          |
             |                        |              XEmacs 21.5.14 (01-jun-03)
             |                        |                          |
             |                XEmacs 21.4.14 (05-sep-03)         |
             |                        |                          |
             |                        |              XEmacs 21.5.16 (26-sep-03)
2004         |                        |                          |
             |                XEmacs 21.4.15 (03-feb-04)         |
             |                        |                          |
             |                        |              XEmacs 21.5.18 (22-oct-04)
             |                        |                          |
             |                XEmacs 21.4.17 (06-feb-05)         |
2005         |                        |                          |
      GNU Emacs 21.4a (17-feb-05)     |              XEmacs 21.5.19 (18-feb-05)
             |                        |                          |
             |                        |              XEmacs 21.5.23 (26-oct-05)
             |                        |                          |
             |                XEmacs 21.4.18 (03-dec-05)         |
             |                        |                          |
             |                        |              XEmacs 21.5.24 (19-dec-05)
             |                        |                          |
2006         |                XEmacs 21.4.19 (28-jan-06)         |
             |                        |                          |
             |                        |              XEmacs 21.5.28 (21-may-06)
             |                        |
             |                XEmacs 21.4.20 (09-dec-06)
             |                        |
      GNU Emacs 22.1 (02-jun-07)      |
                                      |
2007                          XEmacs 21.4.21 (14-oct-07)



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

* Re: Suggested experimental test
  2021-03-23  6:12                     ` Yuri Khan
@ 2021-03-24 23:41                       ` Dmitry Gutov
  2021-03-25  6:12                         ` Yuri Khan
  0 siblings, 1 reply; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-24 23:41 UTC (permalink / raw)
  To: Yuri Khan
  Cc: Lars Ingebrigtsen, Gregory Heytings, Eli Zaretskii, Stefan Kangas,
	Emacs developers

On 23.03.2021 08:12, Yuri Khan wrote:
> On Tue, 23 Mar 2021 at 05:45, Dmitry Gutov<dgutov@yandex.ru>  wrote:
> 
>> I think something like this is only worthwhile if we were changing a
>> whole bunch of bindings. Like not just C-o, but also C-n and C-s, to
>> their "other software" counterparts.
> More importantly, we should have a bulletproof way to move things off
> C-x and C-c. The workaround we have in cua-mode is time-sensitive and,
> depending on network lag, I regularly get false negatives (switching
> buffers on ‘C-x →’ when I meant to cut and move right) and false
> positives (copy and overwrite region on ‘C-c C-c >’ when I meant to
> ‘python-indent-shift-right’).

I think there are basically two directions:

- Find two other C-<char> prefix key combinations to move the main 
prefix keymaps to. C-d and C-e come to mind (basically all other keys 
that are situated closer to Ctrl or Caps on a qwerty keyboard are all 
taken up by popular bindings such as C-a "select all" or C-s "save file").

- Go all the way to VS Code/Atom/Notepad/etc approach and depopulate 
these prefix maps. And then use two modifiers at a time for the 
important commands/prefix maps which we still need to have bindings. For 
example, that would move 'C-x v' to 'C-M-g' and 'C-x C-i' to 'C-M-o', or 
similar (Emacs is a lot more keyboard-driven than the other editors in 
this example, so a lot of our commands don't have direct counterparts to 
look up bindings of, and we'll need to improvise).

Or maybe we could combine these both in some productive fashion.

Not sure if that's the response you were looking for. Personally, I'm 
content with only using a small part of foreign conventions in my Emacs 
bindings and not looking to switch away. But if we're going to devise a 
proper solution for newcomer-friendly bindings, I don't think we should 
stop at just the four that cua-mode changes.



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

* Re: Suggested experimental test
  2021-03-24  5:07                             ` Jean Louis
@ 2021-03-25  5:09                               ` Richard Stallman
  0 siblings, 0 replies; 154+ messages in thread
From: Richard Stallman @ 2021-03-25  5:09 UTC (permalink / raw)
  To: Jean Louis
  Cc: philipk, emacs-devel, gregory, stefankangas, dgutov, larsi, eliz

[[[ To any NSA and FBI agents reading my email: please consider    ]]]
[[[ whether defending the US Constitution against all enemies,     ]]]
[[[ foreign or domestic, requires you to follow Snowden's example. ]]]

  > > The context was the discussion of changes in key bindings.  If they
  > > are not changed by default, how else can such a change be made?

  > As a theme in Emacs Development it would allow easier testing without
  > changing defaults. But it includes Emacs Development only.

  > Another way could be as extension or package in ELPA, making a package
  > and publishing it in ELPA as:

If the new bindings use commands that already exist, and
the change is limited to the key bindings,
the simplest way is to add a command to alter those bindings.

-- 
Dr Richard Stallman
Chief GNUisance of the GNU Project (https://gnu.org)
Founder, Free Software Foundation (https://fsf.org)
Internet Hall-of-Famer (https://internethalloffame.org)





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

* Re: Suggested experimental test
  2021-03-24 23:41                       ` Dmitry Gutov
@ 2021-03-25  6:12                         ` Yuri Khan
  2021-03-25 13:20                           ` Dmitry Gutov
  0 siblings, 1 reply; 154+ messages in thread
From: Yuri Khan @ 2021-03-25  6:12 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Lars Ingebrigtsen, Gregory Heytings, Eli Zaretskii, Stefan Kangas,
	Emacs developers

On Thu, 25 Mar 2021 at 06:41, Dmitry Gutov <dgutov@yandex.ru> wrote:

> > we should have a bulletproof way to move things off
> > C-x and C-c.
>
> I think there are basically two directions:
>
> - Find two other C-<char> prefix key combinations to move the main
> prefix keymaps to. C-d and C-e come to mind (basically all other keys
> that are situated closer to Ctrl or Caps on a qwerty keyboard are all
> taken up by popular bindings such as C-a "select all" or C-s "save file").

What, being close to (left) Ctrl on a QWERTY is/was a consideration
when choosing C-x and C-c? This makes sense, as much as it does for
Undo/Cut/Copy/Paste.

> - Go all the way to VS Code/Atom/Notepad/etc approach and depopulate
> these prefix maps. And then use two modifiers at a time for the
> important commands/prefix maps which we still need to have bindings. For
> example, that would move 'C-x v' to 'C-M-g' and 'C-x C-i' to 'C-M-o', or
> similar.

In my personal bindings, I do prefer C-M-, C-S- and M-S- combinations
to sequences. (Also function keys and their C- and S- combinations.)

> Or maybe we could combine these both in some productive fashion.
>
> Not sure if that's the response you were looking for. Personally, I'm
> content with only using a small part of foreign conventions in my Emacs
> bindings and not looking to switch away. But if we're going to devise a
> proper solution for newcomer-friendly bindings, I don't think we should
> stop at just the four that cua-mode changes.

I’m way past the newcomer stage but I have not and am not going to
adopt Emacs as my desktop environment. And, for me, consistency across
the desktop is important. So I want C-x for cut and C-c for copy, and
I might like to move their traditional maps to any of C-[abdefimnop;']
or maybe <menu> (because my keyboard has working arrow keys and Home
and End at positions that do not require me to move my wrists so I
don’t get the traditionally quoted benefit from C-[fbnp]).

But, while I can (mostly) rebind something to ctl-x-map, in order to
move things off C-c, I’d have to basically copy every mode’s map into
my configuration and replace C-c with <menu>. Alternatively, I could
use some key translation mechanism to pretend <menu> produces C-c and
C-c produces <XF86Copy> or some such, but I’m not sure if that would
also affect sequences where C-c is not the first key (and I’d probably
like it not to).



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

* Re: Suggested experimental test
  2021-03-25  6:12                         ` Yuri Khan
@ 2021-03-25 13:20                           ` Dmitry Gutov
  2021-03-25 14:30                             ` Basil L. Contovounesios
  2021-03-25 19:30                             ` Yuri Khan
  0 siblings, 2 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-25 13:20 UTC (permalink / raw)
  To: Yuri Khan
  Cc: Lars Ingebrigtsen, Gregory Heytings, Eli Zaretskii, Stefan Kangas,
	Emacs developers

On 25.03.2021 08:12, Yuri Khan wrote:
> On Thu, 25 Mar 2021 at 06:41, Dmitry Gutov <dgutov@yandex.ru> wrote:
> 
>>> we should have a bulletproof way to move things off
>>> C-x and C-c.
>>
>> I think there are basically two directions:
>>
>> - Find two other C-<char> prefix key combinations to move the main
>> prefix keymaps to. C-d and C-e come to mind (basically all other keys
>> that are situated closer to Ctrl or Caps on a qwerty keyboard are all
>> taken up by popular bindings such as C-a "select all" or C-s "save file").
> 
> What, being close to (left) Ctrl on a QWERTY is/was a consideration
> when choosing C-x and C-c? This makes sense, as much as it does for
> Undo/Cut/Copy/Paste.

It surely needs to be comfortable to press with one hand.

>> - Go all the way to VS Code/Atom/Notepad/etc approach and depopulate
>> these prefix maps. And then use two modifiers at a time for the
>> important commands/prefix maps which we still need to have bindings. For
>> example, that would move 'C-x v' to 'C-M-g' and 'C-x C-i' to 'C-M-o', or
>> similar.
> 
> In my personal bindings, I do prefer C-M-, C-S- and M-S- combinations
> to sequences. (Also function keys and their C- and S- combinations.)

Not my preference, but that seems to reflect the bindings I see "out 
there". So you could be a good person to gauge to alternative bindings 
theme.

> But, while I can (mostly) rebind something to ctl-x-map, in order to
> move things off C-c, I’d have to basically copy every mode’s map into
> my configuration and replace C-c with <menu>. Alternatively, I could
> use some key translation mechanism to pretend <menu> produces C-c and
> C-c produces <XF86Copy> or some such, but I’m not sure if that would
> also affect sequences where C-c is not the first key (and I’d probably
> like it not to).

Yeah, C-x seems easier, because at least built-in code uses ctl-x-map 
(which you can move wholesale) and 3rd party packages can be asked to.

But C-c doesn't have a dedicated keymap, so solving this seems like the 
first step. What could we do?

   (kbd (format "%s C-l" ctl-c-key-sequence) 'some-command)

?

Or maybe create a bogus ctrl-c keymap and then make sure to refer to its 
binding with something like

   (kbd "[C-c] C-l" 'some-command)

...I'm not sure, ideas welcome. Something backward-compatible would be 
ideal.



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

* Re: Suggested experimental test
  2021-03-25 13:20                           ` Dmitry Gutov
@ 2021-03-25 14:30                             ` Basil L. Contovounesios
  2021-03-25 17:09                               ` Dmitry Gutov
  2021-03-25 18:59                               ` Yuri Khan
  2021-03-25 19:30                             ` Yuri Khan
  1 sibling, 2 replies; 154+ messages in thread
From: Basil L. Contovounesios @ 2021-03-25 14:30 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Emacs developers, Gregory Heytings, Stefan Kangas,
	Lars Ingebrigtsen, Yuri Khan, Eli Zaretskii

Dmitry Gutov <dgutov@yandex.ru> writes:

> But C-c doesn't have a dedicated keymap

It does: mode-specific-map.  See 'C-c' (heh) in the Elisp manual index.

-- 
Basil



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

* RE: [EXTERNAL] Re: Suggested experimental test
  2021-03-22 18:34         ` Lars Ingebrigtsen
  2021-03-22 18:56           ` Eli Zaretskii
@ 2021-03-25 17:04           ` Stephan Mueller
  1 sibling, 0 replies; 154+ messages in thread
From: Stephan Mueller @ 2021-03-25 17:04 UTC (permalink / raw)
  To: Lars Ingebrigtsen; +Cc: Gregory Heytings, emacs-devel@gnu.org

" Lars Ingebrigtsen <larsi@gnus.org> writes:
" Stephan Mueller <Stephan.Mueller@microsoft.com> writes:
" 
" > I use C-o (usually followed by C-n) many times a day, instead of
" > <Enter>, in order to suppress re-indentation of the current line in
" > cases where that re-indentation will be incorrect for my purposes**.
" 
" Oh, I see -- it's useful as an alternative to `RET' exactly when
" re-indentation does the wrong thing?

Yes, exactly and concisely.

stephan();




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

* Re: Suggested experimental test
  2021-03-25 14:30                             ` Basil L. Contovounesios
@ 2021-03-25 17:09                               ` Dmitry Gutov
  2021-03-25 18:59                               ` Yuri Khan
  1 sibling, 0 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-25 17:09 UTC (permalink / raw)
  To: Basil L. Contovounesios
  Cc: Emacs developers, Gregory Heytings, Stefan Kangas,
	Lars Ingebrigtsen, Yuri Khan, Eli Zaretskii

On 25.03.2021 16:30, Basil L. Contovounesios wrote:
> Dmitry Gutov<dgutov@yandex.ru>  writes:
> 
>> But C-c doesn't have a dedicated keymap
> It does: mode-specific-map.  See 'C-c' (heh) in the Elisp manual index.

Oh, nice. Any idea how to take advantage of it for the purpose discussed?

If I compare the outputs of 'C-h v mode-specific-map' and 'C-c C-h', the 
former corresponds only to the "Global Bindings" section of the latter.

But all the Minor Mode Bindings and Major Mode Bindings apparently don't 
use it. Not in my configuration/session, at least.

Also, the manual says "its name provides useful information about ‘C-c’ 
in the output of ‘C-h b’ (‘display-bindings’)", but I don't see that.



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

* Re: Suggested experimental test
  2021-03-25 14:30                             ` Basil L. Contovounesios
  2021-03-25 17:09                               ` Dmitry Gutov
@ 2021-03-25 18:59                               ` Yuri Khan
  1 sibling, 0 replies; 154+ messages in thread
From: Yuri Khan @ 2021-03-25 18:59 UTC (permalink / raw)
  To: Basil L. Contovounesios
  Cc: Emacs developers, Gregory Heytings, Stefan Kangas, Dmitry Gutov,
	Lars Ingebrigtsen, Eli Zaretskii

On Thu, 25 Mar 2021 at 21:30, Basil L. Contovounesios <contovob@tcd.ie> wrote:

> > But C-c doesn't have a dedicated keymap
>
> It does: mode-specific-map.  See 'C-c' (heh) in the Elisp manual index.

Yeah, there is an empty keymap named ‘mode-specific-command-prefix’
that is globally bound to C-c. As far as I can tell, that keymap’s
sole purpose in life is making sure that ‘<f1> b’ lists “C-c
mode-specific-command-prefix” somewhere way down under “Global
bindings”.

None of the modes seem to bind anything in that map, and in fact that
would be counterproductive to them being modes.



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

* Re: Suggested experimental test
  2021-03-25 13:20                           ` Dmitry Gutov
  2021-03-25 14:30                             ` Basil L. Contovounesios
@ 2021-03-25 19:30                             ` Yuri Khan
  2021-03-25 21:11                               ` Stefan Monnier
  2021-03-26 23:34                               ` Dmitry Gutov
  1 sibling, 2 replies; 154+ messages in thread
From: Yuri Khan @ 2021-03-25 19:30 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Lars Ingebrigtsen, Gregory Heytings, Eli Zaretskii, Stefan Kangas,
	Emacs developers

On Thu, 25 Mar 2021 at 20:20, Dmitry Gutov <dgutov@yandex.ru> wrote:

> But C-c doesn't have a dedicated keymap, so solving this seems like the
> first step. What could we do?
>
>    (kbd (format "%s C-l" ctl-c-key-sequence) 'some-command)
>
> Or maybe create a bogus ctrl-c keymap and then make sure to refer to its
> binding with something like
>
>    (kbd "[C-c] C-l" 'some-command)
>
> ...I'm not sure, ideas welcome.

How about this:

* Introduce a virtual key, let’s call it <mode-specific>. Let’s
specifically *not* name it <key-formerly-known-as-C-c>.
* Have all modes use that as the prefix key for mode-specific
commands, instead of C-c.
* In the default configuration, translate C-c to <mode-specific>.

Proof of concept:

    $ emacs -Q

    (define-key help-mode-map (kbd "<mode-specific> <mode-specific>")
                #'help-follow-symbol)
    (define-key help-mode-map (kbd "<mode-specific> C-b") #'help-go-back)
    (define-key help-mode-map (kbd "<mode-specific> C-f") #'help-go-forward)
    (define-key key-translation-map (kbd "<menu>") (kbd "<mode-specific>"))
    ;; C-x C-e all of the above

    (define-key help-mode-map (kbd "C-c C-c") nil)
    (define-key help-mode-map (kbd "C-c C-b") nil)
    (define-key help-mode-map (kbd "C-c C-f") nil)
    (define-key help-mode-map (kbd "C-c") nil)
    ;; should be unneeded after all modes convert

    (global-set-key (kbd "C-c") #'copy-region-as-kill)
    (global-set-key (kbd "C-v") #'cua-paste)

    <f1> m C-x o
    ;; I’m now in a *Help* buffer listing currently enabled modes

    <f1> b
    ;; I’m now in a *Help* buffer listing bindings

    <menu> C-b
    ;; I’m back to modes

    <menu> C-f
    ;; I’m back to bindings

    S-<down> S-<down> S-<down> C-c
    C-x o C-v
    ;; I have a copy of a few lines from *Help* in my *scratch*

> Something backward-compatible would be
> ideal.

Hm, I don’t know. The above is definitely not backward-compatible. It
assumes a full conversion in Emacs and full cooperation from
third-party mode authors.



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

* Re: Suggested experimental test
  2021-03-25 19:30                             ` Yuri Khan
@ 2021-03-25 21:11                               ` Stefan Monnier
  2021-03-25 23:54                                 ` Dmitry Gutov
  2021-03-26 23:34                               ` Dmitry Gutov
  1 sibling, 1 reply; 154+ messages in thread
From: Stefan Monnier @ 2021-03-25 21:11 UTC (permalink / raw)
  To: Yuri Khan
  Cc: Emacs developers, Gregory Heytings, Stefan Kangas, Dmitry Gutov,
	Lars Ingebrigtsen, Eli Zaretskii

> * Introduce a virtual key, let’s call it <mode-specific>. Let’s
> specifically *not* name it <key-formerly-known-as-C-c>.
> * Have all modes use that as the prefix key for mode-specific
> commands, instead of C-c.
> * In the default configuration, translate C-c to <mode-specific>.

Part of the difficulty in making key binding schemes more flexible is
that the keys you'll want to use within <mode-specific> will tend to
depend on the key to which <mode-specific> is bound.

E.g. if it's bound to `C-c` it's fairly convenient to have bindings
within it of the form `C-<letter>`, but if it's bound to `c` instead
(assuming a a modal key-binding scheme like vi) then using `C-<letter>`
within it is much less convenient.


        Stefan




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

* Re: Suggested experimental test
  2021-03-25 21:11                               ` Stefan Monnier
@ 2021-03-25 23:54                                 ` Dmitry Gutov
  2021-03-26 10:34                                   ` Stefan Kangas
  0 siblings, 1 reply; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-25 23:54 UTC (permalink / raw)
  To: Stefan Monnier, Yuri Khan
  Cc: Lars Ingebrigtsen, Emacs developers, Eli Zaretskii,
	Gregory Heytings, Stefan Kangas

On 25.03.2021 23:11, Stefan Monnier wrote:
> E.g. if it's bound to `C-c` it's fairly convenient to have bindings
> within it of the form `C-<letter>`, but if it's bound to `c` instead
> (assuming a a modal key-binding scheme like vi) then using `C-<letter>`
> within it is much less convenient.

Interesting example. I wanted to say nobody will bind it to 'c', but 
some people might decide to bind it to M-c instead.

Here's a thought: let's invent an extension of the kbd syntax which will 
allow us to specify a modifier indirectly based on an entry in 
key-translation-map. Like:

   (kbd "<mode-specific> <mode-specific-modifier>-c")

Even more backward-incompatible, but okay. But what to do if 
<mode-specific> has no modifiers, like <menu> in Yuri's example? 
Translate '<mode-specific-modifier>-c' to just 'c'? What happens to any 
other simple 'c' entry in that keymap? Do we "flip" it to, say, 'C-c'?

What happens if the user decides to bind <mode-specific> to 'C-d', and 
in my third-party package I choose 'C-c C-d' as a command binding? That 
seems like a popular one, inspired by SLIME. *And* I have another 
binding in there, 'C-c C-c'. Going along with the new feature, I'll 
write the first one like '<mode-specific> C-d' and the second one 
'<mode-specific> <mode-specific>'... right? That's a conflict. The only 
way of resolving such conflicts I can imagine is to also "flip" any 
'C-d' written verbatim and not as <mode-specific> back to C-c, the 
default <mode-specific> binding, when <mode-specific> is bound to 'C-d'. 
Which seems both tricky to implement and punishing to a lot of existing 
code that the user might try to use.

So maybe we should limit the scope of the effort and not try to solve 
all the inefficiencies, or we'll never make progress on this issue 
(after all, the main audience of this change are people who aren't so 
fond of key sequences; or at least not yet).

But better ideas welcome, of course.



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

* Re: Suggested experimental test
  2021-03-25 23:54                                 ` Dmitry Gutov
@ 2021-03-26 10:34                                   ` Stefan Kangas
  2021-03-26 23:13                                     ` Dmitry Gutov
  0 siblings, 1 reply; 154+ messages in thread
From: Stefan Kangas @ 2021-03-26 10:34 UTC (permalink / raw)
  To: Dmitry Gutov, Stefan Monnier, Yuri Khan
  Cc: Lars Ingebrigtsen, Eli Zaretskii, Gregory Heytings,
	Emacs developers

Dmitry Gutov <dgutov@yandex.ru> writes:

> On 25.03.2021 23:11, Stefan Monnier wrote:
>> E.g. if it's bound to `C-c` it's fairly convenient to have bindings
>> within it of the form `C-<letter>`, but if it's bound to `c` instead
>> (assuming a a modal key-binding scheme like vi) then using `C-<letter>`
>> within it is much less convenient.
>
> Interesting example. I wanted to say nobody will bind it to 'c', but
> some people might decide to bind it to M-c instead.
>
> Here's a thought: let's invent an extension of the kbd syntax which will
> allow us to specify a modifier indirectly based on an entry in
> key-translation-map. Like:
>
>    (kbd "<mode-specific> <mode-specific-modifier>-c")
>
> Even more backward-incompatible, but okay. But what to do if
> <mode-specific> has no modifiers, like <menu> in Yuri's example?
> Translate '<mode-specific-modifier>-c' to just 'c'? What happens to any
> other simple 'c' entry in that keymap? Do we "flip" it to, say, 'C-c'?

How about something like:

    (mode-kbd "k")         ; C-c k
    (mode-kbd "mod k")     ; C-c C-k
    (mode-kbd "mod2 k")    ; C-c M-k
    (mode-kbd "mod3 k")    ; C-c S-k

Then mod, mod2 and mod3 could be set to use whatever modifier you want.
And mode-kbd would use the correct prefix.

(BTW, it would be even nicer if we could evaluate such a form on
key lookup.)



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

* Re: Suggested experimental test
  2021-03-26 10:34                                   ` Stefan Kangas
@ 2021-03-26 23:13                                     ` Dmitry Gutov
  0 siblings, 0 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-26 23:13 UTC (permalink / raw)
  To: Stefan Kangas, Stefan Monnier, Yuri Khan
  Cc: Lars Ingebrigtsen, Eli Zaretskii, Gregory Heytings,
	Emacs developers

On 26.03.2021 12:34, Stefan Kangas wrote:
> Dmitry Gutov <dgutov@yandex.ru> writes:
> 
>> On 25.03.2021 23:11, Stefan Monnier wrote:
>>> E.g. if it's bound to `C-c` it's fairly convenient to have bindings
>>> within it of the form `C-<letter>`, but if it's bound to `c` instead
>>> (assuming a a modal key-binding scheme like vi) then using `C-<letter>`
>>> within it is much less convenient.
>>
>> Interesting example. I wanted to say nobody will bind it to 'c', but
>> some people might decide to bind it to M-c instead.
>>
>> Here's a thought: let's invent an extension of the kbd syntax which will
>> allow us to specify a modifier indirectly based on an entry in
>> key-translation-map. Like:
>>
>>     (kbd "<mode-specific> <mode-specific-modifier>-c")
>>
>> Even more backward-incompatible, but okay. But what to do if
>> <mode-specific> has no modifiers, like <menu> in Yuri's example?
>> Translate '<mode-specific-modifier>-c' to just 'c'? What happens to any
>> other simple 'c' entry in that keymap? Do we "flip" it to, say, 'C-c'?
> 
> How about something like:
> 
>      (mode-kbd "k")         ; C-c k
>      (mode-kbd "mod k")     ; C-c C-k
>      (mode-kbd "mod2 k")    ; C-c M-k
>      (mode-kbd "mod3 k")    ; C-c S-k
> 
> Then mod, mod2 and mod3 could be set to use whatever modifier you want.
> And mode-kbd would use the correct prefix.

This looks nice and flexible, but probably doesn't address the essence 
of Stefan's complaint. Example:

If mode-specific-modifier is 'C-c', 'C-c C-k' seems like an easy-to-hit 
sequence, suitable for a frequently-used command.

If mode-specific-modifier is <menu> or <f2>, '<menu> C-k' is less easy 
to hit than '<menu> k', for example, and the latter binding might be 
preferable.

But the package author already has to make a choice between (mode-kbd 
"k") and (mode-kbd "mod k") for a given command without knowing 
mode-specific-modifier in advance.

> (BTW, it would be even nicer if we could evaluate such a form on
> key lookup.)

Yuri mentioned key-translation-map already. Perhaps it or a similar new 
mechanism could be employed.



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

* Re: Suggested experimental test
  2021-03-25 19:30                             ` Yuri Khan
  2021-03-25 21:11                               ` Stefan Monnier
@ 2021-03-26 23:34                               ` Dmitry Gutov
  2021-03-27  0:02                                 ` Stefan Monnier
  1 sibling, 1 reply; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-26 23:34 UTC (permalink / raw)
  To: Yuri Khan
  Cc: Lars Ingebrigtsen, Gregory Heytings, Eli Zaretskii, Stefan Kangas,
	Emacs developers

On 25.03.2021 21:30, Yuri Khan wrote:
> On Thu, 25 Mar 2021 at 20:20, Dmitry Gutov <dgutov@yandex.ru> wrote:
> 
>> But C-c doesn't have a dedicated keymap, so solving this seems like the
>> first step. What could we do?
>>
>>     (kbd (format "%s C-l" ctl-c-key-sequence) 'some-command)
>>
>> Or maybe create a bogus ctrl-c keymap and then make sure to refer to its
>> binding with something like
>>
>>     (kbd "[C-c] C-l" 'some-command)
>>
>> ...I'm not sure, ideas welcome.
> 
> How about this:
> 
> * Introduce a virtual key, let’s call it <mode-specific>. Let’s
> specifically *not* name it <key-formerly-known-as-C-c>.
> * Have all modes use that as the prefix key for mode-specific
> commands, instead of C-c.
> * In the default configuration, translate C-c to <mode-specific>.
> 
> Proof of concept:
> 
>      $ emacs -Q
> 
>      (define-key help-mode-map (kbd "<mode-specific> <mode-specific>")
>                  #'help-follow-symbol)
>      (define-key help-mode-map (kbd "<mode-specific> C-b") #'help-go-back)
>      (define-key help-mode-map (kbd "<mode-specific> C-f") #'help-go-forward)
>      (define-key key-translation-map (kbd "<menu>") (kbd "<mode-specific>"))
>      ;; C-x C-e all of the above
> 
>      (define-key help-mode-map (kbd "C-c C-c") nil)
>      (define-key help-mode-map (kbd "C-c C-b") nil)
>      (define-key help-mode-map (kbd "C-c C-f") nil)
>      (define-key help-mode-map (kbd "C-c") nil)
>      ;; should be unneeded after all modes convert
> 
>      (global-set-key (kbd "C-c") #'copy-region-as-kill)
>      (global-set-key (kbd "C-v") #'cua-paste)
> 
>      <f1> m C-x o
>      ;; I’m now in a *Help* buffer listing currently enabled modes
> 
>      <f1> b
>      ;; I’m now in a *Help* buffer listing bindings
> 
>      <menu> C-b
>      ;; I’m back to modes
> 
>      <menu> C-f
>      ;; I’m back to bindings
> 
>      S-<down> S-<down> S-<down> C-c
>      C-x o C-v
>      ;; I have a copy of a few lines from *Help* in my *scratch*

This is a solid proposal. We can go with it, especially if we don't mind 
the key sequence ergonomics in keymaps, as well as backward incompatibility.

Perhaps we could instead do something with key-translation-map (or one 
of its friends) that works on existing keymaps?

The use of 'menu-item' allows us to filter based on whether the key is 
first in the sequence:

(define-key key-translation-map (kbd "<menu>") (kbd "C-c"))
(define-key key-translation-map (kbd "C-c")
   `(menu-item "" ,(kbd "<C-c-translated>")
               :filter my--head-of-sequence-p))
(global-set-key (kbd "<C-c-translated>") 'kill-ring-save)

(defun my--head-of-sequence-p (cmd)
   (if (> (length (this-command-keys-vector)) 1)
       (kbd "C-c")
     cmd))

This seems backward-compatible enough, but the main downside is that 
Emacs now says 'C-c-' in the echo area when you hit <menu>. Which must 
be confusing to the main target audience.



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

* Re: Suggested experimental test
  2021-03-26 23:34                               ` Dmitry Gutov
@ 2021-03-27  0:02                                 ` Stefan Monnier
  2021-03-28 13:59                                   ` Dmitry Gutov
  0 siblings, 1 reply; 154+ messages in thread
From: Stefan Monnier @ 2021-03-27  0:02 UTC (permalink / raw)
  To: Dmitry Gutov
  Cc: Emacs developers, Gregory Heytings, Stefan Kangas,
	Lars Ingebrigtsen, Yuri Khan, Eli Zaretskii

> Perhaps we could instead do something with key-translation-map (or one of
> its friends) that works on existing keymaps?
>
> The use of 'menu-item' allows us to filter based on whether the key is first
> in the sequence:
>
> (define-key key-translation-map (kbd "<menu>") (kbd "C-c"))
> (define-key key-translation-map (kbd "C-c")
>   `(menu-item "" ,(kbd "<C-c-translated>")
>               :filter my--head-of-sequence-p))
> (global-set-key (kbd "<C-c-translated>") 'kill-ring-save)

While we can use such tricks, I think what we really want is to
abstract the keymap API such that we can provide keymaps whose elements
are computed dynamically.

There'd need to be at least 2 methods: `lookup-key`, and `map-keymap`,
and adding `where-is` would probably allow better behaviors (but could
introduce other problems given the way where-is currently works).

One application is to create a keymap (on function-key-map) that remaps
all the events of the form "modifiers + mouse-4" to "same-modifiers +
scroll-up".

Another would be a keymap that binds the same keys as some other keymap
except it requires some additional modifier or it removes a modifier, or
it capitalizes all the letters, or it transcribes all the cyrillic
letters to their "equivalent" ASCII, ...
We can already perform similar remappings via `key-translation-map` or
`function-key-map`, but these apply everywhere whereas if we could do them
inside a normal "key binding" keymap then it could be made to apply only
to bindings with a particular prefix.



        Stefan




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

* Re: Suggested experimental test
  2021-03-27  0:02                                 ` Stefan Monnier
@ 2021-03-28 13:59                                   ` Dmitry Gutov
  0 siblings, 0 replies; 154+ messages in thread
From: Dmitry Gutov @ 2021-03-28 13:59 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: Emacs developers, Gregory Heytings, Stefan Kangas,
	Lars Ingebrigtsen, Yuri Khan, Eli Zaretskii

Hi Stefan,

On 27.03.2021 02:02, Stefan Monnier wrote:
> While we can use such tricks, I think what we really want is to
> abstract the keymap API such that we can provide keymaps whose elements
> are computed dynamically.
> 
> There'd need to be at least 2 methods: `lookup-key`, and `map-keymap`,
> and adding `where-is` would probably allow better behaviors (but could
> introduce other problems given the way where-is currently works).
> 
> One application is to create a keymap (on function-key-map) that remaps
> all the events of the form "modifiers + mouse-4" to "same-modifiers +
> scroll-up".
> 
> Another would be a keymap that binds the same keys as some other keymap
> except it requires some additional modifier or it removes a modifier, or
> it capitalizes all the letters, or it transcribes all the cyrillic
> letters to their "equivalent" ASCII, ...

Could you give an example of how this facility will be used? Modes will 
be returning "generic" keymaps by using (mode-local-kbd "...") as Stefan 
K suggested?

Will easy-mmode-define-keymap return such keymaps? Or will the keymap 
values actually have the same structure, but behave differently because 
of augmented lookup-key, map-keymap, etc?



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

end of thread, other threads:[~2021-03-28 13:59 UTC | newest]

Thread overview: 154+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2021-03-20  9:03 Suggested experimental test Gregory Heytings
2021-03-20 11:14 ` Jean Louis
2021-03-20 11:27   ` Eli Zaretskii
2021-03-20 11:34   ` Gregory Heytings
2021-03-20 12:37 ` Proposal to remove C-o binding [was: Suggested experimental test] Alan Mackenzie
2021-03-21  6:53 ` Suggested experimental test Lars Ingebrigtsen
2021-03-21  8:35   ` Alfred M. Szmidt
2021-03-21 13:20     ` Gregory Heytings
2021-03-21 18:16       ` Alfred M. Szmidt
2021-03-21 22:16         ` Gregory Heytings
2021-03-21 22:54           ` Alfred M. Szmidt
2021-03-21 23:05             ` Gregory Heytings
2021-03-21 23:13               ` Alfred M. Szmidt
2021-03-21 23:46                 ` Gregory Heytings
2021-03-22  0:40                   ` Alfred M. Szmidt
2021-03-22 10:05                     ` Gregory Heytings
2021-03-22 18:14                       ` Alfred M. Szmidt
2021-03-22 19:06                         ` Gregory Heytings
2021-03-22 19:56                           ` [External] : " Drew Adams
2021-03-22 21:03                             ` Alfred M. Szmidt
2021-03-22 21:26                               ` Drew Adams
2021-03-23  8:06                                 ` Alfred M. Szmidt
2021-03-22 21:08                           ` Alfred M. Szmidt
2021-03-22 11:21                   ` Jean Louis
2021-03-22 11:07               ` Jean Louis
2021-03-22  3:33           ` Eli Zaretskii
2021-03-22 10:05             ` Gregory Heytings
2021-03-22 11:37               ` Philip Kaludercic
2021-03-22 12:20                 ` Gregory Heytings
2021-03-22 17:38               ` Eli Zaretskii
2021-03-22 17:48                 ` Gregory Heytings
2021-03-22 18:11                   ` Eli Zaretskii
2021-03-22 18:15                   ` Alfred M. Szmidt
2021-03-22 18:14               ` Alfred M. Szmidt
2021-03-22  8:59           ` Rudolf Schlatte
2021-03-22 10:05             ` Gregory Heytings
2021-03-22 10:49           ` Jean Louis
2021-03-21 10:48   ` Gregory Heytings
2021-03-21 10:58     ` Sv: " arthur miller
2021-03-21 13:20       ` Gregory Heytings
2021-03-21 18:16       ` Sv: " Alfred M. Szmidt
2021-03-22  5:11         ` Richard Stallman
2021-03-22 10:24       ` Sv: " Jean Louis
2021-03-22 10:14     ` Jean Louis
2021-03-22 12:06     ` Lars Ingebrigtsen
2021-03-22 12:23       ` Gregory Heytings
2021-03-22 16:15         ` Jean Louis
2021-03-22 16:14       ` Jean Louis
2021-03-22 17:08         ` Gregory Heytings
2021-03-22 17:46           ` Alan Mackenzie
2021-03-22 17:59             ` Gregory Heytings
2021-03-22 18:23             ` Alfred M. Szmidt
2021-03-23  6:09             ` Richard Stallman
2021-03-22 18:03           ` Jean Louis
2021-03-22 17:20       ` Robin Tarsiger
2021-03-22 17:40       ` Eli Zaretskii
2021-03-22 17:55         ` Gregory Heytings
2021-03-22 18:13           ` Eli Zaretskii
2021-03-22 20:22             ` Gregory Heytings
2021-03-23  8:06               ` Eli Zaretskii
2021-03-23 14:15                 ` Gregory Heytings
2021-03-23 14:37                   ` Eli Zaretskii
2021-03-23 16:51                     ` Gregory Heytings
2021-03-23 17:13                       ` Eli Zaretskii
2021-03-23 18:08                       ` Alfred M. Szmidt
2021-03-23 21:06                         ` Gregory Heytings
2021-03-23 21:43                           ` Alfred M. Szmidt
2021-03-23 21:57                             ` Gregory Heytings
2021-03-23 22:08                               ` Alfred M. Szmidt
2021-03-23 22:14                                 ` Gregory Heytings
2021-03-23 22:42                                   ` Alfred M. Szmidt
2021-03-23 23:05                                     ` Gregory Heytings
2021-03-24  5:15                                 ` Richard Stallman
2021-03-24  5:16                           ` Richard Stallman
2021-03-24  6:39                           ` Jean Louis
2021-03-24  6:32                       ` Jean Louis
2021-03-24  6:10                   ` Jean Louis
2021-03-22 18:17         ` Lars Ingebrigtsen
2021-03-22 18:50           ` Eli Zaretskii
2021-03-22 19:09             ` Lars Ingebrigtsen
2021-03-22 19:55               ` Lars Ingebrigtsen
2021-03-22 22:02                 ` Stefan Kangas
2021-03-22 22:33                   ` [External] : " Drew Adams
2021-03-22 23:28                     ` Stefan Kangas
2021-03-22 22:44                   ` Dmitry Gutov
2021-03-22 23:22                     ` Stefan Kangas
2021-03-23  5:22                     ` Jean Louis
2021-03-23  7:43                       ` Eli Zaretskii
2021-03-23 12:28                         ` Philip Kaludercic
2021-03-23 12:41                           ` Eli Zaretskii
2021-03-23 13:09                             ` Dmitry Gutov
2021-03-23 13:27                               ` Philip Kaludercic
2021-03-23 14:00                                 ` Dmitry Gutov
2021-03-23 13:54                               ` Eli Zaretskii
2021-03-23 17:04                                 ` Dmitry Gutov
2021-03-23 21:06                                 ` chad
2021-03-24  5:07                             ` Jean Louis
2021-03-25  5:09                               ` Richard Stallman
2021-03-23  6:12                     ` Yuri Khan
2021-03-24 23:41                       ` Dmitry Gutov
2021-03-25  6:12                         ` Yuri Khan
2021-03-25 13:20                           ` Dmitry Gutov
2021-03-25 14:30                             ` Basil L. Contovounesios
2021-03-25 17:09                               ` Dmitry Gutov
2021-03-25 18:59                               ` Yuri Khan
2021-03-25 19:30                             ` Yuri Khan
2021-03-25 21:11                               ` Stefan Monnier
2021-03-25 23:54                                 ` Dmitry Gutov
2021-03-26 10:34                                   ` Stefan Kangas
2021-03-26 23:13                                     ` Dmitry Gutov
2021-03-26 23:34                               ` Dmitry Gutov
2021-03-27  0:02                                 ` Stefan Monnier
2021-03-28 13:59                                   ` Dmitry Gutov
2021-03-22 20:22               ` Gregory Heytings
2021-03-22 20:36                 ` Lars Ingebrigtsen
2021-03-22 21:03                   ` Alfred M. Szmidt
2021-03-22 20:56         ` Thierry Volpiatto
2021-03-22 18:11       ` [EXTERNAL] " Stephan Mueller
2021-03-22 18:34         ` Lars Ingebrigtsen
2021-03-22 18:56           ` Eli Zaretskii
2021-03-22 19:13             ` Lars Ingebrigtsen
2021-03-22 19:19               ` Eli Zaretskii
2021-03-22 19:25                 ` Lars Ingebrigtsen
2021-03-22 19:49                   ` Stefan Monnier
2021-03-22 19:52                     ` Lars Ingebrigtsen
2021-03-22 20:54                       ` Stefan Monnier
2021-03-22 21:04                         ` Lars Ingebrigtsen
2021-03-23  7:18                           ` Eli Zaretskii
2021-03-22 19:21               ` chad
2021-03-22 19:26                 ` Eli Zaretskii
2021-03-22 19:51                   ` Stefan Monnier
2021-03-22 20:04                     ` Eli Zaretskii
2021-03-22 20:11                       ` Lars Ingebrigtsen
2021-03-22 20:16                         ` Lars Ingebrigtsen
2021-03-23  7:04                           ` Eli Zaretskii
2021-03-22 20:49                       ` Stefan Monnier
2021-03-22 21:02                         ` [External] : " Drew Adams
2021-03-23  7:09                         ` Eli Zaretskii
2021-03-22 19:28                 ` Lars Ingebrigtsen
2021-03-22 19:56                   ` [External] : " Drew Adams
2021-03-22 20:56                     ` Stefan Monnier
2021-03-22 21:19                       ` Drew Adams
2021-03-22 20:22             ` Gregory Heytings
2021-03-23  8:09               ` Eli Zaretskii
2021-03-23 14:15                 ` Gregory Heytings
2021-03-23 14:31                   ` Eli Zaretskii
2021-03-23 17:21                   ` Bob Rogers
2021-03-24  5:42                   ` Jean Louis
2021-03-23 20:55                 ` chad
2021-03-25 17:04           ` [EXTERNAL] " Stephan Mueller
2021-03-22 19:37         ` Stefan Monnier
2021-03-22 19:42         ` Dmitry Gutov
2021-03-22 20:33       ` Jose A. Ortega Ruiz
2021-03-22 18:42     ` Sean Whitton

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.