]> git.wh0rd.org Git - nano.git/commitdiff
Chris goes berzerk on no sleep
authorChris Allegretta <chrisa@asty.org>
Sat, 29 Jul 2000 04:33:38 +0000 (04:33 +0000)
committerChris Allegretta <chrisa@asty.org>
Sat, 29 Jul 2000 04:33:38 +0000 (04:33 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@150 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
cut.c
files.c
move.c
nano.c
nano.h
po/nano.pot
proto.h
search.c
winio.c

index 2851242272781c2f897024a2debfecda2410a887..d19f0976d80e1bb7006a86fe05ada032d3856ce7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,4 +1,7 @@
 CVS code
+- Changed edit_update call to take arguments TOP, CENTER or BOTTOM.
+  Affects many many functions.  Removed functions edit_update_top and
+  edit_update_bot.
 - nano.c:
   splice_node()
        - New function, abstracts linking in nodes.   Fixes bug #36.
@@ -14,9 +17,17 @@ CVS code
   edit_refresh()
        - Added check for current line "running" off the screen.
          Hopefully this will not cause any recursive lockups.
+         (Who am I kidding, of course it will!)
+  edit_update()
+       - Rewritten, hopefully this will remove a lot of the
+         scrolling the cursor back and forth needlessly.
 - move.c:
   page_down()
-       - do an edit_update() at last case.
+       - do an edit_update() at last case.  Made function more like
+         Pico's version, only move down to two lines before editbot.
+  page_up()
+       - Made function more like Pico's version, only move down to two
+         lines after edittop.
 
 nano-0.9.14 - 07/27/2000
 - nano.h:
diff --git a/cut.c b/cut.c
index 4509d663074f0f9c70967bca2600ac66bb0c5e95..f3a84998361e8bb9f6db5e29d24611dfd2fb89a3 100644 (file)
--- a/cut.c
+++ b/cut.c
@@ -123,7 +123,7 @@ void cut_marked_segment(filestruct * top, int top_x, filestruct * bot,
        }
     }
      if (top->lineno < edittop->lineno)
-       edit_update(top);
+       edit_update(top, CENTER);
 }
 #endif
 
@@ -207,7 +207,7 @@ int do_cut_text(void)
        if (cuttingtoend)
            edit_refresh();
        else
-           edit_update(current);
+           edit_update(current, CENTER);
 
        return 1;
 #else
@@ -223,7 +223,7 @@ int do_cut_text(void)
            totsize--; /* get the newline */
            totlines--;
            fileptr->prev = NULL;
-           edit_update(fileage);
+           edit_update(fileage, CENTER);
            current = fileptr;
        } else {
            add_to_cutbuffer(fileptr);
@@ -355,7 +355,7 @@ int do_uncut_text(void)
 
            current = newend;
            if (i <= newend->lineno)
-               edit_update(current);
+               edit_update(current, CENTER);
        }
 
        /* If marked cut == 2, that means that we're doing a cut to end
@@ -407,7 +407,7 @@ int do_uncut_text(void)
     i = editbot->lineno;
     renumber(newbuf);
      if (i < newend->lineno)
-       edit_update(fileptr);
+       edit_update(fileptr, CENTER);
 
     dump_buffer_reverse(fileptr);
 
diff --git a/files.c b/files.c
index 3912c86c08e2343f5ea8cfab841f60a03b8115a1..92b2da21e6028cabac19543c460c0d0934a71cc7 100644 (file)
--- a/files.c
+++ b/files.c
@@ -261,7 +261,7 @@ int do_insertfile(void)
 
        /* If we've gone off the bottom, recenter, otherwise just redraw */
        if (current->lineno > editbot->lineno)
-           edit_update(current);
+           edit_update(current, CENTER);
        else
            edit_refresh();
 
diff --git a/move.c b/move.c
index f7790d0e5449a9f03c875d99ff2c822ddccf4fb5..12dcde4693c1065ce68c9a682b09ba977525a458 100644 (file)
--- a/move.c
+++ b/move.c
 void page_down_center(void)
 {
     if (editbot != filebot) {
-       edit_update(editbot->next);
+       edit_update(editbot->next, CENTER);
        center_cursor();
     } else {
        while (current != filebot)
            current = current->next;
-       edit_update(current);
+       edit_update(current, CENTER);
     }
     update_cursor();
 }
