]> git.wh0rd.org Git - nano.git/commitdiff
move do_(next|prev)_word(_void())? to move.c too
authorDavid Lawrence Ramsey <pooka109@gmail.com>
Wed, 20 Jul 2005 21:31:19 +0000 (21:31 +0000)
committerDavid Lawrence Ramsey <pooka109@gmail.com>
Wed, 20 Jul 2005 21:31:19 +0000 (21:31 +0000)
git-svn-id: svn://svn.savannah.gnu.org/nano/trunk/nano@2904 35c25a1d-7b9e-4130-9fde-d3aeb78583b8

ChangeLog
src/move.c
src/nano.c
src/proto.h

index 5cf1cab10fa0c79166f10660ac9422837e5c41f3..f0a17448886f51419fef1d0b9115a4231eb7202a 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -97,13 +97,14 @@ CVS code -
   do_first_line(), do_last_line()
        - Simplify by only using edit_redraw(), and also make them call
          check_statusblank(). (DLR)
-  do_para_begin(), do_para_begin_void(), do_para_end(),
-  do_para_end_void()
-       - Move here from nano.c, as they're movement functions, and also
-         make them call check_statusblank().
   do_page_up(), do_page_down()
        - If there's less than a page of text onscreen, just call
          do_(first|last)_line(). (DLR)
+  do_para_begin(), do_para_begin_void(), do_para_end(),
+  do_para_end_void(), do_next_word(), do_next_word_void(),
+  do_prev_word(), do_prev_word_void()
+       - Move here from nano.c, as they're movement functions, and also
+         make them call check_statusblank().
 - nano.c:
   usage()
        - Properly mention the support for "[+LINE,COLUMN]" on the
index d6c6ce321035c5e9ab1fa35cb4c71a2d882ff7f0..bd83d4314e49f2b8e83022a264b2e08cd1f28d2c 100644 (file)
@@ -206,6 +206,235 @@ void do_para_end_void(void)
 }
 #endif /* !DISABLE_JUSTIFY */
 
