[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.75 and 1.76

version 1.75, 2011/11/15 23:24:04 version 1.76, 2011/12/04 16:18:01
Line 67 
Line 67 
 void    window_copy_cursor_down(struct window_pane *, int);  void    window_copy_cursor_down(struct window_pane *, int);
 void    window_copy_cursor_jump(struct window_pane *);  void    window_copy_cursor_jump(struct window_pane *);
 void    window_copy_cursor_jump_back(struct window_pane *);  void    window_copy_cursor_jump_back(struct window_pane *);
   void    window_copy_cursor_jump_to(struct window_pane *);
   void    window_copy_cursor_jump_to_back(struct window_pane *);
 void    window_copy_cursor_next_word(struct window_pane *, const char *);  void    window_copy_cursor_next_word(struct window_pane *, const char *);
 void    window_copy_cursor_next_word_end(struct window_pane *, const char *);  void    window_copy_cursor_next_word_end(struct window_pane *, const char *);
 void    window_copy_cursor_previous_word(struct window_pane *, const char *);  void    window_copy_cursor_previous_word(struct window_pane *, const char *);
Line 90 
Line 92 
         WINDOW_COPY_SEARCHDOWN,          WINDOW_COPY_SEARCHDOWN,
         WINDOW_COPY_JUMPFORWARD,          WINDOW_COPY_JUMPFORWARD,
         WINDOW_COPY_JUMPBACK,          WINDOW_COPY_JUMPBACK,
           WINDOW_COPY_JUMPTOFORWARD,
           WINDOW_COPY_JUMPTOBACK,
         WINDOW_COPY_GOTOLINE,          WINDOW_COPY_GOTOLINE,
 };  };
   
Line 132 
Line 136 
   
         enum window_copy_input_type inputtype;          enum window_copy_input_type inputtype;
         const char     *inputprompt;          const char     *inputprompt;
         char           *inputstr;          char           *inputstr;
   
         int             numprefix;          int             numprefix;
   
Line 367 
Line 371 
                 np = 1;                  np = 1;
   
         if (data->inputtype == WINDOW_COPY_JUMPFORWARD ||          if (data->inputtype == WINDOW_COPY_JUMPFORWARD ||
             data->inputtype == WINDOW_COPY_JUMPBACK) {              data->inputtype == WINDOW_COPY_JUMPBACK ||
               data->inputtype == WINDOW_COPY_JUMPTOFORWARD ||
               data->inputtype == WINDOW_COPY_JUMPTOBACK) {
                 /* Ignore keys with modifiers. */                  /* Ignore keys with modifiers. */
                 if ((key & KEYC_MASK_MOD) == 0) {                  if ((key & KEYC_MASK_MOD) == 0) {
                         data->jumpchar = key;                          data->jumpchar = key;
                         if (data->inputtype == WINDOW_COPY_JUMPFORWARD) {                          if (data->inputtype == WINDOW_COPY_JUMPFORWARD) {
                                 for (; np != 0; np--)                                  for (; np != 0; np--)
                                         window_copy_cursor_jump(wp);                                          window_copy_cursor_jump(wp);
                         }  else {                          } else if (data->inputtype == WINDOW_COPY_JUMPBACK) {
                                 for (; np != 0; np--)                                  for (; np != 0; np--)
                                         window_copy_cursor_jump_back(wp);                                          window_copy_cursor_jump_back(wp);
                           } else if (data->inputtype == WINDOW_COPY_JUMPTOFORWARD) {
                                   for (; np != 0; np--)
                                           window_copy_cursor_jump_to(wp);
                           } else if (data->inputtype == WINDOW_COPY_JUMPTOBACK) {
                                   for (; np != 0; np--)
                                           window_copy_cursor_jump_to_back(wp);
                         }                          }
                 }                  }
                 data->jumptype = data->inputtype;                  data->jumptype = data->inputtype;
Line 581 
Line 593 
                 } else if (data->jumptype == WINDOW_COPY_JUMPBACK) {                  } else if (data->jumptype == WINDOW_COPY_JUMPBACK) {
                         for (; np != 0; np--)                          for (; np != 0; np--)
                                 window_copy_cursor_jump_back(wp);                                  window_copy_cursor_jump_back(wp);
                   } else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) {
                           for (; np != 0; np--)
                                   window_copy_cursor_jump_to(wp);
                   } else if (data->jumptype == WINDOW_COPY_JUMPTOBACK) {
                           for (; np != 0; np--)
                                   window_copy_cursor_jump_to_back(wp);
                 }                  }
                 break;                  break;
         case MODEKEYCOPY_JUMPREVERSE:          case MODEKEYCOPY_JUMPREVERSE:
Line 590 
Line 608 
                 } else if (data->jumptype == WINDOW_COPY_JUMPBACK) {                  } else if (data->jumptype == WINDOW_COPY_JUMPBACK) {
                         for (; np != 0; np--)                          for (; np != 0; np--)
                                 window_copy_cursor_jump(wp);                                  window_copy_cursor_jump(wp);
                   } else if (data->jumptype == WINDOW_COPY_JUMPTOFORWARD) {
                           for (; np != 0; np--)
                                   window_copy_cursor_jump_to_back(wp);
                   } else if (data->jumptype == WINDOW_COPY_JUMPTOBACK) {
                           for (; np != 0; np--)
                                   window_copy_cursor_jump_to(wp);
                 }                  }
                 break;                  break;
         case MODEKEYCOPY_JUMPBACK:          case MODEKEYCOPY_JUMPBACK:
