|
|
@@ -76,13 +76,13 @@ static void syntax_delete (void) { |
|
|
|
syntax_end [offset] = deallocate (syntax_end [offset]); |
|
|
|
} |
|
|
|
|
|
|
|
syntax_enrange = deallocate (syntax_enrange); |
|
|
|
syntax_derange = deallocate (syntax_derange); |
|
|
|
syntax_begin = deallocate (syntax_begin); |
|
|
|
syntax_end = deallocate (syntax_end); |
|
|
|
syntax_escape = deallocate (syntax_escape); |
|
|
|
syntax_colour = deallocate (syntax_colour); |
|
|
|
syntax_effect = deallocate (syntax_effect); |
|
|
|
syntax_enrange = deallocate (syntax_enrange); |
|
|
|
syntax_derange = deallocate (syntax_derange); |
|
|
|
syntax_begin = deallocate (syntax_begin); |
|
|
|
syntax_end = deallocate (syntax_end); |
|
|
|
syntax_escape = deallocate (syntax_escape); |
|
|
|
syntax_colour = deallocate (syntax_colour); |
|
|
|
syntax_effect = deallocate (syntax_effect); |
|
|
|
|
|
|
|
syntax_active = FALSE; |
|
|
|
syntax_count = 0; |
|
|
@@ -184,73 +184,7 @@ static int syntax_select (char * string, int * length) { |
|
|
|
|
|
|
|
return (select); |
|
|
|
} |
|
|
|
/* |
|
|
|
static int syntax_select (char * string, int * length) { |
|
|
|
int offset = 0; |
|
|
|
int select = 0; |
|
|
|
|
|
|
|
fatal_failure (syntax_active == FALSE, "syntax_select: Syntax is not active."); |
|
|
|
fatal_failure (string == NULL, "syntax_select: String is null."); |
|
|
|
fatal_failure (length == NULL, "syntax_select: Length is null."); |
|
|
|
|
|
|
|
do { |
|
|
|
if (syntax_enrange [select] == 0) { |
|
|
|
if (string_compare (string, syntax_begin [select]) == TRUE) { |
|
|
|
if (syntax_derange [select] == 0) { |
|
|
|
break; |
|
|
|
} else { |
|
|
|
if (character_compare_array (string [string_length (syntax_begin [select])], syntax_end [select]) != 0) { |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} else { |
|
|
|
int subset = 0; |
|
|
|
do { |
|
|
|
if (string [offset] == syntax_begin [select] [subset]) { |
|
|
|
goto selected; |
|
|
|
} |
|
|
|
} while (++subset != (int) string_length (syntax_begin [select])); |
|
|
|
} |
|
|
|
} while (++select != syntax_count); |
|
|
|
|
|
|
|
selected: |
|
|
|
|
|
|
|
if (select == syntax_count) { |
|
|
|
* length = 1; |
|
|
|
|
|
|
|
return (syntax_count); |
|
|
|
} |
|
|
|
|
|
|
|
do { |
|
|
|
++offset; |
|
|
|
|
|
|
|
if (string [offset] == syntax_escape [select]) { |
|
|
|
++offset; |
|
|
|
continue; |
|
|
|
} |
|
|
|
|
|
|
|
if (syntax_derange [select] == 0) { |
|
|
|
if (string_compare (& string [offset], syntax_end [select]) == TRUE) { |
|
|
|
* length = offset + string_length (syntax_end [select]); |
|
|
|
return (select); |
|
|
|
} |
|
|
|
} else { |
|
|
|
int subset = 0; |
|
|
|
if (string_compare (syntax_end [select], "") != 0) { |
|
|
|
break; |
|
|
|
} do { |
|
|
|
if (string [offset] == syntax_end [select] [subset]) { |
|
|
|
* length = offset; |
|
|
|
return (select); |
|
|
|
} |
|
|
|
} while (++subset != (int) string_length (syntax_end [select])); |
|
|
|
} |
|
|
|
} while (string [offset - 1] != '\0'); |
|
|
|
|
|
|
|
return (select); |
|
|
|
} |
|
|
|
*/ |
|
|
|
static void syntax_highlight_c (void) { |
|
|
|
char * separators = ".,:;<=>+*-/%!&~^?|()[]{}'\" \t\r\n"; |
|
|
|
|
|
|
@@ -263,22 +197,23 @@ static void syntax_highlight_c (void) { |
|
|
|
|
|
|
|
int word; |
|
|
|
|
|
|
|
syntax_define (FALSE, FALSE, "/*", "*/", '\0', COLOUR_GREY, EFFECT_BOLD); |
|
|
|
syntax_define (FALSE, FALSE, "//", "\n", '\0', COLOUR_GREY, EFFECT_BOLD); |
|
|
|
syntax_define (FALSE, FALSE, "#", "\n", '\\', COLOUR_PINK, EFFECT_NORMAL); |
|
|
|
syntax_define (FALSE, FALSE, "'", "'", '\\', COLOUR_PINK, EFFECT_BOLD); |
|
|
|
syntax_define (FALSE, FALSE, "\"", "\"", '\\', COLOUR_RED, EFFECT_NORMAL); |
|
|
|
syntax_define (FALSE, FALSE, "/*", "*/", '\0', COLOUR_GREY, EFFECT_BOLD); |
|
|
|
syntax_define (FALSE, FALSE, "//", "\n", '\0', COLOUR_GREY, EFFECT_BOLD); |
|
|
|
syntax_define (FALSE, FALSE, "#", "\n", '\\', COLOUR_YELLOW, EFFECT_ITALIC); |
|
|
|
syntax_define (FALSE, FALSE, "'", "'", '\\', COLOUR_PINK, EFFECT_BOLD); |
|
|
|
syntax_define (FALSE, FALSE, "\"", "\"", '\\', COLOUR_PINK, EFFECT_NORMAL); |
|
|
|
|
|
|
|
for (word = 0; word != (int) (sizeof (keywords) / sizeof (keywords [0])); ++word) { |
|
|
|
syntax_define (FALSE, TRUE, keywords [word], separators, '\0', COLOUR_BLUE, EFFECT_NORMAL); |
|
|
|
syntax_define (FALSE, TRUE, keywords [word], separators, '\0', COLOUR_YELLOW, EFFECT_BOLD); |
|
|
|
} |
|
|
|
|
|
|
|
syntax_define (TRUE, FALSE, ".,:;<=>+*-/%!&~^?|()[]{}", "", '\0', COLOUR_BLUE, EFFECT_BOLD); |
|
|
|
syntax_define (TRUE, FALSE, "()[]{}", "", '\0', COLOUR_BLUE, EFFECT_NORMAL); |
|
|
|
syntax_define (TRUE, FALSE, ".,:;<=>+*-/%!&~^?|", "", '\0', COLOUR_CYAN, EFFECT_NORMAL); |
|
|
|
|
|
|
|
syntax_define (TRUE, TRUE, "0123456789", separators, '\0', COLOUR_CYAN, EFFECT_BOLD); |
|
|
|
syntax_define (TRUE, TRUE, "0123456789", separators, '\0', COLOUR_PINK, EFFECT_BOLD); |
|
|
|
syntax_define (TRUE, TRUE, "abcdefghijklmnopqrstuvwxyz", separators, '\0', COLOUR_WHITE, EFFECT_NORMAL); |
|
|
|
syntax_define (TRUE, TRUE, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", separators, '\0', COLOUR_WHITE, EFFECT_BOLD); |
|
|
|
syntax_define (TRUE, TRUE, "_", separators, '\0', COLOUR_GREY, EFFECT_BOLD); |
|
|
|
syntax_define (TRUE, TRUE, "_", separators, '\0', COLOUR_WHITE, EFFECT_ITALIC); |
|
|
|
} |
|
|
|
|
|
|
|
void preview_c_file (char * text_file, int width, int height, int x, int y) { |
|
|
|