1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163
|
/*
* Copyright (C) 1996-8 Michael R. Elkins <me@cs.hmc.edu>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#ifdef USE_SLANG_CURSES
#ifndef unix /* this symbol is not defined by the hp-ux compiler (sigh) */
#define unix
#endif /* unix */
#include "slcurses.h"
#define KEY_DC SL_KEY_DELETE
#define KEY_IC SL_KEY_IC
/*
* ncurses and SLang seem to send different characters when the Enter key is
* pressed, so define some macros to properly detect the Enter key.
*/
#define M_ENTER_C '\r'
#define M_ENTER_S "\r"
#else
#ifdef HAVE_NCURSES_H
#include <ncurses.h>
#else
#include <curses.h>
#endif
#define M_ENTER_C '\n'
#define M_ENTER_S "\n"
#endif /* USE_SLANG_CURSES */
/* AIX defines ``lines'' in <term.h>, but it's used as a var name in
* various places in Mutt
*/
#ifdef lines
#undef lines
#endif /* lines */
#include "mutt_regex.h"
#define CLEARLINE(x) move(x,0), clrtoeol()
#define CENTERLINE(x,y) move(y, (COLS-strlen(x))/2), addstr(x)
#define BEEP if (option (OPTBEEP)) beep
#if ! (defined(USE_SLANG_CURSES) || defined(HAVE_CURS_SET))
#define curs_set(x)
#endif
#if !defined(USE_SLANG_CURSES) && defined(HAVE_BKGDSET)
#define BKGDSET(x) bkgdset (ColorDefs[x] | ' ')
#else
#define BKGDSET(x)
#endif
#if (defined(USE_SLANG_CURSES) || defined(HAVE_CURS_SET))
void mutt_curs_set (int);
#else
#define mutt_curs_set(x)
#endif
#define PAGELEN (LINES-3)
#define ctrl(c) ((c)-'@')
#define CI_is_return(c) ((c) == '\r' || (c) == '\n' || (c) == KEY_ENTER)
int mutt_getch (void);
void mutt_endwin (const char *);
void mutt_flushinp (void);
void mutt_refresh (void);
void mutt_resize_screen (void);
void mutt_ungetch (int);
/* ----------------------------------------------------------------------------
* Support for color
*/
enum
{
MT_COLOR_HDEFAULT = 0,
MT_COLOR_QUOTED,
MT_COLOR_SIGNATURE,
MT_COLOR_INDICATOR,
MT_COLOR_STATUS,
MT_COLOR_TREE,
MT_COLOR_NORMAL,
MT_COLOR_ERROR,
MT_COLOR_TILDE,
MT_COLOR_MARKERS,
MT_COLOR_BODY,
MT_COLOR_HEADER,
MT_COLOR_MESSAGE,
MT_COLOR_ATTACHMENT,
MT_COLOR_SEARCH,
MT_COLOR_BOLD,
MT_COLOR_UNDERLINE,
MT_COLOR_MAX
};
typedef struct color_line
{
regex_t rx;
char *pattern;
short fg;
short bg;
int pair;
struct color_line *next;
} COLOR_LINE;
extern int *ColorQuote;
extern int ColorQuoteUsed;
extern int ColorDefs[];
extern COLOR_LINE *ColorHdrList;
extern COLOR_LINE *ColorBodyList;
void ci_init_color (void);
void ci_start_color (void);
#define SETCOLOR(X) attrset(ColorDefs[X])
#define MAYBE_REDRAW(x) if (option (OPTNEEDREDRAW)) { unset_option (OPTNEEDREDRAW); x = REDRAW_FULL; }
/* ----------------------------------------------------------------------------
* These are here to avoid compiler warnings with -Wall under SunOS 4.1.x
*/
#if !defined(STDC_HEADERS) && !defined(NCURSES_VERSION) && !defined(USE_SLANG_CURSES)
extern int endwin();
extern int printw();
extern int beep();
extern int isendwin();
extern int w32addch();
extern int keypad();
extern int wclrtobot();
extern int mvprintw();
extern int getcurx();
extern int getcury();
extern int noecho();
extern int wdelch();
extern int wrefresh();
extern int wmove();
extern int wclear();
extern int waddstr();
extern int wclrtoeol();
#endif
|