@@ -54,17 +54,22 @@ int page_down(void)
     if (current == filebot)
        return 0;
 
-    if (editbot != filebot) {
+    if (editbot != filebot || edittop == fileage) {
        current_y = 0;
-       current = editbot;
-       edit_update_top(current);
-    } else
+        current = editbot;
+
+       if (current->prev != NULL)
+           current = current->prev;
+       if (current->prev != NULL)
+           current = current->prev;
+       edit_update(current, TOP);
+    } else {
        while (current != filebot) {
            current = current->next;
            current_y++;
-
-           edit_update(current);
        }
+       edit_update(edittop, TOP);
+    }
 
     update_cursor();
     UNSET(KEEP_CUTBUFFER);
@@ -123,7 +128,7 @@ int do_down(void)
 void page_up_center(void)
 {
     if (edittop != fileage) {
-       edit_update(edittop);
+       edit_update(edittop, CENTER);
        center_cursor();
     } else
        current_y = 0;
@@ -134,6 +139,7 @@ void page_up_center(void)
 
 int page_up(void)
 {
+    filestruct *fileptr = edittop;
     wrap_reset();
     current_x = 0;
     placewewant = 0;
@@ -142,7 +148,13 @@ int page_up(void)
        return 0;
 
     current_y = 0;
-    edit_update_bot(edittop);
+    if (fileptr->next != NULL)
+       fileptr = fileptr->next;
+    if (fileptr->next != NULL)
+       fileptr = fileptr->next;
+
+    current = edittop;
+    edit_update(fileptr, BOTTOM);
     update_cursor();
 
     UNSET(KEEP_CUTBUFFER);
diff --git a/nano.c b/nano.c
index b0747150b52aea573f71c4cda33f5bc8dd420a41..af2bef766a3b5fd2ad2128d82b7594ca0b52c73d 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -545,7 +545,7 @@ int do_enter(filestruct * inptr)
      *       where we think the cursor is.
      */
     if (current_y == editwinrows - 1) {
-       edit_update(current);
+       edit_update(current, CENTER);
        reset_cursor(); 
     } else {
        current_y++;
@@ -601,7 +601,7 @@ void do_next_word(void)
     current_x = i;
     placewewant = xplustabs();
     if (current->lineno >= editbot->lineno)
-       edit_update(current);
+       edit_update(current, CENTER);
 
 }
 
@@ -859,7 +859,7 @@ void do_wrap(filestruct * inptr, char input_char)
     /* totsize++; */
 
     renumber(inptr);
-    edit_update_top(edittop);
+    edit_update(edittop, TOP);
 
 
     /* Move the cursor to the new line if appropriate. */
@@ -872,7 +872,7 @@ void do_wrap(filestruct * inptr, char input_char)
        do_right();
     }
 
-    edit_update_top(edittop);
+    edit_update(edittop, TOP);
     reset_cursor();
     edit_refresh();
 }
@@ -1113,7 +1113,7 @@ int do_spell(void)
     free_filestruct(fileage);
     global_init();
     open_file(temp, 0, 1);
-    edit_update(fileage);
+    edit_update(fileage, CENTER);
     set_modified();
     exit_spell(temp, foo);
     statusbar(_("Finished checking spelling"));
@@ -1274,7 +1274,7 @@ void handle_sigwinch(int s)
     fix_editbot();
 
     if (current_y > editwinrows - 1) {
-       edit_update(editbot);
+       edit_update(editbot, CENTER);
     }
     erase();
 
