Improve number highlighting

This commit is contained in:
Timothy Warren 2019-08-20 16:11:51 -04:00
parent 600a5896d1
commit 337e4aa6bc
1 changed files with 19 additions and 3 deletions

22
kilo.c
View File

@ -259,18 +259,34 @@ int getWindowSize(int *rows, int *cols)
/*** syntax highlighting ***/
int is_separator(int c)
{
return isspace(c) || c == '\0' || strchr(",.()+-/*=~%<>[];", c) != NULL;
}
void editorUpdateSyntax(erow *row)
{
row->hl = realloc(row->hl, row->rsize);
memset(row->hl, HL_NORMAL, row->rsize);
int i;
for (i = 0; i < row->rsize; i++)
int prev_sep = 1;
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;
i++;
prev_sep = 0;
continue;
}
prev_sep = is_separator(c);
i++;
}
}