updated for version 7.1b
diff --git a/README_amibin.txt b/README_amibin.txt
index c2df760..3c61bee 100644
--- a/README_amibin.txt
+++ b/README_amibin.txt
@@ -1,4 +1,4 @@
-README_amibin.txt for version 7.1a of Vim: Vi IMproved.
+README_amibin.txt for version 7.1b of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_ami.txt" for installation instructions for the Amiga.
diff --git a/README_extra.txt b/README_extra.txt
index 649f62c..45b9f83 100644
--- a/README_extra.txt
+++ b/README_extra.txt
@@ -1,4 +1,4 @@
-README_extra.txt for version 7.1a of Vim: Vi IMproved.
+README_extra.txt for version 7.1b of Vim: Vi IMproved.
 
 The extra archive of Vim is to be used in combination with the source archive
 (vim-7.0-src.tar.gz).  The extra archive is useless without it.
diff --git a/runtime/compiler/gcc.vim b/runtime/compiler/gcc.vim
index 699d14f..d666708 100644
--- a/runtime/compiler/gcc.vim
+++ b/runtime/compiler/gcc.vim
@@ -1,7 +1,7 @@
 " Vim compiler file
 " Compiler:         GNU C Compiler
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2006-12-20
 
 if exists("current_compiler")
   finish
@@ -20,7 +20,13 @@
       \\"%f\"\\,\ line\ %l%*\\D%c%*[^\ ]\ %m,
       \%D%*\\a[%*\\d]:\ Entering\ directory\ `%f',
       \%X%*\\a[%*\\d]:\ Leaving\ directory\ `%f',
+      \%D%*\\a:\ Entering\ directory\ `%f',
+      \%X%*\\a:\ Leaving\ directory\ `%f',
       \%DMaking\ %*\\a\ in\ %f
 
+if exists('g:compiler_gcc_ignore_unmatched_lines')
+  let &errorformat .= ',%-G%.%#'
+endif
+
 let &cpo = s:cpo_save
 unlet s:cpo_save
diff --git a/runtime/doc/diff.txt b/runtime/doc/diff.txt
index ed059c9..573cd5f 100644
--- a/runtime/doc/diff.txt
+++ b/runtime/doc/diff.txt
@@ -1,4 +1,4 @@
-*diff.txt*      For Vim version 7.1a.  Last change: 2006 Oct 02
+*diff.txt*      For Vim version 7.1b.  Last change: 2006 Oct 02
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/gui_x11.txt b/runtime/doc/gui_x11.txt
index 838b13f..09d0bd5 100644
--- a/runtime/doc/gui_x11.txt
+++ b/runtime/doc/gui_x11.txt
@@ -1,4 +1,4 @@
-*gui_x11.txt*   For Vim version 7.1a.  Last change: 2006 Jul 12
+*gui_x11.txt*   For Vim version 7.1b.  Last change: 2006 Jul 12
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/help.txt b/runtime/doc/help.txt
index 40fad99..684f5fe 100644
--- a/runtime/doc/help.txt
+++ b/runtime/doc/help.txt
@@ -1,4 +1,4 @@
-*help.txt*	For Vim version 7.1a.  Last change: 2006 Nov 07
+*help.txt*	For Vim version 7.1b.  Last change: 2006 Nov 07
 
 			VIM - main help file
 									 k
diff --git a/runtime/doc/if_ruby.txt b/runtime/doc/if_ruby.txt
index a614172..7e9cd8a 100644
--- a/runtime/doc/if_ruby.txt
+++ b/runtime/doc/if_ruby.txt
@@ -1,4 +1,4 @@
-*if_ruby.txt*   For Vim version 7.1a.  Last change: 2006 Apr 30
+*if_ruby.txt*   For Vim version 7.1b.  Last change: 2006 Apr 30
 
 
 		  VIM REFERENCE MANUAL    by Shugo Maeda
diff --git a/runtime/doc/if_sniff.txt b/runtime/doc/if_sniff.txt
index 3444c38..3280e06 100644
--- a/runtime/doc/if_sniff.txt
+++ b/runtime/doc/if_sniff.txt
@@ -1,4 +1,4 @@
-*if_sniff.txt*	For Vim version 7.1a.  Last change: 2005 Mar 29
+*if_sniff.txt*	For Vim version 7.1b.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL
diff --git a/runtime/doc/motion.txt b/runtime/doc/motion.txt
index 1446db0..98650a4 100644
--- a/runtime/doc/motion.txt
+++ b/runtime/doc/motion.txt
@@ -1,4 +1,4 @@
-*motion.txt*    For Vim version 7.1a.  Last change: 2006 Dec 07
+*motion.txt*    For Vim version 7.1b.  Last change: 2006 Dec 07
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 7cf41a2..2730da6 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.1a.  Last change: 2007 May 05
+*options.txt*	For Vim version 7.1b.  Last change: 2007 May 09
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -7031,7 +7031,7 @@
 			{only in Unix and VMS, doesn't work in the GUI; not
 			available when compiled without |+mouse|}
 	Name of the terminal type for which mouse codes are to be recognized.
-	Currently these three strings are valid:
+	Currently these strings are valid:
 							*xterm-mouse*
 	   xterm	xterm-like mouse handling.  The mouse generates
 			"<Esc>[Mscr", where "scr" is three bytes:
