X-Git-Url: http://git.madism.org/?p=apps%2Fmadmutt.git;a=blobdiff_plain;f=lib-ui%2Fcolor.c;h=584c113b4bafc1506d507840b45092e2996495f8;hp=21b93f48a9b79aa2758be85a796b0812c5938001;hb=c9b049f668148dab6ae90f32de6a4981f673bfa1;hpb=1ee89902de184a640c171ae3285bff6882a791bd diff --git a/lib-ui/color.c b/lib-ui/color.c index 21b93f4..584c113 100644 --- a/lib-ui/color.c +++ b/lib-ui/color.c @@ -11,6 +11,7 @@ #include "curses.h" +#include "pattern.h" #include "mutt.h" /* globals */ @@ -24,8 +25,6 @@ COLOR_LINE *ColorIndexList = NULL; /* local to this file */ static int ColorQuoteSize; -#ifdef HAVE_COLOR - #define COLOR_DEFAULT (-2) typedef struct color_list { @@ -48,14 +47,10 @@ static struct mapping_t Colors[] = { {"red", COLOR_RED}, {"white", COLOR_WHITE}, {"yellow", COLOR_YELLOW}, -#if defined (USE_SLANG_CURSES) || defined (HAVE_USE_DEFAULT_COLORS) {"default", COLOR_DEFAULT}, -#endif {0, 0} }; -#endif /* HAVE_COLOR */ - static struct mapping_t Fields[] = { {"hdrdefault", MT_COLOR_HDEFAULT}, {"quoted", MT_COLOR_QUOTED}, @@ -101,17 +96,13 @@ static void mutt_free_color_line (COLOR_LINE ** l, int free_colors) tmp = *l; -#ifdef HAVE_COLOR if (free_colors && tmp->fg != -1 && tmp->bg != -1) mutt_free_color (tmp->fg, tmp->bg); -#endif - /* we should really introduce a container - * type for regular expressions. - */ + /* we should really use the container type for regular expressions. */ regfree (&tmp->rx); - mutt_pattern_free (&tmp->color_pattern); + pattern_list_wipe(&tmp->color_pattern); p_delete(&tmp->pattern); p_delete(l); } @@ -133,58 +124,14 @@ void ci_start_color (void) ColorDefs[MT_COLOR_BOLD] = 0; ColorDefs[MT_COLOR_UNDERLINE] = 0; -#ifdef HAVE_COLOR start_color (); -#endif } -#ifdef HAVE_COLOR - -#ifdef USE_SLANG_CURSES -static char *get_color_name (char *dest, size_t destlen, int val) -{ - static char *missing[3] = { "brown", "lightgray", "default" }; - int i; - - switch (val) { - case COLOR_YELLOW: - m_strcpy(dest, destlen, missing[0]); - return dest; - - case COLOR_WHITE: - m_strcpy(dest, destlen, missing[1]); - return dest; - - case COLOR_DEFAULT: - m_strcpy(dest, destlen, missing[2]); - return dest; - } - - for (i = 0; Colors[i].name; i++) { - if (Colors[i].value == val) { - m_strcpy(dest, destlen, Colors[i].name); - return dest; - } - } - - /* Sigh. If we got this far, the color is of the form 'colorN' - * Slang can handle this itself, so just return 'colorN' - */ - - snprintf (dest, destlen, "color%d", val); - return dest; -} -#endif - int mutt_alloc_color (int fg, int bg) { COLOR_LIST *p = ColorList; int i; -#if defined (USE_SLANG_CURSES) - char fgc[SHORT_STRING], bgc[SHORT_STRING]; -#endif - /* check to see if this color is already allocated to save space */ while (p) { if (p->fg == fg && p->bg == bg) { @@ -221,17 +168,10 @@ int mutt_alloc_color (int fg, int bg) p->bg = bg; p->fg = fg; -#if defined (USE_SLANG_CURSES) - if (fg == COLOR_DEFAULT || bg == COLOR_DEFAULT) - SLtt_set_color (i, NULL, get_color_name (fgc, sizeof (fgc), fg), - get_color_name (bgc, sizeof (bgc), bg)); - else -#elif defined (HAVE_USE_DEFAULT_COLORS) if (fg == COLOR_DEFAULT) fg = -1; if (bg == COLOR_DEFAULT) bg = -1; -#endif init_pair (i, fg, bg); @@ -271,11 +211,6 @@ void mutt_free_color (int fg, int bg) } } -#endif /* HAVE_COLOR */ - - -#ifdef HAVE_COLOR - static int parse_color_name (const char *s, int *col, int *attr, int brite, BUFFER * err) { @@ -305,9 +240,6 @@ parse_color_name (const char *s, int *col, int *attr, int brite, BUFFER * err) return 0; } -#endif - - /* usage: uncolor index pattern [pattern...] * unmono index pattern [pattern...] */ @@ -316,17 +248,12 @@ static int _mutt_parse_uncolor (BUFFER * buf, BUFFER * s, unsigned long data, BUFFER * err, short parse_uncolor); - -#ifdef HAVE_COLOR - int mutt_parse_uncolor (BUFFER * buf, BUFFER * s, unsigned long data, BUFFER * err) { return _mutt_parse_uncolor (buf, s, data, err, 1); } -#endif - int mutt_parse_unmono (BUFFER * buf, BUFFER * s, unsigned long data, BUFFER * err) { @@ -361,28 +288,14 @@ _mutt_parse_uncolor (BUFFER * buf, BUFFER * s, unsigned long data __attribute__ return (-1); } - if ( -#ifdef HAVE_COLOR - /* we're running without curses */ - option (OPTNOCURSES) - || /* we're parsing an uncolor command, and have no colors */ - (parse_uncolor && !has_colors ()) - /* we're parsing an unmono command, and have colors */ - || (!parse_uncolor && has_colors ()) -#else - /* We don't even have colors compiled in */ - parse_uncolor -#endif - ) { + if (option (OPTNOCURSES) || (parse_uncolor != has_colors())) { /* just eat the command, but don't do anything real about it */ - do + do { mutt_extract_token (buf, s, 0); - while (MoreArgs (s)); - + } while (MoreArgs(s)); return 0; } - do { mutt_extract_token (buf, s, 0); if (!m_strcmp("*", buf->data)) { @@ -450,7 +363,6 @@ add_pattern (COLOR_LINE ** top, const char *s, int sensitive, } if (tmp) { -#ifdef HAVE_COLOR if (fg != -1 && bg != -1) { if (tmp->fg != fg || tmp->bg != bg) { mutt_free_color (tmp->fg, tmp->bg); @@ -461,10 +373,8 @@ add_pattern (COLOR_LINE ** top, const char *s, int sensitive, else attr |= (tmp->pair & ~A_BOLD); } -#endif /* HAVE_COLOR */ tmp->pair = attr; - } - else { + } else { int r; char buf[STRING]; @@ -493,13 +403,11 @@ add_pattern (COLOR_LINE ** top, const char *s, int sensitive, } tmp->next = *top; tmp->pattern = m_strdup(s); -#ifdef HAVE_COLOR if (fg != -1 && bg != -1) { tmp->fg = fg; tmp->bg = bg; attr |= mutt_alloc_color (fg, bg); } -#endif tmp->pair = attr; *top = tmp; } @@ -543,8 +451,6 @@ parse_object (BUFFER * buf, BUFFER * s, int *o, int *ql, BUFFER * err) typedef int (*parser_callback_t) (BUFFER *, BUFFER *, int *, int *, int *, BUFFER *); -#ifdef HAVE_COLOR - static int parse_color_pair (BUFFER * buf, BUFFER * s, int *fg, int *bg, int *attr, BUFFER * err) @@ -572,8 +478,6 @@ parse_color_pair (BUFFER * buf, BUFFER * s, int *fg, int *bg, int *attr, return 0; } -#endif - static int parse_attr_spec (BUFFER * buf, BUFFER * s, int *fg, int *bg, int *attr, BUFFER * err) @@ -613,11 +517,9 @@ parse_attr_spec (BUFFER * buf, BUFFER * s, int *fg, int *bg, int *attr, static int fgbgattr_to_color (int fg, int bg, int attr) { -#ifdef HAVE_COLOR if (fg != -1 && bg != -1) return attr | mutt_alloc_color (fg, bg); else -#endif return attr; } @@ -661,8 +563,6 @@ _mutt_parse_color (BUFFER * buf, BUFFER * s, BUFFER * err, return 0; -#ifdef HAVE_COLOR -# ifdef HAVE_USE_DEFAULT_COLORS if (!option (OPTNOCURSES) && has_colors () /* delay use_default_colors() until needed, since it initializes things */ && (fg == COLOR_DEFAULT || bg == COLOR_DEFAULT) @@ -670,8 +570,6 @@ _mutt_parse_color (BUFFER * buf, BUFFER * s, BUFFER * err, m_strcpy(err->data, err->dsize, _("default colors not supported")); return (-1); } -# endif /* HAVE_USE_DEFAULT_COLORS */ -#endif if (object == MT_COLOR_HEADER) r = add_pattern (&ColorHdrList, buf->data, 0, fg, bg, attr, err, 0); @@ -704,18 +602,14 @@ _mutt_parse_color (BUFFER * buf, BUFFER * s, BUFFER * err, else ColorDefs[object] = fgbgattr_to_color (fg, bg, attr); -#ifdef HAVE_COLOR -# ifdef HAVE_BKGDSET +#ifdef HAVE_BKGDSET if (object == MT_COLOR_NORMAL && !option (OPTNOCURSES) && has_colors ()) BKGDSET (MT_COLOR_NORMAL); -# endif #endif return (r); } -#ifdef HAVE_COLOR - int mutt_parse_color (BUFFER * buff, BUFFER * s, unsigned long data __attribute__ ((unused)), BUFFER * err) { @@ -727,20 +621,13 @@ int mutt_parse_color (BUFFER * buff, BUFFER * s, unsigned long data __attribute_ return _mutt_parse_color (buff, s, err, parse_color_pair, dry_run); } -#endif - int mutt_parse_mono (BUFFER * buff, BUFFER * s, unsigned long data __attribute__ ((unused)), BUFFER * err) { int dry_run = 0; -#ifdef HAVE_COLOR if (option (OPTNOCURSES) || has_colors ()) dry_run = 1; -#else - if (option (OPTNOCURSES)) - dry_run = 1; -#endif return _mutt_parse_color (buff, s, err, parse_attr_spec, dry_run); }