Zsh Mailing List Archive
Messages sorted by:
Reverse Date,
Date,
Thread,
Author
prompt compatibility
- X-seq: zsh-workers 3052
- From: Zefram <zefram@xxxxxxxxxxxxxxxxx>
- To: zsh-workers@xxxxxxxxxxxxxxx
- Subject: prompt compatibility
- Date: Sun, 30 Mar 1997 22:29:10 +0100 (BST)
-----BEGIN PGP SIGNED MESSAGE-----
This patch adds two new options, for sh/ksh compatibility in prompt
expansion. NO_PROMPT_PERCENT disables the % sequences, and is set in
sh/ksh emulation mode. PROMPT_BANG enables ksh-like ! expansion (but
isn't quite a perfect emulation), and is set in ksh emulation mode.
-zefram
*** Doc/Zsh/compat.yo 1996/12/29 10:51:50 1.3
--- Doc/Zsh/compat.yo 1997/03/30 16:55:56
***************
*** 49,56 ****
tt(KSH_ARRAYS),
tt(NO_MULTIOS),
tt(NO_NOMATCH),
! tt(RM_STAR_SILENT),
tt(POSIX_BUILTINS),
tt(SH_FILE_EXPANSION),
tt(SH_GLOB),
tt(SH_OPTION_LETTERS),
--- 49,58 ----
tt(KSH_ARRAYS),
tt(NO_MULTIOS),
tt(NO_NOMATCH),
! tt(NO_NOTIFY),
tt(POSIX_BUILTINS),
+ tt(NO_PROMPT_PERCENT),
+ tt(RM_STAR_SILENT),
tt(SH_FILE_EXPANSION),
tt(SH_GLOB),
tt(SH_OPTION_LETTERS),
***************
*** 60,65 ****
--- 62,68 ----
Also, the
tt(KSH_OPTION_PRINT),
tt(LOCAL_OPTIONS),
+ tt(PROMPT_BANG),
tt(PROMPT_SUBST)
and
tt(SINGLE_LINE_ZLE)
*** Doc/Zsh/options.yo 1997/03/23 01:43:55 1.9
--- Doc/Zsh/options.yo 1997/03/30 16:34:52
***************
*** 634,646 ****
--- 634,659 ----
function always changes it globally regardless of the tt(LOCAL_OPTIONS)
option.
)
+ pindex(PROMPT_BANG)
+ cindex(prompt, ! expansion)
+ item(tt(PROMPT_BANG))(
+ If set, `tt(!)' is treated specially in prompt expansion.
+ See noderef(Prompt Expansion).
+ )
pindex(PROMPT_CR)
cindex(prompt, with CR)
item(tt(PROMPT_CR) (tt(PLUS()V)))(
Print a carriage return just before printing
a prompt in the line editor.
)
+ pindex(PROMPT_PERCENT)
+ cindex(prompt, % expansion)
+ item(tt(PROMPT_PERCENT))(
+ If set, `tt(%)' is treated specially in prompt expansion.
+ See noderef(Prompt Expansion).
+ )
pindex(PROMPT_SUBST)
+ cindex(prompt, parameter expansion)
item(tt(PROMPT_SUBST))(
If set, em(parameter expansion), em(command substitution) and
em(arithmetic expansion) are performed in prompts.
*** Doc/Zsh/prompt.yo 1997/03/08 00:26:53 1.3
--- Doc/Zsh/prompt.yo 1997/03/30 16:38:33
***************
*** 19,26 ****
noderef(Expansion).
)\
! Certain escape sequences are recognised in the prompt string.
! These sequences start with `tt(%)'.
Some escapes take an optional integer argument, which
should appear between the `tt(%)' and the next character of the
sequence. The following escape sequences are recognized:
--- 19,34 ----
noderef(Expansion).
)\
! Certain escape sequences may be recognised in the prompt string.
!
! pindex(PROMPT_BANG, use of)
! If the tt(PROMPT_BANG) option is set, a `tt(!)' in the prompt is replaced
! by the current history event number. A literal `tt(!)' may then be
! represented as `tt(!!)'.
!
! pindex(PROMPT_PERCENT, use of)
! If the tt(PROMPT_PERCENT) option is set, certain escape sequences that
! start with `tt(%)' are expanded.
Some escapes take an optional integer argument, which
should appear between the `tt(%)' and the next character of the
sequence. The following escape sequences are recognized:
*** Src/options.c 1997/03/23 01:44:07 1.8
--- Src/options.c 1997/03/30 16:45:35
***************
*** 144,150 ****
--- 144,152 ----
{NULL, "posixbuiltins", OPT_EMULATE|OPT_BOURNE, POSIXBUILTINS},
{NULL, "printexitvalue", 0, PRINTEXITVALUE},
{NULL, "privileged", OPT_SPECIAL, PRIVILEGED},
+ {NULL, "promptbang", OPT_EMULATE|OPT_KSH, PROMPTBANG},
{NULL, "promptcr", OPT_ALL, PROMPTCR},
+ {NULL, "promptpercent", OPT_EMULATE|OPT_NONBOURNE, PROMPTPERCENT},
{NULL, "promptsubst", OPT_EMULATE|OPT_KSH, PROMPTSUBST},
{NULL, "pushdignoredups", 0, PUSHDIGNOREDUPS},
{NULL, "pushdminus", 0, PUSHDMINUS},
*** Src/prompt.c 1997/03/26 09:09:23 1.10
--- Src/prompt.c 1997/03/30 16:26:58
***************
*** 114,122 ****
return buf;
}
! /* Perform %-expansion on a section of the prompt. The section is ended by *
! * an instance of endchar. If doprint is 0, the valid % sequences are *
! * merely skipped over, and nothing is stored. */
/**/
int
--- 114,122 ----
return buf;
}
! /* Perform %- and !-expansion as required on a section of the prompt. The *
! * section is ended by an instance of endchar. If doprint is 0, the valid *
! * % sequences are merely skipped over, and nothing is stored. */
/**/
int
***************
*** 130,136 ****
for (; *fm && *fm != endchar; fm++) {
arg = 0;
! if (*fm == '%') {
if (idigit(*++fm)) {
arg = zstrtol(fm, &fm, 10);
}
--- 130,136 ----
for (; *fm && *fm != endchar; fm++) {
arg = 0;
! if (*fm == '%' && isset(PROMPTPERCENT)) {
if (idigit(*++fm)) {
arg = zstrtol(fm, &fm, 10);
}
***************
*** 531,536 ****
--- 531,547 ----
fm++;
break;
}
+ } else if(*fm == '!' && isset(PROMPTBANG)) {
+ if(doprint)
+ if(fm[1] == '!') {
+ fm++;
+ addbufspc(1);
+ pputc('!');
+ } else {
+ addbufspc(DIGBUFSIZE);
+ sprintf(bp, "%d", curhist);
+ bp += strlen(bp);
+ }
} else {
char c = *fm == Meta ? *++fm ^ 32 : *fm;
*** Src/zsh.h 1997/03/27 01:57:53 1.52
--- Src/zsh.h 1997/03/30 16:15:50
***************
*** 1032,1038 ****
--- 1032,1040 ----
POSIXBUILTINS,
PRINTEXITVALUE,
PRIVILEGED,
+ PROMPTBANG,
PROMPTCR,
+ PROMPTPERCENT,
PROMPTSUBST,
PUSHDIGNOREDUPS,
PUSHDMINUS,
-----BEGIN PGP SIGNATURE-----
Version: 2.6.3ia
Charset: ascii
iQCVAwUBMz6eHnD/+HJTpU/hAQHPugQAqtebJiSsN+T4NiXTSp+Le0SD8E4lTjqb
SzmZfrenlUgUi2mdnKhiCFuJ5VQr/aDq+XU73Q2O6Fd9hzOmPrgFeizWHA1cZwv4
6DEFPMjPnYCgRF9jx8zTxXarvl3VKCZCr7KSx+GJdyYQ1ZueMHU80LCgVAgfD0nh
SpTXdyC/L2A=
=ctrO
-----END PGP SIGNATURE-----
Messages sorted by:
Reverse Date,
Date,
Thread,
Author