diff --git a/runtime/doc/os_mac.txt b/runtime/doc/os_mac.txt
index e56d4c7..4c2151b 100644
--- a/runtime/doc/os_mac.txt
+++ b/runtime/doc/os_mac.txt
@@ -1,4 +1,4 @@
-*os_mac.txt*    For Vim version 7.1a.  Last change: 2006 Apr 30
+*os_mac.txt*    For Vim version 7.1b.  Last change: 2006 Apr 30
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar et al.
diff --git a/runtime/doc/os_msdos.txt b/runtime/doc/os_msdos.txt
index e689b6e..9299108 100644
--- a/runtime/doc/os_msdos.txt
+++ b/runtime/doc/os_msdos.txt
@@ -1,4 +1,4 @@
-*os_msdos.txt*  For Vim version 7.1a.  Last change: 2005 Mar 29
+*os_msdos.txt*  For Vim version 7.1b.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/pi_paren.txt b/runtime/doc/pi_paren.txt
index 3752637..c284068 100644
--- a/runtime/doc/pi_paren.txt
+++ b/runtime/doc/pi_paren.txt
@@ -1,4 +1,4 @@
-*pi_paren.txt*  For Vim version 7.1a.  Last change: 2006 Jun 14
+*pi_paren.txt*  For Vim version 7.1b.  Last change: 2006 Jun 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/rileft.txt b/runtime/doc/rileft.txt
index a3f655f..ac90d6d 100644
--- a/runtime/doc/rileft.txt
+++ b/runtime/doc/rileft.txt
@@ -1,4 +1,4 @@
-*rileft.txt*    For Vim version 7.1a.  Last change: 2006 Apr 24
+*rileft.txt*    For Vim version 7.1b.  Last change: 2006 Apr 24
 
 
 		  VIM REFERENCE MANUAL    by Avner Lottem
diff --git a/runtime/doc/tips.txt b/runtime/doc/tips.txt
index 1abfba9..f990f13 100644
--- a/runtime/doc/tips.txt
+++ b/runtime/doc/tips.txt
@@ -1,4 +1,4 @@
-*tips.txt*      For Vim version 7.1a.  Last change: 2006 Jul 24
+*tips.txt*      For Vim version 7.1b.  Last change: 2006 Jul 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
diff --git a/runtime/doc/usr_10.txt b/runtime/doc/usr_10.txt
index 3e7de4b..e236a90 100644
--- a/runtime/doc/usr_10.txt
+++ b/runtime/doc/usr_10.txt
@@ -1,4 +1,4 @@
-*usr_10.txt*	For Vim version 7.1a.  Last change: 2006 Nov 05
+*usr_10.txt*	For Vim version 7.1b.  Last change: 2006 Nov 05
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
diff --git a/runtime/doc/usr_32.txt b/runtime/doc/usr_32.txt
index 4b243fb..c89dfb3 100644
--- a/runtime/doc/usr_32.txt
+++ b/runtime/doc/usr_32.txt
@@ -1,4 +1,4 @@
-*usr_32.txt*	For Vim version 7.1a.  Last change: 2006 Apr 30
+*usr_32.txt*	For Vim version 7.1b.  Last change: 2006 Apr 30
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
diff --git a/runtime/ftplugin/changelog.vim b/runtime/ftplugin/changelog.vim
index b4206a2..e9ec4d4 100644
--- a/runtime/ftplugin/changelog.vim
+++ b/runtime/ftplugin/changelog.vim
@@ -1,7 +1,7 @@
 " Vim filetype plugin file
 " Language:         generic Changelog file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2007-05-06
 " Variables:
 "   g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) -
 "       description: the timeformat used in ChangeLog entries.
@@ -129,6 +129,12 @@
     let g:changelog_date_entry_search = '^\s*%d\_s*%u'
   endif
 
+  " Regular expression used to find the end of a date entry
+  if !exists('g:changelog_date_end_entry_search')
+    let g:changelog_date_entry_search = '^\s*$'
+  endif
+
+
   " Substitutes specific items in new date-entry formats and search strings.
   " Can be done with substitute of course, but unclean, and need \@! then.
   function! s:substitute_items(str, date, user)
@@ -171,7 +177,7 @@
     if search(search) > 0
       " Ok, now we look for the end of the date entry, and add an entry.
       call cursor(nextnonblank(line('.') + 1), 1)
-      if search('^\s*$', 'W') > 0
+      if search(g:changelog_date_end_entry_search, 'W') > 0
         let p = line('.') - 1
       else
         let p = line('.')
@@ -240,9 +246,9 @@
     let buf = bufnr('ChangeLog')
     if buf != -1
       if bufwinnr(buf) != -1
-        execute buf . 'wincmd w'
+        execute bufwinnr(buf) . 'wincmd w'
       else
-        execute 'bsplit' buf
+        execute 'sbuffer' buf
       endif
     else
       split ChangeLog
diff --git a/runtime/indent/tcl.vim b/runtime/indent/tcl.vim
index 5a5aa1d..a92f57d 100644
--- a/runtime/indent/tcl.vim
+++ b/runtime/indent/tcl.vim
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	    Tcl
 " 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=GetTclIndent()
 setlocal indentkeys=0{,0},!^F,o,O,0]
+setlocal nosmartindent
 
 if exists("*GetTclIndent")
   finish
@@ -36,13 +37,13 @@
   while i != -1
     if synIDattr(synID(a:lnum, i + 1, 0), 'name') !~ 'tcl\%(Comment\|String\)'
       if line[i] == '{'
-	let n_open += 1
+        let n_open += 1
       elseif line[i] == '}'
-	if n_open > 0
-	  let n_open -= 1
-	else
-	  let n_close += 1
-	endif
+        if n_open > 0
+          let n_open -= 1
+        else
+          let n_close += 1
+        endif
       endif
     endif
     let i = match(line, pattern, i + 1)
