diff --git a/README_src.txt b/README_src.txt
index 3ff3e22..83cdf47 100644
--- a/README_src.txt
+++ b/README_src.txt
@@ -1,4 +1,4 @@
-README_src.txt for version 7.1a of Vim: Vi IMproved.
+README_src.txt for version 7.1b of Vim: Vi IMproved.
 
 The source archive contains the files needed to compile Vim on Unix systems.
 It is packed for Unix systems (NL line separator).  It is also used for other
diff --git a/runtime/doc/ada.txt b/runtime/doc/ada.txt
index 4367ae0..bdbe97e 100644
--- a/runtime/doc/ada.txt
+++ b/runtime/doc/ada.txt
@@ -1,4 +1,4 @@
-*ada.txt*	For Vim version 7.1a.  Last change: 2006 Nov 12
+*ada.txt*	For Vim version 7.1b.  Last change: 2007 May 08
 
 
 		    ADA FILE TYPE PLUG-INS REFERENCE MANUAL~
@@ -125,7 +125,7 @@
 3.2 Omni Completion with "ctags"~
 								   *ada-ctags*
 
-Exuberant Ctags uses it's own multi-language code parser. The parser is quite
+Exuberant Ctags uses its own multi-language code parser. The parser is quite
 fast, produces a lot of extra informations (hence the name "Exuberant Ctags")
 and can run on files which currently do not compile.
 
@@ -302,7 +302,7 @@
 			'x':	lone 'exception' folded with line above
 		    'i':    activate indent folding on load
 
-		Note: Syntax folding is in an early (unuseable) stage and
+		Note: Syntax folding is in an early (unusable) stage and
 		      indent or gnat pretty folding is suggested.
 
 		For gnat pretty folding to work the following settings are
diff --git a/runtime/doc/remote.txt b/runtime/doc/remote.txt
index 5b87cc0..4015c91 100644
--- a/runtime/doc/remote.txt
+++ b/runtime/doc/remote.txt
@@ -1,4 +1,4 @@
-*remote.txt*    For Vim version 7.1a.  Last change: 2006 Apr 30
+*remote.txt*    For Vim version 7.1b.  Last change: 2006 Apr 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 372b7a9..e157930 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.1a.  Last change: 2007 May 03
+*syntax.txt*	For Vim version 7.1b.  Last change: 2007 May 07
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -854,15 +854,16 @@
 (similar to Javadoc).  This syntax script adds doxygen highlighting to c, cpp
 and idl files, and should also work with java.
 
-There are a few of ways to turn on doxygen formatting. It can be done explicity
-or in a modeline by appending '.doxygen' to the syntax of the file. Example: >
+There are a few of ways to turn on doxygen formatting. It can be done
+explicitly or in a modeline by appending '.doxygen' to the syntax of the file.
+Example: >
 	:set syntax=c.doxygen
 or >
 	// vim:syntax=c.doxygen
 
-It can also be done automaticly for c, cpp and idl files by setting the global
-or buffer-local variable load_doxygen_syntax.  This is done by adding the
-following to your .vimrc. >
+It can also be done automatically for c, cpp and idl files by setting the
+global or buffer-local variable load_doxygen_syntax.  This is done by adding
+the following to your .vimrc. >
 	:let g:load_doxygen_syntax=1
 
 There are a couple of variables that have an affect on syntax highlighting, and
@@ -1291,7 +1292,7 @@
 text is shown: <B> <I> <U> <EM> <STRONG> (<EM> is used as an alias for <I>,
 while <STRONG> as an alias for <B>), <H1> - <H6>, <HEAD>, <TITLE> and <A>, but
 only if used as a link (that is, it must include a href as in
-<A href="somfile.html">).
+<A href="somefile.html">).
 
 If you want to change how such text is rendered, you must redefine the
 following syntax groups:
@@ -1408,7 +1409,7 @@
 
 IDL's structure is simple enough to permit a full grammar based approach to
 rather than using a few heuristics.  The result is large and somewhat
-repetative but seems to work.
+repetitive but seems to work.
 
 There are some Microsoft extensions to idl files that are here.  Some of them
 are disabled by defining idl_no_ms_extensions.
@@ -2248,7 +2249,7 @@
 you may want to turn it off by defining the "ruby_no_expensive" variable: >
 
 	:let ruby_no_expensive = 1
