updated for version 7.0018
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index f3ee1fe..cd3e304 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2004 Oct 06
+*eval.txt*      For Vim version 7.0aa.  Last change: 2004 Oct 10
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -670,19 +670,19 @@
 					*v:folddashes* *folddashes-variable*
 v:folddashes	Used for 'foldtext': dashes representing foldlevel of a closed
 		fold.
-		Read-only. |fold-foldtext|
+		Read-only in the |sandbox|. |fold-foldtext|
 
 					*v:foldlevel* *foldlevel-variable*
 v:foldlevel	Used for 'foldtext': foldlevel of closed fold.
-		Read-only. |fold-foldtext|
+		Read-only in the |sandbox|. |fold-foldtext|
 
 					*v:foldend* *foldend-variable*
 v:foldend	Used for 'foldtext': last line of closed fold.
-		Read-only. |fold-foldtext|
+		Read-only in the |sandbox|. |fold-foldtext|
 
 					*v:foldstart* *foldstart-variable*
 v:foldstart	Used for 'foldtext': first line of closed fold.
-		Read-only. |fold-foldtext|
+		Read-only in the |sandbox|. |fold-foldtext|
 
 					*v:insertmode* *insertmode-variable*
 v:insertmode	Used for the |InsertEnter| and |InsertChange| autocommand
@@ -710,9 +710,9 @@
 		command.  See |multi-lang|.
 
 						*v:lnum* *lnum-variable*
-v:lnum		Line number for the 'foldexpr' and 'indentexpr' expressions.
-		Only valid while one of these expressions is being evaluated.
-		Read-only. |fold-expr| 'indentexpr'
+v:lnum		Line number for the 'foldexpr' |fold-expr| and 'indentexpr'
+		expressions.  Only valid while one of these expressions is
+		being evaluated.  Read-only when in the |sandbox|.
 
 					*v:prevcount* *prevcount-variable*
 v:prevcount	The count given for the last but one Normal mode command.
@@ -812,6 +812,7 @@
 argv( {nr})			String	{nr} entry of the argument list
 browse( {save}, {title}, {initdir}, {default})
 				String	put up a file requester
+browsedir( {title}, {initdir})  String	put up a directory requester
 bufexists( {expr})		Number	TRUE if buffer {expr} exists
 buflisted( {expr})		Number  TRUE if buffer {expr} is listed
 bufloaded( {expr})		Number  TRUE if buffer {expr} is loaded
@@ -989,6 +990,19 @@
 		When the "Cancel" button is hit, something went wrong, or
 		browsing is not possible, an empty string is returned.
 
+							*browsedir()*
+browsedir({title}, {initdir})
+		Put up a directory requester.  This only works when
+		"has("browse")" returns non-zero (only in some GUI versions).
+		On systems where a directory browser is not supported a file
+		browser is used.  In that case: select a file in the directory
+		to be used.
+		The input fields are:
+		    {title}	title for the requester
+		    {initdir}	directory to start browsing in
+		When the "Cancel" button is hit, something went wrong, or
+		browsing is not possible, an empty string is returned.
+
 bufexists({expr})					*bufexists()*
 		The result is a Number, which is non-zero if a buffer called
 		{expr} exists.
@@ -1489,6 +1503,16 @@
 		options is removed.
 		{not available when compiled without the |+folding| feature}
 
+foldtextresult({lnum})					*foldtextresult()*
+		Returns the text that is displayed for the closed fold at line
+		{lnum}.  Evaluates 'foldtext' in the appropriate context.
+		When there is no closed fold at {lnum} an empty string is
+		returned.
+		{lnum} is used like with |getline()|.  Thus "." is the current
+		line, "'m" mark m, etc.
+		Useful when exporting folded text, e.g., to HTML.
+		{not available when compiled without the |+folding| feature}
+
 							*foreground()*
 foreground()	Move the Vim window to the foreground.  Useful when sent from
 		a client to a Vim server. |remote_send()|
