allow backslash escapes for bind for ^ and \ o̲n̲l̲y̲; also more EBCDIC-friendly

This commit is contained in:
tg 2017-04-28 03:37:44 +00:00
parent fba6940ba4
commit 1c6b2d1cb8
2 changed files with 15 additions and 14 deletions

22
edit.c
View File

@ -28,7 +28,7 @@
#ifndef MKSH_NO_CMDLINE_EDITING #ifndef MKSH_NO_CMDLINE_EDITING
__RCSID("$MirOS: src/bin/mksh/edit.c,v 1.332 2017/04/28 03:28:17 tg Exp $"); __RCSID("$MirOS: src/bin/mksh/edit.c,v 1.333 2017/04/28 03:37:43 tg Exp $");
/* /*
* in later versions we might use libtermcap for this, but since external * in later versions we might use libtermcap for this, but since external
@ -2394,18 +2394,18 @@ x_mapin(const char *cp, Area *ap)
strdupx(news, cp, ap); strdupx(news, cp, ap);
op = news; op = news;
while (*cp) { while (*cp) {
/* XXX -- should handle \^ escape? */ switch (*cp) {
if (*cp == '^') { case '^':
cp++; cp++;
/*XXX or ^^ escape? this is ugly. */ *op++ = ksh_toctrl(*cp);
if (rtt2asc(*cp) >= 0x3FU) break;
*op++ = ksh_toctrl(*cp); case '\\':
else { if (cp[1] == '\\' || cp[1] == '^')
*op++ = '^'; ++cp;
cp--; /* FALLTHROUGH */
} default:
} else
*op++ = *cp; *op++ = *cp;
}
cp++; cp++;
} }
*op = '\0'; *op = '\0';

7
mksh.1
View File

@ -1,4 +1,4 @@
.\" $MirOS: src/bin/mksh/mksh.1,v 1.445 2017/04/27 23:33:19 tg Exp $ .\" $MirOS: src/bin/mksh/mksh.1,v 1.446 2017/04/28 03:37:44 tg Exp $
.\" $OpenBSD: ksh.1,v 1.160 2015/07/04 13:27:04 feinerer Exp $ .\" $OpenBSD: ksh.1,v 1.160 2015/07/04 13:27:04 feinerer Exp $
.\"- .\"-
.\" Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, .\" Copyright © 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009,
@ -76,7 +76,7 @@
.\" with -mandoc, it might implement .Mx itself, but we want to .\" with -mandoc, it might implement .Mx itself, but we want to
.\" use our own definition. And .Dd must come *first*, always. .\" use our own definition. And .Dd must come *first*, always.
.\" .\"
.Dd $Mdocdate: April 27 2017 $ .Dd $Mdocdate: April 28 2017 $
.\" .\"
.\" Check which macro package we use, and do other -mdoc setup. .\" Check which macro package we use, and do other -mdoc setup.
.\" .\"
@ -3164,7 +3164,8 @@ other trailing character will be processed afterwards.
.Pp .Pp
Control characters may be written using caret notation Control characters may be written using caret notation
i.e. \*(haX represents Ctrl-X. i.e. \*(haX represents Ctrl-X.
Note that although only two prefix characters (usually ESC and \*(haX) The caret itself can be escaped by a backslash, which also escapes itself.
Note that although only three prefix characters (usually ESC, \*(haX and NUL)
are supported, some multi-character sequences can be supported. are supported, some multi-character sequences can be supported.
.Pp .Pp
The following default bindings show how the arrow keys, the home, end and The following default bindings show how the arrow keys, the home, end and