]> git.wh0rd.org Git - nano.git/commitdiff
- Fix cursor position being saved when escaping out of nanogetstr with keys like...
authorChris Allegretta <chrisa@asty.org>
Sun, 26 Jan 2003 21:01:16 +0000 (21:01 +0000)
committerChris Allegretta <chrisa@asty.org>
Sun, 26 Jan 2003 21:01:16 +0000 (21:01 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@1399 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
proto.h
winio.c

index 85a40ab7c9e374223fa57cc41b1d8c1e9262e87b..3e76ba2931fda94b14c339186c247ee0c290e6ff 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -8,6 +8,10 @@ CVS Code -
        - Fix subexpression replacement to work consistently.
          Affects search.c:replace_regexp() and 
          utils.c:strstrwrapper() (David Benbennick).
+       - Fix cursor position being saved when escaping out 
+         of nanogetstr with keys like ^Y and ^V.  New arg
+         resetpos to nanogetstr(), added static int
+         resetpos in statusq() (bug found by DLR).
 - cut.c:
   do_cut_text()
        - Fix incorrect cursor location when cutting long lines
diff --git a/proto.h b/proto.h
index f981d98e93e6b01f2271374bd5c611366130a513..645e822604ec0940b912909772bd82814e9731cc 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -425,7 +425,7 @@ int nanogetstr(int allowtabs, const char *buf, const char *def,
 #ifndef DISABLE_TABCOMP
                , int *list
 #endif
-               );
+               , int resetpos);
 void set_modified(void);
 void titlebar(const char *path);
 void bottombars(const shortcut *s);
diff --git a/winio.c b/winio.c
index 3ed476261580457a7c46e2ddcb6ba3559767763a..1f221bd9bdededc368c4a31fe0821e9f51b4d63a 100644 (file)
--- a/winio.c
+++ b/winio.c
@@ -194,7 +194,7 @@ int nanogetstr(int allowtabs, const char *buf, const char *def,
 #ifndef DISABLE_TABCOMP
                , int *list
 #endif
-               )
+               , int resetpos)
 {
     int kbinput;
     static int x = -1;
@@ -218,7 +218,7 @@ int nanogetstr(int allowtabs, const char *buf, const char *def,
        it would be past the end of the string as it is.  Otherwise,
        leave it alone.  This is so the cursor position stays at the same
        place if a prompt-changing toggle is pressed. */
-    if (x == -1 || x > xend)
+    if (x == -1 || x > xend || resetpos)
        x = xend;
 
     answer = (char *)nrealloc(answer, xend + 1);
@@ -1175,6 +1175,8 @@ int statusq(int tabs, const shortcut *s, const char *def,
 #ifndef DISABLE_TABCOMP
     int list = 0;
 #endif
+    static int resetpos = 0;   /* Do we need to scrap the cursor position 
+                                  on the statusbar? */
 
     bottombars(s);
 
@@ -1191,18 +1193,22 @@ int statusq(int tabs, const shortcut *s, const char *def,
 #ifndef DISABLE_TABCOMP
                , &list
 #endif
-               );
+               , resetpos);
     free(foo);
+    resetpos = 0;
 
     switch (ret) {
     case NANO_FIRSTLINE_KEY:
        do_first_line();
+       resetpos = 1;
        break;
     case NANO_LASTLINE_KEY:
        do_last_line();
+       resetpos = 1;
        break;
     case NANO_CANCEL_KEY:
        ret = -1;
+       resetpos = 1;
        break;
     default:
        blank_statusbar();