aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cmd-capture-pane.c21
-rw-r--r--cmd-clear-history.c53
-rw-r--r--grid-view.c2
-rw-r--r--input.c5
-rw-r--r--screen-write.c1
-rw-r--r--tty.c4
6 files changed, 28 insertions, 58 deletions
diff --git a/cmd-capture-pane.c b/cmd-capture-pane.c
index 913738e9..87db6e99 100644
--- a/cmd-capture-pane.c
+++ b/cmd-capture-pane.c
@@ -49,6 +49,19 @@ const struct cmd_entry cmd_capture_pane_entry = {
.exec = cmd_capture_pane_exec
};
+const struct cmd_entry cmd_clear_history_entry = {
+ .name = "clear-history",
+ .alias = "clearhist",
+
+ .args = { "t:", 0, 0 },
+ .usage = CMD_TARGET_PANE_USAGE,
+
+ .tflag = CMD_PANE,
+
+ .flags = CMD_AFTERHOOK,
+ .exec = cmd_capture_pane_exec
+};
+
static char *
cmd_capture_pane_append(char *buf, size_t *len, char *line, size_t linelen)
{
@@ -91,7 +104,6 @@ cmd_capture_pane_pending(struct args *args, struct window_pane *wp,
}
static char *
-
cmd_capture_pane_history(struct args *args, struct cmdq_item *item,
struct window_pane *wp, size_t *len)
{
@@ -186,6 +198,13 @@ cmd_capture_pane_exec(struct cmd *self, struct cmdq_item *item)
const char *bufname;
size_t len;
+ if (self->entry == &cmd_clear_history_entry) {
+ if (wp->mode == &window_copy_mode)
+ window_pane_reset_mode(wp);
+ grid_clear_history(wp->base.grid);
+ return (CMD_RETURN_NORMAL);
+ }
+
len = 0;
if (args_has(args, 'P'))
buf = cmd_capture_pane_pending(args, wp, &len);
diff --git a/cmd-clear-history.c b/cmd-clear-history.c
deleted file mode 100644
index b5e0f84f..00000000
--- a/cmd-clear-history.c
+++ /dev/null
@@ -1,53 +0,0 @@
-/* $OpenBSD$ */
-
-/*
- * Copyright (c) 2009 Nicholas Marriott <nicholas.marriott@gmail.com>
- *
- * Permission to use, copy, modify, and distribute this software for any
- * purpose with or without fee is hereby granted, provided that the above
- * copyright notice and this permission notice appear in all copies.
- *
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF MIND, USE, DATA OR PROFITS, WHETHER
- * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
- * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#include <sys/types.h>
-
-#include "tmux.h"
-
-/*
- * Clear pane history.
- */
-
-static enum cmd_retval cmd_clear_history_exec(struct cmd *,
- struct cmdq_item *);
-
-const struct cmd_entry cmd_clear_history_entry = {
- .name = "clear-history",
- .alias = "clearhist",
-
- .args = { "t:", 0, 0 },
- .usage = CMD_TARGET_PANE_USAGE,
-
- .tflag = CMD_PANE,
-
- .flags = CMD_AFTERHOOK,
- .exec = cmd_clear_history_exec
-};
-
-static enum cmd_retval
-cmd_clear_history_exec(__unused struct cmd *self, struct cmdq_item *item)
-{
- struct window_pane *wp = item->state.tflag.wp;
-
- if (wp->mode == &window_copy_mode)
- window_pane_reset_mode(wp);
- grid_clear_history(wp->base.grid);
-
- return (CMD_RETURN_NORMAL);
-}
diff --git a/grid-view.c b/grid-view.c
index b84ac64e..fe096252 100644
--- a/grid-view.c
+++ b/grid-view.c
@@ -194,7 +194,7 @@ grid_view_insert_cells(struct grid *gd, u_int px, u_int py, u_int nx, u_int bg)
sx = grid_view_x(gd, gd->sx);
- if (px == sx - 1)
+ if (px >= sx - 1)
grid_clear(gd, px, py, 1, 1, bg);
else
grid_move_cells(gd, px + nx, px, py, sx - px - nx, bg);
diff --git a/input.c b/input.c
index b96ac7ef..0e71f656 100644
--- a/input.c
+++ b/input.c
@@ -1389,7 +1389,7 @@ input_csi_dispatch(struct input_ctx *ictx)
break;
case INPUT_CSI_IL:
screen_write_insertline(sctx, input_get(ictx, 0, 1, 1),
- ictx->cell.cell.bg);
+ ictx->cell.cell.bg);
break;
case INPUT_CSI_RCP:
memcpy(&ictx->cell, &ictx->old_cell, sizeof ictx->cell);
@@ -1779,6 +1779,9 @@ input_csi_dispatch_sgr(struct input_ctx *ictx)
case 27:
gc->attr &= ~GRID_ATTR_REVERSE;
break;
+ case 28:
+ gc->attr &= ~GRID_ATTR_HIDDEN;
+ break;
case 30:
case 31:
case 32:
diff --git a/screen-write.c b/screen-write.c
index f630e0c8..f0ea4c14 100644
--- a/screen-write.c
+++ b/screen-write.c
@@ -1260,6 +1260,7 @@ screen_write_cell(struct screen_write_ctx *ctx, const struct grid_cell *gc)
/* Create space for character in insert mode. */
if (s->mode & MODE_INSERT) {
+ screen_write_collect_flush(ctx, 0);
ttyctx.num = width;
tty_write(tty_cmd_insertcharacter, &ttyctx);
}
diff --git a/tty.c b/tty.c
index 7bf13c46..3b2fd3d3 100644
--- a/tty.c
+++ b/tty.c
@@ -1321,7 +1321,7 @@ tty_region(struct tty *tty, u_int rupper, u_int rlower)
tty_cursor(tty, 0, tty->cy);
tty_putcode2(tty, TTYC_CSR, tty->rupper, tty->rlower);
- tty->cx = tty->cy = 0;
+ tty->cx = tty->cy = UINT_MAX;
}
/* Turn off margin. */
@@ -1359,7 +1359,7 @@ tty_margin(struct tty *tty, u_int rleft, u_int rright)
else
snprintf(s, sizeof s, "\033[%u;%us", rleft + 1, rright + 1);
tty_puts(tty, s);
- tty->cx = tty->cy = 0;
+ tty->cx = tty->cy = UINT_MAX;
}
/* Move cursor inside pane. */