70 lines
1.6 KiB
C
70 lines
1.6 KiB
C
#include "hl.h"
|
|
|
|
typedef struct {
|
|
char * attribute;
|
|
char * foreground_color;
|
|
char * background_color;
|
|
} terminal_hl_t;
|
|
|
|
void cterm_render_callback(const char * const string,
|
|
const int length,
|
|
void * const attributes) {
|
|
if(!length){
|
|
fputs(TERMINAL_STYLE_BOLD, stdout);
|
|
putchar(*string);
|
|
fputs(TERMINAL_RESET, stdout);
|
|
return;
|
|
}
|
|
|
|
terminal_hl_t * term_hl = (terminal_hl_t*)attributes;
|
|
fputs(term_hl->attribute, stdout);
|
|
fputs(term_hl->foreground_color, stdout);
|
|
for (int i = 0; i < length; i++) {
|
|
putchar(*(string+i));
|
|
}
|
|
fputs(TERMINAL_RESET, stdout);
|
|
}
|
|
|
|
display_t * cterm = &(display_t) {
|
|
.key = "cterm",
|
|
.callback = cterm_render_callback
|
|
};
|
|
|
|
|
|
int terminal_hl_init(void){
|
|
hl_init();
|
|
new_display_mode(cterm);
|
|
//
|
|
terminal_hl_t terminal_keyword_hl = (terminal_hl_t) {
|
|
.attribute = TERMINAL_STYLE_BOLD,
|
|
.foreground_color = TERMINAL_COLOR_FG_GREEN,
|
|
.background_color = NULL
|
|
};
|
|
keyword_hl = &(hl_group_t) {
|
|
.link = NULL,
|
|
.attributes = (void*)&terminal_keyword_hl
|
|
};
|
|
//
|
|
terminal_hl_t terminal_preprocessor_hl = (terminal_hl_t) {
|
|
.attribute = TERMINAL_STYLE_BOLD,
|
|
.foreground_color = TERMINAL_COLOR_FG_BLUE,
|
|
.background_color = NULL
|
|
};
|
|
preprocessor_hl = &(hl_group_t) {
|
|
.link = NULL,
|
|
.attributes = (void*)&terminal_preprocessor_hl
|
|
};
|
|
//
|
|
terminal_hl_t terminal_symbol_hl = (terminal_hl_t) {
|
|
.attribute = TERMINAL_STYLE_BOLD,
|
|
.foreground_color = TERMINAL_COLOR_FG_YELLOW,
|
|
.background_color = NULL
|
|
};
|
|
symbol_hl = &(hl_group_t) {
|
|
.link = NULL,
|
|
.attributes = (void*)&terminal_symbol_hl
|
|
};
|
|
|
|
return 0;
|
|
}
|