-
+<
 In this case the same color will be used for all control keywords.
 
 If you do want this feature enabled, but notice highlighting errors while
@@ -2256,15 +2257,15 @@
 the "ruby_minlines" variable to a value larger than 50: >
 
 	:let ruby_minlines = 100
-
+<
 Ideally, this value should be a number of lines large enough to embrace your
 largest class or module.
 
-Highlighting of special identifiers can be disabled by defining
-"ruby_no_identifiers": >
+Highlighting of special identifiers can be disabled by removing the
+rubyIdentifier highlighting: >
 
-	:let ruby_no_identifiers = 1
-
+	:hi link rubyIdentifier NONE
+<
 This will prevent highlighting of special identifiers like "ConstantName",
 "$global_var", "@@class_var", "@instance_var", "| block_param |", and
 ":symbol".
@@ -2273,14 +2274,19 @@
 This can be disabled by defining "ruby_no_special_methods": >
 
 	:let ruby_no_special_methods = 1
-
+<
 This will prevent highlighting of important methods such as "require", "attr",
 "private", "raise" and "proc".
 
+Ruby operators can be highlighted. This is enabled by defining
+"ruby_operators": >
+
+	:let ruby_operators = 1
+<
 Whitespace errors can be highlighted by defining "ruby_space_errors": >
 
 	:let ruby_space_errors = 1
-
+<
 This will highlight trailing whitespace and tabs preceded by a space character
 as errors.  This can be refined by defining "ruby_no_trail_space_error" and
 "ruby_no_tab_space_error" which will ignore trailing whitespace and tabs after
@@ -2289,10 +2295,15 @@
 Folding can be enabled by defining "ruby_fold": >
 
 	:let ruby_fold = 1
-
+<
 This will set the 'foldmethod' option to "syntax" and allow folding of
 classes, modules, methods, code blocks, heredocs and comments.
 
+Folding of multiline comments can be disabled by defining
+"ruby_no_comment_fold": >
+
+	:let ruby_no_comment_fold = 1
+<
 
 SCHEME						*scheme.vim* *ft-scheme-syntax*
 
diff --git a/runtime/doc/usr_30.txt b/runtime/doc/usr_30.txt
index ca8cbab..080365b 100644
--- a/runtime/doc/usr_30.txt
+++ b/runtime/doc/usr_30.txt
@@ -1,4 +1,4 @@
-*usr_30.txt*	For Vim version 7.1a.  Last change: 2007 Apr 22
+*usr_30.txt*	For Vim version 7.1b.  Last change: 2007 Apr 22
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
diff --git a/runtime/indent/config.vim b/runtime/indent/config.vim
index 77b4ebf..7eb1657 100644
--- a/runtime/indent/config.vim
+++ b/runtime/indent/config.vim
@@ -1,19 +1,20 @@
 " Vim indent file
-" Language:	    Autoconf configure.{ac,in} file
-" Maintainer:	    Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
-" TODO:		    how about nested [()]'s in one line
-"		    what's wrong with '\\\@!'?
+" Language:         Autoconf configure.{ac,in} file
+" Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2006-12-20
+" TODO:             how about nested [()]'s in one line
+"                   what's wrong with '\\\@!'?
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
   finish
 endif
 
-runtime! indent/sh.vim		" will set b:did_indent
+runtime! indent/sh.vim          " will set b:did_indent
 
 setlocal indentexpr=GetConfigIndent()
 setlocal indentkeys=!^F,o,O,=then,=do,=else,=elif,=esac,=fi,=fin,=fil,=done
+setlocal nosmartindent
 
 " Only define the function once.
 if exists("*GetConfigIndent")
diff --git a/runtime/indent/xf86conf.vim b/runtime/indent/xf86conf.vim
index 04f54c9..4174a24 100644
--- a/runtime/indent/xf86conf.vim
+++ b/runtime/indent/xf86conf.vim
@@ -1,7 +1,7 @@
 " Vim indent file
-" Language:	    XFree86 Configuration File
+" Language:         XFree86 Configuration File
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2006-12-20
 
 if exists("b:did_indent")
   finish
@@ -10,6 +10,7 @@
 
 setlocal indentexpr=GetXF86ConfIndent()
 setlocal indentkeys=!^F,o,O,=End
+setlocal nosmartindent
 
 if exists("*GetXF86ConfIndent")
   finish
