diff --git a/ChangeLog b/ChangeLog
index 5cf1cab10fa0c79166f10660ac9422837e5c41f3..f0a17448886f51419fef1d0b9115a4231eb7202a 100644
--- 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
diff --git a/src/move.c b/src/move.c
index d6c6ce321035c5e9ab1fa35cb4c71a2d882ff7f0..bd83d4314e49f2b8e83022a264b2e08cd1f28d2c 100644
--- a/src/move.c
+++ b/src/move.c
@@ -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;
diff --git a/src/nano.c b/src/nano.c
index ec73e0edea8708057e2efc02f8fcf072b4e56dfb..250ed8c25777f6ea14dcdb4ef701e5b5d3c526c8 100644
--- a/src/nano.c
+++ b/src/nano.c
@@ -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;
diff --git a/src/proto.h b/src/proto.h
index d8065d641012002772ac1327107eea249489ff5a..1adbdfdecdbe84b8e35274bea0e46729ce909a77 100644
--- a/src/proto.h
+++ b/src/proto.h
@@ -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