commit - f3bcf8f2286bb8e34ca1364a582c15978458c67c
commit + d89b86d670dc0e5acd7731a97f60ebafcf1f1bf2
blob - 4cc3d76a1df4f2ac16293f6ceee899224b20170e
blob + 6094f3b3e66731039b087a33738e03d989daa66f
--- defaults.c
+++ defaults.c
int enable_colors = 1;
static struct lineface_descr {
- int prfx_used, used;
- int prfx_pair, pair;
- int prfx_bg, bg;
- int prfx_fg, fg;
+ int used;
+ int pp, p, tp;
+ int prfx_bg, bg, trail_bg;
+ int prfx_fg, fg, trail_fg;
} linefaces_descr[] = {
- [LINE_TEXT] = { 0, 0, PAIR_TEXT_PRFX, PAIR_TEXT, 0, 0, 0, 0 },
- [LINE_LINK] = { 0, 0, PAIR_LINK_PRFX, PAIR_LINK, 0, 0, 0, 0 },
- [LINE_TITLE_1] = { 0, 0, PAIR_TITLE_1_PRFX, PAIR_TITLE_1, 0, 0, 0, 0 },
- [LINE_TITLE_2] = { 0, 0, PAIR_TITLE_2_PRFX, PAIR_TITLE_1, 0, 0, 0, 0 },
- [LINE_TITLE_3] = { 0, 0, PAIR_TITLE_3_PRFX, PAIR_TITLE_3, 0, 0, 0, 0 },
- [LINE_ITEM] = { 0, 0, PAIR_ITEM_PRFX, PAIR_ITEM, 0, 0, 0, 0 },
- [LINE_QUOTE] = { 0, 0, PAIR_QUOTE_PRFX, PAIR_QUOTE, 0, 0, 0, 0 },
- [LINE_PRE_START] = { 0, 0, PAIR_PRE_START_PRFX, PAIR_TEXT, 0, 0, 0, 0 },
- [LINE_PRE_CONTENT] = { 0, 0, PAIR_PRE_PRFX, PAIR_PRE, 0, 0, 0, 0 },
- [LINE_PRE_END] = { 0, 0, PAIR_PRE_END_PRFX, PAIR_PRE_END, 0, 0, 0, 0 },
+ [LINE_TEXT] = {.pp=PT_PRFX, .p=PT, .tp=PT_TRAIL},
+ [LINE_LINK] = {.pp=PL_PRFX, .p=PL, .tp=PL_TRAIL},
+ [LINE_TITLE_1] = {.pp=PT1_PRFX, .p=PT1, .tp=PT1_TRAIL},
+ [LINE_TITLE_2] = {.pp=PT2_PRFX, .p=PT1, .tp=PT1_TRAIL},
+ [LINE_TITLE_3] = {.pp=PT3_PRFX, .p=PT3, .tp=PT3_TRAIL},
+ [LINE_ITEM] = {.pp=PI_PRFX, .p=PI, .tp=PI_TRAIL},
+ [LINE_QUOTE] = {.pp=PQ_PRFX, .p=PQ, .tp=PQ_TRAIL},
+ [LINE_PRE_START] = {.pp=PPSTART_PRFX, .p=PT, .tp=PT_TRAIL},
+ [LINE_PRE_CONTENT] = {.pp=PP_PRFX, .p=PP, .tp=PP_TRAIL},
+ [LINE_PRE_END] = {.pp=PPEND_PRFX, .p=PPEND, .tp=PPEND_TRAIL},
+
};
struct lineprefix line_prefixes[] = {
};
struct line_face line_faces[] = {
- [LINE_TEXT] = { 0, 0 },
- [LINE_LINK] = { 0, A_UNDERLINE },
- [LINE_TITLE_1] = { A_BOLD, A_BOLD },
- [LINE_TITLE_2] = { A_BOLD, A_BOLD },
- [LINE_TITLE_3] = { A_BOLD, A_BOLD },
- [LINE_ITEM] = { 0, 0 },
- [LINE_QUOTE] = { 0, A_DIM },
- [LINE_PRE_START] = { 0, 0 },
- [LINE_PRE_CONTENT] = { 0, 0 },
- [LINE_PRE_END] = { 0, 0 },
+ [LINE_TEXT] = { 0, 0, 0 },
+ [LINE_LINK] = { 0, A_UNDERLINE, 0 },
+ [LINE_TITLE_1] = { A_BOLD, A_BOLD, 0 },
+ [LINE_TITLE_2] = { A_BOLD, A_BOLD, 0 },
+ [LINE_TITLE_3] = { A_BOLD, A_BOLD, 0 },
+ [LINE_ITEM] = { 0, 0, 0 },
+ [LINE_QUOTE] = { 0, A_DIM, 0 },
+ [LINE_PRE_START] = { 0, 0, 0 },
+ [LINE_PRE_CONTENT] = { 0, 0, 0 },
+ [LINE_PRE_END] = { 0, 0, 0 },
};
struct tab_face tab_face = {
struct mapping {
const char *label;
int linetype;
- int facetype;
- int facetype_prfx;
} mappings[] = {
- {"text", LINE_TEXT, PAIR_TEXT, PAIR_TEXT_PRFX},
- {"link", LINE_LINK, PAIR_LINK, PAIR_LINK_PRFX},
- {"title1", LINE_TITLE_1, PAIR_TITLE_1, PAIR_TITLE_1_PRFX},
- {"title2", LINE_TITLE_2, PAIR_TITLE_2, PAIR_TITLE_2_PRFX},
- {"title3", LINE_TITLE_3, PAIR_TITLE_3, PAIR_TITLE_3_PRFX},
- {"item", LINE_ITEM, PAIR_ITEM, PAIR_ITEM_PRFX},
- {"quote", LINE_QUOTE, PAIR_QUOTE, PAIR_QUOTE_PRFX},
- {"pre.start", LINE_PRE_START, PAIR_PRE_START, PAIR_PRE_START_PRFX},
- {"pre", LINE_PRE_CONTENT, PAIR_PRE, PAIR_PRE_PRFX},
- {"pre.end", LINE_PRE_END, PAIR_PRE_END, PAIR_PRE_END_PRFX},
+ {"text", LINE_TEXT},
+ {"link", LINE_LINK},
+ {"title1", LINE_TITLE_1},
+ {"title2", LINE_TITLE_2},
+ {"title3", LINE_TITLE_3},
+ {"item", LINE_ITEM},
+ {"quote", LINE_QUOTE},
+ {"pre.start", LINE_PRE_START},
+ {"pre", LINE_PRE_CONTENT},
+ {"pre.end", LINE_PRE_END},
};
static struct mapping *
}
int
-config_setprfx(const char *name, int cont, const char *str)
+config_setprfx(const char *name, const char *prfx, const char *cont)
{
struct lineprefix *p;
struct mapping *m;
return 0;
p = &line_prefixes[m->linetype];
+ p->prfx1 = prfx;
+ p->prfx2 = cont;
- if (cont)
- p->prfx2 = str;
- else
- p->prfx1 = str;
-
return 1;
}
}
int
-config_setcolor(const char *name, int prfx, int bg, int color)
+config_setcolor(int bg, const char *name, int prfx, int line, int trail)
{
struct mapping *m;
struct lineface_descr *d;
d = &linefaces_descr[m->linetype];
- if (prfx) {
- d->prfx_used = 1;
- if (bg)
- d->prfx_bg = color;
- else
- d->prfx_fg = color;
+ d->used = 1;
+ if (bg) {
+ d->prfx_bg = prfx;
+ d->bg = line;
+ d->trail_bg = trail;
} else {
- d->used = 1;
- if (bg)
- d->bg = color;
- else
- d->fg = color;
+ d->prfx_fg = prfx;
+ d->fg = line;
+ d->trail_fg = trail;
}
return 1;
d = &linefaces_descr[i];
f = &line_faces[i];
- if (d->prfx_used) {
- init_pair(d->prfx_pair, d->prfx_fg, d->prfx_bg);
- f->prefix_prop = COLOR_PAIR(d->prfx_pair);
- }
-
if (d->used) {
- init_pair(d->pair, d->fg, d->bg);
- f->text_prop = COLOR_PAIR(d->pair);
+ init_pair(d->pp, d->prfx_fg, d->prfx_bg);
+ f->prefix_prop = COLOR_PAIR(d->pp);
+
+ init_pair(d->p, d->fg, d->bg);
+ f->text_prop = COLOR_PAIR(d->p);
+
+ init_pair(d->tp, d->trail_fg, d->trail_bg);
+ f->trail_prop = COLOR_PAIR(d->tp);
}
}
}
blob - fdf77d8b09ba20ee67de5e5c8f2fc2325a7ab835
blob + 4de5b445b0e1faa557eabf4284c95d39c03427da
--- parse.y
+++ parse.y
#define YYSTYPE yystype
static char *current_style;
-static int current_bg, current_fg;
+static int color_type;
static const char *path;
static void yyerror(const char *, ...);
static int yylex(void);
-static void setprfx(int, const char *);
+static void setprfx(const char *, const char *);
static void setvari(char *, int);
static void setvars(char *, char *);
static int colorname(const char *);
-static void setcolor(int, int, const char *);
+static void setcolor(const char *, const char *, const char *);
%}
| styleopts styleopt '\n'
;
-styleopt : TPRFX TSTRING { setprfx(0, $2); }
- | TCONT TSTRING { setprfx(1, $2); }
- | TBG TSTRING {
- setcolor(0, 1, $2);
- setcolor(1, 1, $2);
- free($2);
- }
- | TFG TSTRING {
- setcolor(0, 0, $2);
- setcolor(1, 0, $2);
- free($2);
- }
+styleopt : TPRFX TSTRING { setprfx($2, $2); }
+ | TPRFX TSTRING TSTRING { setprfx($2, $2); }
+ | TBG { color_type = TBG; } colorspec
+ | TFG { color_type = TFG; } colorspec
| TATTR TBOLD { printf("style attr setted to bold\n"); }
| TATTR TUNDERLINE { printf("style attr setted to underline\n"); }
+ ;
+
+colorspec : TSTRING { setcolor($1, $1, $1); free($1); }
+ | TSTRING TSTRING { setcolor($1, $2, $1); free($1); free($2); }
+ | TSTRING TSTRING TSTRING { setcolor($1, $2, $3); free($1); free($2); free($3); }
;
bind : TBIND TSTRING TSTRING TSTRING { printf("TODO: bind %s %s %s\n", $2, $3, $4); }
}
static void
-setprfx(int cont, const char *name)
+setprfx(const char *prfx, const char *cont)
{
assert(current_style != NULL);
- if (!config_setprfx(current_style, cont, name))
- yyerror("invalid style %s", name);
+ if (!config_setprfx(current_style, prfx, cont))
+ yyerror("invalid style %s", current_style);
}
static void
}
void
-setcolor(int prfx, int bg, const char *color)
+setcolor(const char *prfx, const char *line, const char *trail)
{
- int c;
+ int p, l, t;
assert(current_style != NULL);
- if ((c = colorname(color)) == -1)
+ if ((p = colorname(prfx)) == -1 ||
+ (l = colorname(line)) == -1 ||
+ (t = colorname(trail)) == -1)
return;
- if (!config_setcolor(current_style, prfx, bg, c))
- yyerror("can't set color \"%s\" for %s", color,
- current_style);
+ if (!config_setcolor(color_type == TBG, current_style, p, l, t))
+ yyerror("invalid style %s", current_style);
}
void
blob - 90f4104950dd1220eefcc8e57d8720f7ee1c9212
blob + a75fd076a6ea7e8626f35cf42171a790679918c7
--- telescope.h
+++ telescope.h
struct line_face {
int prefix_prop;
int text_prop;
+ int trail_prop;
};
extern struct line_face line_faces[];
};
/* defaults.c */
-int config_setprfx(const char *, int, const char *);
+int config_setprfx(const char *, const char *, const char *);
int config_setvari(const char *, int);
int config_setvars(const char *, char *);
-int config_setcolor(const char *, int, int, int);
+int config_setcolor(int, const char *, int, int, int);
void config_apply_colors(void);
/* fs.c */
extern int body_cols;
extern int in_minibuffer;
-enum {
- PAIR_TEXT = 1,
- PAIR_TEXT_PRFX,
- PAIR_LINK,
- PAIR_LINK_PRFX,
- PAIR_TITLE_1,
- PAIR_TITLE_1_PRFX,
- PAIR_TITLE_2,
- PAIR_TITLE_2_PRFX,
- PAIR_TITLE_3,
- PAIR_TITLE_3_PRFX,
- PAIR_ITEM,
- PAIR_ITEM_PRFX,
- PAIR_QUOTE,
- PAIR_QUOTE_PRFX,
- PAIR_PRE_START,
- PAIR_PRE_START_PRFX,
- PAIR_PRE,
- PAIR_PRE_PRFX,
- PAIR_PRE_END,
- PAIR_PRE_END_PRFX,
+enum pairs {
+ PT = 1,
+ PT_PRFX,
+ PT_TRAIL,
+ PL,
+ PL_PRFX,
+ PL_TRAIL,
+ PT1,
+ PT1_PRFX,
+ PT1_TRAIL,
+ PT2,
+ PT2_PRFX,
+ PT2_TRAIL,
+ PT3,
+ PT3_PRFX,
+ PT3_TRAIL,
+ PI,
+ PI_PRFX,
+ PI_TRAIL,
+ PQ,
+ PQ_PRFX,
+ PQ_TRAIL,
+ PPSTART,
+ PPSTART_PRFX,
+ PPSTART_TRAIL,
+ PP,
+ PP_PRFX,
+ PP_TRAIL,
+ PPEND,
+ PPEND_PRFX,
+ PPEND_TRAIL,
};
struct thiskey {
blob - 57cf9dda26dfdeda3b3abca7808cd272f000e568
blob + a323d02b25a6ef46571eaf8ce6a7e01cf9b75e3c
--- ui.c
+++ ui.c
const char *prfx;
int prefix_face = line_faces[vl->parent->type].prefix_prop;
int text_face = line_faces[vl->parent->type].text_prop;
+ int trail_face = line_faces[vl->parent->type].trail_prop;
int i, left, x, y;
- /* unused, set by wgetyx */
+ /* unused, set by getyx */
(void)y;
if (!vl->flags)
if (text == NULL)
text = "";
- /* TODO: load the pair for the default background */
for (i = 0; i < off; i++)
waddch(window, ' ');
wattron(window, text_face);
wprintw(window, "%s", text);
+ wattroff(window, text_face);
getyx(window, y, x);
left = width - x;
- /* draw the rest of the line with line face */
- for (i = 0; i < left - off; ++i)
+ wattron(window, trail_face);
+ for (i = 0; i < left - off - 1; ++i)
waddch(window, ' ');
+ wattroff(window, trail_face);
- wattroff(window, text_face);
}
static void