mirror of
https://github.com/tmux/tmux.git
synced 2024-12-24 18:38:48 +00:00
Merge branch 'obsd-master' into master
This commit is contained in:
commit
6f46f71d58
15
colour.c
15
colour.c
@ -105,6 +105,21 @@ colour_split_rgb(int c, u_char *r, u_char *g, u_char *b)
|
|||||||
*b = c & 0xff;
|
*b = c & 0xff;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Force colour to RGB if not already. */
|
||||||
|
int
|
||||||
|
colour_force_rgb(int c)
|
||||||
|
{
|
||||||
|
if (c & COLOUR_FLAG_RGB)
|
||||||
|
return (c);
|
||||||
|
if (c & COLOUR_FLAG_256)
|
||||||
|
return (colour_256toRGB(c));
|
||||||
|
if (c >= 0 && c <= 7)
|
||||||
|
return (colour_256toRGB(c));
|
||||||
|
if (c >= 90 & c <= 97)
|
||||||
|
return (colour_256toRGB(8 + c - 90));
|
||||||
|
return (-1);
|
||||||
|
}
|
||||||
|
|
||||||
/* Convert colour to a string. */
|
/* Convert colour to a string. */
|
||||||
const char *
|
const char *
|
||||||
colour_tostring(int c)
|
colour_tostring(int c)
|
||||||
|
24
format.c
24
format.c
@ -101,6 +101,7 @@ format_job_cmp(struct format_job *fj1, struct format_job *fj2)
|
|||||||
#define FORMAT_WINDOW_NAME 0x4000
|
#define FORMAT_WINDOW_NAME 0x4000
|
||||||
#define FORMAT_SESSION_NAME 0x8000
|
#define FORMAT_SESSION_NAME 0x8000
|
||||||
#define FORMAT_CHARACTER 0x10000
|
#define FORMAT_CHARACTER 0x10000
|
||||||
|
#define FORMAT_COLOUR 0x20000
|
||||||
|
|
||||||
/* Limit on recursion. */
|
/* Limit on recursion. */
|
||||||
#define FORMAT_LOOP_LIMIT 100
|
#define FORMAT_LOOP_LIMIT 100
|
||||||
@ -3555,7 +3556,7 @@ format_build_modifiers(struct format_expand_state *es, const char **s,
|
|||||||
|
|
||||||
/*
|
/*
|
||||||
* Modifiers are a ; separated list of the forms:
|
* Modifiers are a ; separated list of the forms:
|
||||||
* l,m,C,a,b,d,n,t,w,q,E,T,S,W,P,<,>
|
* l,m,C,a,b,c,d,n,t,w,q,E,T,S,W,P,<,>
|
||||||
* =a
|
* =a
|
||||||
* =/a
|
* =/a
|
||||||
* =/a/
|
* =/a/
|
||||||
@ -3572,7 +3573,7 @@ format_build_modifiers(struct format_expand_state *es, const char **s,
|
|||||||
cp++;
|
cp++;
|
||||||
|
|
||||||
/* Check single character modifiers with no arguments. */
|
/* Check single character modifiers with no arguments. */
|
||||||
if (strchr("labdnwETSWP<>", cp[0]) != NULL &&
|
if (strchr("labcdnwETSWP<>", cp[0]) != NULL &&
|
||||||
format_is_end(cp[1])) {
|
format_is_end(cp[1])) {
|
||||||
format_add_modifier(&list, count, cp, 1, NULL, 0);
|
format_add_modifier(&list, count, cp, 1, NULL, 0);
|
||||||
cp++;
|
cp++;
|
||||||
@ -4052,10 +4053,10 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
|
|||||||
const char *errstr, *copy, *cp, *marker = NULL;
|
const char *errstr, *copy, *cp, *marker = NULL;
|
||||||
const char *time_format = NULL;
|
const char *time_format = NULL;
|
||||||
char *copy0, *condition, *found, *new;
|
char *copy0, *condition, *found, *new;
|
||||||
char *value, *left, *right, c;
|
char *value, *left, *right;
|
||||||
size_t valuelen;
|
size_t valuelen;
|
||||||
int modifiers = 0, limit = 0, width = 0;
|
int modifiers = 0, limit = 0, width = 0;
|
||||||
int j;
|
int j, c;
|
||||||
struct format_modifier *list, *cmp = NULL, *search = NULL;
|
struct format_modifier *list, *cmp = NULL, *search = NULL;
|
||||||
struct format_modifier **sub = NULL, *mexp = NULL, *fm;
|
struct format_modifier **sub = NULL, *mexp = NULL, *fm;
|
||||||
u_int i, count, nsub = 0;
|
u_int i, count, nsub = 0;
|
||||||
@ -4126,6 +4127,9 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
|
|||||||
case 'b':
|
case 'b':
|
||||||
modifiers |= FORMAT_BASENAME;
|
modifiers |= FORMAT_BASENAME;
|
||||||
break;
|
break;
|
||||||
|
case 'c':
|
||||||
|
modifiers |= FORMAT_COLOUR;
|
||||||
|
break;
|
||||||
case 'd':
|
case 'd':
|
||||||
modifiers |= FORMAT_DIRNAME;
|
modifiers |= FORMAT_DIRNAME;
|
||||||
break;
|
break;
|
||||||
@ -4201,6 +4205,18 @@ format_replace(struct format_expand_state *es, const char *key, size_t keylen,
|
|||||||
goto done;
|
goto done;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Is this a colour? */
|
||||||
|
if (modifiers & FORMAT_COLOUR) {
|
||||||
|
new = format_expand1(es, copy);
|
||||||
|
c = colour_fromstring(new);
|
||||||
|
if (c == -1 || (c = colour_force_rgb(c)) == -1)
|
||||||
|
value = xstrdup("");
|
||||||
|
else
|
||||||
|
xasprintf(&value, "%06x", c & 0xffffff);
|
||||||
|
free(new);
|
||||||
|
goto done;
|
||||||
|
}
|
||||||
|
|
||||||
/* Is this a loop, comparison or condition? */
|
/* Is this a loop, comparison or condition? */
|
||||||
if (modifiers & FORMAT_SESSIONS) {
|
if (modifiers & FORMAT_SESSIONS) {
|
||||||
value = format_loop_sessions(es, copy);
|
value = format_loop_sessions(es, copy);
|
||||||
|
5
tmux.1
5
tmux.1
@ -4214,6 +4214,7 @@ see the
|
|||||||
.Sx STYLES
|
.Sx STYLES
|
||||||
section.
|
section.
|
||||||
Attributes are ignored.
|
Attributes are ignored.
|
||||||
|
.Pp
|
||||||
.It Ic pane-base-index Ar index
|
.It Ic pane-base-index Ar index
|
||||||
Like
|
Like
|
||||||
.Ic base-index ,
|
.Ic base-index ,
|
||||||
@ -4830,6 +4831,10 @@ replaces a numeric argument by its ASCII equivalent, so
|
|||||||
.Ql #{a:98}
|
.Ql #{a:98}
|
||||||
results in
|
results in
|
||||||
.Ql b .
|
.Ql b .
|
||||||
|
.Ql c
|
||||||
|
replaces a
|
||||||
|
.Nm
|
||||||
|
colour by its six-digit hexadecimal RGB value.
|
||||||
.Pp
|
.Pp
|
||||||
A limit may be placed on the length of the resultant string by prefixing it
|
A limit may be placed on the length of the resultant string by prefixing it
|
||||||
by an
|
by an
|
||||||
|
1
tmux.h
1
tmux.h
@ -2617,6 +2617,7 @@ int input_key_get_mouse(struct screen *, struct mouse_event *, u_int,
|
|||||||
int colour_find_rgb(u_char, u_char, u_char);
|
int colour_find_rgb(u_char, u_char, u_char);
|
||||||
int colour_join_rgb(u_char, u_char, u_char);
|
int colour_join_rgb(u_char, u_char, u_char);
|
||||||
void colour_split_rgb(int, u_char *, u_char *, u_char *);
|
void colour_split_rgb(int, u_char *, u_char *, u_char *);
|
||||||
|
int colour_force_rgb(int);
|
||||||
const char *colour_tostring(int);
|
const char *colour_tostring(int);
|
||||||
int colour_fromstring(const char *s);
|
int colour_fromstring(const char *s);
|
||||||
int colour_256toRGB(int);
|
int colour_256toRGB(int);
|
||||||
|
Loading…
Reference in New Issue
Block a user