+#ifndef NANO_SMALL
+/* Move to the next word in the current filestruct.  If allow_punct is
+ * TRUE, treat punctuation as part of a word.  If allow_update is TRUE,
+ * update the screen afterward.  Return TRUE if we started on a word,
+ * and FALSE otherwise. */
+bool do_next_word(bool allow_punct, bool allow_update)
+{
+    size_t pww_save = openfile->placewewant;
+    const filestruct *current_save = openfile->current;
+    char *char_mb;
+    int char_mb_len;
+    bool end_line = FALSE, started_on_word = FALSE;
+
+    assert(openfile->current != NULL && openfile->current->data != NULL);
+
+    check_statusblank();
+
+    char_mb = charalloc(mb_cur_max());
+
+    /* Move forward until we find the character after the last letter of
+     * the current word. */
+    while (!end_line) {
+       char_mb_len = parse_mbchar(openfile->current->data +
+               openfile->current_x, char_mb, NULL, NULL);
+
+       /* If we've found it, stop moving forward through the current
+        * line. */
+       if (!is_word_mbchar(char_mb, allow_punct))
+           break;
+
+       /* If we haven't found it, then we've started on a word, so set
+        * started_on_word to TRUE. */
+       started_on_word = TRUE;
+
+       if (openfile->current->data[openfile->current_x] == '\0')
+           end_line = TRUE;
+       else
+           openfile->current_x += char_mb_len;
+    }
+
+    /* Move forward until we find the first letter of the next word. */
+    if (openfile->current->data[openfile->current_x] == '\0')
+       end_line = TRUE;
+    else
+       openfile->current_x += char_mb_len;
+
+    for (; openfile->current != NULL;
+       openfile->current = openfile->current->next) {
+       while (!end_line) {
+           char_mb_len = parse_mbchar(openfile->current->data +
+               openfile->current_x, char_mb, NULL, NULL);
+
+           /* If we've found it, stop moving forward through the
+            * current line. */
+           if (is_word_mbchar(char_mb, allow_punct))
+               break;
+
+           if (openfile->current->data[openfile->current_x] == '\0')
+               end_line = TRUE;
+           else
+               openfile->current_x += char_mb_len;
+       }
+
+       /* If we've found it, stop moving forward to the beginnings of
+        * subsequent lines. */
+       if (!end_line)
+           break;
+
+       if (openfile->current->next != NULL) {
+           end_line = FALSE;
+           openfile->current_x = 0;
+       }
+    }
+
+    free(char_mb);
+
+    /* If we haven't found it, leave the cursor at the end of the
+     * file. */
+    if (openfile->current == NULL)
+       openfile->current = openfile->filebot;
+
+    openfile->placewewant = xplustabs();
+
+    /* If allow_update is TRUE, update the screen. */
+    if (allow_update)
+       edit_redraw(current_save, pww_save);
+
+    /* Return whether we started on a word. */
+    return started_on_word;
+}
+
+void do_next_word_void(void)
+{
+    do_next_word(FALSE, TRUE);
+}
+
+/* Move to the previous word in the current filestruct.  If allow_punct
+ * is TRUE, treat punctuation as part of a word.  If allow_update is
+ * TRUE, update the screen afterward.  Return TRUE if we started on a
+ * word, and FALSE otherwise. */
+bool do_prev_word(bool allow_punct, bool allow_update)
+{
+    size_t pww_save = openfile->placewewant;
+    const filestruct *current_save = openfile->current;
+    char *char_mb;
+    int char_mb_len;
+    bool begin_line = FALSE, started_on_word = FALSE;
+
+    assert(openfile->current != NULL && openfile->current->data != NULL);
+
+    check_statusblank();
+
+    char_mb = charalloc(mb_cur_max());
+
+    /* Move backward until we find the character before the first letter
+     * of the current word. */
+    while (!begin_line) {
+       char_mb_len = parse_mbchar(openfile->current->data +
+               openfile->current_x, char_mb, NULL, NULL);
+
+       /* If we've found it, stop moving backward through the current
+        * line. */
+       if (!is_word_mbchar(char_mb, allow_punct))
+           break;
+
+       /* If we haven't found it, then we've started on a word, so set
+        * started_on_word to TRUE. */
+       started_on_word = TRUE;
+
+       if (openfile->current_x == 0)
+           begin_line = TRUE;
+       else
+           openfile->current_x = move_mbleft(openfile->current->data,
+               openfile->current_x);
+    }
+
+    /* Move backward until we find the last letter of the previous
+     * word. */
+    if (openfile->current_x == 0)
+       begin_line = TRUE;
+    else
+       openfile->current_x = move_mbleft(openfile->current->data,
+               openfile->current_x);
+
+    for (; openfile->current != NULL;
+       openfile->current = openfile->current->prev) {
+       while (!begin_line) {
+           char_mb_len = parse_mbchar(openfile->current->data +
+               openfile->current_x, char_mb, NULL, NULL);
+
+           /* If we've found it, stop moving backward through the
+            * current line. */
+           if (is_word_mbchar(char_mb, allow_punct))
+               break;
+
+           if (openfile->current_x == 0)
+               begin_line = TRUE;
+           else
+               openfile->current_x =
+                       move_mbleft(openfile->current->data,
+                       openfile->current_x);
+       }
+
+       /* If we've found it, stop moving backward to the ends of
+        * previous lines. */
+       if (!begin_line)
+           break;
+
+       if (openfile->current->prev != NULL) {
+           begin_line = FALSE;
+           openfile->current_x = strlen(openfile->current->prev->data);
+       }
+    }
+
+    /* If we haven't found it, leave the cursor at the beginning of the
+     * file. */
+    if (openfile->current == NULL)
+       openfile->current = openfile->fileage;
+    /* If we've found it, move backward until we find the character
+     * before the first letter of the previous word. */
+    else if (!begin_line) {
+       if (openfile->current_x == 0)
+           begin_line = TRUE;
+       else
+           openfile->current_x = move_mbleft(openfile->current->data,
+               openfile->current_x);
+
+       while (!begin_line) {
+           char_mb_len =
+               parse_mbchar(openfile->current->data +
+               openfile->current_x, char_mb, NULL, NULL);
+
+           /* If we've found it, stop moving backward through the
+            * current line. */
+           if (!is_word_mbchar(char_mb, allow_punct))
+               break;
+
+           if (openfile->current_x == 0)
+               begin_line = TRUE;
+           else
+               openfile->current_x =
+                       move_mbleft(openfile->current->data,
+                       openfile->current_x);
+       }
+
+       /* If we've found it, move forward to the first letter of the
+        * previous word. */
+       if (!begin_line)
+           openfile->current_x += char_mb_len;
+    }
+
+    free(char_mb);
+
+    openfile->placewewant = xplustabs();
+
+    /* If allow_update is TRUE, update the screen. */
+    if (allow_update)
+       edit_redraw(current_save, pww_save);
+
+    /* Return whether we started on a word. */
+    return started_on_word;
+}
+
+void do_prev_word_void(void)
+{
+    do_prev_word(FALSE, TRUE);
+}
+#endif /* !NANO_SMALL */
+
 void do_home(void)
 {
     size_t pww_save = openfile->placewewant;
index ec73e0edea8708057e2efc02f8fcf072b4e56dfb..250ed8c25777f6ea14dcdb4ef701e5b5d3c526c8 100644 (file)
@@ -1536,233 +1536,6 @@ void do_enter(void)
 }
 
 #ifndef NANO_SMALL
