summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicholas Marriott <nicholas.marriott@gmail.com>2021-04-30 20:14:10 +0100
committerNicholas Marriott <nicholas.marriott@gmail.com>2021-04-30 20:14:10 +0100
commit2e7ec8c0b91dc51e6e22b2f55cc4511610044673 (patch)
tree176087486c8509c694826eb429ecf110b6efcdb5
parent32c97a7f2f12a6689b8ffc5596484860ac8fbbec (diff)
Improve logging of screen mode changes.
-rw-r--r--screen-write.c6
-rw-r--r--screen.c52
-rw-r--r--server-client.c5
-rw-r--r--tmux.h1
-rw-r--r--tty.c8
5 files changed, 67 insertions, 5 deletions
diff --git a/screen-write.c b/screen-write.c
index 8e9ec582..e351a5e5 100644
--- a/screen-write.c
+++ b/screen-write.c
@@ -769,6 +769,9 @@ screen_write_mode_set(struct screen_write_ctx *ctx, int mode)
struct screen *s = ctx->s;
s->mode |= mode;
+
+ if (log_get_level() != 0)
+ log_debug("%s: %s", __func__, screen_mode_to_string(mode));
}
/* Clear a mode. */
@@ -778,6 +781,9 @@ screen_write_mode_clear(struct screen_write_ctx *ctx, int mode)
struct screen *s = ctx->s;
s->mode &= ~mode;
+
+ if (log_get_level() != 0)
+ log_debug("%s: %s", __func__, screen_mode_to_string(mode));
}
/* Cursor up by ny. */
diff --git a/screen.c b/screen.c
index 464be1cb..30b448e8 100644
--- a/screen.c
+++ b/screen.c
@@ -155,8 +155,8 @@ screen_reset_tabs(struct screen *s)
void
screen_set_cursor_style(struct screen *s, u_int style)
{
- switch (style)
- {
+ log_debug("%s: new %u, was %u", __func__, style, s->cstyle);
+ switch (style) {
case 0:
s->cstyle = SCREEN_CURSOR_DEFAULT;
break;
@@ -652,3 +652,51 @@ screen_alternate_off(struct screen *s, struct grid_cell *gc, int cursor)
if (s->cy > screen_size_y(s) - 1)
s->cy = screen_size_y(s) - 1;
}
+
+/* Get mode as a string. */
+const char *
+screen_mode_to_string(int mode)
+{
+ static char tmp[1024];
+
+ if (mode == 0)
+ return "NONE";
+ if (mode == ALL_MODES)
+ return "ALL";
+
+ *tmp = '\0';
+ if (mode & MODE_CURSOR)
+ strlcat(tmp, "CURSOR,", sizeof tmp);
+ if (mode & MODE_INSERT)
+ strlcat(tmp, "INSERT,", sizeof tmp);
+ if (mode & MODE_KCURSOR)
+ strlcat(tmp, "KCURSOR,", sizeof tmp);
+ if (mode & MODE_KKEYPAD)
+ strlcat(tmp, "KKEYPAD,", sizeof tmp);
+ if (mode & MODE_WRAP)
+ strlcat(tmp, "WRAP,", sizeof tmp);
+ if (mode & MODE_MOUSE_STANDARD)
+ strlcat(tmp, "STANDARD,", sizeof tmp);
+ if (mode & MODE_MOUSE_BUTTON)
+ strlcat(tmp, "BUTTON,", sizeof tmp);
+ if (mode & MODE_BLINKING)
+ strlcat(tmp, "BLINKING,", sizeof tmp);
+ if (mode & MODE_MOUSE_UTF8)
+ strlcat(tmp, "UTF8,", sizeof tmp);
+ if (mode & MODE_MOUSE_SGR)
+ strlcat(tmp, "SGR,", sizeof tmp);
+ if (mode & MODE_BRACKETPASTE)
+ strlcat(tmp, "BRACKETPASTE,", sizeof tmp);
+ if (mode & MODE_FOCUSON)
+ strlcat(tmp, "FOCUSON,", sizeof tmp);
+ if (mode & MODE_MOUSE_ALL)
+ strlcat(tmp, "ALL,", sizeof tmp);
+ if (mode & MODE_ORIGIN)
+ strlcat(tmp, "ORIGIN,", sizeof tmp);
+ if (mode & MODE_CRLF)
+ strlcat(tmp, "CRLF,", sizeof tmp);
+ if (mode & MODE_KEXTENDED)
+ strlcat(tmp, "KEXTENDED,", sizeof tmp);
+ tmp[strlen (tmp) - 1] = '\0';
+ return (tmp);
+}
diff --git a/server-client.c b/server-client.c
index e74d893d..e3a690bd 100644
--- a/server-client.c
+++ b/server-client.c
@@ -1691,7 +1691,10 @@ server_client_reset_state(struct client *c)
s = wp->screen;
if (s != NULL)
mode = s->mode;
- log_debug("%s: client %s mode %x", __func__, c->name, mode);
+ if (log_get_level() != 0) {
+ log_debug("%s: client %s mode %s", __func__, c->name,
+ screen_mode_to_string(mode));
+ }
/* Reset region and margin. */
tty_region_off(tty);
diff --git a/tmux.h b/tmux.h
index e54eb2d0..3fa7dfb3 100644
--- a/tmux.h
+++ b/tmux.h
@@ -2750,6 +2750,7 @@ void screen_select_cell(struct screen *, struct grid_cell *,
const struct grid_cell *);
void screen_alternate_on(struct screen *, struct grid_cell *, int);
void screen_alternate_off(struct screen *, struct grid_cell *, int);
+const char *screen_mode_to_string(int);
/* window.c */
extern struct windows windows;
diff --git a/tty.c b/tty.c
index 367f54d5..45868fc1 100644
--- a/tty.c
+++ b/tty.c
@@ -665,8 +665,12 @@ tty_update_mode(struct tty *tty, int mode, struct screen *s)
mode &= ~MODE_CURSOR;
changed = mode ^ tty->mode;
- if (changed != 0)
- log_debug("%s: update mode %x to %x", c->name, tty->mode, mode);
+ if (log_get_level() != 0 && changed != 0) {
+ log_debug("%s: current mode %s", c->name,
+ screen_mode_to_string(tty->mode));
+ log_debug("%s: setting mode %s", c->name,
+ screen_mode_to_string(mode));
+ }
if (s != NULL) {
if (strcmp(s->ccolour, tty->ccolour) != 0)