@@ -28,7 +29,7 @@
     let ind = ind + &sw
   endif
 
-  if getline(v:lnum) =~? '^\s*End\>'
+  if getline(v:lnum) =~? '^\s*End\(Sub\)\=Section\>'
     let ind = ind - &sw
   endif
 
diff --git a/runtime/syntax/context.vim b/runtime/syntax/context.vim
index 93b14b1..225cc6e 100644
--- a/runtime/syntax/context.vim
+++ b/runtime/syntax/context.vim
@@ -1,13 +1,14 @@
 " Vim syntax file
 " Language:         ConTeXt typesetting engine
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2006-08-10
 
 if exists("b:current_syntax")
   finish
 endif
 
 runtime! syntax/plaintex.vim
+unlet b:current_syntax
 
 let s:cpo_save = &cpo
 set cpo&vim
@@ -16,6 +17,8 @@
   let g:context_include = ['mp', 'javascript', 'xml']
 endif
 
+syn spell   toplevel
+
 syn match   contextBlockDelim display '\\\%(start\|stop\)\a\+'
                               \ contains=@NoSpell
 
@@ -27,7 +30,7 @@
                               \ start='\\type\=<<' end='>>'
 syn region  contextEscaped    matchgroup=contextPreProc
                               \ start='\\start\z(\a*\%(typing\|typen\)\)'
-                              \ end='\\stop\z1'
+                              \ end='\\stop\z1' contains=plaintexComment keepend
 syn region  contextEscaped    display matchgroup=contextPreProc
                               \ start='\\\h\+Type{' end='}'
 syn region  contextEscaped    display matchgroup=contextPreProc
diff --git a/runtime/syntax/rst.vim b/runtime/syntax/rst.vim
index 6e24251..d5a76a2 100644
--- a/runtime/syntax/rst.vim
+++ b/runtime/syntax/rst.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         reStructuredText documentation format
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-09
+" Latest Revision:  2006-07-04
 
 if exists("b:current_syntax")
   finish
@@ -50,7 +50,7 @@
 syn cluster rstDirectives           contains=rstFootnote,rstCitation,
       \ rstHyperlinkTarget,rstExDirective
 
-syn match   rstExplicitMarkup       '^\.\.\s'
+syn match   rstExplicitMarkup       '^\.\.\_s'
       \ nextgroup=@rstDirectives,rstComment,rstSubstitutionDefinition
 
 let s:ReferenceName = '[[:alnum:]]\+\%([_.-][[:alnum:]]\+\)*'
@@ -91,7 +91,7 @@
 function! s:DefineOneInlineMarkup(name, start, middle, end, char_left, char_right)
   execute 'syn region rst' . a:name .
         \ ' start=+' . a:char_left . '\zs' . a:start .
-        \ '[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' .
+        \ '\ze[^[:space:]' . a:char_right . a:start[strlen(a:start) - 1] . ']+' .
         \ a:middle .
         \ ' end=+\S' . a:end . '\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+'
 endfunction
@@ -130,10 +130,10 @@
       \ ' +\[\%(\d\+\|#\%(' . s:ReferenceName . '\)\=\|\*\)\]_+'
 
 execute 'syn match rstCitationReference contains=@NoSpell' .
-      \ ' +\[' . s:ReferenceName . '\]_+'
+      \ ' +\[' . s:ReferenceName . '\]_\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)+'
 
 execute 'syn match rstHyperlinkReference' .
-      \ ' /\<' . s:ReferenceName . '__\=/'
+      \ ' /\<' . s:ReferenceName . '__\=\ze\%($\|\s\|[''")\]}>/:.,;!?\\-]\)/'
 
 syn match   rstStandaloneHyperlink  contains=@NoSpell
       \ "\<\%(\%(\%(https\=\|file\|ftp\|gopher\)://\|\%(mailto\|news\):\)[^[:space:]'\"<>]\+\|www[[:alnum:]_-]*\.[[:alnum:]_-]\+\.[^[:space:]'\"<>]\+\)[[:alnum:]/]"
diff --git a/src/farsi.c b/src/farsi.c
index 3da27c3..8728e85 100644
--- a/src/farsi.c
+++ b/src/farsi.c
@@ -655,7 +655,7 @@
 }
 
 /*
-** Change the charcter left to the cursor to a X or _X type
+** Change the character left to the cursor to a X or _X type
 */
 
     static void
