static void putKcp( char *start, /* start of string to write */ char *end, /* end of string to write */ bool force) /* true if we should force nokeyw */ { int i; int xfld = 0; while (start <= end) { if (idx) { if (*start == ' ' || *start == '\t') { if (xfld == 0) printf(""); printf("\t"); xfld = 1; while (*start == ' ' || *start == '\t') start++; continue; } } /* take care of nice tab stops */ if (*start == '\t') { while (*start == '\t') start++; i = tabs(x_start, start) - margin / 8; printf("\\h'|%dn'", i * 10 + 1 - margin % 8); continue; } if (!nokeyw && !force) if ((*start == '#' || isidchr(*start)) && (start == x_start || !isidchr(start[-1]))) { i = iskw(start); if (i > 0) { ps("\\*(+K"); do putcp(*start++); while (--i > 0); ps("\\*(-K"); continue; } } putcp(*start++); } }
/* * start: start of string to write * end: end of string to write * force: true if we should force nokeyw */ static void putKcp(char *start, char *end, bool force) { int i; int xfld = 0; while (start <= end) { if (idx) { if (*start == ' ' || *start == '\t') { if (xfld == 0) printf("\001"); printf("\t"); xfld = 1; while (*start == ' ' || *start == '\t') start++; continue; } } /* take care of nice tab stops */ if (*start == '\t') { while (*start == '\t') start++; i = tabs(s_start, start) - margin / 8; printf("\\h'|%dn'", i * 10 + 1 - margin % 8); continue; } if (!nokeyw && !force) if ((*start == '#' || isidchr(*start)) && (start == s_start || !isidchr(start[-1]))) { i = iskw(start); if (i > 0) { ps("\\*(+K"); do putcp((unsigned char)*start++); while (--i > 0); ps("\\*(-K"); continue; } } putcp((unsigned char)*start++); } }
void Kprint::tk_printf(char *s,char *fmt, ...) { va_list va; char *s_b=s; va_start(va,fmt); tfp_format(&s,putcp,fmt,va); putcp(&s,0); print(s_b); va_end(va); }