MCPcopy Create free account
hub / github.com/FirebirdSQL/firebird / re_fastaddc

Function re_fastaddc

extern/editline/src/refresh.c:1107–1143  ·  view source on GitHub ↗

re_fastaddc(): * we added just one char, handle it fast. * Assumes that screen cursor == real cursor */

Source from the content-addressed store, hash-verified

1105 * Assumes that screen cursor == real cursor
1106 */
1107protected void
1108re_fastaddc(EditLine *el)
1109{
1110 Char c;
1111 int rhdiff;
1112
1113 c = el->el_line.cursor[-1];
1114
1115 if (c == '\t' || el->el_line.cursor != el->el_line.lastchar) {
1116 re_refresh(el); /* too hard to handle */
1117 return;
1118 }
1119 rhdiff = el->el_terminal.t_size.h - el->el_cursor.h -
1120 el->el_rprompt.p_pos.h;
1121 if (el->el_rprompt.p_pos.h && rhdiff < 3) {
1122 re_refresh(el); /* clear out rprompt if less than 1 char gap */
1123 return;
1124 } /* else (only do at end of line, no TAB) */
1125 switch (ct_chr_class(c)) {
1126 case CHTYPE_TAB: /* already handled, should never happen here */
1127 break;
1128 case CHTYPE_NL:
1129 case CHTYPE_PRINT:
1130 re_fastputc(el, c);
1131 break;
1132 case CHTYPE_ASCIICTL:
1133 case CHTYPE_NONPRINT: {
1134 Char visbuf[VISUAL_WIDTH_MAX];
1135 ssize_t i, n =
1136 ct_visual_char(visbuf, VISUAL_WIDTH_MAX, (Char)c);
1137 for (i = 0; n-- > 0; ++i)
1138 re_fastputc(el, visbuf[i]);
1139 break;
1140 }
1141 }
1142 terminal__flush(el);
1143}
1144
1145
1146/* re_clear_display():

Callers 2

vi_change_caseFunction · 0.85
ed_insertFunction · 0.85

Calls 5

re_refreshFunction · 0.85
ct_chr_classFunction · 0.85
re_fastputcFunction · 0.85
ct_visual_charFunction · 0.85
terminal__flushFunction · 0.85

Tested by

no test coverage detected