Line 598 
Line 622 
                 *data->inputstr = '\0';                  *data->inputstr = '\0';
                 window_copy_redraw_lines(wp, screen_size_y(s) - 1, 1);                  window_copy_redraw_lines(wp, screen_size_y(s) - 1, 1);
                 return; /* skip numprefix reset */                  return; /* skip numprefix reset */
           case MODEKEYCOPY_JUMPTO:
                   data->inputtype = WINDOW_COPY_JUMPTOFORWARD;
                   data->inputprompt = "Jump To";
                   *data->inputstr = '\0';
                   window_copy_redraw_lines(wp, screen_size_y(s) - 1, 1);
                   return; /* skip numprefix reset */
           case MODEKEYCOPY_JUMPTOBACK:
                   data->inputtype = WINDOW_COPY_JUMPTOBACK;
                   data->inputprompt = "Jump To Back";
                   *data->inputstr = '\0';
                   window_copy_redraw_lines(wp, screen_size_y(s) - 1, 1);
                   return; /* skip numprefix reset */
         case MODEKEYCOPY_SEARCHUP:          case MODEKEYCOPY_SEARCHUP:
                 data->inputtype = WINDOW_COPY_SEARCHUP;                  data->inputtype = WINDOW_COPY_SEARCHUP;
                 data->inputprompt = "Search Up";                  data->inputprompt = "Search Up";
Line 613 
Line 649 
                 case WINDOW_COPY_GOTOLINE:                  case WINDOW_COPY_GOTOLINE:
                 case WINDOW_COPY_JUMPFORWARD:                  case WINDOW_COPY_JUMPFORWARD:
                 case WINDOW_COPY_JUMPBACK:                  case WINDOW_COPY_JUMPBACK:
                   case WINDOW_COPY_JUMPTOFORWARD:
                   case WINDOW_COPY_JUMPTOBACK:
                 case WINDOW_COPY_NUMERICPREFIX:                  case WINDOW_COPY_NUMERICPREFIX:
                         break;                          break;
                 case WINDOW_COPY_SEARCHUP:                  case WINDOW_COPY_SEARCHUP:
Line 719 
Line 757 
                 case WINDOW_COPY_OFF:                  case WINDOW_COPY_OFF:
                 case WINDOW_COPY_JUMPFORWARD:                  case WINDOW_COPY_JUMPFORWARD:
                 case WINDOW_COPY_JUMPBACK:                  case WINDOW_COPY_JUMPBACK:
                   case WINDOW_COPY_JUMPTOFORWARD:
                   case WINDOW_COPY_JUMPTOBACK:
                 case WINDOW_COPY_NUMERICPREFIX:                  case WINDOW_COPY_NUMERICPREFIX:
                         break;                          break;
                 case WINDOW_COPY_SEARCHUP:                  case WINDOW_COPY_SEARCHUP:
Line 1702 
Line 1742 
                     && gc->data == data->jumpchar) {                      && gc->data == data->jumpchar) {
   
                         window_copy_update_cursor(wp, px, data->cy);                          window_copy_update_cursor(wp, px, data->cy);
                           if (window_copy_update_selection(wp))
                                   window_copy_redraw_lines(wp, data->cy, 1);
                           return;
                   }
                   if (px == 0)
                           break;
                   px--;
           }
   }
   
   void
   window_copy_cursor_jump_to(struct window_pane *wp)
   {
           struct window_copy_mode_data    *data = wp->modedata;
           struct screen                   *back_s = data->backing;
           const struct grid_cell          *gc;
           u_int                            px, py, xx;
   
           px = data->cx + 1;
           py = screen_hsize(back_s) + data->cy - data->oy;
           xx = window_copy_find_length(wp, py);
   
           while (px < xx) {
                   gc = grid_peek_cell(back_s->grid, px, py);
                   if ((gc->flags & (GRID_FLAG_PADDING|GRID_FLAG_UTF8)) == 0
                       && gc->data == data->jumpchar) {
   
                           window_copy_update_cursor(wp, px - 1, data->cy);
                           if (window_copy_update_selection(wp))
                                   window_copy_redraw_lines(wp, data->cy, 1);
                           return;
                   }
                   px++;
           }
   }
   
   void
   window_copy_cursor_jump_to_back(struct window_pane *wp)
   {
           struct window_copy_mode_data    *data = wp->modedata;
           struct screen                   *back_s = data->backing;
           const struct grid_cell          *gc;
           u_int                            px, py;
   
           px = data->cx;
           py = screen_hsize(back_s) + data->cy - data->oy;
   
           if (px > 0)
                   px--;
   
           for (;;) {
                   gc = grid_peek_cell(back_s->grid, px, py);
                   if ((gc->flags & (GRID_FLAG_PADDING|GRID_FLAG_UTF8)) == 0
                       && gc->data == data->jumpchar) {
   
                           window_copy_update_cursor(wp, px + 1, data->cy);
                         if (window_copy_update_selection(wp))                          if (window_copy_update_selection(wp))
                                 window_copy_redraw_lines(wp, data->cy, 1);                                  window_copy_redraw_lines(wp, data->cy, 1);
                         return;                          return;

Legend:
Removed from v.1.75  
changed lines
  Added in v.1.76