@@ -4716,7 +4740,7 @@
 these expressions having nasty side effects.  This gives some safety for when
 these options are set from a modeline.  It is also used when the command from
 a tags file is executed.
-This is not guaranteed 100% secure, but it should block most attacks.
+The sandbox is also used for the |:sandbox| command.
 
 These items are not allowed in the sandbox:
 	- changing the buffer text
@@ -4725,5 +4749,12 @@
 	- executing a shell command
 	- reading or writing a file
 	- jumping to another buffer or editing a file
+This is not guaranteed 100% secure, but it should block most attacks.
+
+							*:san* *:sandbox*
+:sandbox {cmd}		Execute {cmd} in the sandbox.  Useful to evaluate an
+			option that may have been set from a modeline, e.g.
+			'foldexpr'.
+
 
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/doc/intro.txt b/runtime/doc/intro.txt
index 8d3ac6e..03f7315 100644
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 7.0aa.  Last change: 2004 Jun 12
+*intro.txt*     For Vim version 7.0aa.  Last change: 2004 Oct 08
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -226,12 +226,14 @@
 	Kayhan Demirel		sent me news in Uganda
 	Chris & John Downey	xvi (ideas for multi-windows version)
 	Henk Elbers		first VMS port
+	Daniel Elstner		GTK+ 2 port
 	Eric Fischer		Mac port, 'cindent', and other improvements
 	Benji Fisher		Answering lots of user questions
 	Bill Foster		Athena GUI port
 	Loic Grenie		xvim (ideas for multi windows version)
 	Sven Guckes		Vim promotor and previous WWW page maintainer
 	Darren Hiebert		Exuberant ctags
+	Jason Hildebrand	GTK+ 2 port
 	Bruce Hunsaker		improvements for VMS port
 	Andy Kahn		Cscope support, GTK+ GUI port
 	Oezguer Kesim		Maintainer of Vim Mailing Lists
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 4879a64..6001909 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt*	For Vim version 7.0aa.  Last change: 2004 Oct 07
+*options.txt*	For Vim version 7.0aa.  Last change: 2004 Oct 08
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -1062,7 +1062,7 @@
 	break if 'linebreak' is on.
 
 						*'browsedir'* *'bsdir'*
-'browsedir' 'bsdir'	string	(default for "last")
+'browsedir' 'bsdir'	string	(default: "last")
 			global
 			{not in Vi} {only for Motif and Win32 GUI}
 	Which directory to use for the file browser:
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 6fe03f9..a7d6d2b 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2004 Sep 18
+*syntax.txt*	For Vim version 7.0aa.  Last change: 2004 Oct 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -393,6 +393,9 @@
 Go back to the default to use 'number' by deleting the variable: >
    :unlet html_number_lines
 
+Closed folds are put in the HTML as they are displayed.  If you don't want
+this, use the "zR" command before invoking 2html.
+
 By default, HTML optimized for old browsers is generated.  If you prefer using
 cascading style sheets (CSS1) for the attributes (resulting in considerably
 shorter and valid HTML 4 file), use: >
