]> git.wh0rd.org Git - nano.git/commitdiff
Letting a toggle not break a series of ^Ks.
authorBenno Schulenberg <bensberg@justemail.net>
Fri, 13 Jun 2014 12:28:33 +0000 (12:28 +0000)
committerBenno Schulenberg <bensberg@justemail.net>
Fri, 13 Jun 2014 12:28:33 +0000 (12:28 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@4962 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/nano.c

index f3caf368aa10b759b7fab1c697e879d0663ce7cf..783e868dc0223f0c49bc8204da82262dbcb97fab 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,7 @@
        (result == 0) should break a series of ^Ks.
        * src/nano.c (do_mouse): Clicking on the titlebar or the statusbar
        should not break a series of ^Ks, thus result must not be zero.
+       * src/nano.c (do_input): A toggle should not break a series of ^Ks.
 
 2014-06-11  Benno Schulenberg  <bensberg@justemail.net>
        * src/winio.c (get_mouseinput): Produce the correct return value for
index 11948b700742c0cc4d24e99296b1bdd1069b5791..9c0f00d2732983f6146e05e6d9cdac2b42ec5336 100644 (file)
@@ -1577,8 +1577,8 @@ int do_input(bool *meta_key, bool *func_key, bool allow_funcs)
        /* The input buffer. */
     static size_t kbinput_len = 0;
        /* The length of the input buffer. */
-    bool cut_copy = FALSE;
-       /* Are we cutting or copying text? */
+    bool preserve = FALSE;
+       /* Preserve the contents of the cutbuffer? */
     const sc *s;
     bool have_shortcut;
 
@@ -1678,7 +1678,7 @@ int do_input(bool *meta_key, bool *func_key, bool allow_funcs)
                || s->scfunc == do_copy_text || s->scfunc == do_cut_till_end
 #endif
                )
-               cut_copy = TRUE;
+               preserve = TRUE;
 
            if (s->scfunc != 0) {
                const subnfunc *f = sctofunc((sc *) s);
@@ -1686,9 +1686,10 @@ int do_input(bool *meta_key, bool *func_key, bool allow_funcs)
                    print_view_warning();
                else {
 #ifndef NANO_TINY
-                   if (s->scfunc == do_toggle_void)
+                   if (s->scfunc == do_toggle_void) {
                        do_toggle(s->toggle);
-                   else
+                       preserve = TRUE;
+                   } else
 #endif
                    {
                        /* Execute the function of the shortcut. */
@@ -1711,9 +1712,9 @@ int do_input(bool *meta_key, bool *func_key, bool allow_funcs)
        }
     }
 
-    /* If we aren't cutting or copying text, blow away the text in the
-     * cutbuffer upon the next cutting action. */
-    if (!cut_copy)
+    /* If we aren't cutting or copying text, and the key wasn't a toggle,
+     * blow away the text in the cutbuffer upon the next cutting action. */
+    if (!preserve)
        cutbuffer_reset();
 
     return input;