diff --git a/runtime/spell/en.utf-8.sug b/runtime/spell/en.utf-8.sug
index 9009381..70bd9a2 100644
--- a/runtime/spell/en.utf-8.sug
+++ b/runtime/spell/en.utf-8.sug
Binary files differ
diff --git a/runtime/syntax/framescript.vim b/runtime/syntax/framescript.vim
new file mode 100644
index 0000000..39d75e8
--- /dev/null
+++ b/runtime/syntax/framescript.vim
@@ -0,0 +1,491 @@
+" Vim syntax file
+" Language:         FrameScript v4.0
+" Maintainer:       Nikolai Weibull <now@bitwi.se>
+" Latest Revision:  2007-02-22
+
+if exists("b:current_syntax")
+  finish
+endif
+
+let s:cpo_save = &cpo
+set cpo&vim
+
+syn match   framescriptOperator
+      \ '[+*/%=-]\|[><]=\=\|#[&|]'
+
+syn keyword framescriptTodo
+      \ contained
+      \ TODO FIXME XXX NOTE
+
+syn cluster framescriptCommentGroup
+      \ contains=
+      \   framescriptTodo,
+      \   @Spell
+
+syn match   framescriptComment
+      \ display
+      \ contains=@framescriptCommentGroup
+      \ '//.*$'
+
+syn region  framescriptComment
+      \ contains=@framescriptCommentGroup
+      \ matchgroup=framescriptCommentStart
+      \ start='/\*'
+      \ end='\*/'
+
+syn case ignore
+
+syn match   framescriptInclude
+      \ display
+      \ contains=framescriptIncluded
+      \ "^\s*<#Include\>\s*'"
+
+syn region  framescriptIncluded
+      \ contained
+      \ display
+      \ start=+'+
+      \ skip=+\\\\\|\\'+
+      \ end=+'+
+
+syn match   framescriptNumbers
+      \ display
+      \ transparent
+      \ contains=
+      \   framescriptInteger,
+      \   framescriptReal,
+      \   framescriptMetric,
+      \   framescriptCharacter
+      \ '\<\d\|\.\d'
+
+syn keyword framescriptBoolean
+      \ True False
+
+syn match   framescriptInteger
+      \ contained
+      \ display
+      \ '\d\+\>'
+
+syn match   framescriptInteger
+      \ contained
+      \ display
+      \ '\x\+H\>'
+
+syn match   framescriptInteger
+      \ contained
+      \ display
+      \ '[01]\+B\>'
+
+syn match   framescriptReal
+      \ contained
+      \ display
+      \ '\d\+\.\d*\|\.\d\+\>'
+
+syn match   framescriptMetric
+      \ contained
+      \ display
+      \ '\%(\d\+\%(\.\d*\)\=\|\.\d\+\)\%(pts\|in\|"\|cm\|mm\|pica\)\>'
+
+syn match   framescriptCharacter
+      \ contained
+      \ display
+      \ '\d\+S\>'
+
+syn region  framescriptString
+      \ contains=framescriptStringSpecialChar,@Spell
+      \ start=+'+
+      \ skip=+\\\\\|\\'+
+      \ end=+'+
+
+syn match   framescriptStringSpecialChar
+      \ contained
+      \ display
+      \ "\\[\\']"
+
+syn keyword framescriptConstant
+      \ BackSlash
+      \ CharCR
+      \ CharLF
+      \ CharTAB
+      \ ClientDir
+      \ ClientName
+      \ FslVersionMajor
+      \ FslVersionMinor
+      \ InstallName
+      \ InstalledScriptList
+      \ MainScript
+      \ NULL
+      \ ObjEndOffset
+      \ ProductRevision
+      \ Quote
+      \ ThisScript
+
+syn keyword framescriptOperator
+      \ not
+      \ and
+      \ or
+
+syn keyword framescriptSessionVariables
+      \ ErrorCode
+      \ ErrorMsg
+      \ DeclareVarMode
+      \ PlatformEncodingMode
+
+syn keyword framescriptStructure
+      \ Event
+      \ EndEvent
+
+syn keyword framescriptStatement
+      \ Sub
+      \ EndSub
+      \ Run
+      \ Function
+      \ EndFunction
+      \ Set
+      \ Add
+      \ Apply
+      \ CallClient
+      \ Close
+      \ Copy
+      \ Cut
+      \ DialogBox
+      \ Delete
+      \ Demote
+      \ Display
+      \ DocCompare
+      \ Export
+      \ Find
+      \ LeaveLoop
+      \ LeaveScript
+      \ LeaveSub
+      \ LoopNext
+      \ Merge
+      \ MsgBox
+      \ Paste
+      \ PopClipboard
+      \ PushClipboard
+      \ Read
+      \ Replace
+      \ Return
+      \ Sort
+      \ Split
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptApplySubStatement skipwhite skipempty
+      \ Apply
+
+syn keyword framescriptApplySubStatement
+      \ contained
+      \ Pagelayout
+      \ TextProperties
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptClearSubStatement skipwhite skipempty
+      \ Clear
+
+syn keyword framescriptClearSubStatement
+      \ contained
+      \ ChangeBars
+      \ Text
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptCloseSubStatement skipwhite skipempty
+      \ Close
+
+syn keyword framescriptCloseSubStatement
+      \ contained
+      \ Book
+      \ Document
+      \ TextFile
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptExecSubStatement skipwhite skipempty
+      \ Exec
+
+syn keyword framescriptExecSubStatement
+      \ contained
+      \ Compile
+      \ Script
+      \ Wait
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptExecuteSubStatement skipwhite skipempty
+      \ Execute
+
+syn keyword framescriptExecuteSubStatement
+      \ contained
+      \ FrameCommand
+      \ Hypertext
+      \ StartUndoCheckPoint
+      \ EndUndoCheckPoint
+      \ ClearUndoHistory
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptGenerateSubStatement skipwhite skipempty
+      \ Generate
+
+syn keyword framescriptGenerateSubStatement
+      \ contained
+      \ Bookfile
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptGetSubStatement skipwhite skipempty
+      \ Get
+
+syn keyword framescriptGetSubStatement
+      \ contained
+      \ Member
+      \ Object
+      \ String
+      \ TextList
+      \ TextProperties
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptImportSubStatement skipwhite skipempty
+      \ Import
+
+syn keyword framescriptImportSubStatement
+      \ contained
+      \ File
+      \ Formats
+      \ ElementDefs
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptInstallSubStatement skipwhite skipempty
+      \ Install
+      \ Uninstall
+
+syn keyword framescriptInstallSubStatement
+      \ contained
+      \ ChangeBars
+      \ Text
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptNewSubStatement skipwhite skipempty
+      \ New
+
+syn keyword framescriptNewSubStatement
+      \ contained
+      \ AFrame
+      \ Footnote
+      \ Marker
+      \ TiApiClient
+      \ Variable
+      \ XRef
+      \ FormatChangeList
+      \ FormatRule
+      \ FmtRuleClause
+      \ Arc
+      \ Ellipse
+      \ Flow
+      \ Group
+      \ Inset
+      \ Line
+      \ Math
+      \ Polygon
+      \ Polyline
+      \ Rectangle
+      \ RoundRect
+      \ TextFrame
+      \ Textline
+      \ UnanchoredFrame
+      \ Command
+      \ Menu
+      \ MenuItemSeparator
+      \ Book
+      \ CharacterFormat
+      \ Color
+      \ ConditionFormat
+      \ ElementDef
+      \ FormatChangeList
+      \ MarkerType
+      \ MasterPage
+      \ ParagraphFormat
+      \ PgfFmt
+      \ ReferencePAge
+      \ RulingFormat
+      \ TableFormat
+      \ VariableFormat
+      \ XRefFormat
+      \ BodyPage
+      \ BookComponent
+      \ Paragraph
+      \ Element
+      \ Attribute
+      \ AttributeDef
+      \ AttributeList
+      \ AttributeDefList
+      \ ElementLoc
+      \ ElementRange
+      \ Table
+      \ TableRows
+      \ TableCols
+      \ Text
+      \ Integer
+      \ Real
+      \ Metric
+      \ String
+      \ Object
+      \ TextLoc
+      \ TextRange
+      \ IntList
+      \ UIntList
+      \ MetricList
+      \ StringList
+      \ PointList
+      \ TabList
+      \ PropertyList
+      \ LibVar
+      \ ScriptVar
+      \ SubVar
+      \ TextFile
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptOpenSubStatement skipwhite skipempty
+      \ Open
+
+syn keyword framescriptOpenSubStatement
+      \ contained
+      \ Document
+      \ Book
+      \ TextFile
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptPrintSubStatement skipwhite skipempty
+      \ Print
+
+syn keyword framescriptPrintSubStatement
+      \ contained
+      \ Document
+      \ Book
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptQuitSubStatement skipwhite skipempty
+      \ Quit
+
+syn keyword framescriptQuitSubStatement
+      \ contained
+      \ Session
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptRemoveSubStatement skipwhite skipempty
+      \ Remove
+
+syn keyword framescriptRemoveSubStatement
+      \ contained
+      \ Attribute
+      \ CommandObject
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptSaveSubStatement skipwhite skipempty
+      \ Save
+
+syn keyword framescriptSaveSubStatement
+      \ contained
+      \ Document
+      \ Book
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptSelectSubStatement skipwhite skipempty
+      \ Select
+
+syn keyword framescriptSelectSubStatement
+      \ contained
+      \ TableCells
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptStraddleSubStatement skipwhite skipempty
+      \ Straddle
+
+syn keyword framescriptStraddleSubStatement
+      \ contained
+      \ TableCells
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptUpdateSubStatement skipwhite skipempty
+      \ Update
+
+syn keyword framescriptUpdateSubStatement
+      \ contained
+      \ ReDisplay
+      \ Formatting
+      \ Hyphenating
+      \ ResetEquationsSettings
+      \ ResetRefFrames
+      \ RestartPgfNums
+      \ TextInset
+      \ Variables
+      \ XRefs
+      \ Book
+
+syn keyword framescriptStatement
+      \ nextgroup=framescriptWriteSubStatement skipwhite skipempty
+      \ Write
+
+syn keyword framescriptUpdateSubStatement
+      \ contained
+      \ Console
+      \ Display
+
+syn keyword framescriptRepeat
+      \ Loop
+      \ EndLoop
+
+syn keyword framescriptConditional
+      \ If
+      \ ElseIf
+      \ Else
+      \ EndIf
+
+syn keyword framescriptType
+      \ Local
+      \ GlobalVar
+
+let b:framescript_minlines = exists("framescript_minlines")
+                         \ ? framescript_minlines : 15
+exec "syn sync ccomment framescriptComment minlines=" . b:framescript_minlines
+
+hi def link framescriptTodo                 Todo
+hi def link framescriptComment              Comment
+hi def link framescriptCommentStart         framescriptComment
+hi def link framescriptInclude              Include
+hi def link framescriptIncluded             String
+hi def link framescriptBoolean              Boolean
+hi def link framescriptNumber               Number
+hi def link framescriptInteger              framescriptNumber
+hi def link framescriptReal                 framescriptNumber
+hi def link framescriptMetric               framescriptNumber
+hi def link framescriptCharacter            framescriptNumber
+hi def link framescriptString               String
+hi def link framescriptStringSpecialChar    SpecialChar
+hi def link framescriptConstant             Constant
+hi def link framescriptOperator             None
+hi def link framescriptSessionVariables     PreProc
+hi def link framescriptStructure            Structure
+hi def link framescriptStatement            Statement
+hi def link framescriptSubStatement         Type
+hi def link framescriptApplySubStatement    framescriptSubStatement
+hi def link framescriptClearSubStatement    framescriptSubStatement
+hi def link framescriptCloseSubStatement    framescriptSubStatement
+hi def link framescriptExecSubStatement     framescriptSubStatement
+hi def link framescriptExecuteSubStatement  framescriptSubStatement
+hi def link framescriptGenerateSubStatement framescriptSubStatement
+hi def link framescriptGetSubStatement      framescriptSubStatement
+hi def link framescriptImportSubStatement   framescriptSubStatement
+hi def link framescriptInstallSubStatement  framescriptSubStatement
+hi def link framescriptNewSubStatement      framescriptSubStatement
+hi def link framescriptOpenSubStatement     framescriptSubStatement
+hi def link framescriptPrintSubStatement    framescriptSubStatement
+hi def link framescriptQuitSubStatement     framescriptSubStatement
+hi def link framescriptRemoveSubStatement   framescriptSubStatement
+hi def link framescriptSaveSubStatement     framescriptSubStatement
+hi def link framescriptSelectSubStatement   framescriptSubStatement
+hi def link framescriptStraddleSubStatement framescriptSubStatement
+hi def link framescriptUpdateSubStatement   framescriptSubStatement
+hi def link framescriptRepeat               Repeat
+hi def link framescriptConditional          Conditional
+hi def link framescriptType                 Type
+
+let b:current_syntax = "framescript"
+
+let &cpo = s:cpo_save
+unlet s:cpo_save
diff --git a/runtime/syntax/indent.vim b/runtime/syntax/indent.vim
index ef4df5f..359a724 100644
--- a/runtime/syntax/indent.vim
+++ b/runtime/syntax/indent.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         indent(1) configuration file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2007-05-07
 "   indent_is_bsd:  If exists, will change somewhat to match BSD implementation
 "
 " TODO: is the deny-all (a la lilo.vim nice or no?)...
