diff options
Diffstat (limited to 'listbas.c')
-rw-r--r-- | listbas.c | 25 |
1 files changed, 15 insertions, 10 deletions
@@ -29,13 +29,15 @@ #define MAG_INV "{inv}" #define MAG_NORM "{norm}" -/* colors. don't use blue, it's fugly. */ +/* colors. */ #define NO_COLOR -1 #define C_RED 1 #define C_GREEN 2 #define C_YELLOW 3 +#define C_BLUE 4 #define C_PURPLE 5 #define C_CYAN 6 +#define C_WHITE 7 #define ENV_OPTS "LISTBAS_OPTS" #define ENV_MAX_ARGS 64 @@ -60,7 +62,8 @@ int color_op = C_GREEN; int color_func = C_PURPLE; int color_const = C_RED; int color_lineno = C_CYAN; -int color_text = C_CYAN; +int color_rem = C_BLUE; +int color_data = C_CYAN; int color_varnames = NO_COLOR; int badtok = 0; /* set to 1 if we find a bad token */ @@ -82,16 +85,17 @@ int parse_color(char c) { void parse_color_scheme(const char *arg) { if(!arg) return; - if(strlen(arg) != 7) - die("Color scheme must be 7 characters."); + if(strlen(arg) != 8) + die("Color scheme must be 8 characters."); color_cmd = parse_color(arg[0]); color_op = parse_color(arg[1]); color_func = parse_color(arg[2]); color_const = parse_color(arg[3]); color_lineno = parse_color(arg[4]); - color_text = parse_color(arg[5]); - color_varnames = parse_color(arg[6]); + color_rem = parse_color(arg[5]); + color_data = parse_color(arg[6]); + color_varnames = parse_color(arg[7]); } void print_help(void) { @@ -357,13 +361,14 @@ void print_ata_chr(unsigned char c) { void print_string(unsigned int pos, unsigned int len) { inv = 0; + if(color) color_on(color_op); outchr('"'); if(color) color_on(color_const); while(len--) print_ata_chr(program[pos++]); if(inv) { end_inv(0); } - if(color) color_off(); + if(color) color_on(color_op); outchr('"'); } @@ -446,18 +451,18 @@ CALLBACK(print_text) { unsigned char c, is_data = program[pos - 1] == CMD_DATA, comma = 0; inv = 0; - if(color) color_on(color_text); + if(color) color_on(is_data ? color_data : color_rem); while(program[pos] != 0x9b) { c = program[pos++]; if(color && is_data && c == ',') { - color_off(); + color_on(color_op); comma = 1; } else { comma = 0; } print_ata_chr(c); if(comma) - color_on(color_text); + color_on(is_data ? color_data : color_rem); } if(inv) end_inv(0); if(color) color_off(); |