X-Git-Url: https://git.lizzy.rs/?a=blobdiff_plain;f=linenoise.c;fp=linenoise.c;h=c5520754950a377c612e6405436f31c61bbe8cf3;hb=d1a245f4a75747a1c4a1c08385817cb637e1c7af;hp=3abc73ccd4ccd3e42ed15cfb1d4581c89cd1efe2;hpb=5a9f0e70f9011e5e6343de77045e8567a0a67c04;p=linenoise.git diff --git a/linenoise.c b/linenoise.c index 3abc73c..c552075 100644 --- a/linenoise.c +++ b/linenoise.c @@ -1281,13 +1281,14 @@ static int remove_char(struct current *current, int pos) int rc = 1; /* Now we try to optimise in the simple but very common case that: - * - we are remove the char at EOL + * - outputChars() can be used directly (not win32) + * - we are removing the char at EOL * - the buffer is not empty * - there are columns available to the left * - the char being deleted is not a wide or utf-8 character * - no hints are being shown */ - if (current->pos == pos + 1 && current->pos == sb_chars(current->buf) && pos > 0) { + if (current->output && current->pos == pos + 1 && current->pos == sb_chars(current->buf) && pos > 0) { #ifdef USE_UTF8 /* Could implement utf8_prev_len() but simplest just to not optimise this case */ char last = sb_str(current->buf)[offset]; @@ -1342,11 +1343,12 @@ static int insert_char(struct current *current, int pos, int ch) buf[n] = 0; /* Now we try to optimise in the simple but very common case that: + * - outputChars() can be used directly (not win32) * - we are inserting at EOL * - there are enough columns available * - no hints are being shown */ - if (pos == current->pos && pos == sb_chars(current->buf)) { + if (current->output && pos == current->pos && pos == sb_chars(current->buf)) { int width = char_display_width(ch); if (current->colsright > width) { /* Yes, can optimise */