@@ -26,6 +26,20 @@
 syn region  indentComment start='//' skip='\\$' end='$'
                           \ contains=indentTodo,@Spell
 
+syn match   indentOptions '-\%(bli\|c\%([bl]i\|[dip]\)\=\|di\=\|ip\=\|lc\=\|pp\=i\|sbi\|ts\|-\%(brace-indent\|comment-indentation\|case-brace-indentation\|declaration-comment-column\|continuation-indentation\|case-indentation\|else-endif-column\|line-comments-indentation\|declaration-indentation\|indent-level\|parameter-indentation\|line-length\|comment-line-length\|paren-indentation\|preprocessor-indentation\|struct-brace-indentation\|tab-size\)\)'
+                        \ nextgroup=indentNumber skipwhite skipnl
+if !exists("indent_is_bsd")
+  syn match indentOptions '-i\|--indentation-level'
+                        \ nextgroup=indentNumber skipwhite skipnl
+endif
+
+syn match   indentNumber  display contained '\d\+\>'
+
+syn match   indentOptions '-T'
+                        \ nextgroup=indentIdent skipwhite skipnl
+
+syn match   indentIdent   display contained '\h\w*\>'
+
 syn keyword indentOptions -bacc --blank-lines-after-ifdefs
                         \ -bad --blank-lines-after-declarations
                         \ -badp --blank-lines-after-procedure-declarations
