Bladeren bron

Merge branch 'master' of https://git.lain.church/emil/hl

master
anon 8 maanden geleden
bovenliggende
commit
ab00a0d894
3 gewijzigde bestanden met toevoegingen van 65 en 13 verwijderingen
  1. +49
    -8
      source/hl.h
  2. +2
    -0
      source/main.c
  3. +14
    -5
      source/terminal_hl.h

+ 49
- 8
source/hl.h Bestand weergeven

@@ -37,10 +37,51 @@ typedef struct {

typedef struct {
hl_group_t * hl;
token_type_t t;
regex_t * syntax;
token_type_t t;
char _pad[4];
} token_t;

extern vector_t token_table;
extern display_t * display_table;

extern hl_group_t * keyword_hl;
extern hl_group_t * preprocessor_hl;
extern hl_group_t * symbol_hl;

extern void new_display_mode(display_t * mode);
extern int free_token(token_t * token);
extern int append_token(token_t * token);

// TODO: ALIGN PROPERLY...

extern token_t * new_symbol_token(const char * const c,
hl_group_t * const g);
extern int new_symbol_tokens(const char * const * symbols,
hl_group_t * const g);
extern int new_char_tokens(const char * characters,
hl_group_t * const g);
extern token_t * new_keyword_token(const char * const word,
hl_group_t * const g);
extern int new_keyword_tokens(const char * const * words,
hl_group_t * const g);
extern token_t * new_token(const char * const word,
const token_type_t t,
hl_group_t * const g);

// TODO: ALIGN PROPERLY...

extern int token_fits(const token_t * const token,
const char * const to,
const int string_offset,
int * match_offset);

extern void render_string(const char * const string,
const char * const mode);

extern int hl_init(void);
extern int hl_deinit(void);

// GLOBALS

vector_t token_table = {
@@ -96,7 +137,7 @@ int new_symbol_tokens(const char * const * symbols,
if(new_symbol_token(*symbols, g)) {
++i;
} else {
assert(!"Kinda failed to new symbol token thing.");
assert(!(bool)"Kinda failed to new symbol token thing.");
}
++symbols;
}
@@ -117,7 +158,7 @@ int new_char_tokens(const char * characters,
if(new_symbol_token(is_magic(*s) ? buffer : buffer + 1, g)) {
++i;
} else {
assert(!"Kinda failed to new char token thing.");
assert(!(bool)"Kinda failed to new char token thing.");
}
}

@@ -203,10 +244,10 @@ token_t * new_token(const char * const word,
// ### Highlighting ###
// --------------------

int token_fits(const token_t * const token,
const char * const to,
const int string_offset,
int * match_offset) {
int token_fits(const token_t * const token,
const char * const to,
const int string_offset,
int * match_offset) {
UNUSED(match_offset);

//return regex_match(pattern, to, string_offset, match_offset);
@@ -223,7 +264,7 @@ void render_string(const char * const string,
for (; token_index < token_table.element_count; token_index++) {
token_t * t = *(token_t**)vector_get(&token_table,
token_index);
f = token_fits(t, string, s - string, &offset);
f = token_fits(t, string, (int) (s - string), &offset);
if (f) {
break;
}


+ 2
- 0
source/main.c Bestand weergeven

@@ -49,5 +49,7 @@ int main(int argc,
//hl_deinit();
free(buffer);

//terminal_hl_deinit();

return 0;
}

+ 14
- 5
source/terminal_hl.h Bestand weergeven

@@ -6,6 +6,19 @@ typedef struct {
char * background_color;
} terminal_hl_t;

extern display_t * cterm;

extern void cterm_render_callback(const char * const string,
const int length,
void * const attributes);

extern int terminal_hl_init(void);

display_t * cterm = &(display_t) {
.key = "cterm",
.callback = cterm_render_callback
};

void cterm_render_callback(const char * const string,
const int length,
void * const attributes) {
@@ -29,10 +42,6 @@ void cterm_render_callback(const char * const string,
fputs(TERMINAL_RESET, stdout);
}

display_t * cterm = &(display_t) {
.key = "cterm",
.callback = cterm_render_callback
};

void fun(const char * const attribute,
const char * const color,
@@ -46,7 +55,7 @@ void fun(const char * const attribute,
(*group)->attributes = (void*)t;
}

int terminal_hl_init(void){
int terminal_hl_init(void) {
hl_init();
new_display_mode(cterm);
//


Laden…
Annuleren
Opslaan