Merge branch 'obsd-master'

pull/1702/head
Thomas Adam 2019-04-23 13:02:37 +01:00
commit b0d7623b7e
2 changed files with 34 additions and 35 deletions

4
tmux.1
View File

@ -1186,8 +1186,10 @@ The following commands are supported in copy mode:
.It Li "copy-end-of-line [<prefix>]" Ta "D" Ta "C-k" .It Li "copy-end-of-line [<prefix>]" Ta "D" Ta "C-k"
.It Li "copy-line [<prefix>]" Ta "" Ta "" .It Li "copy-line [<prefix>]" Ta "" Ta ""
.It Li "copy-pipe <command> [<prefix>]" Ta "" Ta "" .It Li "copy-pipe <command> [<prefix>]" Ta "" Ta ""
.It Li "copy-pipe-no-clear <command> [<prefix>]" Ta "" Ta ""
.It Li "copy-pipe-and-cancel <command> [<prefix>]" Ta "" Ta "" .It Li "copy-pipe-and-cancel <command> [<prefix>]" Ta "" Ta ""
.It Li "copy-selection [<prefix>]" Ta "" Ta "" .It Li "copy-selection [<prefix>]" Ta "" Ta ""
.It Li "copy-selection-no-clear [<prefix>]" Ta "" Ta ""
.It Li "copy-selection-and-cancel [<prefix>]" Ta "Enter" Ta "M-w" .It Li "copy-selection-and-cancel [<prefix>]" Ta "Enter" Ta "M-w"
.It Li "cursor-down" Ta "j" Ta "Down" .It Li "cursor-down" Ta "j" Ta "Down"
.It Li "cursor-left" Ta "h" Ta "Left" .It Li "cursor-left" Ta "h" Ta "Left"
@ -1249,6 +1251,8 @@ The
.Ql -and-cancel .Ql -and-cancel
variants of some commands exit copy mode after they have completed (for copy variants of some commands exit copy mode after they have completed (for copy
commands) or when the cursor reaches the bottom (for scrolling commands). commands) or when the cursor reaches the bottom (for scrolling commands).
.Ql -no-clear
variants do not clear the selection.
.Pp .Pp
The next and previous word keys use space and the The next and previous word keys use space and the
.Ql - , .Ql - ,

View File