@@ -41,8 +55,7 @@
                         \ -br --braces-on-if-line
                         \ -brf --braces-on-func-def-line
                         \ -brs --braces-on-struct-decl-line
-                        \ -bs --Bill-Shannon
-                        \ -bs --blank-before-sizeof
+                        \ -bs --Bill-Shannon --blank-before-sizeof
                         \ -c++ --c-plus-plus
                         \ -cdb --comment-delimiters-on-blank-lines
                         \ -cdw --cuddle-do-while
@@ -53,12 +66,9 @@
                         \ -fc1 --format-first-column-comments
                         \ -fca --format-all-comments
                         \ -gnu --gnu-style
-                        \ -h --help
-                        \ -h --usage
+                        \ -h --help --usage
                         \ -hnl --honour-newlines
-                        \ -kr --k-and-r-style
-                        \ -kr --kernighan-and-ritchie
-                        \ -kr --kernighan-and-ritchie-style
+                        \ -kr --k-and-r-style --kernighan-and-ritchie --kernighan-and-ritchie-style
                         \ -lp --continue-at-parentheses
                         \ -lps --leave-preprocessor-space
                         \ -nbacc --no-blank-lines-after-ifdefs
@@ -70,8 +80,7 @@
                         \ -nbc --no-blank-lines-after-commas
                         \ -nbfda --dont-break-function-decl-args
                         \ -nbfde --dont-break-function-decl-args-end
