updated for version 7.0069
diff --git a/runtime/doc/spell.txt b/runtime/doc/spell.txt
index a9cc7e1..0f359a4 100644
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 19
+*spell.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 20
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -35,12 +35,20 @@
 
 							*]s* *E756*
 ]s			Move to next misspelled word after the cursor.
-			NOTE: doesn't obey syntax highlighting yet, thus
-			will stop at more places than what is highlighted.
+			A count before the command can be used to repeat.
+			This uses the @Spell and @NoSpell clusters from syntax
+			highlighting, see |spell-syntax|.
 
 							*[s*
-[s			Move to next misspelled word before the cursor.
-			DOESN'T WORK YET!
+[s			Like "]s" but search backwards, find the misspelled
+			word before the cursor.
+
+							*]S*
+]S			Like "]s" but only stop at bad words, not at rare
+			words or words for another region.
+
+							*[S*
+[S			Like "]S" but search backwards.
 
 
 PERFORMANCE
@@ -109,7 +117,7 @@
 A word that starts with a digit is always ignored.
 
 
-SYNTAX HIGHLIGHTING
+SYNTAX HIGHLIGHTING					*spell-syntax*
 
 Files that use syntax highlighting can specify where spell checking should be
 done:
diff --git a/runtime/spell/en.latin1.spl b/runtime/spell/en.latin1.spl
index 4e6be5c..d9640c7 100644
--- a/runtime/spell/en.latin1.spl
+++ b/runtime/spell/en.latin1.spl
Binary files differ
diff --git a/src/ex_cmds2.c b/src/ex_cmds2.c
index e4a6a2a..4dc0f0c 100644
--- a/src/ex_cmds2.c
+++ b/src/ex_cmds2.c
@@ -4318,7 +4318,7 @@
 	 */
 	if (psettings->do_syntax)
 	{
-	    id = syn_get_id(ppos->file_line, (long)col, 1);
+	    id = syn_get_id(ppos->file_line, col, 1, NULL);
 	    if (id > 0)
 		id = syn_get_final_id(id);
 	    else
diff --git a/src/syntax.c b/src/syntax.c
index a6741cf..947ed19 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -5929,28 +5929,27 @@
 
 #endif /* FEAT_CMDL_COMPL */
 
-#if defined(FEAT_EVAL) || defined(FEAT_PRINTER) || defined(PROTO)
 /*
  * Function called for expression evaluation: get syntax ID at file position.
  */
     int
-syn_get_id(lnum, col, trans)
+syn_get_id(lnum, col, trans, spellp)
     long	lnum;
-    long	col;
+    colnr_T	col;
     int		trans;	    /* remove transparancy */
+    int		*spellp;    /* return: can do spell checking */
 {
     /* When the position is not after the current position and in the same
      * line of the same buffer, need to restart parsing. */
     if (curwin->w_buffer != syn_buf
 	    || lnum != current_lnum
-	    || col < (long)current_col)
+	    || col < current_col)
 	syntax_start(curwin, lnum);
 
-    (void)get_syntax_attr((colnr_T)col, NULL);
+    (void)get_syntax_attr(col, spellp);
 
     return (trans ? current_trans_id : current_id);
 }
-#endif
 
 #if defined(FEAT_FOLDING) || defined(PROTO)
 /*