remove original `color_buffer`
parent
d29b032251
commit
434a4e74db
|
@ -799,73 +799,6 @@ color_character :: proc(buffer: ^FileBuffer, start: Cursor, end: Cursor, palette
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
color_buffer :: proc(buffer: ^FileBuffer) {
|
|
||||||
start_it := new_file_buffer_iter(buffer);
|
|
||||||
it := new_file_buffer_iter(buffer);
|
|
||||||
|
|
||||||
for character in iterate_file_buffer(&it) {
|
|
||||||
if it.cursor.line > it.buffer.glyph_buffer_height && (it.cursor.line - it.buffer.top_line) > it.buffer.glyph_buffer_height {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
if character == '/' {
|
|
||||||
start_it = it;
|
|
||||||
// need to go back one character because `it` is on the next character
|
|
||||||
iterate_file_buffer_reverse(&start_it);
|
|
||||||
|
|
||||||
character, _, succ := iterate_file_buffer(&it);
|
|
||||||
if !succ { break; }
|
|
||||||
|
|
||||||
if character == '/' {
|
|
||||||
iterate_file_buffer_until(&it, until_line_break);
|
|
||||||
color_character(buffer, start_it.cursor, it.cursor, .Foreground4);
|
|
||||||
} else if character == '*' {
|
|
||||||
// TODO: block comments
|
|
||||||
}
|
|
||||||
} else if character == '\'' {
|
|
||||||
start_it = it;
|
|
||||||
// need to go back one character because `it` is on the next character
|
|
||||||
iterate_file_buffer_reverse(&start_it);
|
|
||||||
|
|
||||||
// jump into the quoted text
|
|
||||||
iterate_file_buffer_until(&it, until_single_quote);
|
|
||||||
color_character(buffer, start_it.cursor, it.cursor, .Yellow);
|
|
||||||
|
|
||||||
iterate_file_buffer(&it);
|
|
||||||
} else if character == '"' {
|
|
||||||
start_it = it;
|
|
||||||
// need to go back one character because `it` is on the next character
|
|
||||||
iterate_file_buffer_reverse(&start_it);
|
|
||||||
|
|
||||||
// jump into the quoted text
|
|
||||||
iterate_file_buffer_until(&it, until_double_quote);
|
|
||||||
color_character(buffer, start_it.cursor, it.cursor, .Yellow);
|
|
||||||
|
|
||||||
iterate_file_buffer(&it);
|
|
||||||
} else if (character >= 'a' && character <= 'z') || (character >= 'A' && character <= 'Z') || character == '_' {
|
|
||||||
start_it = it;
|
|
||||||
// need to go back one character because `it` is on the next character
|
|
||||||
iterate_file_buffer_reverse(&start_it);
|
|
||||||
it = start_it;
|
|
||||||
|
|
||||||
iterate_file_buffer_until(&it, until_end_of_word);
|
|
||||||
|
|
||||||
// TODO: color keywords
|
|
||||||
if is_keyword(start_it, it) {
|
|
||||||
color_character(buffer, start_it.cursor, it.cursor, .Blue);
|
|
||||||
} else if character, _, cond := iterate_peek(&it, iterate_file_buffer); cond {
|
|
||||||
if character == '(' {
|
|
||||||
color_character(buffer, start_it.cursor, it.cursor, .Green);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
iterate_file_buffer(&it);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
update_glyph_buffer :: proc(buffer: ^FileBuffer) {
|
update_glyph_buffer :: proc(buffer: ^FileBuffer) {
|
||||||
for &glyph in buffer.glyph_buffer {
|
for &glyph in buffer.glyph_buffer {
|
||||||
glyph = Glyph{};
|
glyph = Glyph{};
|
||||||
|
|
Loading…
Reference in New Issue