[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.