@ -734,7 +734,7 @@ window_copy_cmd_copy_line(struct window_copy_cmd_state *cs)
} }
static enum window_copy_cmd_action static enum window_copy_cmd_action
window_copy_cmd_copy_selection(struct window_copy_cmd_state *cs) window_copy_cmd_copy_selection_no_clear(struct window_copy_cmd_state *cs)
{ {
struct window_mode_entry *wme = cs->wme; struct window_mode_entry *wme = cs->wme;
struct client *c = cs->c; struct client *c = cs->c;
@ -748,9 +748,18 @@ window_copy_cmd_copy_selection(struct window_copy_cmd_state *cs)
if (s != NULL) if (s != NULL)
window_copy_copy_selection(wme, prefix); window_copy_copy_selection(wme, prefix);
window_copy_clear_selection(wme);
free(prefix); free(prefix);
return (WINDOW_COPY_CMD_NOTHING);
}
static enum window_copy_cmd_action
window_copy_cmd_copy_selection(struct window_copy_cmd_state *cs)
{
struct window_mode_entry *wme = cs->wme;
window_copy_cmd_copy_selection_no_clear(cs);
window_copy_clear_selection(wme);
return (WINDOW_COPY_CMD_REDRAW); return (WINDOW_COPY_CMD_REDRAW);
} }
@ -758,20 +767,9 @@ static enum window_copy_cmd_action
window_copy_cmd_copy_selection_and_cancel(struct window_copy_cmd_state *cs) window_copy_cmd_copy_selection_and_cancel(struct window_copy_cmd_state *cs)
{ {
struct window_mode_entry *wme = cs->wme; struct window_mode_entry *wme = cs->wme;
struct client *c = cs->c;
struct session *s = cs->s;
struct winlink *wl = cs->wl;
struct window_pane *wp = wme->wp;
char *prefix = NULL;
if (cs->args->argc == 2) window_copy_cmd_copy_selection_no_clear(cs);
prefix = format_single(NULL, cs->args->argv[1], c, s, wl, wp);
if (s != NULL)
window_copy_copy_selection(wme, prefix);
window_copy_clear_selection(wme); window_copy_clear_selection(wme);
free(prefix);
return (WINDOW_COPY_CMD_CANCEL); return (WINDOW_COPY_CMD_CANCEL);
} }
@ -1256,7 +1254,7 @@ window_copy_cmd_top_line(struct window_copy_cmd_state *cs)
} }
static enum window_copy_cmd_action static enum window_copy_cmd_action
window_copy_cmd_copy_pipe(struct window_copy_cmd_state *cs) window_copy_cmd_copy_pipe_no_clear(struct window_copy_cmd_state *cs)
{ {
struct window_mode_entry *wme = cs->wme; struct window_mode_entry *wme = cs->wme;
struct client *c = cs->c; struct client *c = cs->c;
@ -1279,31 +1277,24 @@ window_copy_cmd_copy_pipe(struct window_copy_cmd_state *cs)
return (WINDOW_COPY_CMD_NOTHING); return (WINDOW_COPY_CMD_NOTHING);
} }
static enum window_copy_cmd_action
window_copy_cmd_copy_pipe(struct window_copy_cmd_state *cs)
{
struct window_mode_entry *wme = cs->wme;
window_copy_cmd_copy_pipe_no_clear(cs);
window_copy_clear_selection(wme);
return (WINDOW_COPY_CMD_REDRAW);
}
static enum window_copy_cmd_action static enum window_copy_cmd_action
window_copy_cmd_copy_pipe_and_cancel(struct window_copy_cmd_state *cs) window_copy_cmd_copy_pipe_and_cancel(struct window_copy_cmd_state *cs)
{ {
struct window_mode_entry *wme = cs->wme; struct window_mode_entry *wme = cs->wme;
struct client *c = cs->c;
struct session *s = cs->s;
struct winlink *wl = cs->wl;
struct window_pane *wp = wme->wp;
char *command = NULL;
char *prefix = NULL;
if (cs->args->argc == 3) window_copy_cmd_copy_pipe_no_clear(cs);
prefix = format_single(NULL, cs->args->argv[2], c, s, wl, wp); window_copy_clear_selection(wme);
return (WINDOW_COPY_CMD_CANCEL);
if (s != NULL && *cs->args->argv[1] != '\0') {
command = format_single(NULL, cs->args->argv[1], c, s, wl, wp);
window_copy_copy_pipe(wme, s, prefix, command);
free(command);
free(prefix);
return (WINDOW_COPY_CMD_CANCEL);
}
free(prefix);
return (WINDOW_COPY_CMD_NOTHING);
} }
static enum window_copy_cmd_action static enum window_copy_cmd_action
@ -1542,10 +1533,14 @@ static const struct {
window_copy_cmd_copy_end_of_line }, window_copy_cmd_copy_end_of_line },
{ "copy-line", 0, 1, { "copy-line", 0, 1,
window_copy_cmd_copy_line }, window_copy_cmd_copy_line },
{ "copy-pipe-no-clear", 1, 2,
window_copy_cmd_copy_pipe_no_clear },
{ "copy-pipe", 1, 2, { "copy-pipe", 1, 2,
window_copy_cmd_copy_pipe }, window_copy_cmd_copy_pipe },
{ "copy-pipe-and-cancel", 1, 2, { "copy-pipe-and-cancel", 1, 2,
window_copy_cmd_copy_pipe_and_cancel }, window_copy_cmd_copy_pipe_and_cancel },
{ "copy-selection-no-clear", 0, 1,
window_copy_cmd_copy_selection_no_clear },
{ "copy-selection", 0, 1, { "copy-selection", 0, 1,
window_copy_cmd_copy_selection }, window_copy_cmd_copy_selection },
{ "copy-selection-and-cancel", 0, 1, { "copy-selection-and-cancel", 0, 1,