nano

nano with my custom patches
git clone git://bsandro.tech/nano
Log | Files | Refs | README | LICENSE

commit dd53ec2a8729cc044cf48beb54462ea6e77d0ff8
parent 48fd2cb833c1caf88afd904ae5017425c01f9bb5
Author: Robert Siemborski <rjs3@andrew.cmu.edu>
Date:   Tue,  4 Jul 2000 02:35:19 +0000

Fixed 2 FIXMEs in nano.c:
do_enter: the reset_cursor was needed. code cleaned up a bit with a comment
          explaining the situation there.
do_justify: the second edit_refresh exposed a bug in how we were updateing
            editbot when we needed to rebuild it.  This functionality has
            been moved into winio.c:fix_editbot, and all places that were
            doing so that I could find have been updated. (files.c:
            do_insertfile, nano.c: handle_sigwinch and do_justify)


git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@64 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

Diffstat:
Mfiles.c | 5+----
Mnano.c | 32+++++++++++++-------------------
Mproto.h | 1+
Mwinio.c | 9+++++++++
4 files changed, 24 insertions(+), 23 deletions(-)

diff --git a/files.c b/files.c @@ -252,10 +252,7 @@ int do_insertfile(void) set_modified(); /* Here we want to rebuild the edit window */ - for (i = 0, editbot = edittop; - i <= editwinrows - 1 - && i <= totlines - && editbot->next != NULL; editbot = editbot->next, i++); + fix_editbot(); /* If we've gone off the bottom, recenter, otherwise just redraw */ if (current->lineno > editbot->lineno) diff --git a/nano.c b/nano.c @@ -502,19 +502,24 @@ int do_enter(filestruct * inptr) current = new; align(&current->data); + /* The logic here is as follows: + * -> If we are at the bottom of the buffer, we want to recenter + * (read: rebuild) the screen and forcably move the cursor. + * -> otherwise, we want simply to redraw the screen and update + * where we think the cursor is. + */ if (current_y == editwinrows - 1) { edit_update(current); - - /* FIXME - figure out why the hell this is needed =) */ - reset_cursor(); - } else + reset_cursor(); + } else { current_y++; + edit_refresh(); + update_cursor(); + } totlines++; set_modified(); - update_cursor(); - edit_refresh(); placewewant = xplustabs(); return 1; } @@ -1018,7 +1023,6 @@ void exit_spell(char *tmpfilename, char *foo) * This is Chris' very ugly spell function. Someone please make this * better =-) */ - int do_spell(void) { #ifdef NANO_SMALL @@ -1226,11 +1230,7 @@ void handle_sigwinch(int s) #endif /* HAVE_WRESIZE */ #endif /* HAVE_NCURSES_H */ - editbot = edittop; - - for (i = 0; (i <= editwinrows - 1) && (editbot->next != NULL) - && (editbot->next != filebot); i++) - editbot = editbot->next; + fix_editbot(); if (current_y > editwinrows - 1) { edit_update(editbot); @@ -1428,17 +1428,11 @@ int do_justify(void) edit_update(current); center_cursor(); } else { - int i = 0; - - editbot = edittop; - for (i = 0; (i <= editwinrows - 1) && (editbot->next != NULL) - && (editbot->next != filebot); i++) - editbot = editbot->next; + fix_editbot(); } edit_refresh(); - edit_refresh(); /* XXX FIXME XXX */ statusbar("Justify Complete"); return 1; #else diff --git a/proto.h b/proto.h @@ -86,6 +86,7 @@ void dump_buffer_reverse(filestruct * inptr); void reset_cursor(void); void check_statblank(void); void update_line(filestruct * fileptr, int index); +void fix_editbot(void); void statusbar(char *msg, ...); void titlebar(void); void previous_line(void); diff --git a/winio.c b/winio.c @@ -1257,3 +1257,12 @@ void dump_buffer_reverse(filestruct * inptr) } #endif /* DEBUG */ } + +/* Fix editbot based on the assumption that edittop is correct */ +void fix_editbot(void) { + int i; + editbot = edittop; + for(i = 0; (i <= editwinrows - 1) && (editbot->next != NULL) + && (editbot != filebot); i++, editbot = editbot->next); +} +