-/* Move to the next word in the current filestruct.  If allow_punct is
- * TRUE, treat punctuation as part of a word.  If allow_update is TRUE,
- * update the screen afterward.  Return TRUE if we started on a word,
- * and FALSE otherwise. */
-bool do_next_word(bool allow_punct, bool allow_update)
-{
-    size_t pww_save = openfile->placewewant;
-    const filestruct *current_save = openfile->current;
-    char *char_mb;
-    int char_mb_len;
-    bool end_line = FALSE, started_on_word = FALSE;
-
-    assert(openfile->current != NULL && openfile->current->data != NULL);
-
-    char_mb = charalloc(mb_cur_max());
-
-    /* Move forward until we find the character after the last letter of
-     * the current word. */
-    while (!end_line) {
-       char_mb_len = parse_mbchar(openfile->current->data +
-               openfile->current_x, char_mb, NULL, NULL);
-
-       /* If we've found it, stop moving forward through the current
-        * line. */
-       if (!is_word_mbchar(char_mb, allow_punct))
-           break;
-
-       /* If we haven't found it, then we've started on a word, so set
-        * started_on_word to TRUE. */
-       started_on_word = TRUE;
-
-       if (openfile->current->data[openfile->current_x] == '\0')
-           end_line = TRUE;
-       else
-           openfile->current_x += char_mb_len;
-    }
-
-    /* Move forward until we find the first letter of the next word. */
-    if (openfile->current->data[openfile->current_x] == '\0')
-       end_line = TRUE;
-    else
-       openfile->current_x += char_mb_len;
-
-    for (; openfile->current != NULL;
-       openfile->current = openfile->current->next) {
-       while (!end_line) {
-           char_mb_len = parse_mbchar(openfile->current->data +
-               openfile->current_x, char_mb, NULL, NULL);
-
-           /* If we've found it, stop moving forward through the
-            * current line. */
-           if (is_word_mbchar(char_mb, allow_punct))
-               break;
-
-           if (openfile->current->data[openfile->current_x] == '\0')
-               end_line = TRUE;
-           else
-               openfile->current_x += char_mb_len;
-       }
-
-       /* If we've found it, stop moving forward to the beginnings of
-        * subsequent lines. */
-       if (!end_line)
-           break;
-
-       if (openfile->current->next != NULL) {
-           end_line = FALSE;
-           openfile->current_x = 0;
-       }
-    }
-
-    free(char_mb);
-
-    /* If we haven't found it, leave the cursor at the end of the
-     * file. */
-    if (openfile->current == NULL)
-       openfile->current = openfile->filebot;
-
-    openfile->placewewant = xplustabs();
-
-    /* If allow_update is TRUE, update the screen. */
-    if (allow_update)
-       edit_redraw(current_save, pww_save);
-
-    /* Return whether we started on a word. */
-    return started_on_word;
-}
-
-/* Move to the next word in the current filestruct, not counting
- * punctuation as part of a word, and updating the screen afterward. */
-void do_next_word_void(void)
-{
-    do_next_word(FALSE, TRUE);
-}
-
-/* Move to the previous word in the current filestruct.  If allow_punct
- * is TRUE, treat punctuation as part of a word.  If allow_update is
- * TRUE, update the screen afterward.  Return TRUE if we started on a
- * word, and FALSE otherwise. */
-bool do_prev_word(bool allow_punct, bool allow_update)
-{
-    size_t pww_save = openfile->placewewant;
-    const filestruct *current_save = openfile->current;
-    char *char_mb;
-    int char_mb_len;
-    bool begin_line = FALSE, started_on_word = FALSE;
-
-    assert(openfile->current != NULL && openfile->current->data != NULL);
-
-    char_mb = charalloc(mb_cur_max());
-
-    /* Move backward until we find the character before the first letter
-     * of the current word. */
-    while (!begin_line) {
-       char_mb_len = parse_mbchar(openfile->current->data +
-               openfile->current_x, char_mb, NULL, NULL);
-
-       /* If we've found it, stop moving backward through the current
-        * line. */
-       if (!is_word_mbchar(char_mb, allow_punct))
-           break;
-
-       /* If we haven't found it, then we've started on a word, so set
-        * started_on_word to TRUE. */
-       started_on_word = TRUE;
-
-       if (openfile->current_x == 0)
-           begin_line = TRUE;
-       else
-           openfile->current_x = move_mbleft(openfile->current->data,
-               openfile->current_x);
-    }
-
-    /* Move backward until we find the last letter of the previous
-     * word. */
-    if (openfile->current_x == 0)
-       begin_line = TRUE;
-    else
-       openfile->current_x = move_mbleft(openfile->current->data,
-               openfile->current_x);
-
-    for (; openfile->current != NULL;
-       openfile->current = openfile->current->prev) {
-       while (!begin_line) {
-           char_mb_len = parse_mbchar(openfile->current->data +
-               openfile->current_x, char_mb, NULL, NULL);
-
-           /* If we've found it, stop moving backward through the
-            * current line. */
-           if (is_word_mbchar(char_mb, allow_punct))
-               break;
-
-           if (openfile->current_x == 0)
-               begin_line = TRUE;
-           else
-               openfile->current_x =
-                       move_mbleft(openfile->current->data,
-                       openfile->current_x);
-       }
-
-       /* If we've found it, stop moving backward to the ends of
-        * previous lines. */
-       if (!begin_line)
-           break;
-
-       if (openfile->current->prev != NULL) {
-           begin_line = FALSE;
-           openfile->current_x = strlen(openfile->current->prev->data);
-       }
-    }
-
-    /* If we haven't found it, leave the cursor at the beginning of the
-     * file. */
-    if (openfile->current == NULL)
-       openfile->current = openfile->fileage;
-    /* If we've found it, move backward until we find the character
-     * before the first letter of the previous word. */
-    else if (!begin_line) {
-       if (openfile->current_x == 0)
-           begin_line = TRUE;
-       else
-           openfile->current_x = move_mbleft(openfile->current->data,
-               openfile->current_x);
-
-       while (!begin_line) {
-           char_mb_len =
-               parse_mbchar(openfile->current->data +
-               openfile->current_x, char_mb, NULL, NULL);
-
-           /* If we've found it, stop moving backward through the
-            * current line. */
-           if (!is_word_mbchar(char_mb, allow_punct))
-               break;
-
-           if (openfile->current_x == 0)
-               begin_line = TRUE;
-           else
-               openfile->current_x =
-                       move_mbleft(openfile->current->data,
-                       openfile->current_x);
-       }
-
-       /* If we've found it, move forward to the first letter of the
-        * previous word. */
-       if (!begin_line)
-           openfile->current_x += char_mb_len;
-    }
-
-    free(char_mb);
-
-    openfile->placewewant = xplustabs();
-
-    /* If allow_update is TRUE, update the screen. */
-    if (allow_update)
-       edit_redraw(current_save, pww_save);
-
-    /* Return whether we started on a word. */
-    return started_on_word;
-}
-
-/* Move to the previous word in the current filestruct, not counting
- * punctuation as part of a word, and updating the screen afterward. */
-void do_prev_word_void(void)
-{
-    do_prev_word(FALSE, TRUE);
-}
-
 void do_word_count(void)
 {
     size_t words = 0, current_x_save = openfile->current_x;
index d8065d641012002772ac1327107eea249489ff5a..1adbdfdecdbe84b8e35274bea0e46729ce909a77 100644 (file)
@@ -329,6 +329,12 @@ void do_para_begin_void(void);
 void do_para_end(bool allow_update);
 void do_para_end_void(void);
 #endif
+#ifndef NANO_SMALL
+bool do_next_word(bool allow_punct, bool allow_update);
+void do_next_word_void(void);
+bool do_prev_word(bool allow_punct, bool allow_update);
+void do_prev_word_void(void);
+#endif
 void do_home(void);
 void do_end(void);
 void do_up(void);
@@ -395,10 +401,6 @@ void do_delete(void);
 void do_tab(void);
 void do_enter(void);
 #ifndef NANO_SMALL
-bool do_next_word(bool allow_punct, bool allow_update);
-void do_next_word_void(void);
-bool do_prev_word(bool allow_punct, bool allow_update);
-void do_prev_word_void(void);
 void do_word_count(void);
 void do_mark(void);
 #endif