Revision: 2626
          http://tmux.svn.sourceforge.net/tmux/?rev=2626&view=rev
Author:   tcunha
Date:     2011-10-31 13:54:28 +0000 (Mon, 31 Oct 2011)
Log Message:
-----------
Sync OpenBSD patchset 971:

When copying, make repeat count indicate buffer to replace if used.

Modified Paths:
--------------
    trunk/window-copy.c

Modified: trunk/window-copy.c
===================================================================
--- trunk/window-copy.c 2011-10-27 23:00:45 UTC (rev 2625)
+++ trunk/window-copy.c 2011-10-31 13:54:28 UTC (rev 2626)
@@ -52,7 +52,7 @@
 void   window_copy_update_cursor(struct window_pane *, u_int, u_int);
 void   window_copy_start_selection(struct window_pane *);
 int    window_copy_update_selection(struct window_pane *);
-void   window_copy_copy_selection(struct window_pane *);
+void   window_copy_copy_selection(struct window_pane *, int);
 void   window_copy_clear_selection(struct window_pane *);
 void   window_copy_copy_line(
            struct window_pane *, char **, size_t *, u_int, u_int, u_int);
@@ -134,7 +134,7 @@
        const char     *inputprompt;
        char           *inputstr;
 
-       u_int           numprefix;
+       int             numprefix;
 
        enum window_copy_input_type searchtype;
        char           *searchstr;
@@ -165,7 +165,7 @@
        data->inputtype = WINDOW_COPY_OFF;
        data->inputprompt = NULL;
        data->inputstr = xstrdup("");
-       data->numprefix = 0;
+       data->numprefix = -1;
 
        data->searchtype = WINDOW_COPY_OFF;
        data->searchstr = NULL;
@@ -358,12 +358,12 @@
        const char                      *word_separators;
        struct window_copy_mode_data    *data = wp->modedata;
        struct screen                   *s = &data->screen;
-       u_int                            n, np;
-       int                              keys;
+       u_int                            n;
+       int                              np, keys;
        enum mode_key_cmd                cmd;
 
        np = data->numprefix;
-       if (np == 0)
+       if (np <= 0)
                np = 1;
 
        if (data->inputtype == WINDOW_COPY_JUMPFORWARD ||
@@ -513,7 +513,7 @@
                if (sess != NULL &&
                    (cmd == MODEKEYCOPY_COPYLINE ||
                    cmd == MODEKEYCOPY_COPYENDOFLINE)) {
-                       window_copy_copy_selection(wp);
+                       window_copy_copy_selection(wp, -1);
                        window_pane_reset_mode(wp);
                        return;
                }
@@ -524,7 +524,7 @@
                break;
        case MODEKEYCOPY_COPYSELECTION:
                if (sess != NULL) {
-                       window_copy_copy_selection(wp);
+                       window_copy_copy_selection(wp, data->numprefix);
                        window_pane_reset_mode(wp);
                        return;
                }
@@ -664,7 +664,7 @@
                break;
        }
 
-       data->numprefix = 0;
+       data->numprefix = -1;
        return;
 
 input_on:
@@ -696,11 +696,11 @@
        struct window_copy_mode_data    *data = wp->modedata;
        struct screen                   *s = &data->screen;
        size_t                           inputlen;
-       u_int                            np;
+       int                              np;
 
        switch (mode_key_lookup(&data->mdata, key)) {
        case MODEKEYEDIT_CANCEL:
-               data->numprefix = 0;
+               data->numprefix = -1;
                return (-1);
        case MODEKEYEDIT_BACKSPACE:
                inputlen = strlen(data->inputstr);
@@ -712,7 +712,7 @@
                break;
        case MODEKEYEDIT_ENTER:
                np = data->numprefix;
-               if (np == 0)
+               if (np <= 0)
                        np = 1;
 
                switch (data->inputtype) {
@@ -738,7 +738,7 @@
                        *data->inputstr = '\0';
                        break;
                }
-               data->numprefix = 0;
+               data->numprefix = -1;
                return (1);
        case MODEKEY_OTHER:
                if (key < 32 || key > 126)
@@ -767,7 +767,7 @@
        if (key < '0' || key > '9')
                return 1;
 
-       if (data->numprefix >= 100)     /* no more than three digits */
+       if (data->numprefix >= 100)     /* no more than three digits */
                return 0;
        data->numprefix = data->numprefix * 10 + key - '0';
 
@@ -834,7 +834,7 @@
        s->mode &= ~MODE_MOUSE_BUTTON;
        s->mode |= MODE_MOUSE_STANDARD;
        if (sess != NULL) {
-               window_copy_copy_selection(wp);
+               window_copy_copy_selection(wp, -1);
                window_pane_reset_mode(wp);
        }
 }
@@ -1235,7 +1235,7 @@
 }
 
 void
-window_copy_copy_selection(struct window_pane *wp)
+window_copy_copy_selection(struct window_pane *wp, int idx)
 {
        struct window_copy_mode_data    *data = wp->modedata;
        struct screen                   *s = &data->screen;
@@ -1315,7 +1315,7 @@
        } else {
                if (keys == MODEKEY_EMACS)
                        lastex = ex;
-               else    
+               else
                        lastex = ex + 1;
                restex = xx;
                firstsx = sx;
@@ -1347,8 +1347,11 @@
                screen_write_setselection(&wp->ictx.ctx, buf, off);
 
        /* Add the buffer to the stack. */
-       limit = options_get_number(&global_options, "buffer-limit");
-       paste_add(&global_buffers, buf, off, limit);
+       if (idx == -1) {
+               limit = options_get_number(&global_options, "buffer-limit");
+               paste_add(&global_buffers, buf, off, limit);
+       } else
+               paste_replace(&global_buffers, idx, buf, off);
 }
 
 void

This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.


------------------------------------------------------------------------------
Get your Android app more play: Bring it to the BlackBerry PlayBook 
in minutes. BlackBerry App World&#153; now supports Android&#153; Apps 
for the BlackBerry&reg; PlayBook&#153;. Discover just how easy and simple 
it is! http://p.sf.net/sfu/android-dev2dev
_______________________________________________
tmux-cvs mailing list
tmux-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/tmux-cvs

Reply via email to