diff options
author | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-10-06 07:19:33 +0000 |
---|---|---|
committer | Nicholas Marriott <nicm@cvs.openbsd.org> | 2009-10-06 07:19:33 +0000 |
commit | fc5fe287d72776b43ec481a0cf9804a63b570ba0 (patch) | |
tree | 0d5f6de5225da0b306026e3690cf9887fb019d9c /usr.bin | |
parent | d5a448bb3f07df7581aec4fb1f4ae1d580940f9b (diff) |
Remove scroll mode which is now redundant, copy mode should be used instead.
The = key binding now does nothing.
Diffstat (limited to 'usr.bin')
-rw-r--r-- | usr.bin/tmux/Makefile | 6 | ||||
-rw-r--r-- | usr.bin/tmux/cmd-copy-mode.c | 20 | ||||
-rw-r--r-- | usr.bin/tmux/cmd-scroll-mode.c | 70 | ||||
-rw-r--r-- | usr.bin/tmux/cmd.c | 3 | ||||
-rw-r--r-- | usr.bin/tmux/key-bindings.c | 5 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.1 | 20 | ||||
-rw-r--r-- | usr.bin/tmux/tmux.h | 7 | ||||
-rw-r--r-- | usr.bin/tmux/window-scroll.c | 323 |
8 files changed, 27 insertions, 427 deletions
diff --git a/usr.bin/tmux/Makefile b/usr.bin/tmux/Makefile index 4d7ef1cee3f..a44aa846c0a 100644 --- a/usr.bin/tmux/Makefile +++ b/usr.bin/tmux/Makefile @@ -1,4 +1,4 @@ -# $OpenBSD: Makefile,v 1.18 2009/09/24 14:17:09 nicm Exp $ +# $OpenBSD: Makefile,v 1.19 2009/10/06 07:19:32 nicm Exp $ PROG= tmux SRCS= attributes.c buffer-poll.c buffer.c cfg.c client-fn.c \ @@ -18,7 +18,7 @@ SRCS= attributes.c buffer-poll.c buffer.c cfg.c client-fn.c \ cmd-previous-layout.c cmd-previous-window.c cmd-refresh-client.c \ cmd-rename-session.c cmd-rename-window.c cmd-resize-pane.c \ cmd-respawn-window.c cmd-rotate-window.c cmd-save-buffer.c \ - cmd-scroll-mode.c cmd-select-layout.c cmd-select-pane.c \ + cmd-select-layout.c cmd-select-pane.c \ cmd-select-prompt.c cmd-select-window.c cmd-send-keys.c \ cmd-send-prefix.c cmd-server-info.c cmd-set-buffer.c cmd-set-option.c \ cmd-set-window-option.c cmd-show-buffer.c \ @@ -35,7 +35,7 @@ SRCS= attributes.c buffer-poll.c buffer.c cfg.c client-fn.c \ resize.c screen-redraw.c screen-write.c screen.c server-fn.c \ server-msg.c server.c session.c status.c tmux.c tty-keys.c tty-term.c \ tty.c utf8.c window-choose.c window-clock.c \ - window-copy.c window-more.c window-scroll.c window.c xmalloc.c + window-copy.c window-more.c window.c xmalloc.c CDIAGFLAGS+= -Wno-long-long -Wall -W -Wnested-externs -Wformat=2 CDIAGFLAGS+= -Wmissing-prototypes -Wstrict-prototypes -Wmissing-declarations diff --git a/usr.bin/tmux/cmd-copy-mode.c b/usr.bin/tmux/cmd-copy-mode.c index 90cbc5b1699..2795dcf8649 100644 --- a/usr.bin/tmux/cmd-copy-mode.c +++ b/usr.bin/tmux/cmd-copy-mode.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd-copy-mode.c,v 1.6 2009/08/18 16:21:04 nicm Exp $ */ +/* $OpenBSD: cmd-copy-mode.c,v 1.7 2009/10/06 07:19:32 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -24,19 +24,35 @@ * Enter copy mode. */ +void cmd_copy_mode_init(struct cmd *, int); int cmd_copy_mode_exec(struct cmd *, struct cmd_ctx *); const struct cmd_entry cmd_copy_mode_entry = { "copy-mode", NULL, "[-u] " CMD_TARGET_PANE_USAGE, 0, CMD_CHFLAG('u'), - cmd_target_init, + cmd_copy_mode_init, cmd_target_parse, cmd_copy_mode_exec, cmd_target_free, NULL }; +void +cmd_copy_mode_init(struct cmd *self, int key) +{ + struct cmd_target_data *data; + + cmd_target_init(self, key); + data = self->data; + + switch (key) { + case KEYC_PPAGE: + data->chflags |= CMD_CHFLAG('u'); + break; + } +} + int cmd_copy_mode_exec(struct cmd *self, struct cmd_ctx *ctx) { diff --git a/usr.bin/tmux/cmd-scroll-mode.c b/usr.bin/tmux/cmd-scroll-mode.c deleted file mode 100644 index cd5f528470f..00000000000 --- a/usr.bin/tmux/cmd-scroll-mode.c +++ /dev/null @@ -1,70 +0,0 @@ -/* $OpenBSD: cmd-scroll-mode.c,v 1.6 2009/08/18 16:21:04 nicm Exp $ */ - -/* - * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> - * - * 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" - -/* - * Enter scroll mode. - */ - -void cmd_scroll_mode_init(struct cmd *, int); -int cmd_scroll_mode_exec(struct cmd *, struct cmd_ctx *); - -const struct cmd_entry cmd_scroll_mode_entry = { - "scroll-mode", NULL, - "[-u] " CMD_TARGET_PANE_USAGE, - 0, CMD_CHFLAG('u'), - cmd_scroll_mode_init, - cmd_target_parse, - cmd_scroll_mode_exec, - cmd_target_free, - cmd_target_print -}; - -void -cmd_scroll_mode_init(struct cmd *self, int key) -{ - struct cmd_target_data *data; - - cmd_target_init(self, key); - data = self->data; - - switch (key) { - case KEYC_PPAGE: - data->chflags |= CMD_CHFLAG('u'); - break; - } -} - -int -cmd_scroll_mode_exec(struct cmd *self, struct cmd_ctx *ctx) -{ - struct cmd_target_data *data = self->data; - struct window_pane *wp; - - if (cmd_find_pane(ctx, data->target, NULL, &wp) == NULL) - return (-1); - - window_pane_set_mode(wp, &window_scroll_mode); - if (wp->mode == &window_scroll_mode && data->chflags & CMD_CHFLAG('u')) - window_scroll_pageup(wp); - - return (0); -} diff --git a/usr.bin/tmux/cmd.c b/usr.bin/tmux/cmd.c index 13cd5f41045..46df3ec69ef 100644 --- a/usr.bin/tmux/cmd.c +++ b/usr.bin/tmux/cmd.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cmd.c,v 1.20 2009/10/05 18:30:54 nicm Exp $ */ +/* $OpenBSD: cmd.c,v 1.21 2009/10/06 07:19:32 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -80,7 +80,6 @@ const struct cmd_entry *cmd_table[] = { &cmd_rotate_window_entry, &cmd_run_shell_entry, &cmd_save_buffer_entry, - &cmd_scroll_mode_entry, &cmd_select_layout_entry, &cmd_select_pane_entry, &cmd_select_prompt_entry, diff --git a/usr.bin/tmux/key-bindings.c b/usr.bin/tmux/key-bindings.c index 42ce9a88a99..3f7913c50b5 100644 --- a/usr.bin/tmux/key-bindings.c +++ b/usr.bin/tmux/key-bindings.c @@ -1,4 +1,4 @@ -/* $OpenBSD: key-bindings.c,v 1.11 2009/08/31 20:46:19 nicm Exp $ */ +/* $OpenBSD: key-bindings.c,v 1.12 2009/10/06 07:19:32 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -122,7 +122,6 @@ key_bindings_init(void) { '8', 0, &cmd_select_window_entry }, { '9', 0, &cmd_select_window_entry }, { ':', 0, &cmd_command_prompt_entry }, - { '=', 0, &cmd_scroll_mode_entry }, { '?', 0, &cmd_list_keys_entry }, { '[', 0, &cmd_copy_mode_entry }, { '\'', 0, &cmd_select_prompt_entry }, @@ -150,7 +149,7 @@ key_bindings_init(void) { '2' | KEYC_ESCAPE, 0, &cmd_select_layout_entry }, { '3' | KEYC_ESCAPE, 0, &cmd_select_layout_entry }, { '4' | KEYC_ESCAPE, 0, &cmd_select_layout_entry }, - { KEYC_PPAGE, 0, &cmd_scroll_mode_entry }, + { KEYC_PPAGE, 0, &cmd_copy_mode_entry }, { 'n' | KEYC_ESCAPE, 0, &cmd_next_window_entry }, { 'p' | KEYC_ESCAPE, 0, &cmd_previous_window_entry }, { KEYC_UP, 0, &cmd_up_pane_entry }, diff --git a/usr.bin/tmux/tmux.1 b/usr.bin/tmux/tmux.1 index a224fab1c5a..e93ef418ef8 100644 --- a/usr.bin/tmux/tmux.1 +++ b/usr.bin/tmux/tmux.1 @@ -1,4 +1,4 @@ -.\" $OpenBSD: tmux.1,v 1.96 2009/10/06 07:09:00 nicm Exp $ +.\" $OpenBSD: tmux.1,v 1.97 2009/10/06 07:19:32 nicm Exp $ .\" .\" Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> .\" @@ -474,12 +474,6 @@ The others are: This is entered when a command which produces output, such as .Ic list-keys , is executed from a key binding. -.It Em scroll mode -This is entered with the -.Ic scroll-mode -command (bound to -.Ql = -by default) and permits the window history buffer to be inspected. .It Em copy mode This permits a section of a window or its history to be copied to a .Em paste buffer @@ -539,7 +533,7 @@ command) or in output mode; and .Em vi-copy and .Em emacs-copy -used in copy and scroll modes. +used in copy mode. The tables may be viewed with the .Ic list-keys command and keys modified or removed with @@ -560,16 +554,6 @@ Enter copy mode. The .Fl u option scrolls one page up. -.It Xo Ic scroll-mode -.Op Fl u -.Op Fl t Ar target-pane -.Xc -Enter scroll mode. -The -.Fl u -has the same meaning as in the -.Ic copy-mode -command. .El .Pp Each window displayed by diff --git a/usr.bin/tmux/tmux.h b/usr.bin/tmux/tmux.h index 4b94b5d2b75..5fc68f1b794 100644 --- a/usr.bin/tmux/tmux.h +++ b/usr.bin/tmux/tmux.h @@ -1,4 +1,4 @@ -/* $OpenBSD: tmux.h,v 1.120 2009/10/06 07:09:00 nicm Exp $ */ +/* $OpenBSD: tmux.h,v 1.121 2009/10/06 07:19:32 nicm Exp $ */ /* * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> @@ -1348,7 +1348,6 @@ extern const struct cmd_entry cmd_respawn_window_entry; extern const struct cmd_entry cmd_rotate_window_entry; extern const struct cmd_entry cmd_run_shell_entry; extern const struct cmd_entry cmd_save_buffer_entry; -extern const struct cmd_entry cmd_scroll_mode_entry; extern const struct cmd_entry cmd_select_layout_entry; extern const struct cmd_entry cmd_select_pane_entry; extern const struct cmd_entry cmd_select_prompt_entry; @@ -1701,10 +1700,6 @@ extern const struct window_mode window_clock_mode; extern const struct window_mode window_copy_mode; void window_copy_pageup(struct window_pane *); -/* window-scroll.c */ -extern const struct window_mode window_scroll_mode; -void window_scroll_pageup(struct window_pane *); - /* window-more.c */ extern const struct window_mode window_more_mode; void window_more_vadd(struct window_pane *, const char *, va_list); diff --git a/usr.bin/tmux/window-scroll.c b/usr.bin/tmux/window-scroll.c deleted file mode 100644 index 3fb522666e6..00000000000 --- a/usr.bin/tmux/window-scroll.c +++ /dev/null @@ -1,323 +0,0 @@ -/* $OpenBSD: window-scroll.c,v 1.9 2009/09/10 17:16:24 nicm Exp $ */ - -/* - * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> - * - * 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 <string.h> - -#include "tmux.h" - -struct screen *window_scroll_init(struct window_pane *); -void window_scroll_free(struct window_pane *); -void window_scroll_resize(struct window_pane *, u_int, u_int); -void window_scroll_key(struct window_pane *, struct client *, int); - -void window_scroll_redraw_screen(struct window_pane *); -void window_scroll_write_line( - struct window_pane *, struct screen_write_ctx *, u_int); -void window_scroll_write_column( - struct window_pane *, struct screen_write_ctx *, u_int); - -void window_scroll_scroll_up(struct window_pane *); -void window_scroll_scroll_down(struct window_pane *); -void window_scroll_scroll_left(struct window_pane *); -void window_scroll_scroll_right(struct window_pane *); - -const struct window_mode window_scroll_mode = { - window_scroll_init, - window_scroll_free, - window_scroll_resize, - window_scroll_key, - NULL, - NULL, -}; - -struct window_scroll_mode_data { - struct screen screen; - - struct mode_key_data mdata; - - u_int ox; - u_int oy; -}; - -struct screen * -window_scroll_init(struct window_pane *wp) -{ - struct window_scroll_mode_data *data; - struct screen *s; - struct screen_write_ctx ctx; - u_int i; - int keys; - - wp->modedata = data = xmalloc(sizeof *data); - data->ox = 0; - data->oy = 0; - - s = &data->screen; - screen_init(s, screen_size_x(&wp->base), screen_size_y(&wp->base), 0); - s->mode &= ~MODE_CURSOR; - - keys = options_get_number(&wp->window->options, "mode-keys"); - if (keys == MODEKEY_EMACS) - mode_key_init(&data->mdata, &mode_key_tree_emacs_copy); - else - mode_key_init(&data->mdata, &mode_key_tree_vi_copy); - - screen_write_start(&ctx, NULL, s); - for (i = 0; i < screen_size_y(s); i++) - window_scroll_write_line(wp, &ctx, i); - screen_write_stop(&ctx); - - return (s); -} - -void -window_scroll_free(struct window_pane *wp) -{ - struct window_scroll_mode_data *data = wp->modedata; - - screen_free(&data->screen); - xfree(data); -} - -void -window_scroll_pageup(struct window_pane *wp) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - u_int n; - - n = 1; - if (screen_size_y(s) > 2) - n = screen_size_y(s) - 2; - if (data->oy + n > screen_hsize(&wp->base)) - data->oy = screen_hsize(&wp->base); - else - data->oy += n; - - window_scroll_redraw_screen(wp); -} - -void -window_scroll_resize(struct window_pane *wp, u_int sx, u_int sy) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - struct screen_write_ctx ctx; - u_int i; - - screen_resize(s, sx, sy); - screen_write_start(&ctx, NULL, s); - for (i = 0; i < screen_size_y(s); i++) - window_scroll_write_line(wp, &ctx, i); - screen_write_stop(&ctx); -} - -void -window_scroll_key(struct window_pane *wp, unused struct client *c, int key) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - u_int n; - - switch (mode_key_lookup(&data->mdata, key)) { - case MODEKEYCOPY_CANCEL: - window_pane_reset_mode(wp); - break; - case MODEKEYCOPY_LEFT: - window_scroll_scroll_left(wp); - break; - case MODEKEYCOPY_RIGHT: - window_scroll_scroll_right(wp); - break; - case MODEKEYCOPY_UP: - window_scroll_scroll_up(wp); - break; - case MODEKEYCOPY_DOWN: - window_scroll_scroll_down(wp); - break; - case MODEKEYCOPY_PREVIOUSPAGE: - window_scroll_pageup(wp); - break; - case MODEKEYCOPY_NEXTPAGE: - n = 1; - if (screen_size_y(s) > 2) - n = screen_size_y(s) - 2; - if (data->oy < n) - data->oy = 0; - else - data->oy -= n; - window_scroll_redraw_screen(wp); - break; - case MODEKEYCOPY_HALFPAGEUP: - n = screen_size_y(s) / 2; - if (data->oy + n > screen_hsize(&wp->base)) - data->oy = screen_hsize(&wp->base); - else - data->oy += n; - window_scroll_redraw_screen(wp); - break; - case MODEKEYCOPY_HALFPAGEDOWN: - n = screen_size_y(s) / 2; - if (data->oy < n) - data->oy = 0; - else - data->oy -= n; - window_scroll_redraw_screen(wp); - break; - default: - break; - } -} - -void -window_scroll_write_line( - struct window_pane *wp, struct screen_write_ctx *ctx, u_int py) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - struct options *oo = &wp->window->options; - struct grid_cell gc; - char hdr[32]; - size_t size; - - if (py == 0) { - memcpy(&gc, &grid_default_cell, sizeof gc); - size = xsnprintf(hdr, sizeof hdr, - "[%u,%u/%u]", data->ox, data->oy, screen_hsize(&wp->base)); - colour_set_fg(&gc, options_get_number(oo, "mode-fg")); - colour_set_bg(&gc, options_get_number(oo, "mode-bg")); - gc.attr |= options_get_number(oo, "mode-attr"); - screen_write_cursormove(ctx, screen_size_x(s) - size, 0); - screen_write_puts(ctx, &gc, "%s", hdr); - memcpy(&gc, &grid_default_cell, sizeof gc); - } else - size = 0; - - screen_write_cursormove(ctx, 0, py); - screen_write_copy(ctx, &wp->base, data->ox, (screen_hsize(&wp->base) - - data->oy) + py, screen_size_x(s) - size, 1); -} - -void -window_scroll_write_column( - struct window_pane *wp, struct screen_write_ctx *ctx, u_int px) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - - screen_write_cursormove(ctx, px, 0); - screen_write_copy(ctx, &wp->base, data->ox + px, - screen_hsize(&wp->base) - data->oy, 1, screen_size_y(s)); -} - -void -window_scroll_redraw_screen(struct window_pane *wp) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - struct screen_write_ctx ctx; - u_int i; - - screen_write_start(&ctx, wp, NULL); - for (i = 0; i < screen_size_y(s); i++) - window_scroll_write_line(wp, &ctx, i); - screen_write_stop(&ctx); -} - -void -window_scroll_scroll_up(struct window_pane *wp) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen_write_ctx ctx; - - if (data->oy >= screen_hsize(&wp->base)) - return; - data->oy++; - - screen_write_start(&ctx, wp, NULL); - screen_write_cursormove(&ctx, 0, 0); - screen_write_insertline(&ctx, 1); - window_scroll_write_line(wp, &ctx, 0); - window_scroll_write_line(wp, &ctx, 1); - screen_write_stop(&ctx); -} - -void -window_scroll_scroll_down(struct window_pane *wp) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - struct screen_write_ctx ctx; - - if (data->oy == 0) - return; - data->oy--; - - screen_write_start(&ctx, wp, NULL); - screen_write_cursormove(&ctx, 0, 0); - screen_write_deleteline(&ctx, 1); - window_scroll_write_line(wp, &ctx, screen_size_y(s) - 1); - window_scroll_write_line(wp, &ctx, 0); - screen_write_stop(&ctx); -} - -void -window_scroll_scroll_right(struct window_pane *wp) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - struct screen_write_ctx ctx; - u_int i; - - if (data->ox >= SHRT_MAX) - return; - data->ox++; - - screen_write_start(&ctx, wp, NULL); - for (i = 1; i < screen_size_y(s); i++) { - screen_write_cursormove(&ctx, 0, i); - screen_write_deletecharacter(&ctx, 1); - } - window_scroll_write_column(wp, &ctx, screen_size_x(s) - 1); - window_scroll_write_line(wp, &ctx, 0); - screen_write_stop(&ctx); -} - -void -window_scroll_scroll_left(struct window_pane *wp) -{ - struct window_scroll_mode_data *data = wp->modedata; - struct screen *s = &data->screen; - struct screen_write_ctx ctx; - u_int i; - - if (data->ox == 0) - return; - data->ox--; - - screen_write_start(&ctx, wp, NULL); - for (i = 1; i < screen_size_y(s); i++) { - screen_write_cursormove(&ctx, 0, i); - screen_write_insertcharacter(&ctx, 1); - } - window_scroll_write_column(wp, &ctx, 0); - window_scroll_write_line(wp, &ctx, 0); - screen_write_stop(&ctx); -} |