thanks_for_all_the_fish(), nregcomp(), parse_syntax(), and
parse_colors(). (Brand Huntsman and DLR)
- Various other color fixes. Handle unspecified foreground
- colors properly, don't automatically reinitialize the
- displayed colors every time we update the current buffer's
- colors (since the buffer may not be displayed immediately),
- don't bother doing complete refreshes of the screen when
- color support is enabled if there's no regex associated with
- the current file, and rename variable exttype->val to
- exttype->ext, for consistency. Changes to do_colorinit()
- (renamed color_init()), update_color() (renamed
- color_update()), write_file(), do_input(), do_output(), and
- parse_syntax(). (DLR)
+ colors properly, flag duplicate syntax names as errors, don't
+ automatically reinitialize the displayed colors every time we
+ update the current buffer's colors (since the buffer may not
+ be displayed immediately), don't bother doing complete
+ refreshes of the screen when color support is enabled if
+ there's no regex associated with the current file, and rename
+ variable exttype->val to exttype->ext, for consistency.
+ Changes to do_colorinit() (renamed color_init()),
+ update_color() (renamed color_update()), write_file(),
+ do_input(), do_output(), and parse_syntax(). (DLR)
- Simplify get_totals() to only get the total number of
characters, and eliminate dependence on its old ability to get
the total number of lines by renumber()ing when necessary and
void parse_syntax(char *ptr)
{
const char *fileregptr = NULL, *nameptr = NULL;
+ const syntaxtype *tmpsyntax;
exttype *endext = NULL;
/* The end of the extensions list for this syntax. */
if (ptr == NULL)
return;
+ for (tmpsyntax = syntaxes; tmpsyntax != NULL;
+ tmpsyntax = tmpsyntax->next) {
+ if (mbstrcasecmp(nameptr, tmpsyntax->desc) == 0) {
+ rcfile_error(N_("Duplicate syntax name %s"), nameptr);
+ return;
+ }
+ }
+
if (syntaxes == NULL) {
syntaxes = (syntaxtype *)nmalloc(sizeof(syntaxtype));
endsyntax = syntaxes;