-                        \ -nbs --no-Bill-Shannon
-                        \ -nbs --no-blank-before-sizeof
+                        \ -nbs --no-Bill-Shannon --no-blank-before-sizeof
                         \ -ncdb --no-comment-delimiters-on-blank-lines
                         \ -ncdw --dont-cuddle-do-while
                         \ -nce --dont-cuddle-else
@@ -81,11 +90,11 @@
                         \ -nfc1 --dont-format-first-column-comments
                         \ -nfca --dont-format-comments
                         \ -nhnl --ignore-newlines
-                        \ -nip --dont-indent-parameters
-                        \ -nip --no-parameter-indentation
+                        \ -nip --dont-indent-parameters --no-parameter-indentation
                         \ -nlp --dont-line-up-parentheses
                         \ -nlps --remove-preprocessor-space
                         \ -npcs --no-space-after-function-call-names
+                        \ -npmt
                         \ -npro --ignore-profile
                         \ -nprs --no-space-after-parentheses
                         \ -npsl --dont-break-procedure-type
@@ -99,10 +108,7 @@
                         \ -nv --no-verbosity
                         \ -o --output
                         \ -o --output-file
-                        \ -orig --berkeley
-                        \ -orig --berkeley-style
-                        \ -orig --original
-                        \ -orig --original-style
+                        \ -orig --berkeley --berkeley-style --original --original-style
                         \ -pcs --space-after-procedure-calls
                         \ -pmt --preserve-mtime
                         \ -prs --space-after-parentheses
@@ -118,37 +124,6 @@
                         \ -v --verbose
                         \ -version --version
 
-syn keyword indentOptions -bli --brace-indent
-                        \ -c --comment-indentation
-                        \ -bli --brace-indent
-                        \ -c --comment-indentation
-                        \ -cbi --case-brace-indentation
-                        \ -cd --declaration-comment-column
-                        \ -ci --continuation-indentation
-                        \ -cli --case-indentation
-                        \ -cp --else-endif-column
-                        \ -d --line-comments-indentation
-                        \ -di --declaration-indentation
-                        \ -i --indent-level
-                        \ -ip --parameter-indentation
-                        \ -l --line-length
-                        \ -lc --comment-line-length
-                        \ -pi --paren-indentation
-                        \ -ppi --preprocessor-indentation
-                        \ -sbi --struct-brace-indentation
-                        \ -ts --tab-size
-                        \ nextgroup=indenNumber skipwhite
-if !exists("indent_is_bsd")
-  syn keyword indentOptions -i --indentation-level
-                          \ nextgroup=indentNumber skipwhite
-endif
-
-syn match   indentNumber  display '\<\d\+\>'
-
-syn keyword indentOptions -T nextgroup=indentIdent skipwhite
-
-syn match   indentIdent   display '\<\h\w*\>'
-
 if exists("indent_is_bsd")
   syn keyword indentOptions -ip -nip -dj -ndj -ei -nei
 endif
diff --git a/runtime/syntax/udevrules.vim b/runtime/syntax/udevrules.vim
index 2dca878..b04d728 100644
--- a/runtime/syntax/udevrules.vim
+++ b/runtime/syntax/udevrules.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:         udev(8) rules file
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2006-04-19
+" Latest Revision:  2006-12-18
 
 if exists("b:current_syntax")
   finish
@@ -10,21 +10,26 @@
 let s:cpo_save = &cpo
 set cpo&vim
 
+" TODO: Line continuations.
+
 syn keyword udevrulesTodo       contained TODO FIXME XXX NOTE
 
 syn region  udevrulesComment    display oneline start='^\s*#' end='$'
                                 \ contains=udevrulesTodo,@Spell
 
-syn keyword udevrulesRuleKey    BUS KERNEL SUBSYSTEM DRIVER ID RESULT
-                                \ nextgroup=udevrulesRuleEq
+syn keyword udevrulesRuleKey    ACTION DEVPATH KERNEL SUBSYSTEM KERNELS
+                                \ SUBSYSTEMS DRIVERS RESULT
+                                \ nextgroup=udevrulesRuleTest
+                                \ skipwhite
 
-syn keyword udevrulesRuleKey    SYSFS nextgroup=udevrulesSysFSPath
+syn keyword udevrulesRuleKey    ATTRS nextgroup=udevrulesAttrsPath
 
-syn region  udevrulesSysFSPath  display transparent
+syn region  udevrulesAttrsPath  display transparent
                                 \ matchgroup=udevrulesDelimiter start='{'
                                 \ matchgroup=udevrulesDelimiter end='}'
                                 \ contains=udevrulesPath
-                                \ nextgroup=udevrulesRuleEq
+                                \ nextgroup=udevrulesRuleTest
+                                \ skipwhite
 
 syn keyword udevrulesRuleKey    ENV nextgroup=udevrulesEnvVar
 
@@ -32,16 +37,42 @@
                                 \ matchgroup=udevrulesDelimiter start='{'
                                 \ matchgroup=udevrulesDelimiter end='}'
                                 \ contains=udevrulesVariable
-                                \ nextgroup=udevrulesRuleEq
+                                \ nextgroup=udevrulesRuleTest,udevrulesRuleEq
+                                \ skipwhite
 
-syn keyword udevrulesRuleKey    PROGRAM
+syn keyword udevrulesRuleKey    PROGRAM RESULT
+                                \ nextgroup=udevrulesEStringTest,udevrulesEStringEq
+                                \ skipwhite
+
+syn keyword udevrulesAssignKey  NAME SYMLINK OWNER GROUP RUN
                                 \ nextgroup=udevrulesEStringEq