@@ -724,7 +724,7 @@
 }
 
 /*
-** Change the charcter right to the cursor to a _X or _X_ type
+** Change the character right to the cursor to a _X or _X_ type
 */
 
     static void
diff --git a/src/farsi.h b/src/farsi.h
index 8dea422..ccd912e 100644
--- a/src/farsi.h
+++ b/src/farsi.h
@@ -7,7 +7,7 @@
  */
 
 /*
- * Farsi characters are catagorized into following types:
+ * Farsi characters are categorized into following types:
  *
  * TyA	(for capital letter representation)
  * TyB	(for types that look like _X  e.g. AYN)
diff --git a/src/fold.c b/src/fold.c
index a28a874..07b0748 100644
--- a/src/fold.c
+++ b/src/fold.c
@@ -2684,7 +2684,7 @@
 	{
 	    if (fp->fd_top + fp->fd_len > bot + 1)
 	    {
-		/* fold coninued below bot */
+		/* fold continued below bot */
 		if (getlevel == foldlevelMarker
 			|| getlevel == foldlevelExpr
 			|| getlevel == foldlevelSyntax)
@@ -2834,7 +2834,7 @@
  *	      3     5  6
  *
  * 1: not changed
- * 2: trunate to stop above "top"
+ * 2: truncate to stop above "top"
  * 3: split in two parts, one stops above "top", other starts below "bot".
  * 4: deleted
  * 5: made to start below "bot".
@@ -2900,8 +2900,8 @@
 
 /* foldMerge() {{{2 */
 /*
- * Merge two adjecent folds (and the nested ones in them).
- * This only works correctly when the folds are really adjecent!  Thus "fp1"
+ * Merge two adjacent folds (and the nested ones in them).
+ * This only works correctly when the folds are really adjacent!  Thus "fp1"
  * must end just above "fp2".
  * The resulting fold is "fp1", nested folds are moved from "fp2" to "fp1".
  * Fold entry "fp2" in "gap" is deleted.
diff --git a/src/misc1.c b/src/misc1.c
index 0f75c3a..ddc477d 100644
--- a/src/misc1.c
+++ b/src/misc1.c
@@ -3727,7 +3727,7 @@
 	if (copy_char)	    /* copy at least one char */
 	{
 	    /*
-	     * Recogize the start of a new name, for '~'.
+	     * Recognize the start of a new name, for '~'.
 	     */
 	    at_start = FALSE;
 	    if (src[0] == '\\' && src[1] != NUL)
@@ -4451,7 +4451,7 @@
 #ifdef UNIX
     return (c == ':');
 #else
-    return (c == ';');	/* might not be rigth for every system... */
+    return (c == ';');	/* might not be right for every system... */
 #endif
 }
 #endif
@@ -4561,7 +4561,7 @@
 
 /*
  * Concatenate file names fname1 and fname2 into allocated memory.
- * Only add a '/' or '\\' when 'sep' is TRUE and it is neccesary.
+ * Only add a '/' or '\\' when 'sep' is TRUE and it is necessary.
  */
     char_u  *
 concat_fnames(fname1, fname2, sep)
@@ -7118,7 +7118,7 @@
 		/*
 		 * What happens next depends on the line being terminated.
 		 * If terminated with a ',' only consider it terminating if
-		 * there is anoter unterminated statement behind, eg:
+		 * there is another unterminated statement behind, eg:
 		 *   123,
 		 *   sizeof
 		 *	  here
@@ -7306,7 +7306,7 @@
 		    /*
 		     * If we're below an unterminated line that is not an
 		     * "if" or something, we may line up with this line or
-		     * add someting for a continuation line, depending on
+		     * add something for a continuation line, depending on
 		     * the line before this one.
 		     */
 		    else
@@ -8513,7 +8513,7 @@
     char_u	*path,
     int		wildoff,
     int		flags,		/* EW_* flags */
-    int		didstar)	/* expaneded "**" once already */
+    int		didstar)	/* expanded "**" once already */
 {
     char_u	*buf;
     char_u	*path_end;
@@ -9340,7 +9340,7 @@
      * read the names from the file into memory
      */
 # ifdef VMS
-    /* created temporary file is not allways readable as binary */
+    /* created temporary file is not always readable as binary */
     fd = mch_fopen((char *)tempname, "r");
 # else
     fd = mch_fopen((char *)tempname, READBIN);
