rem: static void show_special (const char *glob)
add: static void show_special (int interact, const char *glob)
context: static void show_special (const char *glob){ /* note: the following is for documentation only,           the real captab is now found in a group's WIN_t !     +------------------------------------------------------+     | char *captab[] = {                 :   Cap's/Delim's |     |   Cap_norm, Cap_norm, Cap_bold,    =   \00, \01, \02 |     |   Sum_color,                       =   \03           |     |   Msg_color, Pmt_color,            =   \04, \05      |     |   Hdr_color,                       =   \06           |     |   Row_color_high,                  =   \07           |     |   Row_color_norm  };               =   \10 [octal!]  |     +------------------------------------------------------+ */   char tmp[BIGBUFSIZ], *cap, *lin_end, *sub_beg, *sub_end;   int room;      /* handle multiple lines passed in a bunch */   while ((lin_end = strchr(glob, '\n'))) {         /* create a local copy we can extend and otherwise abuse */      memcpy(tmp, glob, (unsigned)(lin_end - glob));         /* zero terminate this part and prepare to parse substrings */      tmp[lin_end - glob] = '\0';      room = Screen_cols;      sub_beg = sub_end = tmp;      while (*sub_beg) {         switch (*sub_end) {            case 0:                     /* no end delim, captab makes normal */               *(sub_end + 1) = '\0';   /* extend str end, then fall through */            case 1: case 2: case 3: case 4:            case 5: case 6: case 7: case 8:               cap = Curwin->captab[(int)*sub_end];               *sub_end = '\0';               PUTP("%s%.*s%s", cap, room, sub_beg, Caps_off);               room -= (sub_end - sub_beg);               sub_beg = ++sub_end;               break;            default:                    /* nothin' special, just text */               ++sub_end;         }         if (0 >= room) break;          /* skip substrings that won't fit */      } /* end: while 'subtrings' */      putp(Cap_clr_eol);      putp("\n");                       /* emulate truncated newline */      glob = ++lin_end;                 /* point to next line (maybe) */   } /* end: while 'lines' */   /* if there's anything left in the glob (by virtue of no trailing '\n'),      it probably means caller wants to retain cursor position on this final      line -- ok then, we'll just do our 'fit-to-screen' thingy... */   if (*glob) PUTP("%.*s", Screen_cols, glob);   fflush(stdout);}