mirror of
https://github.com/tmux/tmux.git
synced 2024-12-24 18:21:33 +00:00
Add host_short format, from Tiago Cunha.
This commit is contained in:
parent
9fb9f78e43
commit
c30d60f7ae
74
format.c
74
format.c
@ -46,8 +46,8 @@ format_cmp(struct format_entry *fe1, struct format_entry *fe2)
|
|||||||
return (strcmp(fe1->key, fe2->key));
|
return (strcmp(fe1->key, fe2->key));
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Single-character aliases. */
|
/* Single-character uppercase aliases. */
|
||||||
const char *format_aliases[26] = {
|
const char *format_upper[] = {
|
||||||
NULL, /* A */
|
NULL, /* A */
|
||||||
NULL, /* B */
|
NULL, /* B */
|
||||||
NULL, /* C */
|
NULL, /* C */
|
||||||
@ -76,18 +76,52 @@ const char *format_aliases[26] = {
|
|||||||
NULL /* Z */
|
NULL /* Z */
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* Single-character lowercase aliases. */
|
||||||
|
const char *format_lower[] = {
|
||||||
|
NULL, /* a */
|
||||||
|
NULL, /* b */
|
||||||
|
NULL, /* c */
|
||||||
|
NULL, /* d */
|
||||||
|
NULL, /* e */
|
||||||
|
NULL, /* f */
|
||||||
|
NULL, /* g */
|
||||||
|
"host_short", /* h */
|
||||||
|
NULL, /* i */
|
||||||
|
NULL, /* j */
|
||||||
|
NULL, /* k */
|
||||||
|
NULL, /* l */
|
||||||
|
NULL, /* m */
|
||||||
|
NULL, /* n */
|
||||||
|
NULL, /* o */
|
||||||
|
NULL, /* p */
|
||||||
|
NULL, /* q */
|
||||||
|
NULL, /* r */
|
||||||
|
NULL, /* s */
|
||||||
|
NULL, /* t */
|
||||||
|
NULL, /* u */
|
||||||
|
NULL, /* v */
|
||||||
|
NULL, /* w */
|
||||||
|
NULL, /* x */
|
||||||
|
NULL, /* y */
|
||||||
|
NULL /* z */
|
||||||
|
};
|
||||||
|
|
||||||
/* Create a new tree. */
|
/* Create a new tree. */
|
||||||
struct format_tree *
|
struct format_tree *
|
||||||
format_create(void)
|
format_create(void)
|
||||||
{
|
{
|
||||||
struct format_tree *ft;
|
struct format_tree *ft;
|
||||||
char host[MAXHOSTNAMELEN];
|
char host[MAXHOSTNAMELEN], *ptr;
|
||||||
|
|
||||||
ft = xmalloc(sizeof *ft);
|
ft = xmalloc(sizeof *ft);
|
||||||
RB_INIT(ft);
|
RB_INIT(ft);
|
||||||
|
|
||||||
if (gethostname(host, sizeof host) == 0)
|
if (gethostname(host, sizeof host) == 0) {
|
||||||
format_add(ft, "host", "%s", host);
|
format_add(ft, "host", "%s", host);
|
||||||
|
if ((ptr = strrchr(host, '.')) != NULL)
|
||||||
|
*ptr = '\0';
|
||||||
|
format_add(ft, "host_short", "%s", host);
|
||||||
|
}
|
||||||
|
|
||||||
return (ft);
|
return (ft);
|
||||||
}
|
}
|
||||||
@ -109,7 +143,7 @@ format_free(struct format_tree *ft)
|
|||||||
free(fe);
|
free(fe);
|
||||||
}
|
}
|
||||||
|
|
||||||
free (ft);
|
free(ft);
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add a key-value pair. */
|
/* Add a key-value pair. */
|
||||||
@ -230,6 +264,7 @@ format_expand(struct format_tree *ft, const char *fmt)
|
|||||||
fmt++;
|
fmt++;
|
||||||
|
|
||||||
ch = (u_char) *fmt++;
|
ch = (u_char) *fmt++;
|
||||||
|
|
||||||
switch (ch) {
|
switch (ch) {
|
||||||
case '{':
|
case '{':
|
||||||
ptr = strchr(fmt, '}');
|
ptr = strchr(fmt, '}');
|
||||||
@ -242,22 +277,23 @@ format_expand(struct format_tree *ft, const char *fmt)
|
|||||||
fmt += n + 1;
|
fmt += n + 1;
|
||||||
continue;
|
continue;
|
||||||
default:
|
default:
|
||||||
if (ch >= 'A' && ch <= 'Z') {
|
s = NULL;
|
||||||
s = format_aliases[ch - 'A'];
|
if (ch >= 'A' && ch <= 'Z')
|
||||||
if (s != NULL) {
|
s = format_upper[ch - 'A'];
|
||||||
n = strlen(s);
|
else if (ch >= 'a' && ch <= 'z')
|
||||||
if (format_replace (
|
s = format_lower[ch - 'a'];
|
||||||
ft, s, n, &buf, &len, &off) != 0)
|
if (s == NULL) {
|
||||||
break;
|
while (len - off < 3) {
|
||||||
continue;
|
buf = xrealloc(buf, 2, len);
|
||||||
|
len *= 2;
|
||||||
}
|
}
|
||||||
|
buf[off++] = '#';
|
||||||
|
buf[off++] = ch;
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
while (len - off < 3) {
|
n = strlen(s);
|
||||||
buf = xrealloc(buf, 2, len);
|
if (format_replace(ft, s, n, &buf, &len, &off) != 0)
|
||||||
len *= 2;
|
break;
|
||||||
}
|
|
||||||
buf[off++] = '#';
|
|
||||||
buf[off++] = ch;
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
tmux.1
1
tmux.1
@ -3056,6 +3056,7 @@ The following variables are available, where appropriate:
|
|||||||
.It Li "history_limit" Ta "Maximum window history lines"
|
.It Li "history_limit" Ta "Maximum window history lines"
|
||||||
.It Li "history_size" Ta "Size of history in bytes"
|
.It Li "history_size" Ta "Size of history in bytes"
|
||||||
.It Li "host" Ta "Hostname of local host"
|
.It Li "host" Ta "Hostname of local host"
|
||||||
|
.It Li "host_short" Ta "Hostname of local host (no domain name)"
|
||||||
.It Li "insert_flag" Ta "Pane insert flag"
|
.It Li "insert_flag" Ta "Pane insert flag"
|
||||||
.It Li "keypad_cursor_flag" Ta "Pane keypad cursor flag"
|
.It Li "keypad_cursor_flag" Ta "Pane keypad cursor flag"
|
||||||
.It Li "keypad_flag" Ta "Pane keypad flag"
|
.It Li "keypad_flag" Ta "Pane keypad flag"
|
||||||
|
Loading…
Reference in New Issue
Block a user