Improve number highlighting

This commit is contained in:
Timothy Warren 2019-08-20 16:11:51 -04:00
parent 600a5896d1
commit 337e4aa6bc

22
kilo.c
View File

@ -259,18 +259,34 @@ int getWindowSize(int *rows, int *cols)
/*** syntax highlighting ***/ /*** syntax highlighting ***/
int is_separator(int c)
{
return isspace(c) || c == '\0' || strchr(",.()+-/*=~%<>[];", c) != NULL;
}
void editorUpdateSyntax(erow *row) void editorUpdateSyntax(erow *row)
{ {
row->hl = realloc(row->hl, row->rsize); row->hl = realloc(row->hl, row->rsize);
memset(row->hl, HL_NORMAL, row->rsize); memset(row->hl, HL_NORMAL, row->rsize);
int i; int prev_sep = 1;
for (i = 0; i < row->rsize; i++)
int i = 0;
while (i < row->rsize)
{ {
if (isdigit(row->render[i])) char c = row->render[i];
unsigned char prev_hl = (i > 0) ? row->hl[i - 1] : HL_NORMAL;
if (isdigit(c) && (prev_sep || prev_hl == HL_NUMBER))
{ {
row->hl[i] = HL_NUMBER; row->hl[i] = HL_NUMBER;
i++;
prev_sep = 0;
continue;
} }
prev_sep = is_separator(c);
i++;
} }
} }