]> git.wh0rd.org Git - nano.git/commitdiff
Rocco's changes to spell checking and my alterations
authorChris Allegretta <chrisa@asty.org>
Wed, 29 Nov 2000 04:33:26 +0000 (04:33 +0000)
committerChris Allegretta <chrisa@asty.org>
Wed, 29 Nov 2000 04:33:26 +0000 (04:33 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@350 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
nano.c
nano.h
po/nano.pot
proto.h
search.c

index fb988bd6c88c2d713978bff28acb286cf1603fff..dfd33d371a2ae670510659f57cb33c4fc5c3c4cb 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -30,6 +30,18 @@ CVS code -
          text there, then grabs the next keystroke and, if the unjustify
          key, gets rid of the justified text and calls do_uncut_text.
          Added macro NANO_UNJUSTIFY_KEY.
+  do_int_spell*
+       - Various fixes (Rocco Corsi).
+       - Changed abort of program to aborting based on value of "edit a
+         replacement" question, and not caring about the replace loop
+         return value.  That way the user can get out of the replace loop
+         and continue spell checking (very important to me anyway).
+- search.c:
+  do_replace_hilight()
+       - New function, displays the currently selected word as hilighted
+         in the spell check.  Called from do_replace_loop (Rocco Corsi).
+       - Added calls to curs_set(0) and (1) to diable the cursor when
+         hilighting, looks much better.
 - es.po: 
        - Traditional Spanish strings updates.
 
diff --git a/nano.c b/nano.c
index d3dd0c4d173456ff648198eafced24bbd93a6c34..8e718e9711b16c3d7229319ac49b4aa718434a1c 100644 (file)
--- a/nano.c
+++ b/nano.c
@@ -1074,8 +1074,8 @@ void wrap_reset(void)
 int do_int_spell_fix(char *word)
 {
     char *prevanswer = NULL, *save_search = NULL, *save_replace = NULL;
-    filestruct *begin, *begin_top;
-    int i = 0, beginx, beginx_top;
+    filestruct *begin;
+    int i = 0, j = 0, beginx, beginx_top;
 
     /* save where we are */
     begin = current;
@@ -1092,25 +1092,32 @@ int do_int_spell_fix(char *word)
     last_replace = mallocstrcpy(last_replace, word);
 
     /* start from the top of file */
-    begin_top = current = fileage;
-    beginx_top = current_x = -1;
+    current = fileage;
+    current_x = beginx_top = -1;
 
     search_last_line = FALSE;
 
+    edit_update(fileage, TOP);
+
     /* make sure word is still mis-spelt (i.e. when multi-errors) */
-    if (findnextstr(TRUE, begin_top, beginx_top, prevanswer) != NULL)
+    if (findnextstr(TRUE, fileage, beginx_top, prevanswer) != NULL)
     {
+       do_replace_highlight(TRUE, prevanswer);
+
+       /* allow replace word to be corrected */
+       i = statusq(0, spell_list, SPELL_LIST_LEN, last_replace, 
+               _("Edit a replacement"));
+
+       do_replace_highlight(FALSE, prevanswer);
+
        /* start from the start of this line again */
-       current = begin_top;
+       current = fileage;
        current_x = beginx_top;
 
        search_last_line = FALSE;
 
-       /* allow replace word to be corrected */
-       i = statusq(0, replace_list_2, REPLACE_LIST_2_LEN, last_replace, 
-               _("Edit a replacement"));
-
-       do_replace_loop(prevanswer, begin_top, &beginx_top, TRUE, &i);
+       j = i;
+       do_replace_loop(prevanswer, fileage, &beginx_top, TRUE, &j);
     }
 
     /* restore the search/replace strings */
@@ -1171,6 +1178,7 @@ int do_int_speller(char *tempfile_name)
        }
        close(tempfile_fd);
 
+
        /* send spell's standard out to the pipe */
 
        if (dup2(in_fd[1], STDOUT_FILENO) != STDOUT_FILENO) {
diff --git a/nano.h b/nano.h
index 378c70248c7c09282b41646531126d311c8dcb33..7d659fa773c514f17dcb48b1a7f2b3d46495f809 100644 (file)
--- a/nano.h
+++ b/nano.h
@@ -245,7 +245,7 @@ know what you're doing */
 #define GOTO_LIST_LEN 3
 #define WRITEFILE_LIST_LEN 1
 #define HELP_LIST_LEN 3
-#define SPELL_LIST_LEN 3
+#define SPELL_LIST_LEN 2
 
 #ifdef HAVE_REGEX_H
 #define TOGGLE_LEN 9
index dace64aced2c2ac8a73ef163587d606220ca9a73..c24781a86f00f44aebdb64a1a437bdca28f6685a 100644 (file)
@@ -6,7 +6,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
-"POT-Creation-Date: 2000-11-28 18:04-0500\n"
+"POT-Creation-Date: 2000-11-28 23:25-0500\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"
@@ -55,7 +55,7 @@ msgstr ""
 msgid "File to insert [from ./] "
 msgstr ""
 
-#: files.c:280 files.c:305 files.c:513 nano.c:1373
+#: files.c:280 files.c:305 files.c:513 nano.c:1381
 msgid "Cancelled"
 msgstr ""
 
@@ -642,101 +642,101 @@ msgstr ""
 msgid "After, data = \"%s\"\n"
 msgstr ""
 
-#: nano.c:1111
+#: nano.c:1109
 msgid "Edit a replacement"
 msgstr ""
 
-#: nano.c:1322
+#: nano.c:1330
 #, c-format
 msgid "Could not create a temporary filename: %s"
 msgstr ""
 
-#: nano.c:1338
+#: nano.c:1346
 msgid "Finished checking spelling"
 msgstr ""
 
-#: nano.c:1340
+#: nano.c:1348
 msgid "Spell checking failed"
 msgstr ""
 
-#: nano.c:1360
+#: nano.c:1368
 msgid "Save modified buffer (ANSWERING \"No\" WILL DESTROY CHANGES) ? "
 msgstr ""
 
-#: nano.c:1523
+#: nano.c:1531
 msgid "Cannot resize top win"
 msgstr ""
 
-#: nano.c:1525
+#: nano.c:1533
 msgid "Cannot move top win"
 msgstr ""
 
-#: nano.c:1527
+#: nano.c:1535
 msgid "Cannot resize edit win"
 msgstr ""
 
-#: nano.c:1529
+#: nano.c:1537
 msgid "Cannot move edit win"
 msgstr ""
 
-#: nano.c:1531
+#: nano.c:1539
 msgid "Cannot resize bottom win"
 msgstr ""
 
-#: nano.c:1533
+#: nano.c:1541
 msgid "Cannot move bottom win"
 msgstr ""
 
-#: nano.c:1815
+#: nano.c:1823
 msgid "Can now UnJustify!"
 msgstr ""
 
-#: nano.c:1913
+#: nano.c:1921
 #, c-format
 msgid "%s enable/disable"
 msgstr ""
 
-#: nano.c:1925
+#: nano.c:1933
 msgid "enabled"
 msgstr ""
 
-#: nano.c:1926
+#: nano.c:1934
 msgid "disabled"
 msgstr ""
 
-#: nano.c:2156
+#: nano.c:2164
 msgid "Main: set up windows\n"
 msgstr ""
 
-#: nano.c:2169
+#: nano.c:2177
 msgid "Main: bottom win\n"
 msgstr ""
 
-#: nano.c:2175
+#: nano.c:2183
 msgid "Main: open file\n"
 msgstr ""
 
-#: nano.c:2212
+#: nano.c:2220
 #, c-format
 msgid "I got Alt-O-%c! (%d)\n"
 msgstr ""
 
-#: nano.c:2234
+#: nano.c:2242
 #, c-format
 msgid "I got Alt-[-1-%c! (%d)\n"
 msgstr ""
 
-#: nano.c:2267
+#: nano.c:2275
 #, c-format
 msgid "I got Alt-[-2-%c! (%d)\n"
 msgstr ""
 
-#: nano.c:2315
+#: nano.c:2323
 #, c-format
 msgid "I got Alt-[-%c! (%d)\n"
 msgstr ""
 
-#: nano.c:2341
+#: nano.c:2349
 #, c-format
 msgid "I got Alt-%c! (%d)\n"
 msgstr ""
@@ -765,7 +765,7 @@ msgstr ""
 msgid " (to replace)"
 msgstr ""
 
-#: search.c:136 search.c:318
+#: search.c:136 search.c:321
 msgid "Search Cancelled"
 msgstr ""
 
@@ -778,50 +778,50 @@ msgstr ""
 msgid "Search Wrapped"
 msgstr ""
 
-#: search.c:340
+#: search.c:343
 #, c-format
 msgid "Replaced %d occurences"
 msgstr ""
 
-#: search.c:342
+#: search.c:345
 msgid "Replaced 1 occurence"
 msgstr ""
 
-#: search.c:479 search.c:575 search.c:591
+#: search.c:504 search.c:608 search.c:624
 msgid "Replace Cancelled"
 msgstr ""
 
-#: search.c:525
+#: search.c:554
 msgid "Replace this instance?"
 msgstr ""
 
-#: search.c:533
+#: search.c:566
 msgid "Replace failed: unknown subexpression!"
 msgstr ""
 
-#: search.c:616
+#: search.c:649
 #, c-format
 msgid "Replace with [%s]"
 msgstr ""
 
-#: search.c:620 search.c:624
+#: search.c:653 search.c:657
 msgid "Replace with"
 msgstr ""
 
 #. Ask for it
-#: search.c:659
+#: search.c:692
 msgid "Enter line number"
 msgstr ""
 
-#: search.c:661
+#: search.c:694
 msgid "Aborted"
 msgstr ""
 
-#: search.c:681
+#: search.c:714
 msgid "Come on, be reasonable"
 msgstr ""
 
-#: search.c:686
+#: search.c:719
 #, c-format
 msgid "Only %d lines available, skipping to last line"
 msgstr ""
diff --git a/proto.h b/proto.h
index 14e47773a074ce5988f3e0390ba87f71a2cb96b1..edba49b53275d3ab53d63531d13eb29126bbef08 100644 (file)
--- a/proto.h
+++ b/proto.h
@@ -132,6 +132,7 @@ void blank_edit(void);
 void search_init_globals(void);
 void replace_abort(void);
 void add_to_cutbuffer(filestruct * inptr);
+void do_replace_highlight(int highlight_flag, char *word);
 #ifdef NANO_EXTRA
 void do_credits(void);
 #endif
index 87a2f89659a5e416c0d159a4567d8322df7f9c99..5712db79b2e95252dc32989dd08c47aa27ceb9de 100644 (file)
--- a/search.c
+++ b/search.c
@@ -202,11 +202,11 @@ filestruct *findnextstr(int quiet, filestruct * begin, int beginx,
 {
     filestruct *fileptr;
     char *searchstr, *found = NULL, *tmp;
-    int past_editbot = 0, current_x_find = current_x;
+    int past_editbot = 0, current_x_find;
 
     fileptr = current;
 
-    current_x_find++;
+    current_x_find = current_x + 1;
 
     /* Are we searching the last line? (i.e. the line where search started) */
     if ((fileptr == begin) && (current_x_find < beginx))
@@ -251,18 +251,21 @@ filestruct *findnextstr(int quiet, filestruct * begin, int beginx,
     }
 
     /* We found an instance */
-    current = fileptr;
-    current_x = 0;
+    current_x_find = 0;
     for (tmp = fileptr->data; tmp != found; tmp++)
-       current_x++;
+       current_x_find++;
 
     /* Ensure we haven't wrap around again! */
-    if ((search_last_line) && (current_x >= beginx)) {
+    if ((search_last_line) && (current_x_find >= beginx)) {
        if (!quiet)
            not_found_msg(needle);
        return NULL;
     }
 
+    /* Set globals now that we are sure we found something */
+    current = fileptr;
+    current_x = current_x_find;
+
     if (past_editbot)
        edit_update(fileptr, CENTER);
     else
@@ -465,6 +468,28 @@ 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)
 {
@@ -521,9 +546,17 @@ int do_replace_loop(char *prevanswer, filestruct *begin, int *beginx,
        }
 
        /* If we're here, we've found the search string */
-       if (!replaceall)
+       if (!replaceall) {
+
+           curs_set(0);
+           do_replace_highlight(TRUE, prevanswer);
+
            *i = do_yesno(1, 1, _("Replace this instance?"));
 
+           do_replace_highlight(FALSE, prevanswer);
+           curs_set(1);
+       }
+
        if (*i > 0 || replaceall) {     /* Yes, replace it!!!! */
            if (*i == 2)
                replaceall = 1;