+                                \ skipwhite
 
-syn keyword udevrulesAssignKey  NAME SYMLINK OWNER GROUP
-                                \ nextgroup=udevrulesEStringEq
-
-syn keyword udevrulesAssignKey  MODE
+syn keyword udevrulesAssignKey  MODE LABEL GOTO WAIT_FOR_SYSFS
                                 \ nextgroup=udevrulesRuleEq
+                                \ skipwhite
+
+syn keyword udevrulesAssignKey  ATTR nextgroup=udevrulesAttrsPath
+
+syn region  udevrulesAttrKey    display transparent
+                                \ matchgroup=udevrulesDelimiter start='{'
+                                \ matchgroup=udevrulesDelimiter end='}'
+                                \ contains=udevrulesKey
+                                \ nextgroup=udevrulesRuleEq
+                                \ skipwhite
+
+syn keyword udevrulesAssignKey  IMPORT nextgroup=udevrulesImport,
+                                \ udevrulesEStringEq
+                                \ skipwhite
+
+syn region  udevrulesImport     display transparent
+                                \ matchgroup=udevrulesDelimiter start='{'
+                                \ matchgroup=udevrulesDelimiter end='}'
+                                \ contains=udevrulesImportType
+                                \ nextgroup=udevrulesEStringEq
+                                \ skipwhite
+
+syn keyword udevrulesImportType program file parent
 
 syn keyword udevrulesAssignKey  OPTIONS
                                 \ nextgroup=udevrulesOptionsEq
@@ -50,28 +81,48 @@
 
 syn match   udevrulesVariable   contained display '[^}]\+'
 
-syn match   udevrulesRuleEq     contained '[[:space:]=]'
+syn match   udevrulesRuleTest   contained display '[=!:]='
                                 \ nextgroup=udevrulesString skipwhite
 
-syn match   udevrulesEStringEq  contained '[[:space:]=]'
+syn match   udevrulesEStringTest contained display '[=!+:]='
                                 \ nextgroup=udevrulesEString skipwhite
 
-syn match   udevrulesOptionsEq  contained '[[:space:]=]'
+syn match   udevrulesRuleEq     contained display '+=\|=\ze[^=]'
+                                \ nextgroup=udevrulesString skipwhite
+
+syn match   udevrulesEStringEq  contained '+=\|=\ze[^=]'
+                                \ nextgroup=udevrulesEString skipwhite
+
+syn match   udevrulesOptionsEq  contained '+=\|=\ze[^=]'
                                 \ nextgroup=udevrulesOptions skipwhite
 
 syn region  udevrulesEString    contained display oneline start=+"+ end=+"+
-                                \ contains=udevrulesStrEscapes
+                                \ contains=udevrulesStrEscapes,udevrulesStrVars
 
-syn match   udevrulesStrEscapes contained '%[nkpMmbcNPe%]'
+syn match   udevrulesStrEscapes contained '%[knpbMmcPrN%]'
 
+" TODO: This can actually stand alone (without {…}), so add a nextgroup here.
 syn region  udevrulesStrEscapes contained start='%c{' end='}'
                                 \ contains=udevrulesStrNumber
 
 syn region  udevrulesStrEscapes contained start='%s{' end='}'
                                 \ contains=udevrulesPath
 
+syn region  udevrulesStrEscapes contained start='%E{' end='}'
+                                \ contains=udevrulesVariable
+
 syn match   udevrulesStrNumber  contained '\d\++\='
 
+syn match   udevrulesStrVars    contained display '$\%(kernel\|number\|devpath\|id\|major\|minor\|result\|parent\|root\|tempnode\)\>'
+
+syn region  udevrulesStrVars    contained start='$attr{' end='}'
+                                \ contains=udevrulesPath
+
+syn region  udevrulesStrVars    contained start='$env{' end='}'
+                                \ contains=udevrulesVariable
+
+syn match   udevrulesStrVars    contained display '\$\$'
+
 syn region  udevrulesString     contained display oneline start=+"+ end=+"+
                                 \ contains=udevrulesPattern
 
@@ -96,6 +147,7 @@
 hi def link udevrulesAssignKey  Identifier
 hi def link udevrulesPath       Identifier
 hi def link udevrulesVariable   Identifier
+hi def link udevrulesAttrKey    Identifier
 " XXX: setting this to Operator makes for extremely intense highlighting.
 hi def link udevrulesEq         Normal
 hi def link udevrulesRuleEq     udevrulesEq
@@ -104,12 +156,14 @@
 hi def link udevrulesEString    udevrulesString
 hi def link udevrulesStrEscapes SpecialChar
 hi def link udevrulesStrNumber  Number
+hi def link udevrulesStrVars    Identifier
 hi def link udevrulesString     String
 hi def link udevrulesPattern    SpecialChar
 hi def link udevrulesPatRange   SpecialChar
 hi def link udevrulesOptions    udevrulesString
 hi def link udevrulesOption     Type
 hi def link udevrulesOptionSep  Delimiter
+hi def link udevrulesImportType Type
 
 let b:current_syntax = "udevrules"
 
