mod_export int getzlequery(void) { ZLE_INT_T c; #ifdef FIONREAD int val; /* check for typeahead, which is treated as a negative response */ ioctl(SHTTY, FIONREAD, (char *)&val); if (val) { putc('n', shout); return 0; } #endif /* get a character from the tty and interpret it */ c = getfullchar(0); if (c == ZWC('\t')) c = ZWC('y'); else if (ZC_icntrl(c) || c == ZLEEOF) c = ZWC('n'); else c = ZC_tolower(c); /* echo response and return */ if (c != ZWC('\n')) { REFRESH_ELEMENT re; re.chr = c; re.atr = 0; zwcputc(&re, NULL); } return c == ZWC('y'); }
int vioperswapcase(UNUSED(char **args)) { int oldcs, c2, ret = 1; /* get the range */ startvichange(1); if ((c2 = getvirange(0)) != -1) { oldcs = zlecs; /* swap the case of all letters within range */ while (zlecs < c2) { if (ZC_ilower(zleline[zlecs])) zleline[zlecs] = ZC_toupper(zleline[zlecs]); else if (ZC_iupper(zleline[zlecs])) zleline[zlecs] = ZC_tolower(zleline[zlecs]); INCCS(); } /* go back to the first line of the range */ zlecs = oldcs; ret = 0; #if 0 vifirstnonblank(); #endif } vichgflag = 0; return ret; }
int capitalizeword(UNUSED(char **args)) { int first, n = zmult; int neg = n < 0, ocs = zlecs; if (neg) n = -n; while (n--) { first = 1; while (zlecs != zlell && !ZC_iword(zleline[zlecs])) INCCS(); while (zlecs != zlell && ZC_iword(zleline[zlecs]) && !ZC_ialpha(zleline[zlecs])) INCCS(); while (zlecs != zlell && ZC_iword(zleline[zlecs])) { zleline[zlecs] = (first) ? ZC_toupper(zleline[zlecs]) : ZC_tolower(zleline[zlecs]); first = 0; INCCS(); } } if (neg) zlecs = ocs; return 0; }
int viswapcase(UNUSED(char **args)) { int eol, n = zmult; startvichange(-1); if (n < 1) return 1; eol = findeol(); while (zlecs < eol && n--) { if (ZC_ilower(zleline[zlecs])) zleline[zlecs] = ZC_toupper(zleline[zlecs]); else if (ZC_iupper(zleline[zlecs])) zleline[zlecs] = ZC_tolower(zleline[zlecs]); INCCS(); } if (zlecs && zlecs == eol) DECCS(); return 0; }
int downcaseword(UNUSED(char **args)) { int n = zmult; int neg = n < 0, ocs = zlecs; if (neg) n = -n; while (n--) { while (zlecs != zlell && !ZC_iword(zleline[zlecs])) INCCS(); while (zlecs != zlell && ZC_iword(zleline[zlecs])) { zleline[zlecs] = ZC_tolower(zleline[zlecs]); INCCS(); } } if (neg) zlecs = ocs; return 0; }
int vidowncase(UNUSED(char **args)) { int oldcs, c2, ret = 1; /* get the range */ startvichange(1); if ((c2 = getvirange(0)) != -1) { oldcs = zlecs; /* convert the case of all letters within range */ while (zlecs < c2) { zleline[zlecs] = ZC_tolower(zleline[zlecs]); INCCS(); } /* go back to the first line of the range */ zlecs = oldcs; ret = 0; } vichgflag = 0; return ret; }
int visetbuffer(UNUSED(char **args)) { ZLE_INT_T ch; if ((zmod.flags & MOD_VIBUF) || (((ch = getfullchar(0)) < ZWC('1') || ch > ZWC('9')) && (ch < ZWC('a') || ch > ZWC('z')) && (ch < ZWC('A') || ch > ZWC('Z')))) return 1; if (ch >= ZWC('A') && ch <= ZWC('Z')) /* needed in cut() */ zmod.flags |= MOD_VIAPP; else zmod.flags &= ~MOD_VIAPP; /* FIXME how portable is it for multibyte encoding? */ zmod.vibuf = ZC_tolower(ch); if (ch >= ZWC('1') && ch <= ZWC('9')) zmod.vibuf += - (int)ZWC('1') + 26; else zmod.vibuf += - (int)ZWC('a'); zmod.flags |= MOD_VIBUF; prefixflag = 1; return 0; }
int visetbuffer(char **args) { ZLE_INT_T ch; if (*args) { ch = **args; if (args[1] || (ch && (*args)[1])) return 1; } else { ch = getfullchar(0); } if (ch == ZWC('_')) { zmod.flags |= MOD_NULL; prefixflag = 1; return 0; } else zmod.flags &= ~MOD_NULL; if ((ch < ZWC('0') || ch > ZWC('9')) && (ch < ZWC('a') || ch > ZWC('z')) && (ch < ZWC('A') || ch > ZWC('Z'))) return 1; if (ch >= ZWC('A') && ch <= ZWC('Z')) /* needed in cut() */ zmod.flags |= MOD_VIAPP; else zmod.flags &= ~MOD_VIAPP; /* FIXME how portable is it for multibyte encoding? */ zmod.vibuf = ZC_tolower(ch); if (ch >= ZWC('0') && ch <= ZWC('9')) zmod.vibuf += - (int)ZWC('0') + 26; else zmod.vibuf += - (int)ZWC('a'); zmod.flags |= MOD_VIBUF; prefixflag = 1; return 0; }