[BACK]Return to window-copy.c CVS log [TXT][DIR] Up to [local] / src / usr.bin / tmux

Diff for /src/usr.bin/tmux/window-copy.c between version 1.325 and 1.326

version 1.325, 2021/08/09 13:08:08 version 1.326, 2021/08/11 20:35:46
Line 959 
Line 959 
 }  }
   
 static enum window_copy_cmd_action  static enum window_copy_cmd_action
 window_copy_cmd_copy_end_of_line(struct window_copy_cmd_state *cs)  window_copy_do_copy_end_of_line(struct window_copy_cmd_state *cs, int pipe,
       int cancel)
 {  {
         struct window_mode_entry        *wme = cs->wme;          struct window_mode_entry         *wme = cs->wme;
         struct client                   *c = cs->c;          int                               argc = cs->args->argc;
         struct session                  *s = cs->s;          char                            **argv = cs->args->argv;
         struct winlink                  *wl = cs->wl;          struct client                    *c = cs->c;
         struct window_pane              *wp = wme->wp;          struct session                   *s = cs->s;
         u_int                            np = wme->prefix, ocx, ocy, ooy;          struct winlink                   *wl = cs->wl;
         struct window_copy_mode_data    *data = wme->data;          struct window_pane               *wp = wme->wp;
         char                            *prefix = NULL;          u_int                             np = wme->prefix, ocx, ocy, ooy;
           struct window_copy_mode_data     *data = wme->data;
           char                             *prefix = NULL, *command = NULL;
   
         if (cs->args->argc == 2)          if (pipe) {
                 prefix = format_single(NULL, cs->args->argv[1], c, s, wl, wp);                  if (argc == 3)
                           prefix = format_single(NULL, argv[2], c, s, wl, wp);
                   if (s != NULL && argc > 1 && *argv[1] != '\0')
                           command = format_single(NULL, argv[1], c, s, wl, wp);
           } else {
                   if (argc == 2)
                           prefix = format_single(NULL, argv[1], c, s, wl, wp);
           }
   
         ocx = data->cx;          ocx = data->cx;
         ocy = data->cy;          ocy = data->cy;
Line 982 
Line 992 
                 window_copy_cursor_down(wme, 0);                  window_copy_cursor_down(wme, 0);
         window_copy_cursor_end_of_line(wme);          window_copy_cursor_end_of_line(wme);
   
         if (s != NULL)          if (s != NULL) {
                 window_copy_copy_selection(wme, prefix);                  if (pipe)
                           window_copy_copy_pipe(wme, s, prefix, command);
                   else
                           window_copy_copy_selection(wme, prefix);
   
                   if (cancel) {
                           free(prefix);
                           free(command);
                           return (WINDOW_COPY_CMD_CANCEL);
                   }
           }
         window_copy_clear_selection(wme);          window_copy_clear_selection(wme);
   
         data->cx = ocx;          data->cx = ocx;
Line 991 
Line 1011 
         data->oy = ooy;          data->oy = ooy;
   
         free(prefix);          free(prefix);
           free(command);
         return (WINDOW_COPY_CMD_REDRAW);          return (WINDOW_COPY_CMD_REDRAW);
 }  }
   
 static enum window_copy_cmd_action  static enum window_copy_cmd_action
   window_copy_cmd_copy_end_of_line(struct window_copy_cmd_state *cs)
   {
           return (window_copy_do_copy_end_of_line(cs, 0, 0));
   }
   
   static enum window_copy_cmd_action
 window_copy_cmd_copy_end_of_line_and_cancel(struct window_copy_cmd_state *cs)  window_copy_cmd_copy_end_of_line_and_cancel(struct window_copy_cmd_state *cs)
 {  {
         struct window_mode_entry        *wme = cs->wme;          return (window_copy_do_copy_end_of_line(cs, 0, 1));
         struct client                   *c = cs->c;  }
         struct session                  *s = cs->s;  
         struct winlink                  *wl = cs->wl;  
         struct window_pane              *wp = wme->wp;  
         u_int                            np = wme->prefix;  
         char                            *prefix = NULL;  
   
         if (cs->args->argc == 2)  static enum window_copy_cmd_action
                 prefix = format_single(NULL, cs->args->argv[1], c, s, wl, wp);  window_copy_cmd_copy_pipe_end_of_line(struct window_copy_cmd_state *cs)
   {
           return (window_copy_do_copy_end_of_line(cs, 1, 0));
   }
   
         window_copy_start_selection(wme);  static enum window_copy_cmd_action
         for (; np > 1; np--)  window_copy_cmd_copy_pipe_end_of_line_and_cancel(
                 window_copy_cursor_down(wme, 0);      struct window_copy_cmd_state *cs)
         window_copy_cursor_end_of_line(wme);  {
           return (window_copy_do_copy_end_of_line(cs, 1, 1));
         if (s != NULL) {  
                 window_copy_copy_selection(wme, prefix);  
   
                 free(prefix);  
                 return (WINDOW_COPY_CMD_CANCEL);  
         }  
   
         free(prefix);  
         return (WINDOW_COPY_CMD_REDRAW);  
 }  }
   
 static enum window_copy_cmd_action  static enum window_copy_cmd_action
 window_copy_cmd_copy_line(struct window_copy_cmd_state *cs)  window_copy_do_copy_line(struct window_copy_cmd_state *cs, int pipe, int cancel)
 {  {
         struct window_mode_entry        *wme = cs->wme;          struct window_mode_entry         *wme = cs->wme;
         struct client                   *c = cs->c;          int                               argc = cs->args->argc;
         struct session                  *s = cs->s;          char                            **argv = cs->args->argv;
         struct winlink                  *wl = cs->wl;          struct client                    *c = cs->c;
         struct window_pane              *wp = wme->wp;          struct session                   *s = cs->s;
         struct window_copy_mode_data    *data = wme->data;          struct winlink                   *wl = cs->wl;
         u_int                            np = wme->prefix, ocx, ocy, ooy;          struct window_pane               *wp = wme->wp;
         char                            *prefix = NULL;          struct window_copy_mode_data     *data = wme->data;
           u_int                             np = wme->prefix, ocx, ocy, ooy;
           char                             *prefix = NULL, *command = NULL;
   
         if (cs->args->argc == 2)          if (pipe) {
                 prefix = format_single(NULL, cs->args->argv[1], c, s, wl, wp);                  if (argc == 3)
                           prefix = format_single(NULL, argv[2], c, s, wl, wp);
                   if (s != NULL && argc > 1 && *argv[1] != '\0')
                           command = format_single(NULL, argv[1], c, s, wl, wp);
           } else {
                   if (argc == 2)
                           prefix = format_single(NULL, argv[1], c, s, wl, wp);
           }
   
         ocx = data->cx;          ocx = data->cx;
         ocy = data->cy;          ocy = data->cy;
Line 1050 
Line 1075 
                 window_copy_cursor_down(wme, 0);                  window_copy_cursor_down(wme, 0);
         window_copy_cursor_end_of_line(wme);          window_copy_cursor_end_of_line(wme);
   
         if (s != NULL)          if (s != NULL) {
                 window_copy_copy_selection(wme, prefix);                  if (pipe)
                           window_copy_copy_pipe(wme, s, prefix, command);
                   else
                           window_copy_copy_selection(wme, prefix);
   
                   if (cancel) {
                           free(prefix);
                           free(command);
                           return (WINDOW_COPY_CMD_CANCEL);
                   }
           }
         window_copy_clear_selection(wme);          window_copy_clear_selection(wme);
   
         data->cx = ocx;          data->cx = ocx;
Line 1059 
Line 1094 
         data->oy = ooy;          data->oy = ooy;
   
         free(prefix);          free(prefix);
           free(command);
         return (WINDOW_COPY_CMD_REDRAW);          return (WINDOW_COPY_CMD_REDRAW);
 }  }
   
 static enum window_copy_cmd_action  static enum window_copy_cmd_action
   window_copy_cmd_copy_line(struct window_copy_cmd_state *cs)
   {
           return (window_copy_do_copy_line(cs, 0, 0));
   }
   
   static enum window_copy_cmd_action
 window_copy_cmd_copy_line_and_cancel(struct window_copy_cmd_state *cs)  window_copy_cmd_copy_line_and_cancel(struct window_copy_cmd_state *cs)
 {  {
         struct window_mode_entry        *wme = cs->wme;          return (window_copy_do_copy_line(cs, 0, 1));
         struct client                   *c = cs->c;  }
         struct session                  *s = cs->s;  
         struct winlink                  *wl = cs->wl;  
         struct window_pane              *wp = wme->wp;  
         struct window_copy_mode_data    *data = wme->data;  
         u_int                            np = wme->prefix;  
         char                            *prefix = NULL;  
   
         if (cs->args->argc == 2)  static enum window_copy_cmd_action
                 prefix = format_single(NULL, cs->args->argv[1], c, s, wl, wp);  window_copy_cmd_copy_pipe_line(struct window_copy_cmd_state *cs)
   {
           return (window_copy_do_copy_line(cs, 1, 0));
   }
   
         data->selflag = SEL_CHAR;  static enum window_copy_cmd_action
         window_copy_cursor_start_of_line(wme);  window_copy_cmd_copy_pipe_line_and_cancel(struct window_copy_cmd_state *cs)
         window_copy_start_selection(wme);  {
         for (; np > 1; np--)          return (window_copy_do_copy_line(cs, 1, 1));
                 window_copy_cursor_down(wme, 0);  
         window_copy_cursor_end_of_line(wme);  
   
         if (s != NULL) {  
                 window_copy_copy_selection(wme, prefix);  
   
                 free(prefix);  
                 return (WINDOW_COPY_CMD_CANCEL);  
         }  
   
         free(prefix);  
         return (WINDOW_COPY_CMD_REDRAW);  
 }  }
   
 static enum window_copy_cmd_action  static enum window_copy_cmd_action
