emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Multi-line input


From: Drew Adams
Subject: RE: Multi-line input
Date: Fri, 5 Dec 2014 19:20:09 -0800 (PST)

> The only downside of S-RET is that it's not available on a tty.
> But on a graphical display S-RET is a common key to insert a
> newline.

Nope.  As I mentioned in thread "Losing minibuffer input", Emacs
should not sacrifice `S-RET' to just inserting a newline char,
as some other, lesser programs do.

Emacs should reserve `S-RET' for behavior similar to Emacs
`RET' behavior.  And depending on the context that can mean
things like choosing a completion candidate.  Like `TAB',
`RET' does more in Emacs than it does in other programs.
As I said:

 Modifiers used with RET and TAB should be reserved for
 actions similar or analogous to what RET and TAB are used
 for without modifiers (as we have done with M-TAB, for
 instance).  In particular, in the minibuffer they should be
 reserved for actions similar to what RET and TAB do in the
 minibuffer.

Besides which, Emacs already has a perfectly good, canonical
way to insert a newline char: `C-j'.  Make `C-j' self-inserting
in more keymaps and you will not need to waste `S-RET' for that,
nor will you need a `C-q C-j' workaround.  You are making things
complicated for nothing.

>   *** `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.
> 
> But e.g. in *scratch* typing `C-j' evaluates the last expression.
> S-RET could help here as well, after agreeing on its universal
> meaning of inserting a newline.

There is no such "universal meaning".  For Emacs use, this is
backward.  `C-j' in *scratch* should self-insert (newline char).
If anything should, it is `S-RET' that should have a special
behavior here, such as evaluating.

Are you going to be consistent, and swap `C-j' with `S-RET'
for specifying a newline char everywhere?  Will users who want
to search for a newline char now need to use `S-RET' during
Isearch? [*]  No?  So users will sometimes use `C-j' to insert
a newline, and sometimes use `S-RET'?  So much for "universal"
consistency.

What would be gained by that, besides a supposed consistency
with a few simplistic text-editing contexts?  Why not keep
Emacs consistent with itself instead - and with UNIX, GNU/Linux,...

Let newline (`C-j') be newline - across Emacs, by default.
Save `S-RET' for more complex behavior, just as we do (but
other, simpler edit contexts do not) for `RET' and `TAB'.


[*] Yes, FWIW, I would be in favor of having `C-j' self-insert
in Isearch also, instead of needing to use `C-q C-j'.  Just as
for a character such as `b' or `?', `C-j' would behave the same
within search and outside search: it would self-insert.  But
`C-q C-j' is anyway better than `S-RET' during search - it makes
clear that you are, well, inserting a `C-j' (newline) character.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]