@@ -1471,7 +1471,7 @@ int do_justify(void)
 
     if ((current_y < 0) || (current_y >= editwinrows - 1)
        || (initial_y <= 0)) {
-       edit_update(current);
+       edit_update(current, CENTER);
        center_cursor();
     } else {
        fix_editbot();
@@ -1784,7 +1784,7 @@ int main(int argc, char *argv[])
     if (startline > 0)
        do_gotoline(startline);
     else
-       edit_update(fileage);
+       edit_update(fileage, CENTER);
 
 #ifdef HAVE_TABSIZE
     if (usrtabsize > 0)
diff --git a/nano.h b/nano.h
index 7fe20601023496b104e90f91316c3a68eac42e0f..3e21cc4a91aa916dc4dd20a0439fed142f6e63a9 100644 (file)
--- a/nano.h
+++ b/nano.h
@@ -233,4 +233,7 @@ know what you're doing */
 #define VIEW 1
 #define NOVIEW 0
 
+#define TOP 2
+#define CENTER 1
+#define BOTTOM 0
 #endif                             
index ebd44d6c2e15f2f68e6a59ecd8259ea141fbff57..3343a27c42a3bc9640df30d75c216711b8caaada 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-07-28 10:15-0400\n"
+"POT-Creation-Date: 2000-07-29 00:38-0400\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -344,7 +344,7 @@ msgid "Case Sens"
 msgstr ""
 
 #: global.c:282 global.c:301 global.c:311 global.c:327 global.c:331
-#: global.c:337 winio.c:1002
+#: global.c:337 winio.c:975
 msgid "Cancel"
 msgstr ""
 
@@ -758,50 +758,50 @@ msgstr ""
 msgid "Modified"
 msgstr ""
 
-#: winio.c:918
+#: winio.c:891
 #, c-format
 msgid "Moved to (%d, %d) in edit buffer\n"
 msgstr ""
 
-#: winio.c:929
+#: winio.c:902
 #, c-format
 msgid "current->data = \"%s\"\n"
 msgstr ""
 
-#: winio.c:972
+#: winio.c:945
 #, c-format
 msgid "I got \"%s\"\n"
 msgstr ""
 
-#: winio.c:997
+#: winio.c:970
 msgid "Yes"
 msgstr ""
 
-#: winio.c:999
+#: winio.c:972
 msgid "All"
 msgstr ""
 
-#: winio.c:1001
+#: winio.c:974
 msgid "No"
 msgstr ""
 
-#: winio.c:1137
+#: winio.c:1110
 #, c-format
 msgid "do_cursorpos: linepct = %f, bytepct = %f\n"
 msgstr ""
 
-#: winio.c:1141
+#: winio.c:1114
 msgid "line %d of %d (%.0f%%), character %d of %d (%.0f%%)"
 msgstr ""
 
-#: winio.c:1265
+#: winio.c:1238
 msgid "Dumping file buffer to stderr...\n"
 msgstr ""
 
-#: winio.c:1267
+#: winio.c:1240
 msgid "Dumping cutbuffer to stderr...\n"
 msgstr ""
 
-#: winio.c:1269
+#: winio.c:1242
 msgid "Dumping a buffer to stderr...\n"
 msgstr ""
diff --git a/proto.h b/proto.h
index fdaedcf7193064c2540fc3014a4a7fd506c7664e..203dddf7b6bb63347dc62b9cc4830a920362e8b7 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -80,9 +80,7 @@ void check_wrap(filestruct * inptr, char ch);
 void dump_buffer(filestruct * inptr);
 void align(char **strp);
 void edit_refresh(void);
-void edit_update(filestruct * fileptr);
-void edit_update_top(filestruct * fileptr);
-void edit_update_bot(filestruct * fileptr);
+void edit_update(filestruct * fileptr, int topmidbot);
 void update_cursor(void);
 void delete_node(filestruct * fileptr);
 void set_modified(void);
index adad3208c447017907a01ef5ca4bd0ede62f3f8c..f3f12730bd841afa184a20b4678bf4e6e2c1ebe5 100644 (file)
--- a/search.c
+++ b/search.c
@@ -157,7 +157,7 @@ filestruct *findnextstr(int quiet, filestruct * begin, char *needle)
            current_x++;
 
        if (past_editbot)
-           edit_update(current);
+           edit_update(current, CENTER);
        reset_cursor();
     } else {                   /* We're at EOF, go back to the top, once */
 
@@ -179,7 +179,7 @@ filestruct *findnextstr(int quiet, filestruct * begin, char *needle)
            for (tmp = fileptr->data; tmp != found; tmp++)
                current_x++;
 
-           edit_update(current);
+           edit_update(current, CENTER);
            reset_cursor();
 
            if (!quiet)
@@ -487,7 +487,7 @@ int do_replace(void)
     current = begin;
     current_x = beginx;
     renumber_all();
-    edit_update(current);
+    edit_update(current, CENTER);
     print_replaced(numreplaced);
     replace_abort();
     return 1;
@@ -521,7 +521,7 @@ int do_gotoline(long defline)
        if (!strcmp(answer, "$")) {
            current = filebot;
            current_x = 0;
-           edit_update(current);
+           edit_update(current, CENTER);
            goto_abort();
            return 1;
        }
@@ -539,14 +539,14 @@ int do_gotoline(long defline)
                  filebot->lineno);
        current = filebot;
        current_x = 0;