diff --git a/src/gui_w32.c b/src/gui_w32.c
index 11330a9..c8f409c 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -1,4 +1,4 @@
-/* vi:set ts=8 sts=4 sw=4:
+s, if any./* vi:set ts=8 sts=4 sw=4:
  *
  * VIM - Vi IMproved		by Bram Moolenaar
  *				GUI support by Robert Webb
@@ -232,27 +232,6 @@
     LPARAM     lParam;
 } NMTTDISPINFO_NEW;
 
-#ifndef LPNMTTDISPINFO
-typedef struct tagNMTTDISPINFOA {
-    NMHDR	hdr;
-    LPSTR	lpszText;
-    char	szText[80];
-    HINSTANCE	hinst;
-    UINT	uFlags;
-    LPARAM	lParam;
-} NMTTDISPINFOA, *LPNMTTDISPINFOA;
-# define LPNMTTDISPINFO LPNMTTDISPINFOA
-
-typedef struct tagNMTTDISPINFOW {
-    NMHDR	hdr;
-    LPWSTR	lpszText;
-    WCHAR	szText[80];
-    HINSTANCE	hinst;
-    UINT	uFlags;
-    LPARAM	lParam;
-} NMTTDISPINFOW, *LPNMTTDISPINFOW;
-#endif
-
 #include <poppack.h>
 
 typedef HRESULT (WINAPI* DLLGETVERSIONPROC)(DLLVERSIONINFO *);
@@ -270,6 +249,35 @@
 
 #endif /* defined(FEAT_BEVAL) */
 
+#if defined(FEAT_TOOLBAR) || defined(FEAT_GUI_TABLINE)
+/* Older MSVC compilers don't have LPNMTTDISPINFO[AW] thus we need to define
+ * it here if LPNMTTDISPINFO isn't defined.
+ * MingW doesn't define LPNMTTDISPINFO but typedefs it.  Thus we need to check
+ * _MSC_VER. */
+# if !defined(LPNMTTDISPINFO) && defined(_MSC_VER)
+typedef struct tagNMTTDISPINFOA {
+    NMHDR	hdr;
+    LPSTR	lpszText;
+    char	szText[80];
+    HINSTANCE	hinst;
+    UINT	uFlags;
+    LPARAM	lParam;
+} NMTTDISPINFOA, *LPNMTTDISPINFOA;
+#  define LPNMTTDISPINFO LPNMTTDISPINFOA
+
+#  ifdef FEAT_MBYTE
+typedef struct tagNMTTDISPINFOW {
+    NMHDR	hdr;
+    LPWSTR	lpszText;
+    WCHAR	szText[80];
+    HINSTANCE	hinst;
+    UINT	uFlags;
+    LPARAM	lParam;
+} NMTTDISPINFOW, *LPNMTTDISPINFOW;
+#  endif
+# endif
+#endif
+
 #ifndef TTN_GETDISPINFOW
 # define TTN_GETDISPINFOW	(TTN_FIRST - 10)
 #endif
@@ -3326,7 +3334,7 @@
 	 * he/she can use arrow keys.
 	 *
 	 * new NOTE: BS_DEFPUSHBUTTON is required to be able to select the
-	 * right buttun when hitting <Enter>.  E.g., for the ":confirm quit"
+	 * right button when hitting <Enter>.  E.g., for the ":confirm quit"
 	 * dialog.  Also needed for when the textfield is the default control.
 	 * It appears to work now (perhaps not on Win95?).
 	 */
@@ -4048,7 +4056,7 @@
 		    s_hwnd,
 		    WS_CHILD | TBSTYLE_TOOLTIPS | TBSTYLE_FLAT,
 		    4000,		//any old big number
-		    31,			//number of images in inital bitmap
+		    31,			//number of images in initial bitmap
 		    s_hinst,
 		    IDR_TOOLBAR1,	// id of initial bitmap
 		    NULL,
diff --git a/src/gui_xmdlg.c b/src/gui_xmdlg.c
index dff8672..a747058 100644
--- a/src/gui_xmdlg.c
+++ b/src/gui_xmdlg.c
@@ -12,7 +12,7 @@
  *
  * Implementation of dialogue functions for the Motif GUI variant.
  *
- * Note about Lesstif: Apparenty lesstif doesn't get the widget layout right,
+ * Note about Lesstif: Apparently lesstif doesn't get the widget layout right,
  * when using a dynamic scrollbar policy.
  */
 
@@ -479,7 +479,7 @@
 	    XtFree(list[ENCODING][i]);
 	}
 
-	/* Destroy all the outstandig menu items.
+	/* Destroy all the outstanding menu items.
 	 */
 	for (i = count[ENCODING]; i < n_items; ++i)
 	{
diff --git a/src/screen.c b/src/screen.c
index eb7a63a..3e54ba6 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -37,7 +37,7 @@
  *
  * update_screen() is the function that updates all windows and status lines.
  * It is called form the main loop when must_redraw is non-zero.  It may be
- * called from other places when an immediated screen update is needed.
+ * called from other places when an immediate screen update is needed.
  *
  * The part of the buffer that is displayed in a window is set with:
  * - w_topline (first buffer line in window)
@@ -7614,7 +7614,7 @@
     int		    goto_cost;
     int		    attr;
 
-#define GOTO_COST   7	/* asssume a term_windgoto() takes about 7 chars */
+#define GOTO_COST   7	/* assume a term_windgoto() takes about 7 chars */
 #define HIGHL_COST  5	/* assume unhighlight takes 5 chars */
 
 #define PLAN_LE	    1
@@ -7652,7 +7652,7 @@
 	 * Don't do this if the cursor went beyond the last column, the cursor
 	 * position is unknown then (some terminals wrap, some don't )
 	 *
-	 * First check if the highlighting attibutes allow us to write
+	 * First check if the highlighting attributes allow us to write
 	 * characters to move the cursor to the right.
 	 */
 	if (row >= screen_cur_row && screen_cur_col < Columns)