]> git.wh0rd.org Git - nano.git/commitdiff
Rocco fixes
authorChris Allegretta <chrisa@asty.org>
Tue, 5 Dec 2000 11:36:41 +0000 (11:36 +0000)
committerChris Allegretta <chrisa@asty.org>
Tue, 5 Dec 2000 11:36:41 +0000 (11:36 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@385 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
files.c
search.c
winio.c

index 8e8e366226679e6424461727ccf79d4b863a67d9..c91865c7bd24f7283091f122b07c9c63f7d8a120 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -10,6 +10,11 @@ CVS code -
 - winio.c:
   edit_add()
        - Off by one display error (fix by Rocco Corsi).
+  do_replace_highlight()
+       - New code to handle being past COLS (Roco Corsi).
+       - Moved from search.c, as it's definitely a winio function now =)
+  update_line()
+       - More '$' display fixes (Rocco Corsi).
 
 nano 0.9.22 - 12/02/2000
 - General
diff --git a/files.c b/files.c
index c0299e4060544ce6db580767bb7d05c09bca3516..39f159de72bb61f4cd8f9d0ca50204ed17e9b323 100644 (file)
--- a/files.c
+++ b/files.c
@@ -352,6 +352,7 @@ int write_file(char *name, int tmp)
            }
            statusbar(_("Could not open file for writing: %s"),
                      strerror(errno));
+           fprintf(stderr, "1\n");
            free(realname);
            return -1;
        }
@@ -361,6 +362,7 @@ int write_file(char *name, int tmp)
 
        if (fstat(fd, &st2) != 0) {
            close(fd);
+           fprintf(stderr, "2\n");
            return -1; 
        }
       
@@ -382,6 +384,7 @@ int write_file(char *name, int tmp)
            }
            statusbar(_("Could not open file for writing: %s"),
                      strerror(errno));
+           fprintf(stderr, "3\n");
            return -1;
        }
     }
@@ -396,6 +399,7 @@ int write_file(char *name, int tmp)
        if (size == -1) {
            statusbar(_("Could not open file for writing: %s"),
                      strerror(errno));
+           fprintf(stderr, "4\n");
            return -1;
        } else {
 #ifdef DEBUG
@@ -413,12 +417,14 @@ int write_file(char *name, int tmp)
        if (size == -1) {
            statusbar(_("Could not open file for writing: %s"),
                      strerror(errno));
+           fprintf(stderr, "5\n");
            return -1;
        } else if (size > 0) {
            size = write(fd, "\n", 1);
            if (size == -1) {
                statusbar(_("Could not open file for writing: %s"),
                          strerror(errno));
+           fprintf(stderr, "6\n");
                return -1;
            }
        }
@@ -428,6 +434,7 @@ int write_file(char *name, int tmp)
     if (close(fd) == -1) {
        statusbar(_("Could not close %s: %s"), realname, strerror(errno));
        unlink(buf);
+           fprintf(stderr, "7\n");
        return -1;
     }
 
@@ -449,6 +456,7 @@ int write_file(char *name, int tmp)
                if (errno != ENOENT) {
                    statusbar(_("Could not open %s for writing: %s"),
                              realname, strerror(errno));
+           fprintf(stderr, "8\n");
                    unlink(buf);
                    return -1;
                }
@@ -462,11 +470,13 @@ int write_file(char *name, int tmp)
                statusbar(_("Could not open %s for writing: %s"),
                      name, strerror(errno));
                unlink(buf);
+           fprintf(stderr, "9\n");
                return -1;
            } else if (rename(buf, realname) == -1) {   /* Try a rename?? */
                statusbar(_("Could not open %s for writing: %s"),
                      realname, strerror(errno));
                unlink(buf);
+           fprintf(stderr, "10\n");
                return -1;
            }
        }
index 5712db79b2e95252dc32989dd08c47aa27ceb9de..3bd691a5f0c548b26e1e457856a135fc6adbf3e1 100644 (file)
--- a/search.c
+++ b/search.c
@@ -468,27 +468,6 @@ char *replace_line(void)
     return copy;
 }
 
-/* highlight the current word being replaced or spell checked */
-void do_replace_highlight(int highlight_flag, char *word)
-{
-    char *highlight_word = NULL;
-
-    highlight_word = mallocstrcpy(highlight_word, &current->data[current_x]);
-    highlight_word[strlen(word)] = '\0';
-
-    reset_cursor();
-    
-    if (highlight_flag)
-       wattron(edit, A_REVERSE);
-
-    waddstr(edit, highlight_word);
-
-    if (highlight_flag)
-       wattroff(edit, A_REVERSE);
-
-    free(highlight_word);
-}
-
 /* step through each replace word and prompt user before replacing word */
 int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
                        int wholewords, int *i)
diff --git a/winio.c b/winio.c
index 2925cd74331e53238fbd111696e8589e9e7541c0..10cda640f316bdedf2b17cce12762e97b7ddf79a 100644 (file)
--- a/winio.c
+++ b/winio.c
@@ -832,7 +832,7 @@ void update_line(filestruct * fileptr, int index)
        edit_add(filetmp, line, col, virt_cur_x, virt_mark_beginx, page);
        mvwaddch(edit, line, 0, '$');
 
-       if (strlenpt(fileptr->data) > get_page_end_virtual(page))
+       if (strlenpt(fileptr->data) > get_page_end_virtual(page) + 1)
            mvwaddch(edit, line, COLS - 1, '$');
     } else {
        /* It's not the current line means that it's at x=0 and page=1 */
@@ -1331,6 +1331,40 @@ void fix_editbot(void)
         && (editbot != filebot); i++, editbot = editbot->next);
 }
 
+/* highlight the current word being replaced or spell checked */
+void do_replace_highlight(int highlight_flag, char *word)
+{
+    char *highlight_word = NULL;
+    int x, y;
+
+    highlight_word = mallocstrcpy(highlight_word, &current->data[current_x]);
+    highlight_word[strlen(word)] = '\0';
+
+    /* adjust output when word extends beyond screen*/
+
+    x = xplustabs();
+    y = get_page_end_virtual(get_page_from_virtual(x)) + 1;
+
+    if ((COLS - (y - x) + strlen(word)) > COLS) {
+       highlight_word[y - x - 1] = '$';
+       highlight_word[y - x] = '\0';
+    }
+
+    /* OK display the output */
+
+    reset_cursor();
+    
+    if (highlight_flag)
+       wattron(edit, A_REVERSE);
+
+    waddstr(edit, highlight_word);
+
+    if (highlight_flag)
+       wattroff(edit, A_REVERSE);
+
+    free(highlight_word);
+}
+
 #ifdef NANO_EXTRA
 #define CREDIT_LEN 45
 void do_credits(void)