-       edit_update(current);
+       edit_update(current, CENTER);
     } else {
        for (fileptr = fileage; fileptr != NULL && i < line; i++)
            fileptr = fileptr->next;
 
        current = fileptr;
        current_x = 0;
-       edit_update(current);
+       edit_update(current, CENTER);
     }
 
     goto_abort();
diff --git a/winio.c b/winio.c
index d02fdbca55404717ee62864a4b3ac5f2ee26a045..1270733e78ea51d39139d0cf179689b37e0c082f 100644 (file)
--- a/winio.c
+++ b/winio.c
@@ -48,7 +48,7 @@ int do_first_line(void)
     current = fileage;
     placewewant = 0;
     current_x = 0;
-    edit_update(current);
+    edit_update(current, CENTER);
     return 1;
 }
 
@@ -57,7 +57,7 @@ int do_last_line(void)
     current = filebot;
     placewewant = 0;
     current_x = 0;
-    edit_update(current);
+    edit_update(current, CENTER);
     return 1;
 }
 
@@ -839,8 +839,8 @@ void edit_refresh(void)
        temp = temp->next;
        lines++;
     }
-    if (!currentcheck) /* Then current has run off the screen... */
-/*     edit_update(current) */ ;
+    if (!currentcheck) /* Then current has run off the screen... */ 
+       edit_update(current, CENTER);   
 
     if (lines <= editwinrows - 1)
        while (lines <= editwinrows - 1) {
@@ -857,7 +857,7 @@ void edit_refresh(void)
  * Nice generic routine to update the edit buffer given a pointer to the
  * file struct =) 
  */
-void edit_update(filestruct * fileptr)
+void edit_update(filestruct * fileptr, int topmidbot)
 {
     int i = 0;
     filestruct *temp;
@@ -866,10 +866,14 @@ void edit_update(filestruct * fileptr)
        return;
 
     temp = fileptr;
-    while (i <= editwinrows / 2 && temp->prev != NULL) {
-       i++;
-       temp = temp->prev;
-    }
+    if (topmidbot == 2)
+       ;
+    else if (topmidbot == 0)
+       for (i = 0; i <= editwinrows - 1 && temp->prev != NULL; i++)
+           temp = temp->prev;
+    else
+       for (i = 0; i <= editwinrows / 2 && temp->prev != NULL; i++)
+           temp = temp->prev;
 
     edittop = temp;
     fix_editbot();
@@ -877,37 +881,6 @@ void edit_update(filestruct * fileptr)
     edit_refresh();
 }
 
-/* Now we want to update the screen using this struct as the top of the edit buffer */
-void edit_update_top(filestruct * fileptr)
-{
-    int i;
-    filestruct *temp = fileptr;
-
-    if (fileptr == NULL)
-       return;
-
-    i = 0;
-    while (i <= editwinrows / 2 && temp->next != NULL) {
-       i++;
-       temp = temp->next;
-    }
-    edit_update(temp);
-}
-
-/* And also for the bottom... */
-void edit_update_bot(filestruct * fileptr)
-{
-    int i;
-    filestruct *temp = fileptr;
-
-    i = 0;
-    while (i <= editwinrows / 2 - 1 && temp->prev != NULL) {
-       i++;
-       temp = temp->prev;
-    }
-    edit_update(temp);
-}
-
 /* This function updates current based on where current_y is, reset_cursor 
    does the opposite */
 void update_cursor(void)