Mercurial > vim
diff src/syntax.c @ 359:6c62b9b939bd v7.0093
updated for version 7.0093
author | vimboss |
---|---|
date | Sat, 25 Jun 2005 23:04:51 +0000 |
parents | 0f2b5d1b8117 |
children | 8c229eb52e34 |
line wrap: on
line diff
--- a/src/syntax.c +++ b/src/syntax.c @@ -7074,7 +7074,11 @@ free_highlight() int i; for (i = 0; i < highlight_ga.ga_len; ++i) + { highlight_clear(i); + vim_free(HL_TABLE()[i].sg_name); + vim_free(HL_TABLE()[i].sg_name_u); + } ga_clear(&highlight_ga); } #endif @@ -7485,7 +7489,7 @@ get_attr_entry(table, aep) attrentry_T *aep; { int i; - attrentry_T *gap; + attrentry_T *taep; static int recursive = FALSE; /* @@ -7499,35 +7503,39 @@ get_attr_entry(table, aep) */ for (i = 0; i < table->ga_len; ++i) { - gap = &(((attrentry_T *)table->ga_data)[i]); - if ( aep->ae_attr == gap->ae_attr + taep = &(((attrentry_T *)table->ga_data)[i]); + if ( aep->ae_attr == taep->ae_attr && ( #ifdef FEAT_GUI (table == &gui_attr_table - && (aep->ae_u.gui.fg_color == gap->ae_u.gui.fg_color - && aep->ae_u.gui.bg_color == gap->ae_u.gui.bg_color - && aep->ae_u.gui.sp_color == gap->ae_u.gui.sp_color - && aep->ae_u.gui.font == gap->ae_u.gui.font + && (aep->ae_u.gui.fg_color == taep->ae_u.gui.fg_color + && aep->ae_u.gui.bg_color + == taep->ae_u.gui.bg_color + && aep->ae_u.gui.sp_color + == taep->ae_u.gui.sp_color + && aep->ae_u.gui.font == taep->ae_u.gui.font # ifdef FEAT_XFONTSET - && aep->ae_u.gui.fontset == gap->ae_u.gui.fontset + && aep->ae_u.gui.fontset == taep->ae_u.gui.fontset # endif )) || #endif (table == &term_attr_table - && (aep->ae_u.term.start == NULL) == - (gap->ae_u.term.start == NULL) + && (aep->ae_u.term.start == NULL) + == (taep->ae_u.term.start == NULL) && (aep->ae_u.term.start == NULL || STRCMP(aep->ae_u.term.start, - gap->ae_u.term.start) == 0) - && (aep->ae_u.term.stop == NULL) == - (gap->ae_u.term.stop == NULL) + taep->ae_u.term.start) == 0) + && (aep->ae_u.term.stop == NULL) + == (taep->ae_u.term.stop == NULL) && (aep->ae_u.term.stop == NULL || STRCMP(aep->ae_u.term.stop, - gap->ae_u.term.stop) == 0)) + taep->ae_u.term.stop) == 0)) || (table == &cterm_attr_table - && aep->ae_u.cterm.fg_color == gap->ae_u.cterm.fg_color - && aep->ae_u.cterm.bg_color == gap->ae_u.cterm.bg_color) + && aep->ae_u.cterm.fg_color + == taep->ae_u.cterm.fg_color + && aep->ae_u.cterm.bg_color + == taep->ae_u.cterm.bg_color) )) return i + ATTR_OFF; @@ -7547,11 +7555,8 @@ get_attr_entry(table, aep) } recursive = TRUE; -#ifdef FEAT_GUI - ga_clear(&gui_attr_table); -#endif - ga_clear(&term_attr_table); - ga_clear(&cterm_attr_table); + clear_hl_tables(); + must_redraw = CLEAR; for (i = 0; i < highlight_ga.ga_len; ++i) @@ -7566,41 +7571,63 @@ get_attr_entry(table, aep) if (ga_grow(table, 1) == FAIL) return 0; - gap = &(((attrentry_T *)table->ga_data)[table->ga_len]); - vim_memset(gap, 0, sizeof(attrentry_T)); - gap->ae_attr = aep->ae_attr; + taep = &(((attrentry_T *)table->ga_data)[table->ga_len]); + vim_memset(taep, 0, sizeof(attrentry_T)); + taep->ae_attr = aep->ae_attr; #ifdef FEAT_GUI if (table == &gui_attr_table) { - gap->ae_u.gui.fg_color = aep->ae_u.gui.fg_color; - gap->ae_u.gui.bg_color = aep->ae_u.gui.bg_color; - gap->ae_u.gui.sp_color = aep->ae_u.gui.sp_color; - gap->ae_u.gui.font = aep->ae_u.gui.font; + taep->ae_u.gui.fg_color = aep->ae_u.gui.fg_color; + taep->ae_u.gui.bg_color = aep->ae_u.gui.bg_color; + taep->ae_u.gui.sp_color = aep->ae_u.gui.sp_color; + taep->ae_u.gui.font = aep->ae_u.gui.font; # ifdef FEAT_XFONTSET - gap->ae_u.gui.fontset = aep->ae_u.gui.fontset; + taep->ae_u.gui.fontset = aep->ae_u.gui.fontset; # endif } #endif if (table == &term_attr_table) { if (aep->ae_u.term.start == NULL) - gap->ae_u.term.start = NULL; + taep->ae_u.term.start = NULL; else - gap->ae_u.term.start = vim_strsave(aep->ae_u.term.start); + taep->ae_u.term.start = vim_strsave(aep->ae_u.term.start); if (aep->ae_u.term.stop == NULL) - gap->ae_u.term.stop = NULL; + taep->ae_u.term.stop = NULL; else - gap->ae_u.term.stop = vim_strsave(aep->ae_u.term.stop); + taep->ae_u.term.stop = vim_strsave(aep->ae_u.term.stop); } else if (table == &cterm_attr_table) { - gap->ae_u.cterm.fg_color = aep->ae_u.cterm.fg_color; - gap->ae_u.cterm.bg_color = aep->ae_u.cterm.bg_color; + taep->ae_u.cterm.fg_color = aep->ae_u.cterm.fg_color; + taep->ae_u.cterm.bg_color = aep->ae_u.cterm.bg_color; } ++table->ga_len; return (table->ga_len - 1 + ATTR_OFF); } +/* + * Clear all highlight tables. + */ + void +clear_hl_tables() +{ + int i; + attrentry_T *taep; + +#ifdef FEAT_GUI + ga_clear(&gui_attr_table); +#endif + for (i = 0; i < term_attr_table.ga_len; ++i) + { + taep = &(((attrentry_T *)term_attr_table.ga_data)[i]); + vim_free(taep->ae_u.term.start); + vim_free(taep->ae_u.term.stop); + } + ga_clear(&term_attr_table); + ga_clear(&cterm_attr_table); +} + #if defined(FEAT_SYN_HL) || defined(PROTO) /* * Combine special attributes (e.g., for spelling) with other attributes