diff --git a/clib/linenoise.c b/clib/linenoise.c index 5ecd64d..80b3821 100644 --- a/clib/linenoise.c +++ b/clib/linenoise.c @@ -603,14 +603,17 @@ static void refreshMultiLine(struct linenoiseState *l) { } else { int colors[] = {31, 32, 33, 35, 36}; int nesting = 0; + int incode = 1; /* not in literal; TODO add in comment */ for (int i = 0; i < l->len; i++) { - if (l->buf[i]=='(') { - snprintf(seq,64,"\033[%d;1m(\033[0m",colors[nesting % sizeof(colors)]); + if (l->buf[i] == '"' && !(i > 0 && l->buf[i-1] == '\\')) + incode = (incode == 1 ? 0 : 1); + if (incode == 1 && l->buf[i] == '(') { + snprintf(seq,64,"\033[%d;1m(\033[0m",colors[nesting % (sizeof(colors)/sizeof(colors[0]))]); abAppend(&ab,seq,strlen(seq)); nesting++; - } else if (l->buf[i]==')') { + } else if (incode == 1 && l->buf[i] == ')') { nesting--; - snprintf(seq,64,"\033[%d;1m)\033[0m",colors[nesting % sizeof(colors)]); + snprintf(seq,64,"\033[%d;1m)\033[0m",colors[nesting % (sizeof(colors)/sizeof(colors[0]))]); abAppend(&ab,seq,strlen(seq)); } else { abAppend(&ab,l->buf+i,1);