Line 2308 
Line 2335 
   
         screen_free(data->backing);          screen_free(data->backing);
         free(data->backing);          free(data->backing);
         data->backing = window_copy_clone_screen(&wp->base, &data->screen, NULL,          data->backing = window_copy_clone_screen(&wp->base, &data->screen, NULL,   NULL, wme->swp != wme->wp);
             NULL, wme->swp != wme->wp);  
   
         window_copy_size_changed(wme);          window_copy_size_changed(wme);
         return (WINDOW_COPY_CMD_REDRAW);          return (WINDOW_COPY_CMD_REDRAW);
Line 2322 
Line 2348 
         enum window_copy_cmd_clear        clear;          enum window_copy_cmd_clear        clear;
         enum window_copy_cmd_action     (*f)(struct window_copy_cmd_state *);          enum window_copy_cmd_action     (*f)(struct window_copy_cmd_state *);
 } window_copy_cmd_table[] = {  } window_copy_cmd_table[] = {
         { "append-selection", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "append-selection",
           window_copy_cmd_append_selection },            .minargs = 0,
         { "append-selection-and-cancel", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_append_selection_and_cancel },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "back-to-indentation", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_append_selection
           window_copy_cmd_back_to_indentation },          },
         { "begin-selection", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "append-selection-and-cancel",
           window_copy_cmd_begin_selection },            .minargs = 0,
         { "bottom-line", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 0,
           window_copy_cmd_bottom_line },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "cancel", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_append_selection_and_cancel
           window_copy_cmd_cancel },          },
         { "clear-selection", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "back-to-indentation",
           window_copy_cmd_clear_selection },            .minargs = 0,
         { "copy-end-of-line", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_copy_end_of_line },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "copy-end-of-line-and-cancel", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_back_to_indentation
           window_copy_cmd_copy_end_of_line_and_cancel },          },
         { "copy-line", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "begin-selection",
           window_copy_cmd_copy_line },            .minargs = 0,
         { "copy-line-and-cancel", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_copy_line_and_cancel },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "copy-pipe-no-clear", 0, 2, WINDOW_COPY_CMD_CLEAR_NEVER,            .f = window_copy_cmd_begin_selection
           window_copy_cmd_copy_pipe_no_clear },          },
         { "copy-pipe", 0, 2, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "bottom-line",
           window_copy_cmd_copy_pipe },            .minargs = 0,
         { "copy-pipe-and-cancel", 0, 2, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_copy_pipe_and_cancel },            .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
         { "copy-selection-no-clear", 0, 1, WINDOW_COPY_CMD_CLEAR_NEVER,            .f = window_copy_cmd_bottom_line
           window_copy_cmd_copy_selection_no_clear },          },
         { "copy-selection", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "cancel",
           window_copy_cmd_copy_selection },            .minargs = 0,
         { "copy-selection-and-cancel", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_copy_selection_and_cancel },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "cursor-down", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_cancel
           window_copy_cmd_cursor_down },          },
         { "cursor-down-and-cancel", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "clear-selection",
           window_copy_cmd_cursor_down_and_cancel },            .minargs = 0,
         { "cursor-left", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 0,
           window_copy_cmd_cursor_left },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "cursor-right", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_clear_selection
           window_copy_cmd_cursor_right },          },
         { "cursor-up", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-end-of-line",
           window_copy_cmd_cursor_up },            .minargs = 0,
         { "end-of-line", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 1,
           window_copy_cmd_end_of_line },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "goto-line", 1, 1, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_end_of_line
           window_copy_cmd_goto_line },          },
         { "halfpage-down", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-end-of-line-and-cancel",
           window_copy_cmd_halfpage_down },            .minargs = 0,
         { "halfpage-down-and-cancel", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 1,
           window_copy_cmd_halfpage_down_and_cancel },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "halfpage-up", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_end_of_line_and_cancel
           window_copy_cmd_halfpage_up },          },
         { "history-bottom", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-pipe-end-of-line",
           window_copy_cmd_history_bottom },            .minargs = 0,
         { "history-top", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 2,
           window_copy_cmd_history_top },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "jump-again", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_pipe_end_of_line
           window_copy_cmd_jump_again },          },
         { "jump-backward", 1, 1, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-pipe-end-of-line-and-cancel",
           window_copy_cmd_jump_backward },            .minargs = 0,
         { "jump-forward", 1, 1, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 2,
           window_copy_cmd_jump_forward },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "jump-reverse", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_pipe_end_of_line_and_cancel
           window_copy_cmd_jump_reverse },          },
         { "jump-to-backward", 1, 1, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-line",
           window_copy_cmd_jump_to_backward },            .minargs = 0,
         { "jump-to-forward", 1, 1, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 1,
           window_copy_cmd_jump_to_forward },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "jump-to-mark", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_copy_line
           window_copy_cmd_jump_to_mark },          },
         { "middle-line", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-line-and-cancel",
           window_copy_cmd_middle_line },            .minargs = 0,
         { "next-matching-bracket", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 1,
           window_copy_cmd_next_matching_bracket },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "next-paragraph", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_line_and_cancel
           window_copy_cmd_next_paragraph },          },
         { "next-space", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-pipe-line",
           window_copy_cmd_next_space },            .minargs = 0,
         { "next-space-end", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 2,
           window_copy_cmd_next_space_end },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "next-word", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_pipe_line
           window_copy_cmd_next_word },          },
         { "next-word-end", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-pipe-line-and-cancel",
           window_copy_cmd_next_word_end },            .minargs = 0,
         { "other-end", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 2,
           window_copy_cmd_other_end },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "page-down", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_pipe_line_and_cancel
           window_copy_cmd_page_down },          },
         { "page-down-and-cancel", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "copy-pipe-no-clear",
           window_copy_cmd_page_down_and_cancel },            .minargs = 0,
         { "page-up", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 2,
           window_copy_cmd_page_up },            .clear = WINDOW_COPY_CMD_CLEAR_NEVER,
         { "pipe-no-clear", 0, 1, WINDOW_COPY_CMD_CLEAR_NEVER,            .f = window_copy_cmd_copy_pipe_no_clear
           window_copy_cmd_pipe_no_clear },          },
         { "pipe", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "copy-pipe",
           window_copy_cmd_pipe },            .minargs = 0,
         { "pipe-and-cancel", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 2,
           window_copy_cmd_pipe_and_cancel },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "previous-matching-bracket", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_copy_pipe
           window_copy_cmd_previous_matching_bracket },          },
         { "previous-paragraph", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-pipe-and-cancel",
           window_copy_cmd_previous_paragraph },            .minargs = 0,
         { "previous-space", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 2,
           window_copy_cmd_previous_space },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "previous-word", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_copy_pipe_and_cancel
           window_copy_cmd_previous_word },          },
         { "rectangle-on", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "copy-selection-no-clear",
           window_copy_cmd_rectangle_on },            .minargs = 0,
         { "rectangle-off", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 1,
           window_copy_cmd_rectangle_off },            .clear = WINDOW_COPY_CMD_CLEAR_NEVER,
         { "rectangle-toggle", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_copy_selection_no_clear
           window_copy_cmd_rectangle_toggle },          },
         { "refresh-from-pane", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "copy-selection",
           window_copy_cmd_refresh_from_pane },            .minargs = 0,
         { "scroll-down", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .maxargs = 1,
           window_copy_cmd_scroll_down },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "scroll-down-and-cancel", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_copy_selection
           window_copy_cmd_scroll_down_and_cancel },          },
         { "scroll-up", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "copy-selection-and-cancel",
           window_copy_cmd_scroll_up },            .minargs = 0,
         { "search-again", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 1,
           window_copy_cmd_search_again },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "search-backward", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_copy_selection_and_cancel
           window_copy_cmd_search_backward },          },
         { "search-backward-text", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "cursor-down",
           window_copy_cmd_search_backward_text },            .minargs = 0,
         { "search-backward-incremental", 1, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_search_backward_incremental },            .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
         { "search-forward", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_cursor_down
           window_copy_cmd_search_forward },          },
         { "search-forward-text", 0, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "cursor-down-and-cancel",
           window_copy_cmd_search_forward_text },            .minargs = 0,
         { "search-forward-incremental", 1, 1, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_search_forward_incremental },            .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
         { "search-reverse", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_cursor_down_and_cancel
           window_copy_cmd_search_reverse },          },
         { "select-line", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,          { .command = "cursor-left",
           window_copy_cmd_select_line },            .minargs = 0,
         { "select-word", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_select_word },            .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
         { "set-mark", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .f = window_copy_cmd_cursor_left
           window_copy_cmd_set_mark },          },
         { "start-of-line", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,          { .command = "cursor-right",
           window_copy_cmd_start_of_line },            .minargs = 0,
         { "stop-selection", 0, 0, WINDOW_COPY_CMD_CLEAR_ALWAYS,            .maxargs = 0,
           window_copy_cmd_stop_selection },            .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
         { "top-line", 0, 0, WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,            .f = window_copy_cmd_cursor_right
           window_copy_cmd_top_line },          },
           { .command = "cursor-up",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_cursor_up
           },
           { .command = "end-of-line",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_end_of_line
           },
           { .command = "goto-line",
             .minargs = 1,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_goto_line
           },
           { .command = "halfpage-down",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_halfpage_down
           },
           { .command = "halfpage-down-and-cancel",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_halfpage_down_and_cancel
           },
           { .command = "halfpage-up",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_halfpage_up
           },
           { .command = "history-bottom",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_history_bottom
           },
           { .command = "history-top",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_history_top
           },
           { .command = "jump-again",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_jump_again
           },
           { .command = "jump-backward",
             .minargs = 1,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_jump_backward
           },
           { .command = "jump-forward",
             .minargs = 1,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_jump_forward
           },
           { .command = "jump-reverse",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_jump_reverse
           },
           { .command = "jump-to-backward",
             .minargs = 1,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_jump_to_backward
           },
           { .command = "jump-to-forward",
             .minargs = 1,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_jump_to_forward
           },
           { .command = "jump-to-mark",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_jump_to_mark
           },
           { .command = "middle-line",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_middle_line
           },
           { .command = "next-matching-bracket",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_next_matching_bracket
           },
           { .command = "next-paragraph",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_next_paragraph
           },
           { .command = "next-space",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_next_space
           },
           { .command = "next-space-end",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_next_space_end
           },
           { .command = "next-word",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_next_word
           },
           { .command = "next-word-end",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_next_word_end
           },
           { .command = "other-end",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_other_end
           },
           { .command = "page-down",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_page_down
           },
           { .command = "page-down-and-cancel",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_page_down_and_cancel
           },
           { .command = "page-up",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_page_up
           },
           { .command = "pipe-no-clear",
             .minargs = 0,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_NEVER,
             .f = window_copy_cmd_pipe_no_clear
           },
           { .command = "pipe",
             .minargs = 0,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_pipe
           },
           { .command = "pipe-and-cancel",
             .minargs = 0,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_pipe_and_cancel
           },
           { .command = "previous-matching-bracket",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_previous_matching_bracket
           },
           { .command = "previous-paragraph",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_previous_paragraph
           },
           { .command = "previous-space",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_previous_space
           },
           { .command = "previous-word",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_previous_word
           },
           { .command = "rectangle-on",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_rectangle_on
           },
           { .command = "rectangle-off",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_rectangle_off
           },
           { .command = "rectangle-toggle",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_rectangle_toggle
           },
           { .command = "refresh-from-pane",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_refresh_from_pane
           },
           { .command = "scroll-down",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_scroll_down
           },
           { .command = "scroll-down-and-cancel",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_scroll_down_and_cancel
           },
           { .command = "scroll-up",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_scroll_up
           },
           { .command = "search-again",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_again
           },
           { .command = "search-backward",
             .minargs = 0,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_backward
           },
           { .command = "search-backward-text",
             .minargs = 0,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_backward_text
           },
           { .command = "search-backward-incremental",
             .minargs = 1,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_backward_incremental
           },
           { .command = "search-forward",
             .minargs = 0,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_forward
           },
           { .command = "search-forward-text",
             .minargs = 0,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_forward_text
           },
           { .command = "search-forward-incremental",
             .minargs = 1,
             .maxargs = 1,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_forward_incremental
           },
           { .command = "search-reverse",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_search_reverse
           },
           { .command = "select-line",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_select_line
           },
           { .command = "select-word",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_select_word
           },
           { .command = "set-mark",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_set_mark
           },
           { .command = "start-of-line",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_start_of_line
           },
           { .command = "stop-selection",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_ALWAYS,
             .f = window_copy_cmd_stop_selection
           },
           { .command = "top-line",
             .minargs = 0,
             .maxargs = 0,
             .clear = WINDOW_COPY_CMD_CLEAR_EMACS_ONLY,
             .f = window_copy_cmd_top_line
           }
 };  };
   
 static void  static void

Legend:
Removed from v.1.325  
changed lines
  Added in v.1.326