Parse colour commands. More...
#include "config.h"
#include <stddef.h>
#include <assert.h>
#include <stdbool.h>
#include <stdint.h>
#include <stdlib.h>
#include "mutt/lib.h"
#include "config/lib.h"
#include "core/lib.h"
#include "gui/lib.h"
#include "parse/lib.h"
#include "color.h"
#include "command2.h"
#include "debug.h"
#include "globals.h"
#include "notify2.h"
#include "quoted.h"
#include "regex4.h"
#include "simple2.h"
Go to the source code of this file.
Enumerations | |
enum | ColorPrefix { COLOR_PREFIX_NONE , COLOR_PREFIX_ALERT , COLOR_PREFIX_BRIGHT , COLOR_PREFIX_LIGHT } |
Constants for colour prefixes of named colours. More... | |
Functions | |
static uint32_t | color_xterm256_to_24bit (const uint32_t color) |
Convert a xterm color to its RGB value. | |
static void | modify_color_by_prefix (enum ColorPrefix prefix, bool is_fg, uint32_t *col, int *attrs) |
Modify a colour/attributes based on a prefix, e.g. | |
static int | parse_color_prefix (const char *s, enum ColorPrefix *prefix) |
Parse a colour prefix, e.g. | |
static enum CommandResult | parse_color_namedcolor (const char *s, uint32_t *col, int *attrs, bool is_fg, struct Buffer *err) |
Parse a named colour, e.g. | |
static enum CommandResult | parse_color_colornnn (const char *s, uint32_t *col, int *attrs, bool is_fg, struct Buffer *err) |
Parse a colorNNN, e.g. | |
static enum CommandResult | parse_color_rrggbb (const char *s, uint32_t *col, int *attrs, bool is_fg, struct Buffer *err) |
Parse an RGB colour, e.g. | |
static enum CommandResult | parse_color_name (const char *s, uint32_t *col, int *attrs, bool is_fg, struct Buffer *err) |
Parse a colour name. | |
static enum CommandResult | parse_attr_spec (struct Buffer *buf, struct Buffer *s, uint32_t *fg, uint32_t *bg, int *attrs, struct Buffer *err) |
Parse an attribute description - Implements parser_callback_t -. | |
static enum CommandResult | parse_color_pair (struct Buffer *buf, struct Buffer *s, uint32_t *fg, uint32_t *bg, int *attrs, struct Buffer *err) |
Parse a pair of colours - Implements parser_callback_t -. | |
void | get_colorid_name (unsigned int cid, struct Buffer *buf) |
Get the name of a color id. | |
static enum CommandResult | parse_object (struct Buffer *buf, struct Buffer *s, enum ColorId *cid, int *ql, struct Buffer *err) |
Identify a colour object. | |
static enum CommandResult | parse_uncolor (struct Buffer *buf, struct Buffer *s, struct Buffer *err, bool uncolor) |
Parse an 'uncolor' command. | |
static enum CommandResult | parse_color (struct Buffer *buf, struct Buffer *s, struct Buffer *err, parser_callback_t callback, bool dry_run, bool color) |
Parse a 'color' command. | |
enum CommandResult | mutt_parse_uncolor (struct Buffer *buf, struct Buffer *s, intptr_t data, struct Buffer *err) |
Parse the 'uncolor' command - Implements Command::parse() -. | |
enum CommandResult | mutt_parse_unmono (struct Buffer *buf, struct Buffer *s, intptr_t data, struct Buffer *err) |
Parse the 'unmono' command - Implements Command::parse() -. | |
enum CommandResult | mutt_parse_color (struct Buffer *buf, struct Buffer *s, intptr_t data, struct Buffer *err) |
Parse the 'color' command - Implements Command::parse() -. | |
enum CommandResult | mutt_parse_mono (struct Buffer *buf, struct Buffer *s, intptr_t data, struct Buffer *err) |
Parse the 'mono' command - Implements Command::parse() -. | |
Variables | |
const struct Mapping | ColorFields [] |
Mapping of colour names to their IDs. | |
const struct Mapping | ComposeColorFields [] |
Mapping of compose colour names to their IDs. | |
Parse colour commands.
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, see http://www.gnu.org/licenses/.
Definition in file command.c.
enum ColorPrefix |
Constants for colour prefixes of named colours.
Enumerator | |
---|---|
COLOR_PREFIX_NONE | no prefix |
COLOR_PREFIX_ALERT | "alert" colour prefix |
COLOR_PREFIX_BRIGHT | "bright" colour prefix |
COLOR_PREFIX_LIGHT | "light" colour prefix |
Definition at line 132 of file command.c.
|
static |
Convert a xterm color to its RGB value.
[in] | color | xterm color number to be converted |
num | The color's RGB value as number with value 0xRRGGBB |
There are 256 xterm colors numbered 0 to 255.
Caller contract: color must be between 0 and 255.
0 | #000000 | 1 | #800000 | 2 | #008000 | 3 | #808000 | 4 | #000080 | 5 | #800080 | 6 | #008080 | 7 | #c0c0c0 |
8 | #808080 | 9 | #ff0000 | 10 | #00ff00 | 11 | #ffff00 | 12 | #0000ff | 13 | #ff00ff | 14 | #00ffff | 15 | #ffffff |
16 | #000000 | 17 | #00005f | 18 | #000087 | 19 | #0000af | 20 | #0000d7 | 21 | #0000ff |
22 | #005f00 | 23 | #005f5f | 24 | #005f87 | 25 | #005faf | 26 | #005fd7 | 27 | #005fff |
28 | #008700 | 29 | #00875f | 30 | #008787 | 31 | #0087af | 32 | #0087d7 | 33 | #0087ff |
34 | #00af00 | 35 | #00af5f | 36 | #00af87 | 37 | #00afaf | 38 | #00afd7 | 39 | #00afff |
40 | #00d700 | 41 | #00d75f | 42 | #00d787 | 43 | #00d7af | 44 | #00d7d7 | 45 | #00d7ff |
46 | #00ff00 | 47 | #00ff5f | 48 | #00ff87 | 49 | #00ffaf | 50 | #00ffd7 | 51 | #00ffff |
52 | #5f0000 | 53 | #5f005f | 54 | #5f0087 | 55 | #5f00af | 56 | #5f00d7 | 57 | #5f00ff |
58 | #5f5f00 | 59 | #5f5f5f | 60 | #5f5f87 | 61 | #5f5faf | 62 | #5f5fd7 | 63 | #5f5fff |
64 | #5f8700 | 65 | #5f875f | 66 | #5f8787 | 67 | #5f87af | 68 | #5f87d7 | 69 | #5f87ff |
70 | #5faf00 | 71 | #5faf5f | 72 | #5faf87 | 73 | #5fafaf | 74 | #5fafd7 | 75 | #5fafff |
76 | #5fd700 | 77 | #5fd75f | 78 | #5fd787 | 79 | #5fd7af | 80 | #5fd7d7 | 81 | #5fd7ff |
82 | #5fff00 | 83 | #5fff5f | 84 | #5fff87 | 85 | #5fffaf | 86 | #5fffd7 | 87 | #5fffff |
88 | #870000 | 89 | #87005f | 90 | #870087 | 91 | #8700af | 92 | #8700d7 | 93 | #8700ff |
94 | #875f00 | 95 | #875f5f | 96 | #875f87 | 97 | #875faf | 98 | #875fd7 | 99 | #875fff |
100 | #878700 | 101 | #87875f | 102 | #878787 | 103 | #8787af | 104 | #8787d7 | 105 | #8787ff |
106 | #87af00 | 107 | #87af5f | 108 | #87af87 | 109 | #87afaf | 110 | #87afd7 | 111 | #87afff |
112 | #87d700 | 113 | #87d75f | 114 | #87d787 | 115 | #87d7af | 116 | #87d7d7 | 117 | #87d7ff |
118 | #87ff00 | 119 | #87ff5f | 120 | #87ff87 | 121 | #87ffaf | 122 | #87ffd7 | 123 | #87ffff |
124 | #af0000 | 125 | #af005f | 126 | #af0087 | 127 | #af00af | 128 | #af00d7 | 129 | #af00ff |
130 | #af5f00 | 131 | #af5f5f | 132 | #af5f87 | 133 | #af5faf | 134 | #af5fd7 | 135 | #af5fff |
136 | #af8700 | 137 | #af875f | 138 | #af8787 | 139 | #af87af | 140 | #af87d7 | 141 | #af87ff |
142 | #afaf00 | 143 | #afaf5f | 144 | #afaf87 | 145 | #afafaf | 146 | #afafd7 | 147 | #afafff |
148 | #afd700 | 149 | #afd75f | 150 | #afd787 | 151 | #afd7af | 152 | #afd7d7 | 153 | #afd7ff |
154 | #afff00 | 155 | #afff5f | 156 | #afff87 | 157 | #afffaf | 158 | #afffd7 | 159 | #afffff |
160 | #d70000 | 161 | #d7005f | 162 | #d70087 | 163 | #d700af | 164 | #d700d7 | 165 | #d700ff |
166 | #d75f00 | 167 | #d75f5f | 168 | #d75f87 | 169 | #d75faf | 170 | #d75fd7 | 171 | #d75fff |
172 | #d78700 | 173 | #d7875f | 174 | #d78787 | 175 | #d787af | 176 | #d787d7 | 177 | #d787ff |
178 | #d7af00 | 179 | #d7af5f | 180 | #d7af87 | 181 | #d7afaf | 182 | #d7afd7 | 183 | #d7afff |
184 | #d7d700 | 185 | #d7d75f | 186 | #d7d787 | 187 | #d7d7af | 188 | #d7d7d7 | 189 | #d7d7ff |
190 | #d7ff00 | 191 | #d7ff5f | 192 | #d7ff87 | 193 | #d7ffaf | 194 | #d7ffd7 | 195 | #d7ffff |
196 | #ff0000 | 197 | #ff005f | 198 | #ff0087 | 199 | #ff00af | 200 | #ff00d7 | 201 | #ff00ff |
202 | #ff5f00 | 203 | #ff5f5f | 204 | #ff5f87 | 205 | #ff5faf | 206 | #ff5fd7 | 207 | #ff5fff |
208 | #ff8700 | 209 | #ff875f | 210 | #ff8787 | 211 | #ff87af | 212 | #ff87d7 | 213 | #ff87ff |
214 | #ffaf00 | 215 | #ffaf5f | 216 | #ffaf87 | 217 | #ffafaf | 218 | #ffafd7 | 219 | #ffafff |
220 | #ffd700 | 221 | #ffd75f | 222 | #ffd787 | 223 | #ffd7af | 224 | #ffd7d7 | 225 | #ffd7ff |
226 | #ffff00 | 227 | #ffff5f | 228 | #ffff87 | 229 | #ffffaf | 230 | #ffffd7 | 231 | #ffffff |
232 | #080808 | 233 | #121212 | 234 | #1c1c1c | 235 | #262626 | 236 | #303030 | 237 | #3a3a3a | 238 | #444444 | 239 | #4e4e4e |
240 | #585858 | 241 | #606060 | 242 | #666666 | 243 | #767676 | 244 | #808080 | 245 | #8a8a8a | 246 | #949494 | 247 | #9e9e9e |
248 | #a8a8a8 | 249 | #b2b2b2 | 250 | #bcbcbc | 251 | #c6c6c6 | 252 | #d0d0d0 | 253 | #dadada | 254 | #e4e4e4 | 255 | #eeeeee |
Definition at line 211 of file command.c.
|
static |
Modify a colour/attributes based on a prefix, e.g.
"bright"
[in] | prefix | prefix to apply |
[in] | is_fg | true if a foreground colour should be modified |
[in,out] | col | colour to modify |
[in,out] | attrs | attributes to modify |
Definition at line 279 of file command.c.
|
static |
Parse a colour prefix, e.g.
"bright"
[in] | s | String to parse |
[out] | prefix | parsed prefix, see ColorPrefix |
num | Length of the matched prefix |
0 | No prefix matched |
If prefixes should be parsed, but their value is irrelevant, NULL can be passed as 'prefix'.
Definition at line 328 of file command.c.
|
static |
Parse a named colour, e.g.
"brightred"
[in] | s | String to parse |
[out] | col | Number for 'colorNNN' colours |
[out] | attrs | Attributes, e.g. A_UNDERLINE |
[in] | is_fg | true if this is a foreground colour |
[out] | err | Buffer for error messages |
MUTT_CMD_SUCCESS | Colour parsed successfully |
MUTT_CMD_WARNING | Unknown colour, try other parsers |
Definition at line 364 of file command.c.
|
static |
Parse a colorNNN, e.g.
"color123".
[in] | s | String to parse |
[out] | col | Number for 'colorNNN' colours |
[out] | attrs | Attributes, e.g. A_UNDERLINE |
[in] | is_fg | true if this is a foreground colour |
[out] | err | Buffer for error messages |
MUTT_CMD_SUCCESS | Colour parsed successfully |
MUTT_CMD_WARNING | Unknown colour, try other parsers |
MUTT_CMD_ERROR | Error, colour could not be parsed |
On MUTT_CMD_ERROR, an error message will be written to err.
Definition at line 411 of file command.c.
|
static |
Parse an RGB colour, e.g.
"#12FE45"
[in] | s | String to parse |
[out] | col | Number for 'colorNNN' colours |
[out] | attrs | Attributes, e.g. A_UNDERLINE |
[in] | is_fg | true if this is a foreground colour |
[out] | err | Buffer for error messages |
MUTT_CMD_SUCCESS | Colour parsed successfully |
MUTT_CMD_WARNING | Unknown colour, try other parsers |
MUTT_CMD_ERROR | Error, colour could not be parsed |
On MUTT_CMD_ERROR, an error message will be written to err.
Definition at line 469 of file command.c.
|
static |
Parse a colour name.
[in] | s | String to parse |
[out] | col | Number for 'colorNNN' colours |
[out] | attrs | Attributes, e.g. A_UNDERLINE |
[in] | is_fg | true if this is a foreground colour |
[out] | err | Buffer for error messages |
CommandResult | Result e.g. MUTT_CMD_SUCCESS |
Parse a colour name, such as "red", "brightgreen", "color123", "#12FE45"
Definition at line 515 of file command.c.
void get_colorid_name | ( | unsigned int | cid, |
struct Buffer * | buf | ||
) |
Get the name of a color id.
cid | Colour, e.g. MT_COLOR_HEADER |
buf | Buffer for result |
Definition at line 677 of file command.c.
|
static |
Identify a colour object.
[in] | buf | Temporary Buffer space |
[in] | s | Buffer containing string to be parsed |
[out] | cid | Object type, e.g. MT_COLOR_TILDE |
[out] | ql | Quote level, if type MT_COLOR_QUOTED |
[out] | err | Buffer for error messages |
CommandResult | Result e.g. MUTT_CMD_SUCCESS |
Identify a colour object, e.g. "quoted", "compose header"
Definition at line 709 of file command.c.
|
static |
Parse an 'uncolor' command.
buf | Temporary Buffer space |
s | Buffer containing string to be parsed |
err | Buffer for error messages |
uncolor | If true, 'uncolor', else 'unmono' |
CommandResult | Result e.g. MUTT_CMD_SUCCESS |
Usage:
Definition at line 779 of file command.c.
|
static |
Parse a 'color' command.
buf | Temporary Buffer space |
s | Buffer containing string to be parsed |
err | Buffer for error messages |
callback | Function to handle command - Implements parser_callback_t |
dry_run | If true, test the command, but don't apply it |
color | If true "color", else "mono" |
CommandResult | Result e.g. MUTT_CMD_SUCCESS |
Usage:
Definition at line 1064 of file command.c.
const struct Mapping ColorFields[] |
const struct Mapping ComposeColorFields[] |
Mapping of compose colour names to their IDs.