mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-01-31 03:04:49 +01:00
26110: option to allow vared to open to an alternative terminal
This commit is contained in:
parent
61e692400b
commit
02f05d7462
3 changed files with 25 additions and 6 deletions
|
@ -1,3 +1,8 @@
|
|||
2008-12-09 Peter Stephenson <pws@csr.com>
|
||||
|
||||
* 26119: Doc/Zsh/zle.yo, Src/Zle/zle_main.c: option to allow vared
|
||||
to open to an alternative terminal.
|
||||
|
||||
2008-12-09 Clint Adams <clint@zsh.org>
|
||||
|
||||
* Richard Hartmann: 26114: Completion/Unix/Command/_git: add color
|
||||
|
|
|
@ -292,7 +292,8 @@ findex(vared)
|
|||
cindex(parameters, editing)
|
||||
cindex(editing parameters)
|
||||
xitem(tt(vared) [ tt(-Aache) ] [ tt(-p) var(prompt) ] [ tt(-r) var(rprompt) ])
|
||||
item( [ -M var(main-keymap) ] [ -m var(vicmd-keymap) ] var(name))(
|
||||
xitem( [ tt(-M) var(main-keymap) ] [ tt(-m) var(vicmd-keymap) ])
|
||||
item( [ tt(-t) var(tty) ] var(name))(
|
||||
The value of the parameter var(name) is loaded into the edit
|
||||
buffer, and the line editor is invoked. When the editor exits,
|
||||
var(name) is set to the string value returned by the editor.
|
||||
|
@ -326,6 +327,10 @@ keymap during editing. For vi-style editing, this allows a pair of keymaps
|
|||
to override tt(viins) and tt(vicmd). For emacs-style editing, only tt(-M)
|
||||
is normally needed but the tt(-m) option may still be used. On exit, the
|
||||
previous keymaps will be restored.
|
||||
|
||||
If `tt(-t) var(tty)' is given, var(tty) is the name of a terminal device
|
||||
to be used instead of the default tt(/dev/tty). If var(tty) does not
|
||||
refer to a terminal an error is reported.
|
||||
)
|
||||
findex(zle)
|
||||
cindex(widgets, rebinding)
|
||||
|
|
|
@ -1449,7 +1449,7 @@ bin_vared(char *name, char **args, Options ops, UNUSED(int func))
|
|||
Value v;
|
||||
Param pm = 0;
|
||||
int ifl;
|
||||
int type = PM_SCALAR, obreaks = breaks, haso = 0;
|
||||
int type = PM_SCALAR, obreaks = breaks, haso = 0, oSHTTY = 0;
|
||||
char *p1, *p2, *main_keymapname, *vicmd_keymapname;
|
||||
Keymap main_keymapsave = NULL, vicmd_keymapsave = NULL;
|
||||
FILE *oshout = NULL;
|
||||
|
@ -1558,13 +1558,22 @@ bin_vared(char *name, char **args, Options ops, UNUSED(int func))
|
|||
s = ztrdup(s);
|
||||
}
|
||||
|
||||
if (SHTTY == -1) {
|
||||
if (SHTTY == -1 || OPT_ISSET(ops,'t')) {
|
||||
/* need to open /dev/tty specially */
|
||||
if ((SHTTY = open("/dev/tty", O_RDWR|O_NOCTTY)) == -1) {
|
||||
oSHTTY = SHTTY;
|
||||
if ((SHTTY = open(OPT_ISSET(ops,'t') ? OPT_ARG(ops,'t') : "/dev/tty",
|
||||
O_RDWR|O_NOCTTY)) == -1) {
|
||||
zwarnnam(name, "can't access terminal");
|
||||
zsfree(s);
|
||||
return 1;
|
||||
}
|
||||
if (!isatty(SHTTY)) {
|
||||
zwarnnam(name, "%s: not a terminal", OPT_ARG(ops,'t'));
|
||||
close(SHTTY);
|
||||
SHTTY = oSHTTY;
|
||||
zsfree(s);
|
||||
return 1;
|
||||
}
|
||||
oshout = shout;
|
||||
init_shout();
|
||||
|
||||
|
@ -1597,7 +1606,7 @@ bin_vared(char *name, char **args, Options ops, UNUSED(int func))
|
|||
if (haso) {
|
||||
fclose(shout); /* close(SHTTY) */
|
||||
shout = oshout;
|
||||
SHTTY = -1;
|
||||
SHTTY = oSHTTY;
|
||||
}
|
||||
if (!t || errflag) {
|
||||
/* error in editing */
|
||||
|
@ -1887,7 +1896,7 @@ zle_main_entry(int cmd, va_list ap)
|
|||
|
||||
static struct builtin bintab[] = {
|
||||
BUILTIN("bindkey", 0, bin_bindkey, 0, -1, 0, "evaM:ldDANmrsLRp", NULL),
|
||||
BUILTIN("vared", 0, bin_vared, 1, 1, 0, "aAcehM:m:p:r:", NULL),
|
||||
BUILTIN("vared", 0, bin_vared, 1, 1, 0, "aAcehM:m:p:r:t:", NULL),
|
||||
BUILTIN("zle", 0, bin_zle, 0, -1, 0, "aAcCDFgGIKlLmMNRU", NULL),
|
||||
};
|
||||
|
||||
|
|
Loading…
Reference in a new issue