diff --git a/runtime/doc/tags b/runtime/doc/tags
index c46eeb6..d54f794 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -2266,6 +2266,8 @@
 :sa	windows.txt	/*:sa*
 :sal	windows.txt	/*:sal*
 :sall	windows.txt	/*:sall*
+:san	eval.txt	/*:san*
+:sandbox	eval.txt	/*:sandbox*
 :sargument	windows.txt	/*:sargument*
 :sav	editing.txt	/*:sav*
 :saveas	editing.txt	/*:saveas*
@@ -4052,6 +4054,7 @@
 boolean	options.txt	/*boolean*
 break-finally	eval.txt	/*break-finally*
 browse()	eval.txt	/*browse()*
+browsedir()	eval.txt	/*browsedir()*
 browsefilter	editing.txt	/*browsefilter*
 bufexists()	eval.txt	/*bufexists()*
 buffer-hidden	windows.txt	/*buffer-hidden*
@@ -4922,6 +4925,7 @@
 hebrew.txt	hebrew.txt	/*hebrew.txt*
 help	various.txt	/*help*
 help-context	help.txt	/*help-context*
+help-tags	tags	1
 help-translated	various.txt	/*help-translated*
 help-xterm-window	various.txt	/*help-xterm-window*
 help.txt	help.txt	/*help.txt*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index 7cb6dba..a536f7c 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Oct 07
+*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Oct 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,15 +30,8 @@
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Add browsedir(): like browse() but for directories.
-    For GTK it already sort-of works when the default name is empty.
-
-When ":file" sets the alternate file name and it's empty this doesn't make
-sense.  Could skip it, but would that break scripts that rely on the buffer to
-exist?
-
 Folding support for 2html. (Carl Osterwisch, Oct 4)
-How to evaluate an expression in the sandbox?
+Now diff output!
 
 Aborting at the ATTENTION prompt causes trouble:
     buffer remains active, nwindows isn't closed (fixed in buffer.c)
@@ -58,13 +51,6 @@
 
 Patch for Win32 textdomain: NAKADAIRA Yukihiro, Sept 17.
 
-GTK 2 error message with this sequence (Namsh Oct 7):
-	- start gvim with French locale
-	- set enc=utf-8
-	- :aunmenu *
-	- :unlet  did_install_default_menus
-	- :source $VIMRUNTIME/menu.vim
-
 Valencia: executable("xxd.exe") returns true while "!xxd" doesn't work.
 Works fine for me.  Only in specific environment?
 
@@ -372,6 +358,8 @@
 file filename" but without setting the alternate file to a buffer without a
 name. (Charles Campbell)
 
+Add gui_mch_browsedir() for Motif, KDE and Mac OS/X.
+
 
 Vi incompatibility:
 9   In Ex mode, "u" undoes all changes, not just the last one. (John Cowan)
diff --git a/runtime/doc/usr_21.txt b/runtime/doc/usr_21.txt
index 39ee4d2..b5484e9 100644
--- a/runtime/doc/usr_21.txt
+++ b/runtime/doc/usr_21.txt
@@ -1,4 +1,4 @@
-*usr_21.txt*	For Vim version 7.0aa.  Last change: 2004 Jun 16
+*usr_21.txt*	For Vim version 7.0aa.  Last change: 2004 Oct 10
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -65,7 +65,7 @@
 	:w !{program}		execute {program} and send text to its input
 	:[range]!{program}	filter text through {program}
 
-Notice that the presense of a range before "!{program}" makes a big
+Notice that the presence of a range before "!{program}" makes a big
 difference.  Without it executes the program normally, with the range a number
 of text lines is filtered through the program.
 
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 7074532..d947b93 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Oct 07
+*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Oct 11
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -48,6 +48,13 @@
 Buffers without a name report "No Name" instead of "No File".  It was
 confusing for buffers with a name and 'buftype' set to "nofile".
 
+When ":file xxx" is used in a buffer without a name, the alternate file name
+isn't set.  This avoids creating buffers without a name that are not useful.
+
+The "2html.vim" script now converts closed folds to HTML.  This means the HTML
+looks like its displayed, with the same folds open and closed.  Use "zR" if no
+folds should appear in the HTML. (partly by Carl Osterwisch)
+
 ==============================================================================
 NEW FEATURES						*new-7*
 
@@ -124,13 +131,18 @@
 
 |:delmarks|		Delete marks.
 
+|:sandbox|		Command modifier: execute the argument in the sandbox.
+
 
 New functions: ~
 
+browsedir(title, init)	|browsedir()|	Dialog to select a directory.
 byteidx(expr, nr)	|byteidx()| 	Index of a character. (Ilya Sher)
 finddir(name)		|finddir()|	Find a directory in 'path'.
 findfile(name)		|findfile()|	Find a file in 'path'. (Johannes
 					Zellner)
+foldtextresult(lnum)	|foldtextresult()|  The text displayed for a closed
+					fold at line "lnum".
 getfperm(fname)		|getfperm()|	Get file permission string. (Nikolai
 					Weibull)
 getftype(fname)		|getftype()|	Get type of file. (Nikolai Weibull)
@@ -396,4 +408,11 @@
 Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because
 there is no codepage for latin9.  Do our own conversion from latin9 to UCS2.
 
+When two versions of GTK+ 2 are installed it was possible to use the header
+files from one and the library from the other.  Use GTK_LIBDIR to put the
+directory for the library early in the link flags.
+
+With the GUI find/replace dialog a replace only worked if the pattern was
+literal text.  Now it works for any pattern.
+
  vim:tw=78:ts=8:ft=help:norl:
diff --git a/runtime/syntax/2html.vim b/runtime/syntax/2html.vim
index 2afc09f..25da291 100644
--- a/runtime/syntax/2html.vim
+++ b/runtime/syntax/2html.vim
@@ -1,6 +1,6 @@
 " Vim syntax support file
 " Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 2004 May 31
+" Last Change: 2004 Oct 10
 "	       (modified by David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>)
 "	       (XHTML support by Panagiotis Issaris <takis@lumumba.luc.ac.be>)
 
@@ -238,40 +238,88 @@
   let s:end = line("$")
 endif
 
+" Closed folds are kept in the HTML.  Prepare the closed fold template text.
+if has('folding')
+  let s:c = &fillchars[matchend(&fillchars, 'fold:')]
+  if s:c == ''
+    let s:c = '-'
+  endif
+  let s:htmlfoldtext = '+' . s:c
+  while strlen(s:htmlfoldtext) < &columns
+      let s:htmlfoldtext = s:htmlfoldtext . s:c
+  endwhile
+  unlet s:c
+endif
+
+
 while s:lnum <= s:end
 
   " Get the current line
   let s:line = getline(s:lnum)
-  let s:len = strlen(s:line)
   let s:new = ""
 
-  if s:numblines
-    let s:new = '<span class="lnr">' . strpart('        ', 0, strlen(line("$")) - strlen(s:lnum)) . s:lnum . '</span>  '
-  endif
+  if has('folding') && foldclosed(s:lnum) > -1
+    "
+    " This is the beginning of a folded block
+    "
+    if s:numblines
+      let s:new = strpart('        ', 0, strlen(line("$")) - strlen(s:lnum)) . s:lnum . ' '
+    endif
+    let s:line = foldtextresult(s:lnum)
 
-  " Loop over each character in the line
-  let s:col = 1
-  while s:col <= s:len
-    let s:startcol = s:col " The start column for processing text
-    let s:id = synID(s:lnum, s:col, 1)
-    let s:col = s:col + 1
-    " Speed loop (it's small - that's the trick)
-    " Go along till we find a change in synID
-    while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile
-
-    " Output the text with the same synID, with class set to {s:id_name}
-    let s:id = synIDtrans(s:id)
-    let s:id_name = synIDattr(s:id, "name", s:whatterm)
-    let s:new = s:new . '<span class="' . s:id_name . '">' . substitute(substitute(substitute(substitute(substitute(strpart(s:line, s:startcol - 1, s:col - s:startcol), '&', '\&amp;', 'g'), '<', '\&lt;', 'g'), '>', '\&gt;', 'g'), '"', '\&quot;', 'g'), "\x0c", '<hr class="PAGE-BREAK">', 'g') . '</span>'
+    let s:new = s:new . s:line
+    if !exists("html_no_pre")
+      let s:new = s:new . strpart(s:htmlfoldtext, strlen(s:new))
+    endif
+    
+    " Replace the reserved html characters
+    let s:new = substitute(substitute(substitute(substitute(substitute(s:new, '&', '\&amp;', 'g'), '<', '\&lt;', 'g'), '>', '\&gt;', 'g'), '"', '\&quot;', 'g'), "\x0c", '<hr class="PAGE-BREAK">', 'g')
+   
+    let s:id_name = "Folded"
+    let s:id = hlID(s:id_name)
+    let s:new = '<span class="' . s:id_name . '">' . s:new . '</span>'
     " Add the class to class list if it's not there yet
     if stridx(s:idlist, "," . s:id . ",") == -1
       let s:idlist = s:idlist . s:id . ","
     endif
 
-    if s:col > s:len
-      break
+    " Skip to the end of the fold  
+    let s:lnum = foldclosedend(s:lnum)
+
+  else
+    "
+    " A line that is not folded.
+    "
+    let s:len = strlen(s:line)
+
+    if s:numblines
+      let s:new = '<span class="lnr">' . strpart('        ', 0, strlen(line("$")) - strlen(s:lnum)) . s:lnum . '</span>  '
     endif
-  endwhile
+
+    " Loop over each character in the line
+    let s:col = 1
+    while s:col <= s:len
+      let s:startcol = s:col " The start column for processing text
+      let s:id = synID(s:lnum, s:col, 1)
+      let s:col = s:col + 1
+      " Speed loop (it's small - that's the trick)
+      " Go along till we find a change in synID
+      while s:col <= s:len && s:id == synID(s:lnum, s:col, 1) | let s:col = s:col + 1 | endwhile
+
+      " Output the text with the same synID, with class set to {s:id_name}
+      let s:id = synIDtrans(s:id)
+      let s:id_name = synIDattr(s:id, "name", s:whatterm)
+      let s:new = s:new . '<span class="' . s:id_name . '">' . substitute(substitute(substitute(substitute(substitute(strpart(s:line, s:startcol - 1, s:col - s:startcol), '&', '\&amp;', 'g'), '<', '\&lt;', 'g'), '>', '\&gt;', 'g'), '"', '\&quot;', 'g'), "\x0c", '<hr class="PAGE-BREAK">', 'g') . '</span>'
+      " Add the class to class list if it's not there yet
+      if stridx(s:idlist, "," . s:id . ",") == -1
+	let s:idlist = s:idlist . s:id . ","
+      endif
+
+      if s:col > s:len
+	break
+      endif
+    endwhile
+  endif
 
   " Expand tabs
   let s:pad=0
diff --git a/runtime/syntax/slrnsc.vim b/runtime/syntax/slrnsc.vim
index 3f653cc..838af6a 100644
--- a/runtime/syntax/slrnsc.vim
+++ b/runtime/syntax/slrnsc.vim
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:	Slrn score file (based on slrn 0.9.8.0)
-" Maintainer:	Preben 'Peppe' Guldberg <peppe-vim@wielders.org>
-" Last Change:	19 May 2004
+" Maintainer:	Preben 'Peppe' Guldberg <peppe@wielders.org>
+" Last Change:	8 Oct 2004
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -48,7 +48,7 @@
 
 syn keyword slrnscScore		contained Score
 syn match slrnscScoreIdent	contained "%.*"
-syn match slrnScoreLine		"^\s*Score::\=\s\+=\=-\=\d\+\s*\(%.*\)\=$" skipempty nextgroup=slrnscScoreItem contains=slrnscScore,slrnscDelim,slrnscOper,slrnscNumber,slrnscScoreIdent
+syn match slrnScoreLine		"^\s*Score::\=\s\+=\=[-+]\=\d\+\s*\(%.*\)\=$" skipempty nextgroup=slrnscScoreItem contains=slrnscScore,slrnscDelim,slrnscOper,slrnscNumber,slrnscScoreIdent
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already