summaryrefslogtreecommitdiff
path: root/src/tparam.c
diff options
context:
space:
mode:
authorKenichi Handa <handa@m17n.org>2004-04-16 12:51:06 +0000
committerKenichi Handa <handa@m17n.org>2004-04-16 12:51:06 +0000
commit6b61353c0a0320ee15bb6488149735381fed62ec (patch)
treee69adba60e504a5a37beb556ad70084de88a7aab /src/tparam.c
parentdc6a28319312fe81f7a1015e363174022313f0bd (diff)
downloademacs-6b61353c0a0320ee15bb6488149735381fed62ec.tar.gz
emacs-6b61353c0a0320ee15bb6488149735381fed62ec.tar.bz2
emacs-6b61353c0a0320ee15bb6488149735381fed62ec.zip
Sync to HEAD
Diffstat (limited to 'src/tparam.c')
-rw-r--r--src/tparam.c17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/tparam.c b/src/tparam.c
index fb71e05b3e4..ea208692161 100644
--- a/src/tparam.c
+++ b/src/tparam.c
@@ -144,7 +144,9 @@ tparam1 (string, outstring, len, up, left, argp)
int outlen = 0;
register int tem;
- int *old_argp = argp;
+ int *old_argp = argp; /* can move */
+ int *fixed_argp = argp; /* never moves */
+ int explicit_param_p = 0; /* set by %p */
int doleft = 0;
int doup = 0;
@@ -180,7 +182,10 @@ tparam1 (string, outstring, len, up, left, argp)
if (c == '%')
{
c = *p++;
- tem = *argp;
+ if (explicit_param_p)
+ explicit_param_p = 0;
+ else
+ tem = *argp;
switch (c)
{
case 'd': /* %d means output in decimal. */
@@ -203,7 +208,10 @@ tparam1 (string, outstring, len, up, left, argp)
*op++ = tem % 10 + '0';
argp++;
break;
-
+ case 'p': /* %pN means use param N for next subst. */
+ tem = fixed_argp[(*p++) - '1'];
+ explicit_param_p = 1;
+ break;
case 'C':
/* For c-100: print quotient of value by 96, if nonzero,
then do like %+. */
@@ -334,3 +342,6 @@ main (argc, argv)
}
#endif /* DEBUG */
+
+/* arch-tag: 83f7b5ac-a808-4f75-b87a-123de009b402
+ (do not change this comment) */