summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Adam <thomas@xteddy.org>2019-05-29 23:02:25 +0100
committerThomas Adam <thomas@xteddy.org>2019-05-29 23:02:25 +0100
commit414208aab1d7a6ed346a2fb5249d022be5617260 (patch)
treef4b6a65e55c66843e6ab274dda1d352cb866b44e
parent95d68fcba137cc140d90b65de6bde1f502d3cbc1 (diff)
parent7dced376737ef685e09fd5a49161ca2bf423e91b (diff)
Merge branch 'obsd-master'
-rw-r--r--arguments.c2
-rw-r--r--cmd-parse.y22
-rw-r--r--cmd-queue.c28
-rw-r--r--tty-term.c2
-rw-r--r--window-buffer.c2
5 files changed, 44 insertions, 12 deletions
diff --git a/arguments.c b/arguments.c
index 38e50829..c8a6ab45 100644
--- a/arguments.c
+++ b/arguments.c
@@ -217,7 +217,7 @@ args_escape(const char *s)
return (escaped);
}
- flags = VIS_OCTAL|VIS_TAB|VIS_NL;
+ flags = VIS_OCTAL|VIS_CSTYLE|VIS_TAB|VIS_NL;
if (s[strcspn(s, quoted)] != '\0')
flags |= VIS_DQ;
utf8_stravis(&escaped, s, flags);
diff --git a/cmd-parse.y b/cmd-parse.y
index 739ca56c..a623caa5 100644
--- a/cmd-parse.y
+++ b/cmd-parse.y
@@ -58,6 +58,7 @@ struct cmd_parse_state {
size_t len;
size_t off;
+ int eol;
int eof;
struct cmd_parse_input *input;
u_int escapes;
@@ -933,6 +934,10 @@ yylex(void)
char *token, *cp;
int ch, next;
+ if (ps->eol)
+ ps->input->line++;
+ ps->eol = 0;
+
for (;;) {
ch = yylex_getc();
@@ -959,7 +964,7 @@ yylex(void)
/*
* End of line. Update the line number.
*/
- ps->input->line++;
+ ps->eol = 1;
return ('\n');
}
@@ -1113,9 +1118,24 @@ yylex_token_escape(char **buf, size_t *len)
switch (ch) {
case EOF:
return (0);
+ case 'a':
+ ch = '\a';
+ break;
+ case 'b':
+ ch = '\b';
+ break;
case 'e':
ch = '\033';
break;
+ case 'f':
+ ch = '\f';
+ break;
+ case 's':
+ ch = ' ';
+ break;
+ case 'v':
+ ch = '\v';
+ break;
case 'r':
ch = '\r';
break;
diff --git a/cmd-queue.c b/cmd-queue.c
index f08d7c02..93dcaa53 100644
--- a/cmd-queue.c
+++ b/cmd-queue.c
@@ -203,16 +203,20 @@ cmdq_get_command(struct cmd_list *cmdlist, struct cmd_find_state *current,
struct cmdq_item *item, *first = NULL, *last = NULL;
struct cmd *cmd;
struct cmdq_shared *shared;
-
- shared = xcalloc(1, sizeof *shared);
- if (current != NULL)
- cmd_find_copy_state(&shared->current, current);
- else
- cmd_find_clear_state(&shared->current, 0);
- if (m != NULL)
- memcpy(&shared->mouse, m, sizeof shared->mouse);
+ u_int group = 0;
TAILQ_FOREACH(cmd, &cmdlist->list, qentry) {
+ if (cmd->group != group) {
+ shared = xcalloc(1, sizeof *shared);
+ if (current != NULL)
+ cmd_find_copy_state(&shared->current, current);
+ else
+ cmd_find_clear_state(&shared->current, 0);
+ if (m != NULL)
+ memcpy(&shared->mouse, m, sizeof shared->mouse);
+ group = cmd->group;
+ }
+
item = xcalloc(1, sizeof *item);
xasprintf(&item->name, "[%s/%p]", cmd->entry->name, item);
item->type = CMDQ_COMMAND;
@@ -263,12 +267,20 @@ static enum cmd_retval
cmdq_fire_command(struct cmdq_item *item)
{
struct client *c = item->client;
+ const char *name = cmdq_name(c);
struct cmdq_shared *shared = item->shared;
struct cmd *cmd = item->cmd;
const struct cmd_entry *entry = cmd->entry;
enum cmd_retval retval;
struct cmd_find_state *fsp, fs;
int flags;
+ char *tmp;
+
+ if (log_get_level() > 1) {
+ tmp = cmd_print(cmd);
+ log_debug("%s %s: (%u) %s", __func__, name, item->group, tmp);
+ free(tmp);
+ }
flags = !!(shared->flags & CMDQ_SHARED_CONTROL);
cmdq_guard(item, "begin", flags);
diff --git a/tty-term.c b/tty-term.c
index b3fc8e0d..d2cdf86a 100644
--- a/tty-term.c
+++ b/tty-term.c
@@ -691,7 +691,7 @@ tty_term_describe(struct tty_term *term, enum tty_code_code code)
break;
case TTYCODE_STRING:
strnvis(out, term->codes[code].value.string, sizeof out,
- VIS_OCTAL|VIS_TAB|VIS_NL);
+ VIS_OCTAL|VIS_CSTYLE|VIS_TAB|VIS_NL);
xsnprintf(s, sizeof s, "%4u: %s: (string) %s",
code, tty_term_codes[code].name,
out);
diff --git a/window-buffer.c b/window-buffer.c
index d65916b5..224dfedb 100644
--- a/window-buffer.c
+++ b/window-buffer.c
@@ -245,7 +245,7 @@ window_buffer_draw(__unused void *modedata, void *itemdata,
at = 0;
while (end != pdata + psize && *end != '\n') {
if ((sizeof line) - at > 5) {
- cp = vis(line + at, *end, VIS_TAB|VIS_OCTAL, 0);
+ cp = vis(line + at, *end, VIS_OCTAL|VIS_TAB, 0);
at = cp - line;
}
end++;