changeset 800:d8f905020502 v7.0b

updated for version 7.0b
author vimboss
date Fri, 24 Mar 2006 22:46:53 +0000
parents 6beb2c667935
children 67fa3b60422d
files Contents Filelist README_amisrc.txt README_bindos.txt README_lang.txt README_os2.txt README_src.txt README_srcdos.txt README_unix.txt README_vms.txt runtime/autoload/ccomplete.vim runtime/doc/arabic.txt runtime/doc/eval.txt runtime/doc/farsi.txt runtime/doc/filetype.txt runtime/doc/getscript.txt runtime/doc/hebrew.txt runtime/doc/howto.txt runtime/doc/intro.txt runtime/doc/os_amiga.txt runtime/doc/os_dos.txt runtime/doc/os_win32.txt runtime/doc/pattern.txt runtime/doc/pi_spec.txt runtime/doc/quickfix.txt runtime/doc/quotes.txt runtime/doc/remote.txt runtime/doc/repeat.txt runtime/doc/scroll.txt runtime/doc/spell.txt runtime/doc/sql.txt runtime/doc/starting.txt runtime/doc/syntax.txt runtime/doc/tagsrch.txt runtime/doc/todo.txt runtime/doc/usr_01.txt runtime/doc/usr_04.txt runtime/doc/usr_05.txt runtime/doc/usr_06.txt runtime/doc/usr_07.txt runtime/doc/usr_11.txt runtime/doc/usr_12.txt runtime/doc/usr_20.txt runtime/doc/usr_23.txt runtime/doc/usr_27.txt runtime/doc/usr_28.txt runtime/doc/usr_30.txt runtime/doc/usr_31.txt runtime/doc/usr_40.txt runtime/doc/various.txt runtime/doc/version7.txt runtime/doc/vimball.txt runtime/doc/windows.txt runtime/doc/workshop.txt runtime/filetype.vim runtime/macros/matchit.vim src/Make_cyg.mak src/Make_dice.mak src/Make_djg.mak src/Make_morph.mak src/Make_vms.mms src/Make_w16.mak src/dosinst.c src/eval.c src/ex_cmds.h src/hashtable.c src/if_mzsch.c src/if_mzsch.h src/memline.c src/popupmenu.c src/popupmnu.c src/proto/edit.pro src/proto/ex_cmds.pro src/proto/ex_cmds2.pro src/proto/fileio.pro src/proto/gui_beval.pro src/proto/gui_motif.pro src/proto/gui_x11.pro src/proto/hangulin.pro src/proto/hashtable.pro src/proto/if_perl.pro src/proto/if_python.pro src/proto/if_ruby.pro src/proto/if_xcmdsrv.pro src/proto/mbyte.pro src/proto/memline.pro src/proto/menu.pro src/proto/misc1.pro src/proto/misc2.pro src/proto/move.pro src/proto/os_msdos.pro src/proto/os_win32.pro src/proto/popupmenu.pro src/proto/quickfix.pro src/proto/screen.pro src/proto/search.pro src/proto/spell.pro src/proto/tag.pro src/proto/term.pro src/proto/termlib.pro src/proto/ui.pro src/structs.h src/testdir/test61.in
diffstat 103 files changed, 1940 insertions(+), 2373 deletions(-) [+]
line wrap: on
line diff
--- a/Contents
+++ b/Contents
@@ -9,10 +9,10 @@ Vim		Vi IMproved.  A clone of the UNIX t
 		messages, shows current file name in window title, on-line
 		help, rectangular cut/paste, etc., etc., etc...
 
-		Version 7.0aa.  Also runs under UNIX, MSDOS and other systems.
-		vim70aart.tgz  contains the documentation and syntax files.
-		vim70aabin.tgz contains the binaries.
-		vim70aasrc.tgz contains the sources.
+		Version 7.0b.  Also runs under UNIX, MSDOS and other systems.
+		vim70brt.tgz  contains the documentation and syntax files.
+		vim70bbin.tgz contains the binaries.
+		vim70bsrc.tgz contains the sources.
 		Author: Bram Moolenaar et al.
 
 
--- a/Filelist
+++ b/Filelist
@@ -31,7 +31,7 @@ SRC_ALL =	\
 		src/gui_beval.c \
 		src/gui_beval.h \
 		src/hardcopy.c \
-		src/hashtable.c \
+		src/hashtab.c \
 		src/keymap.h \
 		src/macros.h \
 		src/main.c \
@@ -52,7 +52,7 @@ SRC_ALL =	\
 		src/ops.c \
 		src/option.c \
 		src/option.h \
-		src/popupmenu.c \
+		src/popupmnu.c \
 		src/quickfix.c \
 		src/regexp.c \
 		src/regexp.h \
@@ -96,7 +96,7 @@ SRC_ALL =	\
 		src/proto/gui.pro \
 		src/proto/gui_beval.pro \
 		src/proto/hardcopy.pro \
-		src/proto/hashtable.pro \
+		src/proto/hashtab.pro \
 		src/proto/main.pro \
 		src/proto/mark.pro \
 		src/proto/mbyte.pro \
@@ -111,7 +111,7 @@ SRC_ALL =	\
 		src/proto/normal.pro \
 		src/proto/ops.pro \
 		src/proto/option.pro \
-		src/proto/popupmenu.pro \
+		src/proto/popupmnu.pro \
 		src/proto/quickfix.pro \
 		src/proto/regexp.pro \
 		src/proto/screen.pro \
--- a/README_amisrc.txt
+++ b/README_amisrc.txt
@@ -1,4 +1,4 @@
-README_amisrc.txt for version 7.0aa of Vim: Vi IMproved.
+README_amisrc.txt for version 7.0b of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_ami.txt" for installation instructions for the Amiga.
--- a/README_bindos.txt
+++ b/README_bindos.txt
@@ -1,4 +1,4 @@
-README_bindos.txt for version 7.0aa of Vim: Vi IMproved.
+README_bindos.txt for version 7.0b of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
--- a/README_lang.txt
+++ b/README_lang.txt
@@ -1,4 +1,4 @@
-README_lang.txt for version 7.0aa of Vim: Vi IMproved.
+README_lang.txt for version 7.0b of Vim: Vi IMproved.
 
 This file contains files for non-English languages:
 - Translated messages.
--- a/README_os2.txt
+++ b/README_os2.txt
@@ -1,4 +1,4 @@
-README_os2.txt for version 7.0aa of Vim: Vi IMproved.
+README_os2.txt for version 7.0b of Vim: Vi IMproved.
 
 This file explains the installation of Vim on OS/2 systems.
 See "README.txt" for general information about Vim.
--- a/README_src.txt
+++ b/README_src.txt
@@ -1,4 +1,4 @@
-README_src.txt for version 7.0aa of Vim: Vi IMproved.
+README_src.txt for version 7.0b 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
--- a/README_srcdos.txt
+++ b/README_srcdos.txt
@@ -1,4 +1,4 @@
-README_srcdos.txt for version 7.0aa of Vim: Vi IMproved.
+README_srcdos.txt for version 7.0b of Vim: Vi IMproved.
 
 See "README.txt" for general information about Vim.
 See "README_dos.txt" for installation instructions for MS-DOS and MS-Windows.
--- a/README_unix.txt
+++ b/README_unix.txt
@@ -1,4 +1,4 @@
-README_unix.txt for version 7.0aa of Vim: Vi IMproved.
+README_unix.txt for version 7.0b of Vim: Vi IMproved.
 
 This file explains the installation of Vim on Unix systems.
 See "README.txt" for general information about Vim.
--- a/README_vms.txt
+++ b/README_vms.txt
@@ -1,4 +1,4 @@
-README_vms.txt for version 7.0aa of Vim: Vi IMproved.
+README_vms.txt for version 7.0b of Vim: Vi IMproved.
 
 This file explains the installation of Vim on VMS systems.
 See "README.txt" in the runtime archive for information about Vim.
--- a/runtime/autoload/ccomplete.vim
+++ b/runtime/autoload/ccomplete.vim
@@ -1,7 +1,7 @@
 " Vim completion script
 " Language:	C
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Mar 19
+" Last Change:	2006 Mar 24
 
 
 " This function is used for the 'omnifunc' option.
@@ -166,9 +166,11 @@ function! ccomplete#Complete(findstart, 
 
     let res = []
     for i in range(len(diclist))
-      " New ctags has the "typename" field.
+      " New ctags has the "typeref" field.  Patched version has "typename".
       if has_key(diclist[i], 'typename')
 	call extend(res, s:StructMembers(diclist[i]['typename'], items[1:], 1))
+      elseif has_key(diclist[i], 'typeref')
+	call extend(res, s:StructMembers(diclist[i]['typeref'], items[1:], 1))
       endif
 
       " For a variable use the command, which must be a search pattern that
@@ -232,10 +234,9 @@ function! s:Tag2item(val)
 
   let res['extra'] = s:Tagcmd2extra(a:val['cmd'], a:val['name'], a:val['filename'])
 
-  " Use the whole search command as the "info" entry.
-  let s = matchstr(a:val['cmd'], '/^\s*\zs.*\ze$/')
+  let s = s:Dict2info(a:val)
   if s != ''
-    let res['info'] = substitute(s, '\\\(.\)', '\1', 'g')
+    let res['info'] = s
   endif
 
   let res['tagline'] = ''
@@ -253,6 +254,51 @@ function! s:Tag2item(val)
   return res
 endfunction
 
+" Use all the items in dictionary for the "info" entry.
+function! s:Dict2info(dict)
+  let info = ''
+  for k in sort(keys(a:dict))
+    let info  .= k . repeat(' ', 10 - len(k))
+    if k == 'cmd'
+      let info .= substitute(matchstr(a:dict['cmd'], '/^\s*\zs.*\ze$/'), '\\\(.\)', '\1', 'g')
+    else
+      let info .= a:dict[k]
+    endif
+    let info .= "\n"
+  endfor
+  return info
+endfunc
+
+" Parse a tag line and return a dictionary with items like taglist()
+function! s:ParseTagline(line)
+  let l = split(a:line, "\t")
+  let d = {}
+  if len(l) >= 3
+    let d['name'] = l[0]
+    let d['filename'] = l[1]
+    let d['cmd'] = l[2]
+    let n = 2
+    if l[2] =~ '^/'
+      " Find end of cmd, it may contain Tabs.
+      while n < len(l) && l[n] !~ '/;"$'
+	let n += 1
+	let d['cmd'] .= "  " . l[n]
+      endwhile
+    endif
+    for i in range(n + 1, len(l) - 1)
+      if l[i] == 'file:'
+	let d['static'] = 1
+      elseif l[i] !~ ':'
+	let d['kind'] = l[i]
+      else
+	let d[matchstr(l[i], '[^:]*')] = matchstr(l[i], ':\zs.*')
+      endif
+    endfor
+  endif
+
+  return d
+endfunction
+
 " Turn a match item "val" into an item for completion.
 " "val['match']" is the matching item.
 " "val['tagline']" is the tagline in which the last part was found.
@@ -265,10 +311,10 @@ function! s:Tagline2item(val, brackets)
     " Use info from Tag2item().
     let res['info'] = a:val['info']
   else
-    " Use the whole search command as the "info" entry.
-    let s = matchstr(line, '\t/^\s*\zs.*\ze$/')
+    " Parse the tag line and add each part to the "info" entry.
+    let s = s:Dict2info(s:ParseTagline(line))
     if s != ''
-      let res['info'] = substitute(s, '\\\(.\)', '\1', 'g')
+      let res['info'] = s
     endif
   endif
 
@@ -348,7 +394,11 @@ function! s:Nextitem(lead, items, depth,
     for tagidx in range(len(diclist))
       let item = diclist[tagidx]
 
-      " New ctags has the "typename" field.
+      " New ctags has the "typeref" field.  Patched version has "typename".
+      if has_key(item, 'typeref')
+	call extend(res, s:StructMembers(item['typeref'], a:items, a:all))
+	continue
+      endif
       if has_key(item, 'typename')
 	call extend(res, s:StructMembers(item['typename'], a:items, a:all))
 	continue
@@ -496,11 +546,16 @@ function! s:SearchMembers(matches, items
     if has_key(a:matches[i], 'dict')
       if has_key(a:matches[i].dict, 'typename')
 	let typename = a:matches[i].dict['typename']
+      elseif has_key(a:matches[i].dict, 'typeref')
+	let typename = a:matches[i].dict['typeref']
       endif
       let line = "\t" . a:matches[i].dict['cmd']
     else
       let line = a:matches[i]['tagline']
       let e = matchend(line, '\ttypename:')
+      if e < 0
+	let e = matchend(line, '\ttyperef:')
+      endif
       if e > 0
 	" Use typename field
 	let typename = matchstr(line, '[^\t]*', e)
--- a/runtime/doc/arabic.txt
+++ b/runtime/doc/arabic.txt
@@ -1,4 +1,4 @@
-*arabic.txt*	For Vim version 7.0aa.  Last change: 2005 Mar 29
+*arabic.txt*	For Vim version 7.0b.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL	  by Nadim Shaikli
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 22
+*eval.txt*      For Vim version 7.0b.  Last change: 2006 Mar 22
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/farsi.txt
+++ b/runtime/doc/farsi.txt
@@ -1,4 +1,4 @@
-*farsi.txt*     For Vim version 7.0aa.  Last change: 2005 Mar 29
+*farsi.txt*     For Vim version 7.0b.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Mortaza Ghassab Shiran
--- a/runtime/doc/filetype.txt
+++ b/runtime/doc/filetype.txt
@@ -1,4 +1,4 @@
-*filetype.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 21
+*filetype.txt*  For Vim version 7.0b.  Last change: 2006 Mar 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -549,10 +549,10 @@ If the first line of a *.tex file has th
 	%&<format>
 then this determined the file type:  plaintex (for plain TeX), context (for
 ConTeXt), or tex (for LaTeX).  Otherwise, the file is searched for keywords to
-choose context or tex.  If no keywords are found, it defaults to tex.  You can
-change the default by defining the variable g:tex_flavor to the format (not
-the file type) you use most:  plain or context or latex.  (Currently no other
-formats are recognized.)
+choose context or tex.  If no keywords are found, it defaults to plaintex.
+You can change the default by defining the variable g:tex_flavor to the format
+(not the file type) you use most:  plain or context or latex.  (Currently no
+other formats are recognized.)
 
 
  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/getscript.txt
+++ b/runtime/doc/getscript.txt
@@ -1,4 +1,6 @@
-*getscript.txt*		Get the Latest VimScripts	Dec 23, 2005
+*getscript.txt*	For Vim version 7.0b.  Last change: 2006 Mar 24
+
+		Get the Latest VimScripts
 
 Authors:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamilyA.Mbiz>
 	  (remove NOSPAM from the email address)
@@ -23,7 +25,7 @@ 1. Contents						*glvs-contents*
 
 
 ==============================================================================
-2. GetLatestVimScripts Usage		*getlatestvimscripts* *getscript* *glvs*
+2. GetLatestVimScripts Usage	      *getlatestvimscripts* *getscript* *glvs*
 
 	While in vim, type
 >
--- a/runtime/doc/hebrew.txt
+++ b/runtime/doc/hebrew.txt
@@ -1,4 +1,4 @@
-*hebrew.txt*    For Vim version 7.0aa.  Last change: 2003 May 11
+*hebrew.txt*    For Vim version 7.0b.  Last change: 2003 May 11
 
 
 	   VIM REFERENCE MANUAL    by Ron Aaron (and Avner Lottem)
--- a/runtime/doc/howto.txt
+++ b/runtime/doc/howto.txt
@@ -1,4 +1,4 @@
-*howto.txt*	For Vim version 7.0aa.  Last change: 2001 Sep 03
+*howto.txt*	For Vim version 7.0b.  Last change: 2001 Sep 03
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/intro.txt
+++ b/runtime/doc/intro.txt
@@ -1,4 +1,4 @@
-*intro.txt*     For Vim version 7.0aa.  Last change: 2005 Sep 01
+*intro.txt*     For Vim version 7.0b.  Last change: 2005 Sep 01
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/os_amiga.txt
+++ b/runtime/doc/os_amiga.txt
@@ -1,4 +1,4 @@
-*os_amiga.txt*  For Vim version 7.0aa.  Last change: 2005 Mar 29
+*os_amiga.txt*  For Vim version 7.0b.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/os_dos.txt
+++ b/runtime/doc/os_dos.txt
@@ -1,4 +1,4 @@
-*os_dos.txt*    For Vim version 7.0aa.  Last change: 2006 Feb 14
+*os_dos.txt*    For Vim version 7.0b.  Last change: 2006 Feb 14
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/os_win32.txt
+++ b/runtime/doc/os_win32.txt
@@ -1,4 +1,4 @@
-*os_win32.txt*  For Vim version 7.0aa.  Last change: 2005 Mar 29
+*os_win32.txt*  For Vim version 7.0b.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by George Reilly
--- a/runtime/doc/pattern.txt
+++ b/runtime/doc/pattern.txt
@@ -1,4 +1,4 @@
-*pattern.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 06
+*pattern.txt*   For Vim version 7.0b.  Last change: 2006 Mar 06
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/pi_spec.txt
+++ b/runtime/doc/pi_spec.txt
@@ -1,4 +1,4 @@
-*pi_spec.txt*   For Vim version 7.0aa.  Last change: 2005 Oct 03
+*pi_spec.txt*   For Vim version 7.0b.  Last change: 2005 Oct 03
 
 by Gustavo Niemeyer ~
 
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 23
+*quickfix.txt*  For Vim version 7.0b.  Last change: 2006 Mar 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -227,6 +227,14 @@ command with 'l'.
 :lex[pr][!] {expr}	Same as ":cexpr", except the location list for the
 			current window is used instead of the quickfix list.
 
+							*:cgete* *:cgetexpr*
+:cgete[xpr][!] {expr}	Create a quickfix list using the result of {expr}.
+			Just like ":cexpr", but don't jump to the first error.
+
+							*:lgete* *:lgetexpr*
+:lgete[xpr][!] {expr}	Same as ":cgetexpr", except the location list for the
+			current window is used instead of the quickfix list.
+
 							*:cad* *:caddexpr*
 :cad[dexpr][!] {expr}	Evaluate {expr} and add the resulting lines to the
 			current quickfix list. If a quickfix list is not
@@ -240,14 +248,6 @@ command with 'l'.
 :lad[dexpr][!] {expr}	Same as ":caddexpr", except the location list for the
 			current window is used instead of the quickfix list.
 
-							*:cgete* *:cgetexpr*
-:cgete[xpr][!] {expr}	Create a quickfix list using the result of {expr}.
-			Just like ":cexpr", but don't jump to the first error.
-
-							*:lgete* *:lgetexpr*
-:lgete[xpr][!] {expr}	Same as ":cgetexpr", except the location list for the
-			current window is used instead of the quickfix list.
-
 							*:cl* *:clist*
 :cl[ist] [from] [, [to]]
 			List all errors that are valid |quickfix-valid|.
--- a/runtime/doc/quotes.txt
+++ b/runtime/doc/quotes.txt
@@ -1,4 +1,4 @@
-*quotes.txt*    For Vim version 7.0aa.  Last change: 2005 Apr 04
+*quotes.txt*    For Vim version 7.0b.  Last change: 2005 Apr 04
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/remote.txt
+++ b/runtime/doc/remote.txt
@@ -1,4 +1,4 @@
-*remote.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 11
+*remote.txt*    For Vim version 7.0b.  Last change: 2006 Mar 11
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt*    For Vim version 7.0aa.  Last change: 2006 Mar 21
+*repeat.txt*    For Vim version 7.0b.  Last change: 2006 Mar 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/scroll.txt
+++ b/runtime/doc/scroll.txt
@@ -1,4 +1,4 @@
-*scroll.txt*    For Vim version 7.0aa.  Last change: 2005 Dec 16
+*scroll.txt*    For Vim version 7.0b.  Last change: 2005 Dec 16
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/spell.txt
+++ b/runtime/doc/spell.txt
@@ -1,4 +1,4 @@
-*spell.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 10
+*spell.txt*	For Vim version 7.0b.  Last change: 2006 Mar 10
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/sql.txt
+++ b/runtime/doc/sql.txt
@@ -1,4 +1,4 @@
-*sql.txt*   For Vim version 7.0aa.  Last change: Fri Jan 06 2006 8:09:25 AM
+*sql.txt*   	For Vim version 7.0b.  Last change: Fri Jan 06 2006 8:09:25 AM
 
 by David Fishburn
 
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 05
+*starting.txt*  For Vim version 7.0b.  Last change: 2006 Mar 05
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt*	For Vim version 7.0aa.  Last change: 2006 Mar 12
+*syntax.txt*	For Vim version 7.0b.  Last change: 2006 Mar 12
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
--- a/runtime/doc/tagsrch.txt
+++ b/runtime/doc/tagsrch.txt
@@ -1,4 +1,4 @@
-*tagsrch.txt*   For Vim version 7.0aa.  Last change: 2006 Feb 24
+*tagsrch.txt*   For Vim version 7.0b.  Last change: 2006 Feb 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2006 Mar 23
+*todo.txt*      For Vim version 7.0b.  Last change: 2006 Mar 24
 
 
 		  VIM REFERENCE MANUAL	  by Bram Moolenaar
@@ -30,8 +30,18 @@ be worked on, but only if you sponsor Vi
 							*known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Include patch for recognizing TeX flavor. (Benji Fisher)
-And new tex.vim and plaintex.vim.
+The 16 bit DOS version doesn't link because too much static memory is used.
+Drop it?
+
+test61 sometimes fails, probably because of timing variations.
+
+Check version7.txt for:
+- new syntax files and other runtime files.
+- new functions
+- new options
+- etc.
+
+Add more tests for all new functionality in Vim 7.  Especially new functions.
 
 Win32: Describe how to do debugging. (George Reilly)
 
@@ -44,24 +54,12 @@ 8   Add patch from Muraoka Taro (Mar 16)
 - With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
   (Alan Schmitt)
 
-Darren is including the patch in ctags.  Test it when it's ready.  Change
-"typename" to "typeref" in C complete code.
-
-HTML indenting can be slow.  Caused by using searchpair().  Can search() be
-used instead?
-
-ccomplete: use "signature:" field from tags file when it's present.
-Or list all the fields? (Martin Stubenschrott)
-
-Add more tests for all new functionality in Vim 7.  Especially new functions.
-
-Add text in user manual for using the undo tree.  Example with finding the
-text of a previous change.
-
-Links in docs to GetLatestVimScripts (getscript) plugin.
+Darren is including the patch in ctags.  Test it when it's ready.
 
 
 Awaiting updated patches:
+9   HTML indenting can be slow.  Caused by using searchpair().  Can search()
+    be used instead?
 8   Add ":n" to fnamemodify(): normalize path, remove "../" when possible.
     Aric Blumer has a patch for this.
     He will update the patch for 6.3.
--- a/runtime/doc/usr_01.txt
+++ b/runtime/doc/usr_01.txt
@@ -1,4 +1,4 @@
-*usr_01.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_01.txt*	For Vim version 7.0b.  Last change: 2005 Apr 01
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_04.txt
+++ b/runtime/doc/usr_04.txt
@@ -1,4 +1,4 @@
-*usr_04.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_04.txt*	For Vim version 7.0b.  Last change: 2005 Apr 01
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_05.txt
+++ b/runtime/doc/usr_05.txt
@@ -1,4 +1,4 @@
-*usr_05.txt*	For Vim version 7.0aa.  Last change: 2005 Oct 04
+*usr_05.txt*	For Vim version 7.0b.  Last change: 2006 Mar 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -300,10 +300,13 @@ GETTING A GLOBAL PLUGIN
 Where can you find plugins?
 - Some come with Vim.  You can find them in the directory $VIMRUNTIME/macros
   and its sub-directories.
-- Download from the net, check out http://vim.sf.net.
+- Download from the net.  There is a large collection on http://www.vim.org.
 - They are sometimes posted in a Vim |maillist|.
 - You could write one yourself, see |write-plugin|.
 
+Some plugins come as a vimball archive, see |vimball|.
+Some plugins can be updated automatically, see |getscript|.
+
 
 USING A GLOBAL PLUGIN
 
--- a/runtime/doc/usr_06.txt
+++ b/runtime/doc/usr_06.txt
@@ -1,4 +1,4 @@
-*usr_06.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 16
+*usr_06.txt*	For Vim version 7.0b.  Last change: 2006 Feb 16
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_07.txt
+++ b/runtime/doc/usr_07.txt
@@ -1,4 +1,4 @@
-*usr_07.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_07.txt*	For Vim version 7.0b.  Last change: 2005 Apr 01
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_11.txt
+++ b/runtime/doc/usr_11.txt
@@ -1,4 +1,4 @@
-*usr_11.txt*	For Vim version 7.0aa.  Last change: 2005 Jun 09
+*usr_11.txt*	For Vim version 7.0b.  Last change: 2005 Jun 09
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_12.txt
+++ b/runtime/doc/usr_12.txt
@@ -1,4 +1,4 @@
-*usr_12.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 26
+*usr_12.txt*	For Vim version 7.0b.  Last change: 2006 Feb 26
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_20.txt
+++ b/runtime/doc/usr_20.txt
@@ -1,4 +1,4 @@
-*usr_20.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_20.txt*	For Vim version 7.0b.  Last change: 2005 Apr 01
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_23.txt
+++ b/runtime/doc/usr_23.txt
@@ -1,4 +1,4 @@
-*usr_23.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_23.txt*	For Vim version 7.0b.  Last change: 2005 Apr 01
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_27.txt
+++ b/runtime/doc/usr_27.txt
@@ -1,4 +1,4 @@
-*usr_27.txt*	For Vim version 7.0aa.  Last change: 2005 Feb 08
+*usr_27.txt*	For Vim version 7.0b.  Last change: 2005 Feb 08
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_28.txt
+++ b/runtime/doc/usr_28.txt
@@ -1,4 +1,4 @@
-*usr_28.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_28.txt*	For Vim version 7.0b.  Last change: 2005 Apr 01
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_30.txt
+++ b/runtime/doc/usr_30.txt
@@ -1,4 +1,4 @@
-*usr_30.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_30.txt*	For Vim version 7.0b.  Last change: 2005 Apr 01
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
--- a/runtime/doc/usr_31.txt
+++ b/runtime/doc/usr_31.txt
@@ -1,4 +1,4 @@
-*usr_31.txt*	For Vim version 7.0aa.  Last change: 2006 Feb 28
+*usr_31.txt*	For Vim version 7.0b.  Last change: 2006 Mar 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -15,7 +15,7 @@ between alternatives.  Use keyboard shor
 |31.4|	Vim window position and size
 |31.5|	Various
 
-     Next chapter: |usr_40.txt|  Make new commands
+     Next chapter: |usr_32.txt|  The undo tree
  Previous chapter: |usr_30.txt|  Editing programs
 Table of contents: |usr_toc.txt|
 
@@ -262,6 +262,6 @@ another font size, for example.
 
 ==============================================================================
 
-Next chapter: |usr_40.txt|  Make new commands
+Next chapter: |usr_32.txt|  The undo tree
 
 Copyright: see |manual-copyright|  vim:tw=78:ts=8:ft=help:norl:
--- a/runtime/doc/usr_40.txt
+++ b/runtime/doc/usr_40.txt
@@ -1,4 +1,4 @@
-*usr_40.txt*	For Vim version 7.0aa.  Last change: 2005 Apr 01
+*usr_40.txt*	For Vim version 7.0b.  Last change: 2006 Mar 24
 
 		     VIM USER MANUAL - by Bram Moolenaar
 
@@ -14,7 +14,7 @@ Autocommands make it possible to execute
 |40.3|	Autocommands
 
      Next chapter: |usr_41.txt|  Write a Vim script
- Previous chapter: |usr_31.txt|  Exploiting the GUI
+ Previous chapter: |usr_32.txt|  The undo tree
 Table of contents: |usr_toc.txt|
 
 ==============================================================================
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 21
+*various.txt*   For Vim version 7.0b.  Last change: 2006 Mar 21
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2006 Mar 23
+*version7.txt*  For Vim version 7.0b.  Last change: 2006 Mar 24
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -628,13 +628,13 @@ Win32: The ":winpos" command now also wo
 			don't jump to the first error. (Yegappan Lakshmanan).
 
 |:lfile|		Like |:cfile| but use the location list.
-|:lgetbuffer|		Like |:cgetbuffer| but use the location list.
-|:lgetexpr|		Like |:cgetexpr| but use the location list.
 |:lgetfile|		Like |:cgetfile| but use the location list.
 |:laddfile|		Like |:caddfile| but use the location list.
 |:lbuffer|		Like |:cbuffer| but use the location list.
+|:lgetbuffer|		Like |:cgetbuffer| but use the location list.
 |:laddbuffer|		Like |:caddbuffer| but use the location list.
 |:lexpr|		Like |:cexpr| but use the location list.
+|:lgetexpr|		Like |:cgetexpr| but use the location list.
 |:laddexpr|		Like |:caddexpr| but use the location list.
 |:ll|			Like |:cc| but use the location list.
 |:llist|		Like |:clist| but use the location list.
--- a/runtime/doc/vimball.txt
+++ b/runtime/doc/vimball.txt
@@ -1,4 +1,7 @@
-*vimball.txt*	Vimball Archiver				Mar 20, 2006
+*vimball.txt*	For Vim version 7.0b.  Last change: 2006 Mar 24
+
+	Vimball Archiver
+
 Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
 	  (remove NOSPAM from Campbell's email first)
 Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.	*Vimball-copyright*
--- a/runtime/doc/windows.txt
+++ b/runtime/doc/windows.txt
@@ -1,4 +1,4 @@
-*windows.txt*   For Vim version 7.0aa.  Last change: 2006 Mar 11
+*windows.txt*   For Vim version 7.0b.  Last change: 2006 Mar 11
 
 
 		  VIM REFERENCE MANUAL    by Bram Moolenaar
--- a/runtime/doc/workshop.txt
+++ b/runtime/doc/workshop.txt
@@ -1,4 +1,4 @@
-*workshop.txt*  For Vim version 7.0aa.  Last change: 2005 Mar 29
+*workshop.txt*  For Vim version 7.0b.  Last change: 2005 Mar 29
 
 
 		  VIM REFERENCE MANUAL    by Gordon Prieur
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:	Bram Moolenaar <Bram@vim.org>
-" Last Change:	2006 Mar 23
+" Last Change:	2006 Mar 24
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1664,30 +1664,56 @@ au BufNewFile,BufRead *.ti			setf termin
 au BufNewFile,BufRead *.latex,*.sty,*.dtx,*.ltx,*.bbl	setf tex
 au BufNewFile,BufRead *.tex			call s:FTtex()
 
+" Choose context, plaintex, or tex (LaTeX) based on these rules:
+" 1. Check the first line of the file for "%&<format>".
+" 2. Check the first 1000 non-comment lines for LaTeX or ConTeXt keywords.
+" 3. Default to "latex" or to g:tex_flavor, can be set in user's vimrc.
 fun! s:FTtex()
-  let lnum = 1
-  let checked = 0
-  while checked < 25 && lnum < line("$")
-    let line = getline(lnum)
-    if line !~ '^\s*%'
-      if line =~ '^\s*\\\%(documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>\)'
-	setf tex
-	return
-      elseif line =~ '^\s*\\\%(start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\)\>'
-	setf context
-	return
-      endif
-      let checked = checked + 1
+  let firstline = getline(1)
+  if firstline =~ '^%&\s*\a\+'
+    let format = tolower(matchstr(firstline, '\a\+'))
+    let format = substitute(format, 'pdf', '', '')
+    if format == 'tex'
+      let format = 'plain'
     endif
-    let lnum = lnum + 1
-  endwhile
+  else
+    " Default value, may be changed later:
+    let format = exists("g:tex_flavor") ? g:tex_flavor : 'plain'
+    " Save position, go to the top of the file, find first non-comment line.
+    let save_cursor = getpos('.')
+    call cursor(1,1)
+    let firstNC = search('^\s*[^[:space:]%]', 'c', 1000)
+    if firstNC " Check the next thousand lines for a LaTeX or ConTeXt keyword.
+      let lpat = 'documentclass\>\|usepackage\>\|begin{\|newcommand\>\|renewcommand\>'
+      let cpat = 'start\a\+\|setup\a\+\|usemodule\|enablemode\|enableregime\|setvariables\|useencoding\|usesymbols\|stelle\a\+\|verwende\a\+\|stel\a\+\|gebruik\a\+\|usa\a\+\|imposta\a\+\|regle\a\+\|utilisemodule\>'
+      let kwline = search('^\s*\\\%(' . lpat . '\)\|^\s*\\\(' . cpat . '\)',
+			      \ 'cnp', firstNC + 1000)
+      if kwline == 1	" lpat matched
+	let format = 'latex'
+      elseif kwline == 2	" cpat matched
+	let format = 'context'
+      endif		" If neither matched, keep default set above.
+      " let lline = search('^\s*\\\%(' . lpat . '\)', 'cn', firstNC + 1000)
+      " let cline = search('^\s*\\\%(' . cpat . '\)', 'cn', firstNC + 1000)
+      " if cline > 0
+      "   let format = 'context'
+      " endif
+      " if lline > 0 && (cline == 0 || cline > lline)
+      "   let format = 'tex'
+      " endif
+    endif " firstNC
+    call setpos('.', save_cursor)
+  endif " firstline =~ '^%&\s*\a\+'
 
-  " Didn't recognize anything, guess.
-  if exists("g:tex_flavour") && g:tex_flavour == "context"
+  " Translation from formats to file types.  TODO:  add AMSTeX, RevTex, others?
+  if format == 'plain'
+    setf plaintex
+  elseif format == 'context'
     setf context
-  else
+  else " probably LaTeX
     setf tex
   endif
+  return
 endfun
 
 " Context
--- a/runtime/macros/matchit.vim
+++ b/runtime/macros/matchit.vim
@@ -1,7 +1,7 @@
 "  matchit.vim: (global plugin) Extended "%" matching
-"  Last Change: Sat May 15 11:00 AM 2004 EDT
+"  Last Change: Sun Feb 26 10:00 AM 2006 EST
 "  Maintainer:  Benji Fisher PhD   <benji@member.AMS.org>
-"  Version:     1.9, for Vim 6.3
+"  Version:     1.10, for Vim 6.3
 "  URL:		http://www.vim.org/script.php?script_id=39
 
 " Documentation:
@@ -220,6 +220,10 @@ function! s:Match_wrapper(word, forward,
   let ini = strpart(group, 0, i-1)
   let mid = substitute(strpart(group, i,j-i-1), s:notslash.'\zs:', '\\|', 'g')
   let fin = strpart(group, j)
+  "Un-escape the remaining , and : characters.
+  let ini = substitute(ini, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  let mid = substitute(mid, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
+  let fin = substitute(fin, s:notslash . '\zs\\\(:\|,\)', '\1', 'g')
   " searchpair() requires that these patterns avoid \(\) groups.
   let ini = substitute(ini, s:notslash . '\zs\\(', '\\%(', 'g')
   let mid = substitute(mid, s:notslash . '\zs\\(', '\\%(', 'g')
@@ -565,7 +569,7 @@ fun! s:Choose(patterns, string, comma, b
   if a:branch == ""
     let currpat = current
   else
-    let currpat = substitute(current, a:branch, '\\|', 'g')
+    let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
   endif
   while a:string !~ a:prefix . currpat . a:suffix
     let tail = strpart(tail, i)
@@ -577,7 +581,7 @@ fun! s:Choose(patterns, string, comma, b
     if a:branch == ""
       let currpat = current
     else
-      let currpat = substitute(current, a:branch, '\\|', 'g')
+      let currpat = substitute(current, s:notslash . a:branch, '\\|', 'g')
     endif
     if a:0
       let alttail = strpart(alttail, j)
--- a/src/Make_cyg.mak
+++ b/src/Make_cyg.mak
@@ -1,6 +1,6 @@
 #
 # Makefile for VIM on Win32, using Cygnus gcc
-# Last updated by Dan Sharp.  Last Change: 2005 Oct 01
+# Last updated by Dan Sharp.  Last Change: 2006 Mar 24
 #
 # Also read INSTALLpc.txt!
 #
@@ -404,7 +404,7 @@ OBJ = \
 	$(OUTDIR)/fold.o \
 	$(OUTDIR)/getchar.o \
 	$(OUTDIR)/hardcopy.o \
-	$(OUTDIR)/hashtable.o \
+	$(OUTDIR)/hashtab.o \
 	$(OUTDIR)/main.o \
 	$(OUTDIR)/mark.o \
 	$(OUTDIR)/memfile.o \
@@ -421,7 +421,7 @@ OBJ = \
 	$(OUTDIR)/os_win32.o \
 	$(OUTDIR)/os_mswin.o \
 	$(OUTDIR)/pathdef.o \
-	$(OUTDIR)/popupmenu.o \
+	$(OUTDIR)/popupmnu.o \
 	$(OUTDIR)/quickfix.o \
 	$(OUTDIR)/regexp.o \
 	$(OUTDIR)/screen.o \
--- a/src/Make_dice.mak
+++ b/src/Make_dice.mak
@@ -41,7 +41,7 @@ SRC = \
 	fold.c \
 	getchar.c \
 	hardcopy.c \
-	hashtable.c \
+	hashtab.c \
 	main.c \
 	mark.c \
 	memfile.c \
@@ -56,7 +56,7 @@ SRC = \
 	ops.c \
 	option.c \
 	os_amiga.c \
-	popupmenu.c \
+	popupmnu.c \
 	quickfix.c \
 	regexp.c \
 	screen.c \
@@ -85,7 +85,7 @@ OBJ =	o/buffer.o \
 	o/fold.o \
 	o/getchar.o \
 	o/hardcopy.o \
-	o/hashtable.o \
+	o/hashtab.o \
 	o/main.o \
 	o/mark.o \
 	o/memfile.o \
@@ -100,7 +100,7 @@ OBJ =	o/buffer.o \
 	o/ops.o \
 	o/option.o \
 	o/os_amiga.o \
-	o/popupmenu.o \
+	o/popupmnu.o \
 	o/quickfix.o \
 	o/regexp.o \
 	o/screen.o \
@@ -163,7 +163,7 @@ o/getchar.o: getchar.c	$(SYMS)
 
 o/hardcopy.o: hardcopy.c	$(SYMS)
 
-o/hashtable.o: hashtable.c	$(SYMS)
+o/hashtab.o: hashtab.c	$(SYMS)
 
 o/main.o: main.c $(SYMS)
 
@@ -198,7 +198,7 @@ o/option.o:	option.c  $(SYMS)
 
 o/os_amiga.o:	os_amiga.c  $(SYMS) os_amiga.h
 
-o/popupmenu.o:	popupmenu.c  $(SYMS)
+o/popupmnu.o:	popupmnu.c  $(SYMS)
 
 o/quickfix.o:	quickfix.c  $(SYMS)
 
--- a/src/Make_djg.mak
+++ b/src/Make_djg.mak
@@ -34,7 +34,7 @@ OBJ = \
 	obj/fold.o \
 	obj/getchar.o \
 	obj/hardcopy.o \
-	obj/hashtable.o \
+	obj/hashtab.o \
 	obj/main.o \
 	obj/mark.o \
 	obj/memfile.o \
@@ -49,7 +49,7 @@ OBJ = \
 	obj/ops.o \
 	obj/option.o \
 	obj/os_msdos.o \
-	obj/popupmenu.o \
+	obj/popupmnu.o \
 	obj/quickfix.o \
 	obj/regexp.o \
 	obj/screen.o \
--- a/src/Make_morph.mak
+++ b/src/Make_morph.mak
@@ -39,7 +39,7 @@ SRC =	buffer.c						\
 	fold.c							\
 	getchar.c						\
 	hardcopy.c						\
-	hashtable.c						\
+	hashtab.c						\
 	main.c							\
 	mark.c							\
 	mbyte.c							\
@@ -54,7 +54,7 @@ SRC =	buffer.c						\
 	ops.c							\
 	option.c						\
 	os_amiga.c						\
-	popupmenu.c						\
+	popupmnu.c						\
 	quickfix.c						\
 	regexp.c						\
 	screen.c						\
--- a/src/Make_vms.mms
+++ b/src/Make_vms.mms
@@ -2,7 +2,7 @@
 # Makefile for Vim on OpenVMS
 #
 # Maintainer:   Zoltan Arpadffy <arpadffy@polarhome.com>
-# Last change:  2006 Feb 23
+# Last change:  2006 Mar 24
 #
 # This has script been tested on VMS 6.2 to 8.2 on DEC Alpha, VAX and IA64
 # with MMS and MMK
@@ -287,8 +287,8 @@ ALL_LIBS = $(LIBS) $(GUI_LIB_DIR) $(GUI_
 
 SRC =	buffer.c charset.c diff.c digraph.c edit.c eval.c ex_cmds.c ex_cmds2.c \
 	ex_docmd.c ex_eval.c ex_getln.c if_xcmdsrv.c fileio.c fold.c getchar.c \
-	hardcopy.c hashtable.c main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \
-	misc2.c move.c normal.c ops.c option.c popupmenu.c quickfix.c regexp.c search.c \
+	hardcopy.c hashtab.c main.c mark.c menu.c mbyte.c memfile.c memline.c message.c misc1.c \
+	misc2.c move.c normal.c ops.c option.c popupmnu.c quickfix.c regexp.c search.c \
 	spell.c syntax.c tag.c term.c termlib.c ui.c undo.c version.c screen.c \
 	window.c os_unix.c os_vms.c pathdef.c \
 	$(GUI_SRC) $(PERL_SRC) $(PYTHON_SRC) $(TCL_SRC) $(SNIFF_SRC) \
@@ -296,9 +296,9 @@ SRC =	buffer.c charset.c diff.c digraph.
 
 OBJ =	buffer.obj charset.obj diff.obj digraph.obj edit.obj eval.obj \
 	ex_cmds.obj ex_cmds2.obj ex_docmd.obj ex_eval.obj ex_getln.obj \
-	if_xcmdsrv.obj fileio.obj fold.obj getchar.obj hardcopy.obj hashtable.obj main.obj mark.obj \
+	if_xcmdsrv.obj fileio.obj fold.obj getchar.obj hardcopy.obj hashtab.obj main.obj mark.obj \
 	menu.obj memfile.obj memline.obj message.obj misc1.obj misc2.obj \
-	move.obj mbyte.obj normal.obj ops.obj option.obj popupmenu.obj quickfix.obj \
+	move.obj mbyte.obj normal.obj ops.obj option.obj popupmnu.obj quickfix.obj \
 	regexp.obj search.obj spell.obj syntax.obj tag.obj term.obj termlib.obj \
 	ui.obj undo.obj screen.obj version.obj window.obj os_unix.obj \
 	os_vms.obj pathdef.obj \
@@ -531,7 +531,7 @@ hardcopy.obj : hardcopy.c vim.h [.auto]c
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
-hashtable.obj : hashtable.c vim.h [.auto]config.h feature.h os_unix.h \
+hashtab.obj : hashtab.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
@@ -607,7 +607,7 @@ pathdef.obj : pathdef.c vim.h [.auto]con
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
-popupmenu.obj : popupmenu.c vim.h [.auto]config.h feature.h os_unix.h \
+popupmnu.obj : popupmnu.c vim.h [.auto]config.h feature.h os_unix.h \
  ascii.h keymap.h term.h macros.h structs.h regexp.h \
  gui.h gui_beval.h [.proto]gui_beval.pro option.h ex_cmds.h proto.h \
  globals.h farsi.h arabic.h
--- a/src/Make_w16.mak
+++ b/src/Make_w16.mak
@@ -88,7 +88,7 @@ ObjFiles = \
    $(INTDIR)\fold.obj\
    $(INTDIR)\getchar.obj\
    $(INTDIR)\hardcopy.obj\
-   $(INTDIR)\hashtable.obj\
+   $(INTDIR)\hashtab.obj\
    $(INTDIR)\gui.obj\
    $(INTDIR)\gui_w16.obj\
    $(INTDIR)\main.obj\
@@ -107,7 +107,7 @@ ObjFiles = \
    $(INTDIR)\os_win16.obj\
    $(INTDIR)\os_msdos.obj\
    $(INTDIR)\os_mswin.obj\
-   $(INTDIR)\popupmenu.obj\
+   $(INTDIR)\popupmnu.obj\
    $(INTDIR)\quickfix.obj\
    $(INTDIR)\regexp.obj\
    $(INTDIR)\screen.obj\
--- a/src/dosinst.c
+++ b/src/dosinst.c
@@ -1132,7 +1132,6 @@ install_vimrc(int idx)
 {
     FILE	*fd, *tfd;
     char	*fname;
-    char	*p;
 
     /* If an old vimrc file exists, overwrite it.
      * Otherwise create a new one. */
--- a/src/eval.c
+++ b/src/eval.c
@@ -1666,6 +1666,8 @@ ex_let(eap)
     argend = skip_var_list(arg, &var_count, &semicolon);
     if (argend == NULL)
 	return;
+    if (argend > arg && argend[-1] == '.')  /* for var.='str' */
+	--argend;
     expr = vim_strchr(argend, '=');
     if (expr == NULL)
     {
@@ -19360,9 +19362,11 @@ call_user_func(fp, argcount, argvars, re
     init_var_dict(&fc.l_vars, &fc.l_vars_var);
     if (selfdict != NULL)
     {
-	/* Set l:self to "selfdict". */
+	/* Set l:self to "selfdict".  Use "name" to avoid a warning from
+	 * some compiler that checks the destination size. */
 	v = &fc.fixvar[fixvar_idx++].var;
-	STRCPY(v->di_key, "self");
+	name = v->di_key;
+	STRCPY(name, "self");
 	v->di_flags = DI_FLAGS_RO + DI_FLAGS_FIX;
 	hash_add(&fc.l_vars.dv_hashtab, DI2HIKEY(v));
 	v->di_tv.v_type = VAR_DICT;
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -213,10 +213,10 @@ EX(CMD_cfile,		"cfile",	ex_cfile,
 			TRLBAR|FILE1|BANG),
 EX(CMD_cfirst,		"cfirst",	ex_cc,
 			RANGE|NOTADR|COUNT|TRLBAR|BANG),
+EX(CMD_cgetfile,	"cgetfile",	ex_cfile,
+			TRLBAR|FILE1|BANG),
 EX(CMD_cgetbuffer,	"cgetbuffer",	ex_cbuffer,
 			RANGE|NOTADR|WORD1|TRLBAR),
-EX(CMD_cgetfile,	"cgetfile",	ex_cfile,
-			TRLBAR|FILE1|BANG),
 EX(CMD_cgetexpr,	"cgetexpr",	ex_cexpr,
 			NEEDARG|WORD1|NOTRLCOM|TRLBAR|BANG),
 EX(CMD_chdir,		"chdir",	ex_cd,
deleted file mode 100644
--- a/src/hashtable.c
+++ /dev/null
@@ -1,518 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4:
- *
- * VIM - Vi IMproved	by Bram Moolenaar
- *
- * Do ":help uganda"  in Vim to read copying and usage conditions.
- * Do ":help credits" in Vim to see a list of people who contributed.
- * See README.txt for an overview of the Vim source code.
- */
-
-/*
- * hashtable.c: Handling of a hashtable with Vim-specific properties.
- *
- * Each item in a hashtable has a NUL terminated string key.  A key can appear
- * only once in the table.
- *
- * A hash number is computed from the key for quick lookup.  When the hashes
- * of two different keys point to the same entry an algorithm is used to
- * iterate over other entries in the table until the right one is found.
- * To make the iteration work removed keys are different from entries where a
- * key was never present.
- *
- * The mechanism has been partly based on how Python Dictionaries are
- * implemented.  The algorithm is from Knuth Vol. 3, Sec. 6.4.
- *
- * The hashtable grows to accommodate more entries when needed.  At least 1/3
- * of the entries is empty to keep the lookup efficient (at the cost of extra
- * memory).
- */
-
-#include "vim.h"
-
-#if defined(FEAT_EVAL) || defined(FEAT_SYN_HL) || defined(PROTO)
-
-#if 0
-# define HT_DEBUG	/* extra checks for table consistency  and statistics */
-
-static long hash_count_lookup = 0;	/* count number of hashtab lookups */
-static long hash_count_perturb = 0;	/* count number of "misses" */
-#endif
-
-/* Magic value for algorithm that walks through the array. */
-#define PERTURB_SHIFT 5
-
-static int hash_may_resize __ARGS((hashtab_T *ht, int minitems));
-
-#if 0 /* currently not used */
-/*
- * Create an empty hash table.
- * Returns NULL when out of memory.
- */
-    hashtab_T *
-hash_create()
-{
-    hashtab_T *ht;
-
-    ht = (hashtab_T *)alloc(sizeof(hashtab_T));
-    if (ht != NULL)
-	hash_init(ht);
-    return ht;
-}
-#endif
-
-/*
- * Initialize an empty hash table.
- */
-    void
-hash_init(ht)
-    hashtab_T *ht;
-{
-    /* This zeroes all "ht_" entries and all the "hi_key" in "ht_smallarray". */
-    vim_memset(ht, 0, sizeof(hashtab_T));
-    ht->ht_array = ht->ht_smallarray;
-    ht->ht_mask = HT_INIT_SIZE - 1;
-}
-
-/*
- * Free the array of a hash table.  Does not free the items it contains!
- * If "ht" is not freed then you should call hash_init() next!
- */
-    void
-hash_clear(ht)
-    hashtab_T *ht;
-{
-    if (ht->ht_array != ht->ht_smallarray)
-	vim_free(ht->ht_array);
-}
-
-/*
- * Free the array of a hash table and all the keys it contains.  The keys must
- * have been allocated.  "off" is the offset from the start of the allocate
- * memory to the location of the key (it's always positive).
- */
-    void
-hash_clear_all(ht, off)
-    hashtab_T	*ht;
-    int		off;
-{
-    int		todo;
-    hashitem_T	*hi;
-
-    todo = ht->ht_used;
-    for (hi = ht->ht_array; todo > 0; ++hi)
-    {
-	if (!HASHITEM_EMPTY(hi))
-	{
-	    vim_free(hi->hi_key - off);
-	    --todo;
-	}
-    }
-    hash_clear(ht);
-}
-
-/*
- * Find "key" in hashtable "ht".  "key" must not be NULL.
- * Always returns a pointer to a hashitem.  If the item was not found then
- * HASHITEM_EMPTY() is TRUE.  The pointer is then the place where the key
- * would be added.
- * WARNING: The returned pointer becomes invalid when the hashtable is changed
- * (adding, setting or removing an item)!
- */
-    hashitem_T *
-hash_find(ht, key)
-    hashtab_T	*ht;
-    char_u	*key;
-{
-    return hash_lookup(ht, key, hash_hash(key));
-}
-
-/*
- * Like hash_find(), but caller computes "hash".
- */
-    hashitem_T *
-hash_lookup(ht, key, hash)
-    hashtab_T	*ht;
-    char_u	*key;
-    hash_T	hash;
-{
-    hash_T	perturb;
-    hashitem_T	*freeitem;
-    hashitem_T	*hi;
-    int		idx;
-
-#ifdef HT_DEBUG
-    ++hash_count_lookup;
-#endif
-
-    /*
-     * Quickly handle the most common situations:
-     * - return if there is no item at all
-     * - skip over a removed item
-     * - return if the item matches
-     */
-    idx = hash & ht->ht_mask;
-    hi = &ht->ht_array[idx];
-
-    if (hi->hi_key == NULL)
-	return hi;
-    if (hi->hi_key == HI_KEY_REMOVED)
-	freeitem = hi;
-    else if (hi->hi_hash == hash && STRCMP(hi->hi_key, key) == 0)
-	return hi;
-    else
-	freeitem = NULL;
-
-    /*
-     * Need to search through the table to find the key.  The algorithm
-     * to step through the table starts with large steps, gradually becoming
-     * smaller down to (1/4 table size + 1).  This means it goes through all
-     * table entries in the end.
-     * When we run into a NULL key it's clear that the key isn't there.
-     * Return the first available slot found (can be a slot of a removed
-     * item).
-     */
-    for (perturb = hash; ; perturb >>= PERTURB_SHIFT)
-    {
-#ifdef HT_DEBUG
-	++hash_count_perturb;	    /* count a "miss" for hashtab lookup */
-#endif
-	idx = (idx << 2) + idx + perturb + 1;
-	hi = &ht->ht_array[idx & ht->ht_mask];
-	if (hi->hi_key == NULL)
-	    return freeitem == NULL ? hi : freeitem;
-	if (hi->hi_hash == hash
-		&& hi->hi_key != HI_KEY_REMOVED
-		&& STRCMP(hi->hi_key, key) == 0)
-	    return hi;
-	if (hi->hi_key == HI_KEY_REMOVED && freeitem == NULL)
-	    freeitem = hi;
-    }
-}
-
-/*
- * Print the efficiency of hashtable lookups.
- * Useful when trying different hash algorithms.
- * Called when exiting.
- */
-    void
-hash_debug_results()
-{
-#ifdef HT_DEBUG
-    fprintf(stderr, "\r\n\r\n\r\n\r\n");
-    fprintf(stderr, "Number of hashtable lookups: %ld\r\n", hash_count_lookup);
-    fprintf(stderr, "Number of perturb loops: %ld\r\n", hash_count_perturb);
-    fprintf(stderr, "Percentage of perturb loops: %ld%%\r\n",
-				hash_count_perturb * 100 / hash_count_lookup);
-#endif
-}
-
-/*
- * Add item with key "key" to hashtable "ht".
- * Returns FAIL when out of memory or the key is already present.
- */
-    int
-hash_add(ht, key)
-    hashtab_T	*ht;
-    char_u	*key;
-{
-    hash_T	hash = hash_hash(key);
-    hashitem_T	*hi;
-
-    hi = hash_lookup(ht, key, hash);
-    if (!HASHITEM_EMPTY(hi))
-    {
-	EMSG2(_(e_intern2), "hash_add()");
-	return FAIL;
-    }
-    return hash_add_item(ht, hi, key, hash);
-}
-
-/*
- * Add item "hi" with "key" to hashtable "ht".  "key" must not be NULL and
- * "hi" must have been obtained with hash_lookup() and point to an empty item.
- * "hi" is invalid after this!
- * Returns OK or FAIL (out of memory).
- */
-    int
-hash_add_item(ht, hi, key, hash)
-    hashtab_T	*ht;
-    hashitem_T	*hi;
-    char_u	*key;
-    hash_T	hash;
-{
-    /* If resizing failed before and it fails again we can't add an item. */
-    if (ht->ht_error && hash_may_resize(ht, 0) == FAIL)
-	return FAIL;
-
-    ++ht->ht_used;
-    if (hi->hi_key == NULL)
-	++ht->ht_filled;
-    hi->hi_key = key;
-    hi->hi_hash = hash;
-
-    /* When the space gets low may resize the array. */
-    return hash_may_resize(ht, 0);
-}
-
-#if 0  /* not used */
-/*
- * Overwrite hashtable item "hi" with "key".  "hi" must point to the item that
- * is to be overwritten.  Thus the number of items in the hashtable doesn't
- * change.
- * Although the key must be identical, the pointer may be different, thus it's
- * set anyway (the key is part of an item with that key).
- * The caller must take care of freeing the old item.
- * "hi" is invalid after this!
- */
-    void
-hash_set(hi, key)
-    hashitem_T	*hi;
-    char_u	*key;
-{
-    hi->hi_key = key;
-}
-#endif
-
-/*
- * Remove item "hi" from  hashtable "ht".  "hi" must have been obtained with
- * hash_lookup().
- * The caller must take care of freeing the item itself.
- */
-    void
-hash_remove(ht, hi)
-    hashtab_T	*ht;
-    hashitem_T	*hi;
-{
-    --ht->ht_used;
-    hi->hi_key = HI_KEY_REMOVED;
-    hash_may_resize(ht, 0);
-}
-
-/*
- * Lock a hashtable: prevent that ht_array changes.
- * Don't use this when items are to be added!
- * Must call hash_unlock() later.
- */
-    void
-hash_lock(ht)
-    hashtab_T	*ht;
-{
-    ++ht->ht_locked;
-}
-
-#if 0	    /* currently not used */
-/*
- * Lock a hashtable at the specified number of entries.
- * Caller must make sure no more than "size" entries will be added.
- * Must call hash_unlock() later.
- */
-    void
-hash_lock_size(ht, size)
-    hashtab_T	*ht;
-    int		size;
-{
-    (void)hash_may_resize(ht, size);
-    ++ht->ht_locked;
-}
-#endif
-
-/*
- * Unlock a hashtable: allow ht_array changes again.
- * Table will be resized (shrink) when necessary.
- * This must balance a call to hash_lock().
- */
-    void
-hash_unlock(ht)
-    hashtab_T	*ht;
-{
-    --ht->ht_locked;
-    (void)hash_may_resize(ht, 0);
-}
-
-/*
- * Shrink a hashtable when there is too much empty space.
- * Grow a hashtable when there is not enough empty space.
- * Returns OK or FAIL (out of memory).
- */
-    static int
-hash_may_resize(ht, minitems)
-    hashtab_T	*ht;
-    int		minitems;		/* minimal number of items */
-{
-    hashitem_T	temparray[HT_INIT_SIZE];
-    hashitem_T	*oldarray, *newarray;
-    hashitem_T	*olditem, *newitem;
-    int		newi;
-    int		todo;
-    long_u	oldsize, newsize;
-    long_u	minsize;
-    long_u	newmask;
-    hash_T	perturb;
-
-    /* Don't resize a locked table. */
-    if (ht->ht_locked > 0)
-	return OK;
-
-#ifdef HT_DEBUG
-    if (ht->ht_used > ht->ht_filled)
-	EMSG("hash_may_resize(): more used than filled");
-    if (ht->ht_filled >= ht->ht_mask + 1)
-	EMSG("hash_may_resize(): table completely filled");
-#endif
-
-    if (minitems == 0)
-    {
-	/* Return quickly for small tables with at least two NULL items.  NULL
-	 * items are required for the lookup to decide a key isn't there. */
-	if (ht->ht_filled < HT_INIT_SIZE - 1
-					 && ht->ht_array == ht->ht_smallarray)
-	    return OK;
-
-	/*
-	 * Grow or refill the array when it's more than 2/3 full (including
-	 * removed items, so that they get cleaned up).
-	 * Shrink the array when it's less than 1/5 full.  When growing it is
-	 * at least 1/4 full (avoids repeated grow-shrink operations)
-	 */
-	oldsize = ht->ht_mask + 1;
-	if (ht->ht_filled * 3 < oldsize * 2 && ht->ht_used > oldsize / 5)
-	    return OK;
-
-	if (ht->ht_used > 1000)
-	    minsize = ht->ht_used * 2;  /* it's big, don't make too much room */
-	else
-	    minsize = ht->ht_used * 4;  /* make plenty of room */
-    }
-    else
-    {
-	/* Use specified size. */
-	if ((long_u)minitems < ht->ht_used)	/* just in case... */
-	    minitems = ht->ht_used;
-	minsize = minitems * 3 / 2;	/* array is up to 2/3 full */
-    }
-
-    newsize = HT_INIT_SIZE;
-    while (newsize < minsize)
-    {
-	newsize <<= 1;		/* make sure it's always a power of 2 */
-	if (newsize == 0)
-	    return FAIL;	/* overflow */
-    }
-
-    if (newsize == HT_INIT_SIZE)
-    {
-	/* Use the small array inside the hashdict structure. */
-	newarray = ht->ht_smallarray;
-	if (ht->ht_array == newarray)
-	{
-	    /* Moving from ht_smallarray to ht_smallarray!  Happens when there
-	     * are many removed items.  Copy the items to be able to clean up
-	     * removed items. */
-	    mch_memmove(temparray, newarray, sizeof(temparray));
-	    oldarray = temparray;
-	}
-	else
-	    oldarray = ht->ht_array;
-    }
-    else
-    {
-	/* Allocate an array. */
-	newarray = (hashitem_T *)alloc((unsigned)
-					      (sizeof(hashitem_T) * newsize));
-	if (newarray == NULL)
-	{
-	    /* Out of memory.  When there are NULL items still return OK.
-	     * Otherwise set ht_error, because lookup may result in a hang if
-	     * we add another item. */
-	    if (ht->ht_filled < ht->ht_mask)
-		return OK;
-	    ht->ht_error = TRUE;
-	    return FAIL;
-	}
-	oldarray = ht->ht_array;
-    }
-    vim_memset(newarray, 0, (size_t)(sizeof(hashitem_T) * newsize));
-
-    /*
-     * Move all the items from the old array to the new one, placing them in
-     * the right spot.  The new array won't have any removed items, thus this
-     * is also a cleanup action.
-     */
-    newmask = newsize - 1;
-    todo = ht->ht_used;
-    for (olditem = oldarray; todo > 0; ++olditem)
-	if (!HASHITEM_EMPTY(olditem))
-	{
-	    /*
-	     * The algorithm to find the spot to add the item is identical to
-	     * the algorithm to find an item in hash_lookup().  But we only
-	     * need to search for a NULL key, thus it's simpler.
-	     */
-	    newi = olditem->hi_hash & newmask;
-	    newitem = &newarray[newi];
-
-	    if (newitem->hi_key != NULL)
-		for (perturb = olditem->hi_hash; ; perturb >>= PERTURB_SHIFT)
-		{
-		    newi = (newi << 2) + newi + perturb + 1;
-		    newitem = &newarray[newi & newmask];
-		    if (newitem->hi_key == NULL)
-			break;
-		}
-	    *newitem = *olditem;
-	    --todo;
-	}
-
-    if (ht->ht_array != ht->ht_smallarray)
-	vim_free(ht->ht_array);
-    ht->ht_array = newarray;
-    ht->ht_mask = newmask;
-    ht->ht_filled = ht->ht_used;
-    ht->ht_error = FALSE;
-
-    return OK;
-}
-
-/*
- * Get the hash number for a key.
- * If you think you know a better hash function: Compile with HT_DEBUG set and
- * run a script that uses hashtables a lot.  Vim will then print statistics
- * when exiting.  Try that with the current hash algorithm and yours.  The
- * lower the percentage the better.
- */
-    hash_T
-hash_hash(key)
-    char_u	*key;
-{
-    hash_T	hash;
-    char_u	*p;
-
-    if ((hash = *key) == 0)
-	return (hash_T)0;	/* Empty keys are not allowed, but we don't
-				   want to crash if we get one. */
-    p = key + 1;
-
-#if 0
-    /* ElfHash algorithm, which is supposed to have an even distribution.
-     * Suggested by Charles Campbell. */
-    hash_T	g;
-
-    while (*p != NUL)
-    {
-	hash = (hash << 4) + *p++;	/* clear low 4 bits of hash, add char */
-	g = hash & 0xf0000000L;		/* g has high 4 bits of hash only */
-	if (g != 0)
-	    hash ^= g >> 24;		/* xor g's high 4 bits into hash */
-    }
-#else
-
-    /* A simplistic algorithm that appears to do very well.
-     * Suggested by George Reilly. */
-    while (*p != NUL)
-	hash = hash * 101 + *p++;
-#endif
-
-    return hash;
-}
-
-#endif
--- a/src/if_mzsch.c
+++ b/src/if_mzsch.c
@@ -24,6 +24,10 @@
 #include "vim.h"
 #include "if_mzsch.h"
 
+/* Only do the following when the feature is enabled.  Needed for "make
+ * depend". */
+#if defined(FEAT_MZSCHEME) || defined(PROTO)
+
 /* Base data structures */
 #define SCHEME_VIMBUFFERP(obj)  SAME_TYPE(SCHEME_TYPE(obj), mz_buffer_type)
 #define SCHEME_VIMWINDOWP(obj)  SAME_TYPE(SCHEME_TYPE(obj), mz_window_type)
@@ -2709,3 +2713,5 @@ sandbox_network_guard(int argc, Scheme_O
     return scheme_void;
 }
 #endif
+
+#endif
--- a/src/if_mzsch.h
+++ b/src/if_mzsch.h
@@ -9,7 +9,10 @@
 # define __CYGWIN32__
 #endif
 
-#include <scheme.h>
+/* #ifdef needed for "make depend" */
+#ifdef FEAT_MZSCHEME
+# include <scheme.h>
+#endif
 
 #ifdef __MINGW32__
 # undef __CYGWIN32__
--- a/src/memline.c
+++ b/src/memline.c
@@ -323,7 +323,9 @@ ml_open(buf)
     STRNCPY(b0p->b0_version + 4, Version, 6);
     long_to_char((long)mfp->mf_page_size, b0p->b0_page_size);
 
-    if (!B_SPELL(buf))
+#ifdef FEAT_SPELL
+    if (!buf->b_spell)
+#endif
     {
 	b0p->b0_dirty = buf->b_changed ? B0_DIRTY : 0;
 	b0p->b0_flags = get_fileformat(buf) + 1;
deleted file mode 100644
--- a/src/popupmenu.c
+++ /dev/null
@@ -1,565 +0,0 @@
-/* vi:set ts=8 sts=4 sw=4:
- *
- * VIM - Vi IMproved	by Bram Moolenaar
- *
- * Do ":help uganda"  in Vim to read copying and usage conditions.
- * Do ":help credits" in Vim to see a list of people who contributed.
- * See README.txt for an overview of the Vim source code.
- */
-
-/*
- * popupmenu.c: Popup menu (PUM)
- */
-#include "vim.h"
-
-#if defined(FEAT_INS_EXPAND) || defined(PROTO)
-
-static pumitem_T *pum_array = NULL;	/* items of displayed pum */
-static int pum_size;			/* nr of items in "pum_array" */
-static int pum_selected;		/* index of selected item or -1 */
-static int pum_first = 0;		/* index of top item */
-
-static int pum_height;			/* nr of displayed pum items */
-static int pum_width;			/* width of displayed pum items */
-static int pum_base_width;		/* width of pum items base */
-static int pum_kind_width;		/* width of pum items kind column */
-static int pum_scrollbar;		/* TRUE when scrollbar present */
-
-static int pum_row;			/* top row of pum */
-static int pum_col;			/* left column of pum */
-
-static int pum_do_redraw = FALSE;	/* do redraw anyway */
-
-static int pum_set_selected __ARGS((int n));
-
-#define PUM_DEF_HEIGHT 10
-#define PUM_DEF_WIDTH  15
-
-/*
- * Show the popup menu with items "array[size]".
- * "array" must remain valid until pum_undisplay() is called!
- * When possible the leftmost character is aligned with screen column "col".
- * The menu appears above the screen line "row" or at "row" + "height" - 1.
- */
-    void
-pum_display(array, size, selected)
-    pumitem_T	*array;
-    int		size;
-    int		selected;	/* index of initially selected item, none if
-				   out of range */
-{
-    int		w;
-    int		def_width;
-    int		max_width;
-    int		kind_width;
-    int		extra_width;
-    int		i;
-    int		top_clear;
-    int		row;
-    int		height;
-    int		col;
-    int		above_row = cmdline_row;
-
-redo:
-    def_width = PUM_DEF_WIDTH;
-    max_width = 0;
-    kind_width = 0;
-    extra_width = 0;
-
-    /* Pretend the pum is already there to avoid that must_redraw is set when
-     * 'cuc' is on. */
-    pum_array = (pumitem_T *)1;
-    validate_cursor_col();
-    pum_array = NULL;
-
-    row = curwin->w_cline_row + W_WINROW(curwin);
-    height = curwin->w_cline_height;
-    col = curwin->w_wcol + W_WINCOL(curwin) - curwin->w_leftcol;
-
-    if (firstwin->w_p_pvw)
-	top_clear = firstwin->w_height;
-    else
-	top_clear = 0;
-
-    /* When the preview window is at the bottom stop just above it.  Also
-     * avoid drawing over the status line so that it's clear there is a window
-     * boundary. */
-    if (lastwin->w_p_pvw)
-	above_row -= lastwin->w_height + lastwin->w_status_height + 1;
-
-    /*
-     * Figure out the size and position of the pum.
-     */
-    if (size < PUM_DEF_HEIGHT)
-	pum_height = size;
-    else
-	pum_height = PUM_DEF_HEIGHT;
-    if (p_ph > 0 && pum_height > p_ph)
-	pum_height = p_ph;
-
-    /* Put the pum below "row" if possible.  If there are few lines decide on
-     * where there is more room. */
-    if (row >= above_row - pum_height
-			      && row > (above_row - top_clear - height) / 2)
-    {
-	/* pum above "row" */
-	if (row >= size)
-	{
-	    pum_row = row - size;
-	    pum_height = size;
-	}
-	else
-	{
-	    pum_row = 0;
-	    pum_height = row;
-	}
-	if (p_ph > 0 && pum_height > p_ph)
-	{
-	    pum_row += pum_height - p_ph;
-	    pum_height = p_ph;
-	}
-    }
-    else
-    {
-	/* pum below "row" */
-	pum_row = row + height;
-	if (size > above_row - pum_row)
-	    pum_height = above_row - pum_row;
-	else
-	    pum_height = size;
-	if (p_ph > 0 && pum_height > p_ph)
-	    pum_height = p_ph;
-    }
-
-    /* don't display when we only have room for one line */
-    if (pum_height < 1 || (pum_height == 1 && size > 1))
-	return;
-
-    /* If there is a preview window at the top avoid drawing over it. */
-    if (firstwin->w_p_pvw
-	    && pum_row < firstwin->w_height
-	    && pum_height > firstwin->w_height + 4)
-    {
-	pum_row += firstwin->w_height;
-	pum_height -= firstwin->w_height;
-    }
-
-    /* Compute the width of the widest match and the widest extra. */
-    for (i = 0; i < size; ++i)
-    {
-	w = vim_strsize(array[i].pum_text);
-	if (max_width < w)
-	    max_width = w;
-	if (array[i].pum_kind != NULL)
-	{
-	    w = vim_strsize(array[i].pum_kind) + 1;
-	    if (kind_width < w)
-		kind_width = w;
-	}
-	if (array[i].pum_extra != NULL)
-	{
-	    w = vim_strsize(array[i].pum_extra) + 1;
-	    if (extra_width < w)
-		extra_width = w;
-	}
-    }
-    pum_base_width = max_width;
-    pum_kind_width = kind_width;
-
-    /* if there are more items than room we need a scrollbar */
-    if (pum_height < size)
-    {
-	pum_scrollbar = 1;
-	++max_width;
-    }
-    else
-	pum_scrollbar = 0;
-
-    if (def_width < max_width)
-	def_width = max_width;
-
-    if (col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
-    {
-	/* align pum column with "col" */
-	pum_col = col;
-	pum_width = Columns - pum_col - pum_scrollbar;
-	if (pum_width > max_width + kind_width + extra_width + 1
-						 && pum_width > PUM_DEF_WIDTH)
-	{
-	    pum_width = max_width + kind_width + extra_width + 1;
-	    if (pum_width < PUM_DEF_WIDTH)
-		pum_width = PUM_DEF_WIDTH;
-	}
-    }
-    else if (Columns < def_width)
-    {
-	/* not enough room, will use what we have */
-	pum_col = 0;
-	pum_width = Columns - 1;
-    }
-    else
-    {
-	if (max_width > PUM_DEF_WIDTH)
-	    max_width = PUM_DEF_WIDTH;	/* truncate */
-	pum_col = Columns - max_width;
-	pum_width = max_width - pum_scrollbar;
-    }
-
-    pum_array = array;
-    pum_size = size;
-
-    /* Set selected item and redraw.  If the window size changed need to redo
-     * the positioning. */
-    if (pum_set_selected(selected))
-	goto redo;
-}
-
-/*
- * Redraw the popup menu, using "pum_first" and "pum_selected".
- */
-    void
-pum_redraw()
-{
-    int		row = pum_row;
-    int		col;
-    int		attr_norm = highlight_attr[HLF_PNI];
-    int		attr_select = highlight_attr[HLF_PSI];
-    int		attr_scroll = highlight_attr[HLF_PSB];
-    int		attr_thumb = highlight_attr[HLF_PST];
-    int		attr;
-    int		i;
-    int		idx;
-    char_u	*s;
-    char_u	*p = NULL;
-    int		totwidth, width, w;
-    int		thumb_pos = 0;
-    int		thumb_heigth = 1;
-    int		round;
-    int		n;
-
-    if (pum_scrollbar)
-    {
-	thumb_heigth = pum_height * pum_height / pum_size;
-	if (thumb_heigth == 0)
-	    thumb_heigth = 1;
-	thumb_pos = (pum_first * (pum_height - thumb_heigth)
-			    + (pum_size - pum_height) / 2)
-						    / (pum_size - pum_height);
-    }
-
-    for (i = 0; i < pum_height; ++i)
-    {
-	idx = i + pum_first;
-	attr = (idx == pum_selected) ? attr_select : attr_norm;
-
-	/* prepend a space if there is room */
-	if (pum_col > 0)
-	    screen_putchar(' ', row, pum_col - 1, attr);
-
-	/* Display each entry, use two spaces for a Tab.
-	 * Do this 3 times: For the main text, kind and extra info */
-	col = pum_col;
-	totwidth = 0;
-	for (round = 1; round <= 3; ++round)
-	{
-	    width = 0;
-	    s = NULL;
-	    switch (round)
-	    {
-		case 1: p = pum_array[idx].pum_text; break;
-		case 2: p = pum_array[idx].pum_kind; break;
-		case 3: p = pum_array[idx].pum_extra; break;
-	    }
-	    if (p != NULL)
-		for ( ; ; mb_ptr_adv(p))
-		{
-		    if (s == NULL)
-			s = p;
-		    w = ptr2cells(p);
-		    if (*p == NUL || *p == TAB || totwidth + w > pum_width)
-		    {
-			/* Display the text that fits or comes before a Tab. */
-			screen_puts_len(s, p - s, row, col, attr);
-			col += width;
-
-			if (*p != TAB)
-			    break;
-
-			/* Display two spaces for a Tab. */
-			screen_puts_len((char_u *)"  ", 2, row, col, attr);
-			col += 2;
-			totwidth += 2;
-			s = NULL;	    /* start text at next char */
-			width = 0;
-		    }
-		    else
-			width += w;
-		}
-
-	    if (round > 1)
-		n = pum_kind_width + 1;
-	    else
-		n = 1;
-
-	    /* Stop when there is nothing more to display. */
-	    if (round == 3
-		    || (round == 2 && pum_array[idx].pum_extra == NULL)
-		    || (round == 1 && pum_array[idx].pum_kind == NULL
-					  && pum_array[idx].pum_extra == NULL)
-		    || pum_base_width + n >= pum_width)
-		break;
-	    screen_fill(row, row + 1, col, pum_col + pum_base_width + n,
-							      ' ', ' ', attr);
-	    col = pum_col + pum_base_width + n;
-	    totwidth = pum_base_width + n;
-	}
-
-	screen_fill(row, row + 1, col, pum_col + pum_width, ' ', ' ', attr);
-	if (pum_scrollbar > 0)
-	    screen_putchar(' ', row, pum_col + pum_width,
-		    i >= thumb_pos && i < thumb_pos + thumb_heigth
-						  ? attr_thumb : attr_scroll);
-
-	++row;
-    }
-}
-
-#if 0 /* not used yet */
-/*
- * Return the index of the currently selected item.
- */
-    int
-pum_get_selected()
-{
-    return pum_selected;
-}
-#endif
-
-/*
- * Set the index of the currently selected item.  The menu will scroll when
- * necessary.  When "n" is out of range don't scroll.
- * Returns TRUE when the window was resized and the location of the popup menu
- * must be recomputed.
- */
-    static int
-pum_set_selected(n)
-    int	    n;
-{
-    int	    resized = FALSE;
-    int	    context = pum_height / 2;
-
-    pum_selected = n;
-
-    if (pum_selected >= 0 && pum_selected < pum_size)
-    {
-	if (pum_first > pum_selected - 4)
-	{
-	    /* scroll down; when we did a jump it's probably a PageUp then
-	     * scroll a whole page */
-	    if (pum_first > pum_selected - 2)
-	    {
-		pum_first -= pum_height - 2;
-		if (pum_first < 0)
-		    pum_first = 0;
-		else if (pum_first > pum_selected)
-		    pum_first = pum_selected;
-	    }
-	    else
-		pum_first = pum_selected;
-	}
-	else if (pum_first < pum_selected - pum_height + 5)
-	{
-	    /* scroll up; when we did a jump it's probably a PageDown then
-	     * scroll a whole page */
-	    if (pum_first < pum_selected - pum_height + 1 + 2)
-	    {
-		pum_first += pum_height - 2;
-		if (pum_first < pum_selected - pum_height + 1)
-		    pum_first = pum_selected - pum_height + 1;
-	    }
-	    else
-		pum_first = pum_selected - pum_height + 1;
-	}
-
-	/* Give a few lines of context when possible. */
-	if (context > 3)
-	    context = 3;
-	if (pum_height > 2)
-	{
-	    if (pum_first > pum_selected - context)
-	    {
-		/* scroll down */
-		pum_first = pum_selected - context;
-		if (pum_first < 0)
-		    pum_first = 0;
-	    }
-	    else if (pum_first < pum_selected + context - pum_height + 1)
-	    {
-		/* scroll up */
-		pum_first = pum_selected + context - pum_height + 1;
-	    }
-	}
-
-#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
-	/* Show extra info in the preview window if there is something and
-	 * 'completeopt' contains "preview". */
-	if (pum_array[pum_selected].pum_info != NULL
-					    && vim_strchr(p_cot, 'p') != NULL)
-	{
-	    win_T	*curwin_save = curwin;
-	    int		res = OK;
-
-	    /* Open a preview window.  3 lines by default. */
-	    g_do_tagpreview = 3;
-	    resized = prepare_tagpreview();
-	    g_do_tagpreview = 0;
-
-	    if (curwin->w_p_pvw)
-	    {
-		if (curbuf->b_fname == NULL
-			&& curbuf->b_p_bt[0] == 'n' && curbuf->b_p_bt[2] == 'f'
-			&& curbuf->b_p_bh[0] == 'w')
-		{
-		    /* Already a "wipeout" buffer, make it empty. */
-		    while (!bufempty())
-			ml_delete((linenr_T)1, FALSE);
-		}
-		else if ((res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0))
-									== OK)
-		{
-		    /* Edit a new, empty buffer. Set options for a "wipeout"
-		     * buffer. */
-		    set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
-		    set_option_value((char_u *)"bt", 0L, (char_u *)"nofile",
-								   OPT_LOCAL);
-		    set_option_value((char_u *)"bh", 0L, (char_u *)"wipe",
-								   OPT_LOCAL);
-		    set_option_value((char_u *)"diff", 0L, (char_u *)"",
-								   OPT_LOCAL);
-		}
-		if (res == OK)
-		{
-		    char_u	*p, *e;
-		    linenr_T	lnum = 0;
-
-		    for (p = pum_array[pum_selected].pum_info; *p != NUL; )
-		    {
-			e = vim_strchr(p, '\n');
-			if (e == NULL)
-			{
-			    ml_append(lnum++, p, 0, FALSE);
-			    break;
-			}
-			else
-			{
-			    *e = NUL;
-			    ml_append(lnum++, p, e - p + 1, FALSE);
-			    *e = '\n';
-			    p = e + 1;
-			}
-		    }
-
-		    /* Increase the height of the preview window to show the
-		     * text, but no more than 'previewheight' lines. */
-		    if (lnum > p_pvh)
-			lnum = p_pvh;
-		    if (curwin->w_height < lnum)
-		    {
-			win_setheight((int)lnum);
-			resized = TRUE;
-		    }
-
-		    curbuf->b_changed = 0;
-		    curbuf->b_p_ma = FALSE;
-		    curwin->w_cursor.lnum = 0;
-		    curwin->w_cursor.col = 0;
-
-		    if (curwin != curwin_save && win_valid(curwin_save))
-		    {
-			/* Return cursor to where we were */
-			validate_cursor();
-			redraw_later(SOME_VALID);
-
-			/* When the preview window was resized we need to
-			 * update the view on the buffer.  Only go back to
-			 * the window when needed, otherwise it will always be
-			 * redraw. */
-			if (resized)
-			{
-			    win_enter(curwin_save, TRUE);
-			    update_topline();
-			}
-
-			/* Update the screen before drawing the popup menu.
-			 * Enable updating the status lines. */
-			pum_do_redraw = TRUE;
-			update_screen(0);
-			pum_do_redraw = FALSE;
-
-			if (win_valid(curwin_save))
-			    win_enter(curwin_save, TRUE);
-
-			/* May need to update the screen again when there are
-			 * autocommands involved. */
-			pum_do_redraw = TRUE;
-			update_screen(0);
-			pum_do_redraw = FALSE;
-		    }
-		}
-	    }
-	}
-#endif
-    }
-
-    /* Never display more than we have */
-    if (pum_first > pum_size - pum_height)
-	pum_first = pum_size - pum_height;
-
-    if (!resized)
-	pum_redraw();
-
-    return resized;
-}
-
-/*
- * Undisplay the popup menu (later).
- */
-    void
-pum_undisplay()
-{
-    pum_array = NULL;
-    redraw_all_later(SOME_VALID);
-    status_redraw_all();
-}
-
-/*
- * Clear the popup menu.  Currently only resets the offset to the first
- * displayed item.
- */
-    void
-pum_clear()
-{
-    pum_first = 0;
-}
-
-/*
- * Return TRUE if the popup menu is displayed.
- * Overruled when "pum_do_redraw" is set, used to redraw the status lines.
- */
-    int
-pum_visible()
-{
-    return !pum_do_redraw && pum_array != NULL;
-}
-
-/*
- * Return the height of the popup menu, the number of entries visible.
- * Only valid when pum_visible() returns TRUE!
- */
-    int
-pum_get_height()
-{
-    return pum_height;
-}
-
-#endif
new file mode 100644
--- /dev/null
+++ b/src/popupmnu.c
@@ -0,0 +1,565 @@
+/* vi:set ts=8 sts=4 sw=4:
+ *
+ * VIM - Vi IMproved	by Bram Moolenaar
+ *
+ * Do ":help uganda"  in Vim to read copying and usage conditions.
+ * Do ":help credits" in Vim to see a list of people who contributed.
+ * See README.txt for an overview of the Vim source code.
+ */
+
+/*
+ * popupmnu.c: Popup menu (PUM)
+ */
+#include "vim.h"
+
+#if defined(FEAT_INS_EXPAND) || defined(PROTO)
+
+static pumitem_T *pum_array = NULL;	/* items of displayed pum */
+static int pum_size;			/* nr of items in "pum_array" */
+static int pum_selected;		/* index of selected item or -1 */
+static int pum_first = 0;		/* index of top item */
+
+static int pum_height;			/* nr of displayed pum items */
+static int pum_width;			/* width of displayed pum items */
+static int pum_base_width;		/* width of pum items base */
+static int pum_kind_width;		/* width of pum items kind column */
+static int pum_scrollbar;		/* TRUE when scrollbar present */
+
+static int pum_row;			/* top row of pum */
+static int pum_col;			/* left column of pum */
+
+static int pum_do_redraw = FALSE;	/* do redraw anyway */
+
+static int pum_set_selected __ARGS((int n));
+
+#define PUM_DEF_HEIGHT 10
+#define PUM_DEF_WIDTH  15
+
+/*
+ * Show the popup menu with items "array[size]".
+ * "array" must remain valid until pum_undisplay() is called!
+ * When possible the leftmost character is aligned with screen column "col".
+ * The menu appears above the screen line "row" or at "row" + "height" - 1.
+ */
+    void
+pum_display(array, size, selected)
+    pumitem_T	*array;
+    int		size;
+    int		selected;	/* index of initially selected item, none if
+				   out of range */
+{
+    int		w;
+    int		def_width;
+    int		max_width;
+    int		kind_width;
+    int		extra_width;
+    int		i;
+    int		top_clear;
+    int		row;
+    int		height;
+    int		col;
+    int		above_row = cmdline_row;
+
+redo:
+    def_width = PUM_DEF_WIDTH;
+    max_width = 0;
+    kind_width = 0;
+    extra_width = 0;
+
+    /* Pretend the pum is already there to avoid that must_redraw is set when
+     * 'cuc' is on. */
+    pum_array = (pumitem_T *)1;
+    validate_cursor_col();
+    pum_array = NULL;
+
+    row = curwin->w_cline_row + W_WINROW(curwin);
+    height = curwin->w_cline_height;
+    col = curwin->w_wcol + W_WINCOL(curwin) - curwin->w_leftcol;
+
+    if (firstwin->w_p_pvw)
+	top_clear = firstwin->w_height;
+    else
+	top_clear = 0;
+
+    /* When the preview window is at the bottom stop just above it.  Also
+     * avoid drawing over the status line so that it's clear there is a window
+     * boundary. */
+    if (lastwin->w_p_pvw)
+	above_row -= lastwin->w_height + lastwin->w_status_height + 1;
+
+    /*
+     * Figure out the size and position of the pum.
+     */
+    if (size < PUM_DEF_HEIGHT)
+	pum_height = size;
+    else
+	pum_height = PUM_DEF_HEIGHT;
+    if (p_ph > 0 && pum_height > p_ph)
+	pum_height = p_ph;
+
+    /* Put the pum below "row" if possible.  If there are few lines decide on
+     * where there is more room. */
+    if (row >= above_row - pum_height
+			      && row > (above_row - top_clear - height) / 2)
+    {
+	/* pum above "row" */
+	if (row >= size)
+	{
+	    pum_row = row - size;
+	    pum_height = size;
+	}
+	else
+	{
+	    pum_row = 0;
+	    pum_height = row;
+	}
+	if (p_ph > 0 && pum_height > p_ph)
+	{
+	    pum_row += pum_height - p_ph;
+	    pum_height = p_ph;
+	}
+    }
+    else
+    {
+	/* pum below "row" */
+	pum_row = row + height;
+	if (size > above_row - pum_row)
+	    pum_height = above_row - pum_row;
+	else
+	    pum_height = size;
+	if (p_ph > 0 && pum_height > p_ph)
+	    pum_height = p_ph;
+    }
+
+    /* don't display when we only have room for one line */
+    if (pum_height < 1 || (pum_height == 1 && size > 1))
+	return;
+
+    /* If there is a preview window at the top avoid drawing over it. */
+    if (firstwin->w_p_pvw
+	    && pum_row < firstwin->w_height
+	    && pum_height > firstwin->w_height + 4)
+    {
+	pum_row += firstwin->w_height;
+	pum_height -= firstwin->w_height;
+    }
+
+    /* Compute the width of the widest match and the widest extra. */
+    for (i = 0; i < size; ++i)
+    {
+	w = vim_strsize(array[i].pum_text);
+	if (max_width < w)
+	    max_width = w;
+	if (array[i].pum_kind != NULL)
+	{
+	    w = vim_strsize(array[i].pum_kind) + 1;
+	    if (kind_width < w)
+		kind_width = w;
+	}
+	if (array[i].pum_extra != NULL)
+	{
+	    w = vim_strsize(array[i].pum_extra) + 1;
+	    if (extra_width < w)
+		extra_width = w;
+	}
+    }
+    pum_base_width = max_width;
+    pum_kind_width = kind_width;
+
+    /* if there are more items than room we need a scrollbar */
+    if (pum_height < size)
+    {
+	pum_scrollbar = 1;
+	++max_width;
+    }
+    else
+	pum_scrollbar = 0;
+
+    if (def_width < max_width)
+	def_width = max_width;
+
+    if (col < Columns - PUM_DEF_WIDTH || col < Columns - max_width)
+    {
+	/* align pum column with "col" */
+	pum_col = col;
+	pum_width = Columns - pum_col - pum_scrollbar;
+	if (pum_width > max_width + kind_width + extra_width + 1
+						 && pum_width > PUM_DEF_WIDTH)
+	{
+	    pum_width = max_width + kind_width + extra_width + 1;
+	    if (pum_width < PUM_DEF_WIDTH)
+		pum_width = PUM_DEF_WIDTH;
+	}
+    }
+    else if (Columns < def_width)
+    {
+	/* not enough room, will use what we have */
+	pum_col = 0;
+	pum_width = Columns - 1;
+    }
+    else
+    {
+	if (max_width > PUM_DEF_WIDTH)
+	    max_width = PUM_DEF_WIDTH;	/* truncate */
+	pum_col = Columns - max_width;
+	pum_width = max_width - pum_scrollbar;
+    }
+
+    pum_array = array;
+    pum_size = size;
+
+    /* Set selected item and redraw.  If the window size changed need to redo
+     * the positioning. */
+    if (pum_set_selected(selected))
+	goto redo;
+}
+
+/*
+ * Redraw the popup menu, using "pum_first" and "pum_selected".
+ */
+    void
+pum_redraw()
+{
+    int		row = pum_row;
+    int		col;
+    int		attr_norm = highlight_attr[HLF_PNI];
+    int		attr_select = highlight_attr[HLF_PSI];
+    int		attr_scroll = highlight_attr[HLF_PSB];
+    int		attr_thumb = highlight_attr[HLF_PST];
+    int		attr;
+    int		i;
+    int		idx;
+    char_u	*s;
+    char_u	*p = NULL;
+    int		totwidth, width, w;
+    int		thumb_pos = 0;
+    int		thumb_heigth = 1;
+    int		round;
+    int		n;
+
+    if (pum_scrollbar)
+    {
+	thumb_heigth = pum_height * pum_height / pum_size;
+	if (thumb_heigth == 0)
+	    thumb_heigth = 1;
+	thumb_pos = (pum_first * (pum_height - thumb_heigth)
+			    + (pum_size - pum_height) / 2)
+						    / (pum_size - pum_height);
+    }
+
+    for (i = 0; i < pum_height; ++i)
+    {
+	idx = i + pum_first;
+	attr = (idx == pum_selected) ? attr_select : attr_norm;
+
+	/* prepend a space if there is room */
+	if (pum_col > 0)
+	    screen_putchar(' ', row, pum_col - 1, attr);
+
+	/* Display each entry, use two spaces for a Tab.
+	 * Do this 3 times: For the main text, kind and extra info */
+	col = pum_col;
+	totwidth = 0;
+	for (round = 1; round <= 3; ++round)
+	{
+	    width = 0;
+	    s = NULL;
+	    switch (round)
+	    {
+		case 1: p = pum_array[idx].pum_text; break;
+		case 2: p = pum_array[idx].pum_kind; break;
+		case 3: p = pum_array[idx].pum_extra; break;
+	    }
+	    if (p != NULL)
+		for ( ; ; mb_ptr_adv(p))
+		{
+		    if (s == NULL)
+			s = p;
+		    w = ptr2cells(p);
+		    if (*p == NUL || *p == TAB || totwidth + w > pum_width)
+		    {
+			/* Display the text that fits or comes before a Tab. */
+			screen_puts_len(s, p - s, row, col, attr);
+			col += width;
+
+			if (*p != TAB)
+			    break;
+
+			/* Display two spaces for a Tab. */
+			screen_puts_len((char_u *)"  ", 2, row, col, attr);
+			col += 2;
+			totwidth += 2;
+			s = NULL;	    /* start text at next char */
+			width = 0;
+		    }
+		    else
+			width += w;
+		}
+
+	    if (round > 1)
+		n = pum_kind_width + 1;
+	    else
+		n = 1;
+
+	    /* Stop when there is nothing more to display. */
+	    if (round == 3
+		    || (round == 2 && pum_array[idx].pum_extra == NULL)
+		    || (round == 1 && pum_array[idx].pum_kind == NULL
+					  && pum_array[idx].pum_extra == NULL)
+		    || pum_base_width + n >= pum_width)
+		break;
+	    screen_fill(row, row + 1, col, pum_col + pum_base_width + n,
+							      ' ', ' ', attr);
+	    col = pum_col + pum_base_width + n;
+	    totwidth = pum_base_width + n;
+	}
+
+	screen_fill(row, row + 1, col, pum_col + pum_width, ' ', ' ', attr);
+	if (pum_scrollbar > 0)
+	    screen_putchar(' ', row, pum_col + pum_width,
+		    i >= thumb_pos && i < thumb_pos + thumb_heigth
+						  ? attr_thumb : attr_scroll);
+
+	++row;
+    }
+}
+
+#if 0 /* not used yet */
+/*
+ * Return the index of the currently selected item.
+ */
+    int
+pum_get_selected()
+{
+    return pum_selected;
+}
+#endif
+
+/*
+ * Set the index of the currently selected item.  The menu will scroll when
+ * necessary.  When "n" is out of range don't scroll.
+ * Returns TRUE when the window was resized and the location of the popup menu
+ * must be recomputed.
+ */
+    static int
+pum_set_selected(n)
+    int	    n;
+{
+    int	    resized = FALSE;
+    int	    context = pum_height / 2;
+
+    pum_selected = n;
+
+    if (pum_selected >= 0 && pum_selected < pum_size)
+    {
+	if (pum_first > pum_selected - 4)
+	{
+	    /* scroll down; when we did a jump it's probably a PageUp then
+	     * scroll a whole page */
+	    if (pum_first > pum_selected - 2)
+	    {
+		pum_first -= pum_height - 2;
+		if (pum_first < 0)
+		    pum_first = 0;
+		else if (pum_first > pum_selected)
+		    pum_first = pum_selected;
+	    }
+	    else
+		pum_first = pum_selected;
+	}
+	else if (pum_first < pum_selected - pum_height + 5)
+	{
+	    /* scroll up; when we did a jump it's probably a PageDown then
+	     * scroll a whole page */
+	    if (pum_first < pum_selected - pum_height + 1 + 2)
+	    {
+		pum_first += pum_height - 2;
+		if (pum_first < pum_selected - pum_height + 1)
+		    pum_first = pum_selected - pum_height + 1;
+	    }
+	    else
+		pum_first = pum_selected - pum_height + 1;
+	}
+
+	/* Give a few lines of context when possible. */
+	if (context > 3)
+	    context = 3;
+	if (pum_height > 2)
+	{
+	    if (pum_first > pum_selected - context)
+	    {
+		/* scroll down */
+		pum_first = pum_selected - context;
+		if (pum_first < 0)
+		    pum_first = 0;
+	    }
+	    else if (pum_first < pum_selected + context - pum_height + 1)
+	    {
+		/* scroll up */
+		pum_first = pum_selected + context - pum_height + 1;
+	    }
+	}
+
+#if defined(FEAT_WINDOWS) && defined(FEAT_QUICKFIX)
+	/* Show extra info in the preview window if there is something and
+	 * 'completeopt' contains "preview". */
+	if (pum_array[pum_selected].pum_info != NULL
+					    && vim_strchr(p_cot, 'p') != NULL)
+	{
+	    win_T	*curwin_save = curwin;
+	    int		res = OK;
+
+	    /* Open a preview window.  3 lines by default. */
+	    g_do_tagpreview = 3;
+	    resized = prepare_tagpreview();
+	    g_do_tagpreview = 0;
+
+	    if (curwin->w_p_pvw)
+	    {
+		if (curbuf->b_fname == NULL
+			&& curbuf->b_p_bt[0] == 'n' && curbuf->b_p_bt[2] == 'f'
+			&& curbuf->b_p_bh[0] == 'w')
+		{
+		    /* Already a "wipeout" buffer, make it empty. */
+		    while (!bufempty())
+			ml_delete((linenr_T)1, FALSE);
+		}
+		else if ((res = do_ecmd(0, NULL, NULL, NULL, ECMD_ONE, 0))
+									== OK)
+		{
+		    /* Edit a new, empty buffer. Set options for a "wipeout"
+		     * buffer. */
+		    set_option_value((char_u *)"swf", 0L, NULL, OPT_LOCAL);
+		    set_option_value((char_u *)"bt", 0L, (char_u *)"nofile",
+								   OPT_LOCAL);
+		    set_option_value((char_u *)"bh", 0L, (char_u *)"wipe",
+								   OPT_LOCAL);
+		    set_option_value((char_u *)"diff", 0L, (char_u *)"",
+								   OPT_LOCAL);
+		}
+		if (res == OK)
+		{
+		    char_u	*p, *e;
+		    linenr_T	lnum = 0;
+
+		    for (p = pum_array[pum_selected].pum_info; *p != NUL; )
+		    {
+			e = vim_strchr(p, '\n');
+			if (e == NULL)
+			{
+			    ml_append(lnum++, p, 0, FALSE);
+			    break;
+			}
+			else
+			{
+			    *e = NUL;
+			    ml_append(lnum++, p, e - p + 1, FALSE);
+			    *e = '\n';
+			    p = e + 1;
+			}
+		    }
+
+		    /* Increase the height of the preview window to show the
+		     * text, but no more than 'previewheight' lines. */
+		    if (lnum > p_pvh)
+			lnum = p_pvh;
+		    if (curwin->w_height < lnum)
+		    {
+			win_setheight((int)lnum);
+			resized = TRUE;
+		    }
+
+		    curbuf->b_changed = 0;
+		    curbuf->b_p_ma = FALSE;
+		    curwin->w_cursor.lnum = 0;
+		    curwin->w_cursor.col = 0;
+
+		    if (curwin != curwin_save && win_valid(curwin_save))
+		    {
+			/* Return cursor to where we were */
+			validate_cursor();
+			redraw_later(SOME_VALID);
+
+			/* When the preview window was resized we need to
+			 * update the view on the buffer.  Only go back to
+			 * the window when needed, otherwise it will always be
+			 * redraw. */
+			if (resized)
+			{
+			    win_enter(curwin_save, TRUE);
+			    update_topline();
+			}
+
+			/* Update the screen before drawing the popup menu.
+			 * Enable updating the status lines. */
+			pum_do_redraw = TRUE;
+			update_screen(0);
+			pum_do_redraw = FALSE;
+
+			if (win_valid(curwin_save))
+			    win_enter(curwin_save, TRUE);
+
+			/* May need to update the screen again when there are
+			 * autocommands involved. */
+			pum_do_redraw = TRUE;
+			update_screen(0);
+			pum_do_redraw = FALSE;
+		    }
+		}
+	    }
+	}
+#endif
+    }
+
+    /* Never display more than we have */
+    if (pum_first > pum_size - pum_height)
+	pum_first = pum_size - pum_height;
+
+    if (!resized)
+	pum_redraw();
+
+    return resized;
+}
+
+/*
+ * Undisplay the popup menu (later).
+ */
+    void
+pum_undisplay()
+{
+    pum_array = NULL;
+    redraw_all_later(SOME_VALID);
+    status_redraw_all();
+}
+
+/*
+ * Clear the popup menu.  Currently only resets the offset to the first
+ * displayed item.
+ */
+    void
+pum_clear()
+{
+    pum_first = 0;
+}
+
+/*
+ * Return TRUE if the popup menu is displayed.
+ * Overruled when "pum_do_redraw" is set, used to redraw the status lines.
+ */
+    int
+pum_visible()
+{
+    return !pum_do_redraw && pum_array != NULL;
+}
+
+/*
+ * Return the height of the popup menu, the number of entries visible.
+ * Only valid when pum_visible() returns TRUE!
+ */
+    int
+pum_get_height()
+{
+    return pum_height;
+}
+
+#endif
--- a/src/proto/edit.pro
+++ b/src/proto/edit.pro
@@ -1,42 +1,42 @@
 /* edit.c */
-int edit __ARGS((int cmdchar, int startln, long count));
-void edit_putchar __ARGS((int c, int highlight));
-void edit_unputchar __ARGS((void));
-void display_dollar __ARGS((colnr_T col));
-void change_indent __ARGS((int type, int amount, int round, int replaced));
-void truncate_spaces __ARGS((char_u *line));
-void backspace_until_column __ARGS((int col));
-int vim_is_ctrl_x_key __ARGS((int c));
-int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
-int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u **cptext, int cdir, int flags));
-void set_completion __ARGS((int startcol, list_T *list));
-void ins_compl_show_pum __ARGS((void));
-char_u *find_word_start __ARGS((char_u *ptr));
-char_u *find_word_end __ARGS((char_u *ptr));
-int ins_compl_active __ARGS((void));
-int ins_compl_add_tv __ARGS((typval_T *tv, int dir));
-void ins_compl_check_keys __ARGS((int frequency));
-int get_literal __ARGS((void));
-void insertchar __ARGS((int c, int flags, int second_indent));
-void auto_format __ARGS((int trailblank, int prev_line));
-int comp_textwidth __ARGS((int ff));
-int stop_arrow __ARGS((void));
-void set_last_insert __ARGS((int c));
-void free_last_insert __ARGS((void));
-char_u *add_char2buf __ARGS((int c, char_u *s));
-void beginline __ARGS((int flags));
-int oneright __ARGS((void));
-int oneleft __ARGS((void));
-int cursor_up __ARGS((long n, int upd_topline));
-int cursor_down __ARGS((long n, int upd_topline));
-int stuff_inserted __ARGS((int c, long count, int no_esc));
-char_u *get_last_insert __ARGS((void));
-char_u *get_last_insert_save __ARGS((void));
-void replace_push __ARGS((int c));
-void fixthisline __ARGS((int (*get_the_indent)(void)));
-void fix_indent __ARGS((void));
-int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty));
-int hkmap __ARGS((int c));
-void ins_scroll __ARGS((void));
-void ins_horscroll __ARGS((void));
+extern int edit __ARGS((int cmdchar, int startln, long count));
+extern void edit_putchar __ARGS((int c, int highlight));
+extern void edit_unputchar __ARGS((void));
+extern void display_dollar __ARGS((colnr_T col));
+extern void change_indent __ARGS((int type, int amount, int round, int replaced));
+extern void truncate_spaces __ARGS((char_u *line));
+extern void backspace_until_column __ARGS((int col));
+extern int vim_is_ctrl_x_key __ARGS((int c));
+extern int ins_compl_add_infercase __ARGS((char_u *str, int len, int icase, char_u *fname, int dir, int flags));
+extern int ins_compl_add __ARGS((char_u *str, int len, int icase, char_u *fname, char_u **cptext, int cdir, int flags));
+extern void set_completion __ARGS((int startcol, list_T *list));
+extern void ins_compl_show_pum __ARGS((void));
+extern char_u *find_word_start __ARGS((char_u *ptr));
+extern char_u *find_word_end __ARGS((char_u *ptr));
+extern int ins_compl_active __ARGS((void));
+extern int ins_compl_add_tv __ARGS((typval_T *tv, int dir));
+extern void ins_compl_check_keys __ARGS((int frequency));
+extern int get_literal __ARGS((void));
+extern void insertchar __ARGS((int c, int flags, int second_indent));
+extern void auto_format __ARGS((int trailblank, int prev_line));
+extern int comp_textwidth __ARGS((int ff));
+extern int stop_arrow __ARGS((void));
+extern void set_last_insert __ARGS((int c));
+extern void free_last_insert __ARGS((void));
+extern char_u *add_char2buf __ARGS((int c, char_u *s));
+extern void beginline __ARGS((int flags));
+extern int oneright __ARGS((void));
+extern int oneleft __ARGS((void));
+extern int cursor_up __ARGS((long n, int upd_topline));
+extern int cursor_down __ARGS((long n, int upd_topline));
+extern int stuff_inserted __ARGS((int c, long count, int no_esc));
+extern char_u *get_last_insert __ARGS((void));
+extern char_u *get_last_insert_save __ARGS((void));
+extern void replace_push __ARGS((int c));
+extern void fixthisline __ARGS((int (*get_the_indent)(void)));
+extern void fix_indent __ARGS((void));
+extern int in_cinkeys __ARGS((int keytyped, int when, int line_is_empty));
+extern int hkmap __ARGS((int c));
+extern void ins_scroll __ARGS((void));
+extern void ins_horscroll __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/ex_cmds.pro
+++ b/src/proto/ex_cmds.pro
@@ -1,59 +1,59 @@
 /* ex_cmds.c */
-void do_ascii __ARGS((exarg_T *eap));
-void ex_align __ARGS((exarg_T *eap));
-void ex_sort __ARGS((exarg_T *eap));
-void ex_retab __ARGS((exarg_T *eap));
-int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
-void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
-void free_prev_shellcmd __ARGS((void));
-void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
-void do_shell __ARGS((char_u *cmd, int flags));
-char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
-void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
-int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
-int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
-void write_viminfo __ARGS((char_u *file, int forceit));
-int viminfo_readline __ARGS((vir_T *virp));
-char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
-void viminfo_writestring __ARGS((FILE *fd, char_u *p));
-void do_fixdel __ARGS((exarg_T *eap));
-void print_line_no_prefix __ARGS((linenr_T lnum, int use_number, int list));
-void print_line __ARGS((linenr_T lnum, int use_number, int list));
-void ex_file __ARGS((exarg_T *eap));
-void ex_update __ARGS((exarg_T *eap));
-void ex_write __ARGS((exarg_T *eap));
-int do_write __ARGS((exarg_T *eap));
-void ex_wnext __ARGS((exarg_T *eap));
-void do_wqall __ARGS((exarg_T *eap));
-int not_writing __ARGS((void));
-int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
-int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
-void ex_append __ARGS((exarg_T *eap));
-void ex_change __ARGS((exarg_T *eap));
-void ex_z __ARGS((exarg_T *eap));
-int check_restricted __ARGS((void));
-int check_secure __ARGS((void));
-void do_sub __ARGS((exarg_T *eap));
-int do_sub_msg __ARGS((int count_only));
-void ex_global __ARGS((exarg_T *eap));
-void global_exe __ARGS((char_u *cmd));
-int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
-void write_viminfo_sub_string __ARGS((FILE *fp));
-void free_old_sub __ARGS((void));
-int prepare_tagpreview __ARGS((void));
-void ex_help __ARGS((exarg_T *eap));
-char_u *check_help_lang __ARGS((char_u *arg));
-int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case));
-int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang));
-void fix_help_buffer __ARGS((void));
-void ex_exusage __ARGS((exarg_T *eap));
-void ex_viusage __ARGS((exarg_T *eap));
-void ex_helptags __ARGS((exarg_T *eap));
-void ex_sign __ARGS((exarg_T *eap));
-void sign_gui_started __ARGS((void));
-int sign_get_attr __ARGS((int typenr, int line));
-char_u *sign_get_text __ARGS((int typenr));
-void *sign_get_image __ARGS((int typenr));
-char_u *sign_typenr2name __ARGS((int typenr));
-void ex_drop __ARGS((exarg_T *eap));
+extern void do_ascii __ARGS((exarg_T *eap));
+extern void ex_align __ARGS((exarg_T *eap));
+extern void ex_sort __ARGS((exarg_T *eap));
+extern void ex_retab __ARGS((exarg_T *eap));
+extern int do_move __ARGS((linenr_T line1, linenr_T line2, linenr_T dest));
+extern void ex_copy __ARGS((linenr_T line1, linenr_T line2, linenr_T n));
+extern void free_prev_shellcmd __ARGS((void));
+extern void do_bang __ARGS((int addr_count, exarg_T *eap, int forceit, int do_in, int do_out));
+extern void do_shell __ARGS((char_u *cmd, int flags));
+extern char_u *make_filter_cmd __ARGS((char_u *cmd, char_u *itmp, char_u *otmp));
+extern void append_redir __ARGS((char_u *buf, char_u *opt, char_u *fname));
+extern int viminfo_error __ARGS((char *errnum, char *message, char_u *line));
+extern int read_viminfo __ARGS((char_u *file, int want_info, int want_marks, int forceit));
+extern void write_viminfo __ARGS((char_u *file, int forceit));
+extern int viminfo_readline __ARGS((vir_T *virp));
+extern char_u *viminfo_readstring __ARGS((vir_T *virp, int off, int convert));
+extern void viminfo_writestring __ARGS((FILE *fd, char_u *p));
+extern void do_fixdel __ARGS((exarg_T *eap));
+extern void print_line_no_prefix __ARGS((linenr_T lnum, int use_number, int list));
+extern void print_line __ARGS((linenr_T lnum, int use_number, int list));
+extern void ex_file __ARGS((exarg_T *eap));
+extern void ex_update __ARGS((exarg_T *eap));
+extern void ex_write __ARGS((exarg_T *eap));
+extern int do_write __ARGS((exarg_T *eap));
+extern void ex_wnext __ARGS((exarg_T *eap));
+extern void do_wqall __ARGS((exarg_T *eap));
+extern int not_writing __ARGS((void));
+extern int getfile __ARGS((int fnum, char_u *ffname, char_u *sfname, int setpm, linenr_T lnum, int forceit));
+extern int do_ecmd __ARGS((int fnum, char_u *ffname, char_u *sfname, exarg_T *eap, linenr_T newlnum, int flags));
+extern void ex_append __ARGS((exarg_T *eap));
+extern void ex_change __ARGS((exarg_T *eap));
+extern void ex_z __ARGS((exarg_T *eap));
+extern int check_restricted __ARGS((void));
+extern int check_secure __ARGS((void));
+extern void do_sub __ARGS((exarg_T *eap));
+extern int do_sub_msg __ARGS((int count_only));
+extern void ex_global __ARGS((exarg_T *eap));
+extern void global_exe __ARGS((char_u *cmd));
+extern int read_viminfo_sub_string __ARGS((vir_T *virp, int force));
+extern void write_viminfo_sub_string __ARGS((FILE *fp));
+extern void free_old_sub __ARGS((void));
+extern int prepare_tagpreview __ARGS((void));
+extern void ex_help __ARGS((exarg_T *eap));
+extern char_u *check_help_lang __ARGS((char_u *arg));
+extern int help_heuristic __ARGS((char_u *matched_string, int offset, int wrong_case));
+extern int find_help_tags __ARGS((char_u *arg, int *num_matches, char_u ***matches, int keep_lang));
+extern void fix_help_buffer __ARGS((void));
+extern void ex_exusage __ARGS((exarg_T *eap));
+extern void ex_viusage __ARGS((exarg_T *eap));
+extern void ex_helptags __ARGS((exarg_T *eap));
+extern void ex_sign __ARGS((exarg_T *eap));
+extern void sign_gui_started __ARGS((void));
+extern int sign_get_attr __ARGS((int typenr, int line));
+extern char_u *sign_get_text __ARGS((int typenr));
+extern void *sign_get_image __ARGS((int typenr));
+extern char_u *sign_typenr2name __ARGS((int typenr));
+extern void ex_drop __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
--- a/src/proto/ex_cmds2.pro
+++ b/src/proto/ex_cmds2.pro
@@ -1,83 +1,83 @@
 /* ex_cmds2.c */
-void do_debug __ARGS((char_u *cmd));
-void ex_debug __ARGS((exarg_T *eap));
-void dbg_check_breakpoint __ARGS((exarg_T *eap));
-int dbg_check_skipped __ARGS((exarg_T *eap));
-void ex_breakadd __ARGS((exarg_T *eap));
-void ex_debuggreedy __ARGS((exarg_T *eap));
-void ex_breakdel __ARGS((exarg_T *eap));
-void ex_breaklist __ARGS((exarg_T *eap));
-linenr_T dbg_find_breakpoint __ARGS((int file, char_u *fname, linenr_T after));
-int has_profiling __ARGS((int file, char_u *fname, int *fp));
-void dbg_breakpoint __ARGS((char_u *name, linenr_T lnum));
-void profile_zero __ARGS((proftime_T *tm));
-void profile_start __ARGS((proftime_T *tm));
-void profile_end __ARGS((proftime_T *tm));
-void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2));
-void profile_add __ARGS((proftime_T *tm, proftime_T *tm2));
-void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children));
-void profile_get_wait __ARGS((proftime_T *tm));
-void profile_sub_wait __ARGS((proftime_T *tm, proftime_T *tma));
-int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
-int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
-char *profile_msg __ARGS((proftime_T *tm));
-void ex_profile __ARGS((exarg_T *eap));
-void profile_dump __ARGS((void));
-void script_prof_save __ARGS((proftime_T *tm));
-void script_prof_restore __ARGS((proftime_T *tm));
-void prof_inchar_enter __ARGS((void));
-void prof_inchar_exit __ARGS((void));
-int prof_def_func __ARGS((void));
-int autowrite __ARGS((buf_T *buf, int forceit));
-void autowrite_all __ARGS((void));
-int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf));
-void browse_save_fname __ARGS((buf_T *buf));
-void dialog_changed __ARGS((buf_T *buf, int checkall));
-int can_abandon __ARGS((buf_T *buf, int forceit));
-int check_changed_any __ARGS((int hidden));
-int check_fname __ARGS((void));
-int buf_write_all __ARGS((buf_T *buf, int forceit));
-int get_arglist __ARGS((garray_T *gap, char_u *str));
-int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp));
-void set_arglist __ARGS((char_u *str));
-void check_arg_idx __ARGS((win_T *win));
-void ex_args __ARGS((exarg_T *eap));
-void ex_previous __ARGS((exarg_T *eap));
-void ex_rewind __ARGS((exarg_T *eap));
-void ex_last __ARGS((exarg_T *eap));
-void ex_argument __ARGS((exarg_T *eap));
-void do_argfile __ARGS((exarg_T *eap, int argn));
-void ex_next __ARGS((exarg_T *eap));
-void ex_argedit __ARGS((exarg_T *eap));
-void ex_argadd __ARGS((exarg_T *eap));
-void ex_argdelete __ARGS((exarg_T *eap));
-void ex_listdo __ARGS((exarg_T *eap));
-void ex_compiler __ARGS((exarg_T *eap));
-void ex_runtime __ARGS((exarg_T *eap));
-int source_runtime __ARGS((char_u *name, int all));
-int do_in_runtimepath __ARGS((char_u *name, int all, void (*callback)(char_u *fname, void *ck), void *cookie));
-void ex_options __ARGS((exarg_T *eap));
-void ex_source __ARGS((exarg_T *eap));
-linenr_T *source_breakpoint __ARGS((void *cookie));
-int *source_dbg_tick __ARGS((void *cookie));
-int source_level __ARGS((void *cookie));
-int do_source __ARGS((char_u *fname, int check_other, int is_vimrc));
-void ex_scriptnames __ARGS((exarg_T *eap));
-void scriptnames_slash_adjust __ARGS((void));
-char_u *get_scriptname __ARGS((scid_T id));
-void free_scriptnames __ARGS((void));
-char *fgets_cr __ARGS((char *s, int n, FILE *stream));
-char_u *getsourceline __ARGS((int c, void *cookie, int indent));
-void script_line_start __ARGS((void));
-void script_line_exec __ARGS((void));
-void script_line_end __ARGS((void));
-void ex_scriptencoding __ARGS((exarg_T *eap));
-void ex_finish __ARGS((exarg_T *eap));
-void do_finish __ARGS((exarg_T *eap, int reanimate));
-int source_finished __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
-void ex_checktime __ARGS((exarg_T *eap));
-char_u *get_mess_lang __ARGS((void));
-void set_lang_var __ARGS((void));
-void ex_language __ARGS((exarg_T *eap));
-char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
+extern void do_debug __ARGS((char_u *cmd));
+extern void ex_debug __ARGS((exarg_T *eap));
+extern void dbg_check_breakpoint __ARGS((exarg_T *eap));
+extern int dbg_check_skipped __ARGS((exarg_T *eap));
+extern void ex_breakadd __ARGS((exarg_T *eap));
+extern void ex_debuggreedy __ARGS((exarg_T *eap));
+extern void ex_breakdel __ARGS((exarg_T *eap));
+extern void ex_breaklist __ARGS((exarg_T *eap));
+extern linenr_T dbg_find_breakpoint __ARGS((int file, char_u *fname, linenr_T after));
+extern int has_profiling __ARGS((int file, char_u *fname, int *fp));
+extern void dbg_breakpoint __ARGS((char_u *name, linenr_T lnum));
+extern void profile_start __ARGS((proftime_T *tm));
+extern void profile_end __ARGS((proftime_T *tm));
+extern void profile_sub __ARGS((proftime_T *tm, proftime_T *tm2));
+extern char *profile_msg __ARGS((proftime_T *tm));
+extern void profile_zero __ARGS((proftime_T *tm));
+extern void profile_add __ARGS((proftime_T *tm, proftime_T *tm2));
+extern void profile_self __ARGS((proftime_T *self, proftime_T *total, proftime_T *children));
+extern void profile_get_wait __ARGS((proftime_T *tm));
+extern void profile_sub_wait __ARGS((proftime_T *tm, proftime_T *tma));
+extern int profile_equal __ARGS((proftime_T *tm1, proftime_T *tm2));
+extern int profile_cmp __ARGS((proftime_T *tm1, proftime_T *tm2));
+extern void ex_profile __ARGS((exarg_T *eap));
+extern void profile_dump __ARGS((void));
+extern void script_prof_save __ARGS((proftime_T *tm));
+extern void script_prof_restore __ARGS((proftime_T *tm));
+extern void prof_inchar_enter __ARGS((void));
+extern void prof_inchar_exit __ARGS((void));
+extern int prof_def_func __ARGS((void));
+extern int autowrite __ARGS((buf_T *buf, int forceit));
+extern void autowrite_all __ARGS((void));
+extern int check_changed __ARGS((buf_T *buf, int checkaw, int mult_win, int forceit, int allbuf));
+extern void browse_save_fname __ARGS((buf_T *buf));
+extern void dialog_changed __ARGS((buf_T *buf, int checkall));
+extern int can_abandon __ARGS((buf_T *buf, int forceit));
+extern int check_changed_any __ARGS((int hidden));
+extern int check_fname __ARGS((void));
+extern int buf_write_all __ARGS((buf_T *buf, int forceit));
+extern int get_arglist __ARGS((garray_T *gap, char_u *str));
+extern int get_arglist_exp __ARGS((char_u *str, int *fcountp, char_u ***fnamesp));
+extern void set_arglist __ARGS((char_u *str));
+extern void check_arg_idx __ARGS((win_T *win));
+extern void ex_args __ARGS((exarg_T *eap));
+extern void ex_previous __ARGS((exarg_T *eap));
+extern void ex_rewind __ARGS((exarg_T *eap));
+extern void ex_last __ARGS((exarg_T *eap));
+extern void ex_argument __ARGS((exarg_T *eap));
+extern void do_argfile __ARGS((exarg_T *eap, int argn));
+extern void ex_next __ARGS((exarg_T *eap));
+extern void ex_argedit __ARGS((exarg_T *eap));
+extern void ex_argadd __ARGS((exarg_T *eap));
+extern void ex_argdelete __ARGS((exarg_T *eap));
+extern void ex_listdo __ARGS((exarg_T *eap));
+extern void ex_compiler __ARGS((exarg_T *eap));
+extern void ex_runtime __ARGS((exarg_T *eap));
+extern int source_runtime __ARGS((char_u *name, int all));
+extern int do_in_runtimepath __ARGS((char_u *name, int all, void (*callback)(char_u *fname, void *ck), void *cookie));
+extern void ex_options __ARGS((exarg_T *eap));
+extern void ex_source __ARGS((exarg_T *eap));
+extern linenr_T *source_breakpoint __ARGS((void *cookie));
+extern int *source_dbg_tick __ARGS((void *cookie));
+extern int source_level __ARGS((void *cookie));
+extern int do_source __ARGS((char_u *fname, int check_other, int is_vimrc));
+extern void ex_scriptnames __ARGS((exarg_T *eap));
+extern void scriptnames_slash_adjust __ARGS((void));
+extern char_u *get_scriptname __ARGS((scid_T id));
+extern void free_scriptnames __ARGS((void));
+extern char *fgets_cr __ARGS((char *s, int n, FILE *stream));
+extern char_u *getsourceline __ARGS((int c, void *cookie, int indent));
+extern void script_line_start __ARGS((void));
+extern void script_line_exec __ARGS((void));
+extern void script_line_end __ARGS((void));
+extern void ex_scriptencoding __ARGS((exarg_T *eap));
+extern void ex_finish __ARGS((exarg_T *eap));
+extern void do_finish __ARGS((exarg_T *eap, int reanimate));
+extern int source_finished __ARGS((char_u *(*getline)(int, void *, int), void *cookie));
+extern void ex_checktime __ARGS((exarg_T *eap));
+extern char_u *get_mess_lang __ARGS((void));
+extern void set_lang_var __ARGS((void));
+extern void ex_language __ARGS((exarg_T *eap));
+extern char_u *get_lang_arg __ARGS((expand_T *xp, int idx));
 /* vim: set ft=c : */
--- a/src/proto/fileio.pro
+++ b/src/proto/fileio.pro
@@ -1,51 +1,51 @@
 /* fileio.c */
-void filemess __ARGS((buf_T *buf, char_u *name, char_u *s, int attr));
-int readfile __ARGS((char_u *fname, char_u *sfname, linenr_T from, linenr_T lines_to_skip, linenr_T lines_to_read, exarg_T *eap, int flags));
-int prep_exarg __ARGS((exarg_T *eap, buf_T *buf));
-int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering));
-void msg_add_fname __ARGS((buf_T *buf, char_u *fname));
-void msg_add_lines __ARGS((int insert_space, long lnum, long nchars));
-char_u *shorten_fname __ARGS((char_u *full_path, char_u *dir_name));
-void shorten_fnames __ARGS((int force));
-void shorten_filenames __ARGS((char_u **fnames, int count));
-char_u *modname __ARGS((char_u *fname, char_u *ext, int prepend_dot));
-char_u *buf_modname __ARGS((int shortname, char_u *fname, char_u *ext, int prepend_dot));
-int vim_fgets __ARGS((char_u *buf, int size, FILE *fp));
-int tag_fgets __ARGS((char_u *buf, int size, FILE *fp));
-int vim_rename __ARGS((char_u *from, char_u *to));
-int check_timestamps __ARGS((int focus));
-int buf_check_timestamp __ARGS((buf_T *buf, int focus));
-void buf_reload __ARGS((buf_T *buf, int orig_mode));
-void buf_store_time __ARGS((buf_T *buf, struct stat *st, char_u *fname));
-void write_lnum_adjust __ARGS((linenr_T offset));
-void vim_deltempdir __ARGS((void));
-char_u *vim_tempname __ARGS((int extra_char));
-void forward_slash __ARGS((char_u *fname));
-void aubuflocal_remove __ARGS((buf_T *buf));
-int au_has_group __ARGS((char_u *name));
-void do_augroup __ARGS((char_u *arg, int del_group));
-void free_all_autocmds __ARGS((void));
-int check_ei __ARGS((void));
-char_u *au_event_disable __ARGS((char *what));
-void au_event_restore __ARGS((char_u *old_ei));
-void do_autocmd __ARGS((char_u *arg, int forceit));
-int do_doautocmd __ARGS((char_u *arg, int do_msg));
-void ex_doautoall __ARGS((exarg_T *eap));
-void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf));
-void aucmd_restbuf __ARGS((aco_save_T *aco));
-int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf));
-int apply_autocmds_retval __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf, int *retval));
-int has_cursorhold __ARGS((void));
-int trigger_cursorhold __ARGS((void));
-int has_cursormoved __ARGS((void));
-int has_cursormovedI __ARGS((void));
-int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
-char_u *get_augroup_name __ARGS((expand_T *xp, int idx));
-char_u *set_context_in_autocmd __ARGS((expand_T *xp, char_u *arg, int doautocmd));
-char_u *get_event_name __ARGS((expand_T *xp, int idx));
-int autocmd_supported __ARGS((char_u *name));
-int au_exists __ARGS((char_u *arg));
-int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs));
-int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname));
-char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash));
+extern void filemess __ARGS((buf_T *buf, char_u *name, char_u *s, int attr));
+extern int readfile __ARGS((char_u *fname, char_u *sfname, linenr_T from, linenr_T lines_to_skip, linenr_T lines_to_read, exarg_T *eap, int flags));
+extern int prep_exarg __ARGS((exarg_T *eap, buf_T *buf));
+extern int buf_write __ARGS((buf_T *buf, char_u *fname, char_u *sfname, linenr_T start, linenr_T end, exarg_T *eap, int append, int forceit, int reset_changed, int filtering));
+extern void msg_add_fname __ARGS((buf_T *buf, char_u *fname));
+extern void msg_add_lines __ARGS((int insert_space, long lnum, long nchars));
+extern char_u *shorten_fname __ARGS((char_u *full_path, char_u *dir_name));
+extern void shorten_fnames __ARGS((int force));
+extern void shorten_filenames __ARGS((char_u **fnames, int count));
+extern char_u *modname __ARGS((char_u *fname, char_u *ext, int prepend_dot));
+extern char_u *buf_modname __ARGS((int shortname, char_u *fname, char_u *ext, int prepend_dot));
+extern int vim_fgets __ARGS((char_u *buf, int size, FILE *fp));
+extern int tag_fgets __ARGS((char_u *buf, int size, FILE *fp));
+extern int vim_rename __ARGS((char_u *from, char_u *to));
+extern int check_timestamps __ARGS((int focus));
+extern int buf_check_timestamp __ARGS((buf_T *buf, int focus));
+extern void buf_reload __ARGS((buf_T *buf, int orig_mode));
+extern void buf_store_time __ARGS((buf_T *buf, struct stat *st, char_u *fname));
+extern void write_lnum_adjust __ARGS((linenr_T offset));
+extern void vim_deltempdir __ARGS((void));
+extern char_u *vim_tempname __ARGS((int extra_char));
+extern void forward_slash __ARGS((char_u *fname));
+extern void aubuflocal_remove __ARGS((buf_T *buf));
+extern int au_has_group __ARGS((char_u *name));
+extern void do_augroup __ARGS((char_u *arg, int del_group));
+extern void free_all_autocmds __ARGS((void));
+extern int check_ei __ARGS((void));
+extern char_u *au_event_disable __ARGS((char *what));
+extern void au_event_restore __ARGS((char_u *old_ei));
+extern void do_autocmd __ARGS((char_u *arg, int forceit));
+extern int do_doautocmd __ARGS((char_u *arg, int do_msg));
+extern void ex_doautoall __ARGS((exarg_T *eap));
+extern void aucmd_prepbuf __ARGS((aco_save_T *aco, buf_T *buf));
+extern void aucmd_restbuf __ARGS((aco_save_T *aco));
+extern int apply_autocmds __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf));
+extern int apply_autocmds_retval __ARGS((event_T event, char_u *fname, char_u *fname_io, int force, buf_T *buf, int *retval));
+extern int has_cursorhold __ARGS((void));
+extern int trigger_cursorhold __ARGS((void));
+extern int has_cursormoved __ARGS((void));
+extern int has_cursormovedI __ARGS((void));
+extern int has_autocmd __ARGS((event_T event, char_u *sfname, buf_T *buf));
+extern char_u *get_augroup_name __ARGS((expand_T *xp, int idx));
+extern char_u *set_context_in_autocmd __ARGS((expand_T *xp, char_u *arg, int doautocmd));
+extern char_u *get_event_name __ARGS((expand_T *xp, int idx));
+extern int autocmd_supported __ARGS((char_u *name));
+extern int au_exists __ARGS((char_u *arg));
+extern int match_file_pat __ARGS((char_u *pattern, regprog_T *prog, char_u *fname, char_u *sfname, char_u *tail, int allow_dirs));
+extern int match_file_list __ARGS((char_u *list, char_u *sfname, char_u *ffname));
+extern char_u *file_pat_to_reg_pat __ARGS((char_u *pat, char_u *pat_end, char *allow_dirs, int no_bslash));
 /* vim: set ft=c : */
--- a/src/proto/gui_beval.pro
+++ b/src/proto/gui_beval.pro
@@ -1,11 +1,11 @@
 /* gui_beval.c */
-void general_beval_cb __ARGS((BalloonEval *beval, int state));
-BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
-void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
-void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
-void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
-BalloonEval *gui_mch_currently_showing_beval __ARGS((void));
-int get_beval_info __ARGS((BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp));
-void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
-void gui_mch_unpost_balloon __ARGS((BalloonEval *beval));
+extern void general_beval_cb __ARGS((BalloonEval *beval, int state));
+extern BalloonEval *gui_mch_create_beval_area __ARGS((void *target, char_u *mesg, void (*mesgCB)(BalloonEval *, int), void *clientData));
+extern void gui_mch_destroy_beval_area __ARGS((BalloonEval *beval));
+extern void gui_mch_enable_beval_area __ARGS((BalloonEval *beval));
+extern void gui_mch_disable_beval_area __ARGS((BalloonEval *beval));
+extern BalloonEval *gui_mch_currently_showing_beval __ARGS((void));
+extern int get_beval_info __ARGS((BalloonEval *beval, int getword, win_T **winp, linenr_T *lnump, char_u **textp, int *colp));
+extern void gui_mch_post_balloon __ARGS((BalloonEval *beval, char_u *mesg));
+extern void gui_mch_unpost_balloon __ARGS((BalloonEval *beval));
 /* vim: set ft=c : */
--- a/src/proto/gui_motif.pro
+++ b/src/proto/gui_motif.pro
@@ -1,42 +1,42 @@
 /* gui_motif.c */
-void gui_x11_create_widgets __ARGS((void));
-void gui_x11_destroy_widgets __ARGS((void));
-void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
-void gui_x11_set_back_color __ARGS((void));
-void manage_centered __ARGS((Widget dialog_child));
-XmFontList gui_motif_create_fontlist __ARGS((XFontStruct *font));
-XmFontList gui_motif_fontset2fontlist __ARGS((XFontSet *fontset));
-void gui_mch_enable_menu __ARGS((int flag));
-void gui_motif_set_mnemonics __ARGS((int enable));
-void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
-void gui_mch_toggle_tearoffs __ARGS((int enable));
-int gui_mch_text_area_extra_height __ARGS((void));
-void gui_mch_compute_menu_height __ARGS((Widget id));
-void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
-void gui_motif_update_mousemodel __ARGS((vimmenu_T *menu));
-void gui_mch_new_menu_colors __ARGS((void));
-void gui_mch_new_menu_font __ARGS((void));
-void gui_mch_new_tooltip_font __ARGS((void));
-void gui_mch_new_tooltip_colors __ARGS((void));
-void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
-void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
-void gui_mch_def_colors __ARGS((void));
-void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
-void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
-void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
-void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
-void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
-void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
-Window gui_x11_get_wid __ARGS((void));
-char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
-int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield));
-void gui_mch_enable_footer __ARGS((int showit));
-void gui_mch_set_footer __ARGS((char_u *s));
-void gui_mch_show_toolbar __ARGS((int showit));
-int gui_mch_compute_toolbar_height __ARGS((void));
-void motif_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
-void gui_motif_menu_fontlist __ARGS((Widget id));
-void gui_mch_find_dialog __ARGS((exarg_T *eap));
-void gui_mch_replace_dialog __ARGS((exarg_T *eap));
-void gui_motif_synch_fonts __ARGS((void));
+extern void gui_x11_create_widgets __ARGS((void));
+extern void gui_x11_destroy_widgets __ARGS((void));
+extern void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
+extern void gui_x11_set_back_color __ARGS((void));
+extern void manage_centered __ARGS((Widget dialog_child));
+extern XmFontList gui_motif_create_fontlist __ARGS((XFontStruct *font));
+extern XmFontList gui_motif_fontset2fontlist __ARGS((XFontSet *fontset));
+extern void gui_mch_enable_menu __ARGS((int flag));
+extern void gui_motif_set_mnemonics __ARGS((int enable));
+extern void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
+extern void gui_mch_toggle_tearoffs __ARGS((int enable));
+extern int gui_mch_text_area_extra_height __ARGS((void));
+extern void gui_mch_compute_menu_height __ARGS((Widget id));
+extern void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
+extern void gui_motif_update_mousemodel __ARGS((vimmenu_T *menu));
+extern void gui_mch_new_menu_colors __ARGS((void));
+extern void gui_mch_new_menu_font __ARGS((void));
+extern void gui_mch_new_tooltip_font __ARGS((void));
+extern void gui_mch_new_tooltip_colors __ARGS((void));
+extern void gui_mch_destroy_menu __ARGS((vimmenu_T *menu));
+extern void gui_mch_show_popupmenu __ARGS((vimmenu_T *menu));
+extern void gui_mch_def_colors __ARGS((void));
+extern void gui_mch_set_scrollbar_thumb __ARGS((scrollbar_T *sb, long val, long size, long max));
+extern void gui_mch_set_scrollbar_pos __ARGS((scrollbar_T *sb, int x, int y, int w, int h));
+extern void gui_mch_enable_scrollbar __ARGS((scrollbar_T *sb, int flag));
+extern void gui_mch_create_scrollbar __ARGS((scrollbar_T *sb, int orient));
+extern void gui_mch_destroy_scrollbar __ARGS((scrollbar_T *sb));
+extern void gui_mch_set_scrollbar_colors __ARGS((scrollbar_T *sb));
+extern Window gui_x11_get_wid __ARGS((void));
+extern char_u *gui_mch_browse __ARGS((int saving, char_u *title, char_u *dflt, char_u *ext, char_u *initdir, char_u *filter));
+extern int gui_mch_dialog __ARGS((int type, char_u *title, char_u *message, char_u *button_names, int dfltbutton, char_u *textfield));
+extern void gui_mch_enable_footer __ARGS((int showit));
+extern void gui_mch_set_footer __ARGS((char_u *s));
+extern void gui_mch_show_toolbar __ARGS((int showit));
+extern int gui_mch_compute_toolbar_height __ARGS((void));
+extern void motif_get_toolbar_colors __ARGS((Pixel *bgp, Pixel *fgp, Pixel *bsp, Pixel *tsp, Pixel *hsp));
+extern void gui_motif_menu_fontlist __ARGS((Widget id));
+extern void gui_mch_find_dialog __ARGS((exarg_T *eap));
+extern void gui_mch_replace_dialog __ARGS((exarg_T *eap));
+extern void gui_motif_synch_fonts __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/gui_x11.pro
+++ b/src/proto/gui_x11.pro
@@ -1,70 +1,70 @@
 /* gui_x11.c */
-void gui_x11_key_hit_cb __ARGS((Widget w, XtPointer dud, XEvent *event, Boolean *dum));
-void gui_mch_prepare __ARGS((int *argc, char **argv));
-int gui_mch_init_check __ARGS((void));
-int gui_mch_init __ARGS((void));
-void gui_mch_uninit __ARGS((void));
-void gui_mch_new_colors __ARGS((void));
-int gui_mch_open __ARGS((void));
-void gui_init_tooltip_font __ARGS((void));
-void gui_init_menu_font __ARGS((void));
-void gui_mch_exit __ARGS((int rc));
-int gui_mch_get_winpos __ARGS((int *x, int *y));
-void gui_mch_set_winpos __ARGS((int x, int y));
-void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
-void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
-int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset));
-GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
-char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
-int gui_mch_adjust_charheight __ARGS((void));
-void gui_mch_set_font __ARGS((GuiFont font));
-void gui_mch_set_fontset __ARGS((GuiFontset fontset));
-void gui_mch_free_font __ARGS((GuiFont font));
-void gui_mch_free_fontset __ARGS((GuiFontset fontset));
-GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width));
-int fontset_height __ARGS((XFontSet fs));
-int fontset_height2 __ARGS((XFontSet fs));
-guicolor_T gui_mch_get_color __ARGS((char_u *reqname));
-void gui_mch_set_fg_color __ARGS((guicolor_T color));
-void gui_mch_set_bg_color __ARGS((guicolor_T color));
-void gui_mch_set_sp_color __ARGS((guicolor_T color));
-void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
-int gui_mch_haskey __ARGS((char_u *name));
-int gui_get_x11_windis __ARGS((Window *win, Display **dis));
-void gui_mch_beep __ARGS((void));
-void gui_mch_flash __ARGS((int msec));
-void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
-void gui_mch_iconify __ARGS((void));
-void gui_mch_set_foreground __ARGS((void));
-void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
-void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
-void gui_mch_update __ARGS((void));
-int gui_mch_wait_for_chars __ARGS((long wtime));
-void gui_mch_flush __ARGS((void));
-void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
-void gui_mch_clear_all __ARGS((void));
-void gui_mch_delete_lines __ARGS((int row, int num_lines));
-void gui_mch_insert_lines __ARGS((int row, int num_lines));
-void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
-void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
-void gui_mch_draw_menubar __ARGS((void));
-void gui_x11_menu_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
-void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
-void gui_mch_stop_blink __ARGS((void));
-void gui_mch_start_blink __ARGS((void));
-long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
-void gui_x11_callbacks __ARGS((Widget textArea, Widget vimForm));
-void gui_mch_getmouse __ARGS((int *x, int *y));
-void gui_mch_setmouse __ARGS((int x, int y));
-XButtonPressedEvent *gui_x11_get_last_mouse_event __ARGS((void));
-void gui_mch_drawsign __ARGS((int row, int col, int typenr));
-void *gui_mch_register_sign __ARGS((char_u *signfile));
-void gui_mch_destroy_sign __ARGS((void *sign));
-void gui_mch_mousehide __ARGS((int hide));
-void mch_set_mouse_shape __ARGS((int shape));
-void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
+extern void gui_x11_key_hit_cb __ARGS((Widget w, XtPointer dud, XEvent *event, Boolean *dum));
+extern void gui_mch_prepare __ARGS((int *argc, char **argv));
+extern int gui_mch_init_check __ARGS((void));
+extern int gui_mch_init __ARGS((void));
+extern void gui_mch_uninit __ARGS((void));
+extern void gui_mch_new_colors __ARGS((void));
+extern int gui_mch_open __ARGS((void));
+extern void gui_init_tooltip_font __ARGS((void));
+extern void gui_init_menu_font __ARGS((void));
+extern void gui_mch_exit __ARGS((int rc));
+extern int gui_mch_get_winpos __ARGS((int *x, int *y));
+extern void gui_mch_set_winpos __ARGS((int x, int y));
+extern void gui_mch_set_shellsize __ARGS((int width, int height, int min_width, int min_height, int base_width, int base_height));
+extern void gui_mch_get_screen_dimensions __ARGS((int *screen_w, int *screen_h));
+extern int gui_mch_init_font __ARGS((char_u *font_name, int do_fontset));
+extern GuiFont gui_mch_get_font __ARGS((char_u *name, int giveErrorIfMissing));
+extern char_u *gui_mch_get_fontname __ARGS((GuiFont font, char_u *name));
+extern int gui_mch_adjust_charheight __ARGS((void));
+extern void gui_mch_set_font __ARGS((GuiFont font));
+extern void gui_mch_set_fontset __ARGS((GuiFontset fontset));
+extern void gui_mch_free_font __ARGS((GuiFont font));
+extern void gui_mch_free_fontset __ARGS((GuiFontset fontset));
+extern GuiFontset gui_mch_get_fontset __ARGS((char_u *name, int giveErrorIfMissing, int fixed_width));
+extern int fontset_height __ARGS((XFontSet fs));
+extern int fontset_height2 __ARGS((XFontSet fs));
+extern guicolor_T gui_mch_get_color __ARGS((char_u *reqname));
+extern void gui_mch_set_fg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_bg_color __ARGS((guicolor_T color));
+extern void gui_mch_set_sp_color __ARGS((guicolor_T color));
+extern void gui_mch_draw_string __ARGS((int row, int col, char_u *s, int len, int flags));
+extern int gui_mch_haskey __ARGS((char_u *name));
+extern int gui_get_x11_windis __ARGS((Window *win, Display **dis));
+extern void gui_mch_beep __ARGS((void));
+extern void gui_mch_flash __ARGS((int msec));
+extern void gui_mch_invert_rectangle __ARGS((int r, int c, int nr, int nc));
+extern void gui_mch_iconify __ARGS((void));
+extern void gui_mch_set_foreground __ARGS((void));
+extern void gui_mch_draw_hollow_cursor __ARGS((guicolor_T color));
+extern void gui_mch_draw_part_cursor __ARGS((int w, int h, guicolor_T color));
+extern void gui_mch_update __ARGS((void));
+extern int gui_mch_wait_for_chars __ARGS((long wtime));
+extern void gui_mch_flush __ARGS((void));
+extern void gui_mch_clear_block __ARGS((int row1, int col1, int row2, int col2));
+extern void gui_mch_clear_all __ARGS((void));
+extern void gui_mch_delete_lines __ARGS((int row, int num_lines));
+extern void gui_mch_insert_lines __ARGS((int row, int num_lines));
+extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+extern void gui_mch_menu_grey __ARGS((vimmenu_T *menu, int grey));
+extern void gui_mch_menu_hidden __ARGS((vimmenu_T *menu, int hidden));
+extern void gui_mch_draw_menubar __ARGS((void));
+extern void gui_x11_menu_cb __ARGS((Widget w, XtPointer client_data, XtPointer call_data));
+extern void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
+extern void gui_mch_stop_blink __ARGS((void));
+extern void gui_mch_start_blink __ARGS((void));
+extern long_u gui_mch_get_rgb __ARGS((guicolor_T pixel));
+extern void gui_x11_callbacks __ARGS((Widget textArea, Widget vimForm));
+extern void gui_mch_getmouse __ARGS((int *x, int *y));
+extern void gui_mch_setmouse __ARGS((int x, int y));
+extern XButtonPressedEvent *gui_x11_get_last_mouse_event __ARGS((void));
+extern void gui_mch_drawsign __ARGS((int row, int col, int typenr));
+extern void *gui_mch_register_sign __ARGS((char_u *signfile));
+extern void gui_mch_destroy_sign __ARGS((void *sign));
+extern void gui_mch_mousehide __ARGS((int hide));
+extern void mch_set_mouse_shape __ARGS((int shape));
+extern void gui_mch_menu_set_tip __ARGS((vimmenu_T *menu));
 /* vim: set ft=c : */
--- a/src/proto/hangulin.pro
+++ b/src/proto/hangulin.pro
@@ -1,9 +1,9 @@
 /* hangulin.c */
-int hangul_input_state_get __ARGS((void));
-void hangul_input_state_set __ARGS((int state));
-int im_get_status __ARGS((void));
-void hangul_input_state_toggle __ARGS((void));
-void hangul_keyboard_set __ARGS((void));
-int hangul_input_process __ARGS((char_u *s, int len));
-void hangul_input_clear __ARGS((void));
+extern int hangul_input_state_get __ARGS((void));
+extern void hangul_input_state_set __ARGS((int state));
+extern int im_get_status __ARGS((void));
+extern void hangul_input_state_toggle __ARGS((void));
+extern void hangul_keyboard_set __ARGS((void));
+extern int hangul_input_process __ARGS((char_u *s, int len));
+extern void hangul_input_clear __ARGS((void));
 /* vim: set ft=c : */
deleted file mode 100644
--- a/src/proto/hashtable.pro
+++ /dev/null
@@ -1,14 +0,0 @@
-/* hashtable.c */
-void hash_init __ARGS((hashtab_T *ht));
-void hash_clear __ARGS((hashtab_T *ht));
-void hash_clear_all __ARGS((hashtab_T *ht, int off));
-hashitem_T *hash_find __ARGS((hashtab_T *ht, char_u *key));
-hashitem_T *hash_lookup __ARGS((hashtab_T *ht, char_u *key, hash_T hash));
-void hash_debug_results __ARGS((void));
-int hash_add __ARGS((hashtab_T *ht, char_u *key));
-int hash_add_item __ARGS((hashtab_T *ht, hashitem_T *hi, char_u *key, hash_T hash));
-void hash_remove __ARGS((hashtab_T *ht, hashitem_T *hi));
-void hash_lock __ARGS((hashtab_T *ht));
-void hash_unlock __ARGS((hashtab_T *ht));
-hash_T hash_hash __ARGS((char_u *key));
-/* vim: set ft=c : */
--- a/src/proto/if_perl.pro
+++ b/src/proto/if_perl.pro
@@ -1,8 +1,8 @@
 /* auto/if_perl.c */
-int perl_enabled __ARGS((int verbose));
-void perl_end __ARGS((void));
-void msg_split __ARGS((char_u *s, int attr));
-void perl_win_free __ARGS((win_T *wp));
-void perl_buf_free __ARGS((buf_T *bp));
-void ex_perl __ARGS((exarg_T *eap));
-void ex_perldo __ARGS((exarg_T *eap));
+extern int perl_enabled __ARGS((int verbose));
+extern void perl_end __ARGS((void));
+extern void msg_split __ARGS((char_u *s, int attr));
+extern void perl_win_free __ARGS((win_T *wp));
+extern void perl_buf_free __ARGS((buf_T *bp));
+extern void ex_perl __ARGS((exarg_T *eap));
+extern void ex_perldo __ARGS((exarg_T *eap));
--- a/src/proto/if_python.pro
+++ b/src/proto/if_python.pro
@@ -1,8 +1,8 @@
 /* if_python.c */
-int python_enabled __ARGS((int verbose));
-void python_end __ARGS((void));
-void ex_python __ARGS((exarg_T *eap));
-void ex_pyfile __ARGS((exarg_T *eap));
-void python_buffer_free __ARGS((buf_T *buf));
-void python_window_free __ARGS((win_T *win));
+extern int python_enabled __ARGS((int verbose));
+extern void python_end __ARGS((void));
+extern void ex_python __ARGS((exarg_T *eap));
+extern void ex_pyfile __ARGS((exarg_T *eap));
+extern void python_buffer_free __ARGS((buf_T *buf));
+extern void python_window_free __ARGS((win_T *win));
 /* vim: set ft=c : */
--- a/src/proto/if_ruby.pro
+++ b/src/proto/if_ruby.pro
@@ -1,9 +1,9 @@
 /* if_ruby.c */
-int ruby_enabled __ARGS((int verbose));
-void ruby_end __ARGS((void));
-void ex_ruby __ARGS((exarg_T *eap));
-void ex_rubydo __ARGS((exarg_T *eap));
-void ex_rubyfile __ARGS((exarg_T *eap));
-void ruby_buffer_free __ARGS((buf_T *buf));
-void ruby_window_free __ARGS((win_T *win));
+extern int ruby_enabled __ARGS((int verbose));
+extern void ruby_end __ARGS((void));
+extern void ex_ruby __ARGS((exarg_T *eap));
+extern void ex_rubydo __ARGS((exarg_T *eap));
+extern void ex_rubyfile __ARGS((exarg_T *eap));
+extern void ruby_buffer_free __ARGS((buf_T *buf));
+extern void ruby_window_free __ARGS((win_T *win));
 /* vim: set ft=c : */
--- a/src/proto/if_xcmdsrv.pro
+++ b/src/proto/if_xcmdsrv.pro
@@ -1,11 +1,11 @@
 /* if_xcmdsrv.c */
-int serverRegisterName __ARGS((Display *dpy, char_u *name));
-void serverChangeRegisteredWindow __ARGS((Display *dpy, Window newwin));
-int serverSendToVim __ARGS((Display *dpy, char_u *name, char_u *cmd, char_u **result, Window *server, int asExpr, int localLoop, int silent));
-char_u *serverGetVimNames __ARGS((Display *dpy));
-Window serverStrToWin __ARGS((char_u *str));
-int serverSendReply __ARGS((char_u *name, char_u *str));
-int serverReadReply __ARGS((Display *dpy, Window win, char_u **str, int localLoop));
-int serverPeekReply __ARGS((Display *dpy, Window win, char_u **str));
-void serverEventProc __ARGS((Display *dpy, XEvent *eventPtr));
+extern int serverRegisterName __ARGS((Display *dpy, char_u *name));
+extern void serverChangeRegisteredWindow __ARGS((Display *dpy, Window newwin));
+extern int serverSendToVim __ARGS((Display *dpy, char_u *name, char_u *cmd, char_u **result, Window *server, int asExpr, int localLoop, int silent));
+extern char_u *serverGetVimNames __ARGS((Display *dpy));
+extern Window serverStrToWin __ARGS((char_u *str));
+extern int serverSendReply __ARGS((char_u *name, char_u *str));
+extern int serverReadReply __ARGS((Display *dpy, Window win, char_u **str, int localLoop));
+extern int serverPeekReply __ARGS((Display *dpy, Window win, char_u **str));
+extern void serverEventProc __ARGS((Display *dpy, XEvent *eventPtr));
 /* vim: set ft=c : */
--- a/src/proto/mbyte.pro
+++ b/src/proto/mbyte.pro
@@ -1,91 +1,91 @@
 /* mbyte.c */
-int enc_canon_props __ARGS((char_u *name));
-char_u *mb_init __ARGS((void));
-int bomb_size __ARGS((void));
-int mb_get_class __ARGS((char_u *p));
-int dbcs_class __ARGS((unsigned lead, unsigned trail));
-int latin_char2len __ARGS((int c));
-int latin_char2bytes __ARGS((int c, char_u *buf));
-int latin_ptr2len __ARGS((char_u *p));
-int utf_char2cells __ARGS((int c));
-int latin_ptr2cells __ARGS((char_u *p));
-int utf_ptr2cells __ARGS((char_u *p));
-int dbcs_ptr2cells __ARGS((char_u *p));
-int latin_char2cells __ARGS((int c));
-int latin_off2cells __ARGS((unsigned off));
-int dbcs_off2cells __ARGS((unsigned off));
-int utf_off2cells __ARGS((unsigned off));
-int latin_ptr2char __ARGS((char_u *p));
-int utf_ptr2char __ARGS((char_u *p));
-int mb_ptr2char_adv __ARGS((char_u **pp));
-int mb_cptr2char_adv __ARGS((char_u **pp));
-int arabic_combine __ARGS((int one, int two));
-int arabic_maycombine __ARGS((int two));
-int utf_composinglike __ARGS((char_u *p1, char_u *p2));
-int utfc_ptr2char __ARGS((char_u *p, int *pcc));
-int utfc_ptr2char_len __ARGS((char_u *p, int *pcc, int maxlen));
-int utfc_char2bytes __ARGS((int off, char_u *buf));
-int utf_ptr2len __ARGS((char_u *p));
-int utf_byte2len __ARGS((int b));
-int utf_ptr2len_len __ARGS((char_u *p, int size));
-int utfc_ptr2len __ARGS((char_u *p));
-int utfc_ptr2len_len __ARGS((char_u *p, int size));
-int utf_char2len __ARGS((int c));
-int utf_char2bytes __ARGS((int c, char_u *buf));
-int utf_iscomposing __ARGS((int c));
-int utf_printable __ARGS((int c));
-int utf_class __ARGS((int c));
-int utf_fold __ARGS((int a));
-int utf_toupper __ARGS((int a));
-int utf_islower __ARGS((int a));
-int utf_tolower __ARGS((int a));
-int utf_isupper __ARGS((int a));
-int mb_strnicmp __ARGS((char_u *s1, char_u *s2, size_t nn));
-void show_utf8 __ARGS((void));
-int latin_head_off __ARGS((char_u *base, char_u *p));
-int dbcs_head_off __ARGS((char_u *base, char_u *p));
-int dbcs_screen_head_off __ARGS((char_u *base, char_u *p));
-int utf_head_off __ARGS((char_u *base, char_u *p));
-void mb_copy_char __ARGS((char_u **fp, char_u **tp));
-int mb_off_next __ARGS((char_u *base, char_u *p));
-int mb_tail_off __ARGS((char_u *base, char_u *p));
-void utf_find_illegal __ARGS((void));
-int utf_valid_string __ARGS((char_u *s, char_u *end));
-int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
-void mb_adjust_cursor __ARGS((void));
-void mb_adjustpos __ARGS((pos_T *lp));
-char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
-int mb_charlen __ARGS((char_u *str));
-int mb_charlen_len __ARGS((char_u *str, int len));
-char_u *mb_unescape __ARGS((char_u **pp));
-int mb_lefthalve __ARGS((int row, int col));
-int mb_fix_col __ARGS((int col, int row));
-char_u *enc_skip __ARGS((char_u *p));
-char_u *enc_canonize __ARGS((char_u *enc));
-char_u *enc_locale __ARGS((void));
-int encname2codepage __ARGS((char_u *name));
-void *my_iconv_open __ARGS((char_u *to, char_u *from));
-int iconv_enabled __ARGS((int verbose));
-void iconv_end __ARGS((void));
-int im_xim_isvalid_imactivate __ARGS((void));
-void im_set_active __ARGS((int active));
-void xim_set_focus __ARGS((int focus));
-void im_set_position __ARGS((int row, int col));
-void xim_set_preedit __ARGS((void));
-void xim_set_status_area __ARGS((void));
-void xim_init __ARGS((void));
-void xim_decide_input_style __ARGS((void));
-int im_get_feedback_attr __ARGS((int col));
-void xim_reset __ARGS((void));
-int xim_queue_key_press_event __ARGS((GdkEventKey *event, int down));
-void xim_init __ARGS((void));
-void im_shutdown __ARGS((void));
-int xim_get_status_area_height __ARGS((void));
-int im_get_status __ARGS((void));
-int im_is_preediting __ARGS((void));
-int convert_setup __ARGS((vimconv_T *vcp, char_u *from, char_u *to));
-int convert_input __ARGS((char_u *ptr, int len, int maxlen));
-int convert_input_safe __ARGS((char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp));
-char_u *string_convert __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp));
-char_u *string_convert_ext __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp, int *unconvlenp));
+extern int enc_canon_props __ARGS((char_u *name));
+extern char_u *mb_init __ARGS((void));
+extern int bomb_size __ARGS((void));
+extern int mb_get_class __ARGS((char_u *p));
+extern int dbcs_class __ARGS((unsigned lead, unsigned trail));
+extern int latin_char2len __ARGS((int c));
+extern int latin_char2bytes __ARGS((int c, char_u *buf));
+extern int latin_ptr2len __ARGS((char_u *p));
+extern int utf_char2cells __ARGS((int c));
+extern int latin_ptr2cells __ARGS((char_u *p));
+extern int utf_ptr2cells __ARGS((char_u *p));
+extern int dbcs_ptr2cells __ARGS((char_u *p));
+extern int latin_char2cells __ARGS((int c));
+extern int latin_off2cells __ARGS((unsigned off));
+extern int dbcs_off2cells __ARGS((unsigned off));
+extern int utf_off2cells __ARGS((unsigned off));
+extern int latin_ptr2char __ARGS((char_u *p));
+extern int utf_ptr2char __ARGS((char_u *p));
+extern int mb_ptr2char_adv __ARGS((char_u **pp));
+extern int mb_cptr2char_adv __ARGS((char_u **pp));
+extern int arabic_combine __ARGS((int one, int two));
+extern int arabic_maycombine __ARGS((int two));
+extern int utf_composinglike __ARGS((char_u *p1, char_u *p2));
+extern int utfc_ptr2char __ARGS((char_u *p, int *pcc));
+extern int utfc_ptr2char_len __ARGS((char_u *p, int *pcc, int maxlen));
+extern int utfc_char2bytes __ARGS((int off, char_u *buf));
+extern int utf_ptr2len __ARGS((char_u *p));
+extern int utf_byte2len __ARGS((int b));
+extern int utf_ptr2len_len __ARGS((char_u *p, int size));
+extern int utfc_ptr2len __ARGS((char_u *p));
+extern int utfc_ptr2len_len __ARGS((char_u *p, int size));
+extern int utf_char2len __ARGS((int c));
+extern int utf_char2bytes __ARGS((int c, char_u *buf));
+extern int utf_iscomposing __ARGS((int c));
+extern int utf_printable __ARGS((int c));
+extern int utf_class __ARGS((int c));
+extern int utf_fold __ARGS((int a));
+extern int utf_toupper __ARGS((int a));
+extern int utf_islower __ARGS((int a));
+extern int utf_tolower __ARGS((int a));
+extern int utf_isupper __ARGS((int a));
+extern int mb_strnicmp __ARGS((char_u *s1, char_u *s2, size_t nn));
+extern void show_utf8 __ARGS((void));
+extern int latin_head_off __ARGS((char_u *base, char_u *p));
+extern int dbcs_head_off __ARGS((char_u *base, char_u *p));
+extern int dbcs_screen_head_off __ARGS((char_u *base, char_u *p));
+extern int utf_head_off __ARGS((char_u *base, char_u *p));
+extern void mb_copy_char __ARGS((char_u **fp, char_u **tp));
+extern int mb_off_next __ARGS((char_u *base, char_u *p));
+extern int mb_tail_off __ARGS((char_u *base, char_u *p));
+extern void utf_find_illegal __ARGS((void));
+extern int utf_valid_string __ARGS((char_u *s, char_u *end));
+extern int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
+extern void mb_adjust_cursor __ARGS((void));
+extern void mb_adjustpos __ARGS((pos_T *lp));
+extern char_u *mb_prevptr __ARGS((char_u *line, char_u *p));
+extern int mb_charlen __ARGS((char_u *str));
+extern int mb_charlen_len __ARGS((char_u *str, int len));
+extern char_u *mb_unescape __ARGS((char_u **pp));
+extern int mb_lefthalve __ARGS((int row, int col));
+extern int mb_fix_col __ARGS((int col, int row));
+extern char_u *enc_skip __ARGS((char_u *p));
+extern char_u *enc_canonize __ARGS((char_u *enc));
+extern char_u *enc_locale __ARGS((void));
+extern int encname2codepage __ARGS((char_u *name));
+extern void *my_iconv_open __ARGS((char_u *to, char_u *from));
+extern int iconv_enabled __ARGS((int verbose));
+extern void iconv_end __ARGS((void));
+extern int im_xim_isvalid_imactivate __ARGS((void));
+extern void im_set_active __ARGS((int active));
+extern void xim_set_focus __ARGS((int focus));
+extern void im_set_position __ARGS((int row, int col));
+extern void xim_set_preedit __ARGS((void));
+extern void xim_set_status_area __ARGS((void));
+extern void xim_init __ARGS((void));
+extern void xim_decide_input_style __ARGS((void));
+extern int im_get_feedback_attr __ARGS((int col));
+extern void xim_reset __ARGS((void));
+extern int xim_queue_key_press_event __ARGS((GdkEventKey *event, int down));
+extern void xim_init __ARGS((void));
+extern void im_shutdown __ARGS((void));
+extern int xim_get_status_area_height __ARGS((void));
+extern int im_get_status __ARGS((void));
+extern int im_is_preediting __ARGS((void));
+extern int convert_setup __ARGS((vimconv_T *vcp, char_u *from, char_u *to));
+extern int convert_input __ARGS((char_u *ptr, int len, int maxlen));
+extern int convert_input_safe __ARGS((char_u *ptr, int len, int maxlen, char_u **restp, int *restlenp));
+extern char_u *string_convert __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp));
+extern char_u *string_convert_ext __ARGS((vimconv_T *vcp, char_u *ptr, int *lenp, int *unconvlenp));
 /* vim: set ft=c : */
--- a/src/proto/memline.pro
+++ b/src/proto/memline.pro
@@ -1,33 +1,33 @@
 /* memline.c */
-int ml_open __ARGS((buf_T *buf));
-void ml_setname __ARGS((buf_T *buf));
-void ml_open_files __ARGS((void));
-void ml_open_file __ARGS((buf_T *buf));
-void check_need_swap __ARGS((int newfile));
-void ml_close __ARGS((buf_T *buf, int del_file));
-void ml_close_all __ARGS((int del_file));
-void ml_close_notmod __ARGS((void));
-void ml_timestamp __ARGS((buf_T *buf));
-void ml_recover __ARGS((void));
-int recover_names __ARGS((char_u **fname, int list, int nr));
-void ml_sync_all __ARGS((int check_file, int check_char));
-void ml_preserve __ARGS((buf_T *buf, int message));
-char_u *ml_get __ARGS((linenr_T lnum));
-char_u *ml_get_pos __ARGS((pos_T *pos));
-char_u *ml_get_curline __ARGS((void));
-char_u *ml_get_cursor __ARGS((void));
-char_u *ml_get_buf __ARGS((buf_T *buf, linenr_T lnum, int will_change));
-int ml_line_alloced __ARGS((void));
-int ml_append __ARGS((linenr_T lnum, char_u *line, colnr_T len, int newfile));
-int ml_append_buf __ARGS((buf_T *buf, linenr_T lnum, char_u *line, colnr_T len, int newfile));
-int ml_replace __ARGS((linenr_T lnum, char_u *line, int copy));
-int ml_delete __ARGS((linenr_T lnum, int message));
-void ml_setmarked __ARGS((linenr_T lnum));
-linenr_T ml_firstmarked __ARGS((void));
-void ml_clearmarked __ARGS((void));
-char_u *makeswapname __ARGS((char_u *fname, char_u *ffname, buf_T *buf, char_u *dir_name));
-char_u *get_file_in_dir __ARGS((char_u *fname, char_u *dname));
-void ml_setflags __ARGS((buf_T *buf));
-long ml_find_line_or_offset __ARGS((buf_T *buf, linenr_T lnum, long *offp));
-void goto_byte __ARGS((long cnt));
+extern int ml_open __ARGS((buf_T *buf));
+extern void ml_setname __ARGS((buf_T *buf));
+extern void ml_open_files __ARGS((void));
+extern void ml_open_file __ARGS((buf_T *buf));
+extern void check_need_swap __ARGS((int newfile));
+extern void ml_close __ARGS((buf_T *buf, int del_file));
+extern void ml_close_all __ARGS((int del_file));
+extern void ml_close_notmod __ARGS((void));
+extern void ml_timestamp __ARGS((buf_T *buf));
+extern void ml_recover __ARGS((void));
+extern int recover_names __ARGS((char_u **fname, int list, int nr));
+extern void ml_sync_all __ARGS((int check_file, int check_char));
+extern void ml_preserve __ARGS((buf_T *buf, int message));
+extern char_u *ml_get __ARGS((linenr_T lnum));
+extern char_u *ml_get_pos __ARGS((pos_T *pos));
+extern char_u *ml_get_curline __ARGS((void));
+extern char_u *ml_get_cursor __ARGS((void));
+extern char_u *ml_get_buf __ARGS((buf_T *buf, linenr_T lnum, int will_change));
+extern int ml_line_alloced __ARGS((void));
+extern int ml_append __ARGS((linenr_T lnum, char_u *line, colnr_T len, int newfile));
+extern int ml_append_buf __ARGS((buf_T *buf, linenr_T lnum, char_u *line, colnr_T len, int newfile));
+extern int ml_replace __ARGS((linenr_T lnum, char_u *line, int copy));
+extern int ml_delete __ARGS((linenr_T lnum, int message));
+extern void ml_setmarked __ARGS((linenr_T lnum));
+extern linenr_T ml_firstmarked __ARGS((void));
+extern void ml_clearmarked __ARGS((void));
+extern char_u *makeswapname __ARGS((char_u *fname, char_u *ffname, buf_T *buf, char_u *dir_name));
+extern char_u *get_file_in_dir __ARGS((char_u *fname, char_u *dname));
+extern void ml_setflags __ARGS((buf_T *buf));
+extern long ml_find_line_or_offset __ARGS((buf_T *buf, linenr_T lnum, long *offp));
+extern void goto_byte __ARGS((long cnt));
 /* vim: set ft=c : */
--- a/src/proto/menu.pro
+++ b/src/proto/menu.pro
@@ -1,21 +1,21 @@
 /* menu.c */
-void ex_menu __ARGS((exarg_T *eap));
-char_u *set_context_in_menu_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit));
-char_u *get_menu_name __ARGS((expand_T *xp, int idx));
-char_u *get_menu_names __ARGS((expand_T *xp, int idx));
-char_u *menu_name_skip __ARGS((char_u *name));
-int get_menu_index __ARGS((vimmenu_T *menu, int state));
-int menu_is_menubar __ARGS((char_u *name));
-int menu_is_popup __ARGS((char_u *name));
-int menu_is_child_of_popup __ARGS((vimmenu_T *menu));
-int menu_is_toolbar __ARGS((char_u *name));
-int menu_is_separator __ARGS((char_u *name));
-void gui_create_initial_menus __ARGS((vimmenu_T *menu));
-void gui_update_menus __ARGS((int modes));
-int gui_is_menu_shortcut __ARGS((int key));
-void gui_show_popupmenu __ARGS((void));
-void gui_mch_toggle_tearoffs __ARGS((int enable));
-void ex_emenu __ARGS((exarg_T *eap));
-vimmenu_T *gui_find_menu __ARGS((char_u *path_name));
-void ex_menutranslate __ARGS((exarg_T *eap));
+extern void ex_menu __ARGS((exarg_T *eap));
+extern char_u *set_context_in_menu_cmd __ARGS((expand_T *xp, char_u *cmd, char_u *arg, int forceit));
+extern char_u *get_menu_name __ARGS((expand_T *xp, int idx));
+extern char_u *get_menu_names __ARGS((expand_T *xp, int idx));
+extern char_u *menu_name_skip __ARGS((char_u *name));
+extern int get_menu_index __ARGS((vimmenu_T *menu, int state));
+extern int menu_is_menubar __ARGS((char_u *name));
+extern int menu_is_popup __ARGS((char_u *name));
+extern int menu_is_child_of_popup __ARGS((vimmenu_T *menu));
+extern int menu_is_toolbar __ARGS((char_u *name));
+extern int menu_is_separator __ARGS((char_u *name));
+extern void gui_create_initial_menus __ARGS((vimmenu_T *menu));
+extern void gui_update_menus __ARGS((int modes));
+extern int gui_is_menu_shortcut __ARGS((int key));
+extern void gui_show_popupmenu __ARGS((void));
+extern void gui_mch_toggle_tearoffs __ARGS((int enable));
+extern void ex_emenu __ARGS((exarg_T *eap));
+extern vimmenu_T *gui_find_menu __ARGS((char_u *path_name));
+extern void ex_menutranslate __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
--- a/src/proto/misc1.pro
+++ b/src/proto/misc1.pro
@@ -1,94 +1,94 @@
 /* misc1.c */
-int get_indent __ARGS((void));
-int get_indent_lnum __ARGS((linenr_T lnum));
-int get_indent_buf __ARGS((buf_T *buf, linenr_T lnum));
-int get_indent_str __ARGS((char_u *ptr, int ts));
-int set_indent __ARGS((int size, int flags));
-int get_number_indent __ARGS((linenr_T lnum));
-int open_line __ARGS((int dir, int flags, int old_indent));
-int get_leader_len __ARGS((char_u *line, char_u **flags, int backward));
-int plines __ARGS((linenr_T lnum));
-int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
-int plines_nofill __ARGS((linenr_T lnum));
-int plines_win_nofill __ARGS((win_T *wp, linenr_T lnum, int winheight));
-int plines_win_nofold __ARGS((win_T *wp, linenr_T lnum));
-int plines_win_col __ARGS((win_T *wp, linenr_T lnum, long column));
-int plines_m_win __ARGS((win_T *wp, linenr_T first, linenr_T last));
-void ins_bytes __ARGS((char_u *p));
-void ins_bytes_len __ARGS((char_u *p, int len));
-void ins_char __ARGS((int c));
-void ins_char_bytes __ARGS((char_u *buf, int charlen));
-void ins_str __ARGS((char_u *s));
-int del_char __ARGS((int fixpos));
-int del_chars __ARGS((long count, int fixpos));
-int del_bytes __ARGS((long count, int fixpos, int use_delcombine));
-int truncate_line __ARGS((int fixpos));
-void del_lines __ARGS((long nlines, int undo));
-int gchar_pos __ARGS((pos_T *pos));
-int gchar_cursor __ARGS((void));
-void pchar_cursor __ARGS((int c));
-int inindent __ARGS((int extra));
-char_u *skip_to_option_part __ARGS((char_u *p));
-void changed __ARGS((void));
-void changed_bytes __ARGS((linenr_T lnum, colnr_T col));
-void appended_lines __ARGS((linenr_T lnum, long count));
-void appended_lines_mark __ARGS((linenr_T lnum, long count));
-void deleted_lines __ARGS((linenr_T lnum, long count));
-void deleted_lines_mark __ARGS((linenr_T lnum, long count));
-void changed_lines __ARGS((linenr_T lnum, colnr_T col, linenr_T lnume, long xtra));
-void unchanged __ARGS((buf_T *buf, int ff));
-void check_status __ARGS((buf_T *buf));
-void change_warning __ARGS((int col));
-int ask_yesno __ARGS((char_u *str, int direct));
-int get_keystroke __ARGS((void));
-int get_number __ARGS((int colon, int *mouse_used));
-int prompt_for_number __ARGS((int *mouse_used));
-void msgmore __ARGS((long n));
-void beep_flush __ARGS((void));
-void vim_beep __ARGS((void));
-void init_homedir __ARGS((void));
-void free_homedir __ARGS((void));
-void expand_env __ARGS((char_u *src, char_u *dst, int dstlen));
-void expand_env_esc __ARGS((char_u *srcp, char_u *dst, int dstlen, int esc, char_u *startstr));
-char_u *vim_getenv __ARGS((char_u *name, int *mustfree));
-char_u *expand_env_save __ARGS((char_u *src));
-void vim_setenv __ARGS((char_u *name, char_u *val));
-char_u *get_env_name __ARGS((expand_T *xp, int idx));
-void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one));
-char_u *home_replace_save __ARGS((buf_T *buf, char_u *src));
-int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname));
-char_u *gettail __ARGS((char_u *fname));
-char_u *gettail_sep __ARGS((char_u *fname));
-char_u *getnextcomp __ARGS((char_u *fname));
-char_u *get_past_head __ARGS((char_u *path));
-int vim_ispathsep __ARGS((int c));
-int vim_ispathlistsep __ARGS((int c));
-int dir_of_file_exists __ARGS((char_u *fname));
-int vim_fnamecmp __ARGS((char_u *x, char_u *y));
-int vim_fnamencmp __ARGS((char_u *x, char_u *y, size_t len));
-char_u *concat_fnames __ARGS((char_u *fname1, char_u *fname2, int sep));
-char_u *concat_str __ARGS((char_u *str1, char_u *str2));
-void add_pathsep __ARGS((char_u *p));
-char_u *FullName_save __ARGS((char_u *fname, int force));
-pos_T *find_start_comment __ARGS((int ind_maxcomment));
-void do_c_expr_indent __ARGS((void));
-int cin_islabel __ARGS((int ind_maxcomment));
-int cin_iscase __ARGS((char_u *s));
-int cin_isscopedecl __ARGS((char_u *s));
-int get_c_indent __ARGS((void));
-int get_expr_indent __ARGS((void));
-int get_lisp_indent __ARGS((void));
-void prepare_to_exit __ARGS((void));
-void preserve_exit __ARGS((void));
-int vim_fexists __ARGS((char_u *fname));
-void line_breakcheck __ARGS((void));
-void fast_breakcheck __ARGS((void));
-int expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-int match_suffix __ARGS((char_u *fname));
-int unix_expandpath __ARGS((garray_T *gap, char_u *path, int wildoff, int flags, int didstar));
-int gen_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
-void addfile __ARGS((garray_T *gap, char_u *f, int flags));
-char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags));
-void FreeWild __ARGS((int count, char_u **files));
-int goto_im __ARGS((void));
+extern int get_indent __ARGS((void));
+extern int get_indent_lnum __ARGS((linenr_T lnum));
+extern int get_indent_buf __ARGS((buf_T *buf, linenr_T lnum));
+extern int get_indent_str __ARGS((char_u *ptr, int ts));
+extern int set_indent __ARGS((int size, int flags));
+extern int get_number_indent __ARGS((linenr_T lnum));
+extern int open_line __ARGS((int dir, int flags, int old_indent));
+extern int get_leader_len __ARGS((char_u *line, char_u **flags, int backward));
+extern int plines __ARGS((linenr_T lnum));
+extern int plines_win __ARGS((win_T *wp, linenr_T lnum, int winheight));
+extern int plines_nofill __ARGS((linenr_T lnum));
+extern int plines_win_nofill __ARGS((win_T *wp, linenr_T lnum, int winheight));
+extern int plines_win_nofold __ARGS((win_T *wp, linenr_T lnum));
+extern int plines_win_col __ARGS((win_T *wp, linenr_T lnum, long column));
+extern int plines_m_win __ARGS((win_T *wp, linenr_T first, linenr_T last));
+extern void ins_bytes __ARGS((char_u *p));
+extern void ins_bytes_len __ARGS((char_u *p, int len));
+extern void ins_char __ARGS((int c));
+extern void ins_char_bytes __ARGS((char_u *buf, int charlen));
+extern void ins_str __ARGS((char_u *s));
+extern int del_char __ARGS((int fixpos));
+extern int del_chars __ARGS((long count, int fixpos));
+extern int del_bytes __ARGS((long count, int fixpos_arg, int use_delcombine));
+extern int truncate_line __ARGS((int fixpos));
+extern void del_lines __ARGS((long nlines, int undo));
+extern int gchar_pos __ARGS((pos_T *pos));
+extern int gchar_cursor __ARGS((void));
+extern void pchar_cursor __ARGS((int c));
+extern int inindent __ARGS((int extra));
+extern char_u *skip_to_option_part __ARGS((char_u *p));
+extern void changed __ARGS((void));
+extern void changed_bytes __ARGS((linenr_T lnum, colnr_T col));
+extern void appended_lines __ARGS((linenr_T lnum, long count));
+extern void appended_lines_mark __ARGS((linenr_T lnum, long count));
+extern void deleted_lines __ARGS((linenr_T lnum, long count));
+extern void deleted_lines_mark __ARGS((linenr_T lnum, long count));
+extern void changed_lines __ARGS((linenr_T lnum, colnr_T col, linenr_T lnume, long xtra));
+extern void unchanged __ARGS((buf_T *buf, int ff));
+extern void check_status __ARGS((buf_T *buf));
+extern void change_warning __ARGS((int col));
+extern int ask_yesno __ARGS((char_u *str, int direct));
+extern int get_keystroke __ARGS((void));
+extern int get_number __ARGS((int colon, int *mouse_used));
+extern int prompt_for_number __ARGS((int *mouse_used));
+extern void msgmore __ARGS((long n));
+extern void beep_flush __ARGS((void));
+extern void vim_beep __ARGS((void));
+extern void init_homedir __ARGS((void));
+extern void free_homedir __ARGS((void));
+extern void expand_env __ARGS((char_u *src, char_u *dst, int dstlen));
+extern void expand_env_esc __ARGS((char_u *srcp, char_u *dst, int dstlen, int esc, char_u *startstr));
+extern char_u *vim_getenv __ARGS((char_u *name, int *mustfree));
+extern char_u *expand_env_save __ARGS((char_u *src));
+extern void vim_setenv __ARGS((char_u *name, char_u *val));
+extern char_u *get_env_name __ARGS((expand_T *xp, int idx));
+extern void home_replace __ARGS((buf_T *buf, char_u *src, char_u *dst, int dstlen, int one));
+extern char_u *home_replace_save __ARGS((buf_T *buf, char_u *src));
+extern int fullpathcmp __ARGS((char_u *s1, char_u *s2, int checkname));
+extern char_u *gettail __ARGS((char_u *fname));
+extern char_u *gettail_sep __ARGS((char_u *fname));
+extern char_u *getnextcomp __ARGS((char_u *fname));
+extern char_u *get_past_head __ARGS((char_u *path));
+extern int vim_ispathsep __ARGS((int c));
+extern int vim_ispathlistsep __ARGS((int c));
+extern int dir_of_file_exists __ARGS((char_u *fname));
+extern int vim_fnamecmp __ARGS((char_u *x, char_u *y));
+extern int vim_fnamencmp __ARGS((char_u *x, char_u *y, size_t len));
+extern char_u *concat_fnames __ARGS((char_u *fname1, char_u *fname2, int sep));
+extern char_u *concat_str __ARGS((char_u *str1, char_u *str2));
+extern void add_pathsep __ARGS((char_u *p));
+extern char_u *FullName_save __ARGS((char_u *fname, int force));
+extern pos_T *find_start_comment __ARGS((int ind_maxcomment));
+extern void do_c_expr_indent __ARGS((void));
+extern int cin_islabel __ARGS((int ind_maxcomment));
+extern int cin_iscase __ARGS((char_u *s));
+extern int cin_isscopedecl __ARGS((char_u *s));
+extern int get_c_indent __ARGS((void));
+extern int get_expr_indent __ARGS((void));
+extern int get_lisp_indent __ARGS((void));
+extern void prepare_to_exit __ARGS((void));
+extern void preserve_exit __ARGS((void));
+extern int vim_fexists __ARGS((char_u *fname));
+extern void line_breakcheck __ARGS((void));
+extern void fast_breakcheck __ARGS((void));
+extern int expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+extern int match_suffix __ARGS((char_u *fname));
+extern int unix_expandpath __ARGS((garray_T *gap, char_u *path, int wildoff, int flags, int didstar));
+extern int gen_expand_wildcards __ARGS((int num_pat, char_u **pat, int *num_file, char_u ***file, int flags));
+extern void addfile __ARGS((garray_T *gap, char_u *f, int flags));
+extern char_u *get_cmd_output __ARGS((char_u *cmd, char_u *infile, int flags));
+extern void FreeWild __ARGS((int count, char_u **files));
+extern int goto_im __ARGS((void));
 /* vim: set ft=c : */
--- a/src/proto/misc2.pro
+++ b/src/proto/misc2.pro
@@ -1,99 +1,99 @@
 /* misc2.c */
-int virtual_active __ARGS((void));
-int getviscol __ARGS((void));
-int getviscol2 __ARGS((colnr_T col, colnr_T coladd));
-int coladvance_force __ARGS((colnr_T wcol));
-int coladvance __ARGS((colnr_T wcol));
-int getvpos __ARGS((pos_T *pos, colnr_T wcol));
-int inc_cursor __ARGS((void));
-int inc __ARGS((pos_T *lp));
-int incl __ARGS((pos_T *lp));
-int dec_cursor __ARGS((void));
-int dec __ARGS((pos_T *lp));
-int decl __ARGS((pos_T *lp));
-void check_cursor_lnum __ARGS((void));
-void check_cursor_col __ARGS((void));
-void check_cursor __ARGS((void));
-void adjust_cursor_col __ARGS((void));
-int leftcol_changed __ARGS((void));
-void vim_mem_profile_dump __ARGS((void));
-char_u *alloc __ARGS((unsigned size));
-char_u *alloc_clear __ARGS((unsigned size));
-char_u *alloc_check __ARGS((unsigned size));
-char_u *lalloc_clear __ARGS((long_u size, int message));
-char_u *lalloc __ARGS((long_u size, int message));
-void *mem_realloc __ARGS((void *ptr, size_t size));
-void do_outofmem_msg __ARGS((long_u size));
-void free_all_mem __ARGS((void));
-char_u *vim_strsave __ARGS((char_u *string));
-char_u *vim_strnsave __ARGS((char_u *string, int len));
-char_u *vim_strsave_escaped __ARGS((char_u *string, char_u *esc_chars));
-char_u *vim_strsave_escaped_ext __ARGS((char_u *string, char_u *esc_chars, int cc, int bsl));
-char_u *vim_strsave_up __ARGS((char_u *string));
-char_u *vim_strnsave_up __ARGS((char_u *string, int len));
-void vim_strup __ARGS((char_u *p));
-char_u *strup_save __ARGS((char_u *orig));
-void copy_spaces __ARGS((char_u *ptr, size_t count));
-void copy_chars __ARGS((char_u *ptr, size_t count, int c));
-void del_trailing_spaces __ARGS((char_u *ptr));
-void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len));
-int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars));
-void vim_free __ARGS((void *x));
-int vim_stricmp __ARGS((char *s1, char *s2));
-int vim_strnicmp __ARGS((char *s1, char *s2, size_t len));
-char_u *vim_strchr __ARGS((char_u *string, int c));
-char_u *vim_strbyte __ARGS((char_u *string, int c));
-char_u *vim_strrchr __ARGS((char_u *string, int c));
-int vim_isspace __ARGS((int x));
-void ga_clear __ARGS((garray_T *gap));
-void ga_clear_strings __ARGS((garray_T *gap));
-void ga_init __ARGS((garray_T *gap));
-void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize));
-int ga_grow __ARGS((garray_T *gap, int n));
-void ga_concat __ARGS((garray_T *gap, char_u *s));
-void ga_append __ARGS((garray_T *gap, int c));
-int name_to_mod_mask __ARGS((int c));
-int simplify_key __ARGS((int key, int *modifiers));
-int handle_x_keys __ARGS((int key));
-char_u *get_special_key_name __ARGS((int c, int modifiers));
-int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
-int find_special_key __ARGS((char_u **srcp, int *modp, int keycode));
-int extract_modifiers __ARGS((int key, int *modp));
-int find_special_key_in_table __ARGS((int c));
-int get_special_key_code __ARGS((char_u *name));
-char_u *get_key_name __ARGS((int i));
-int get_mouse_button __ARGS((int code, int *is_click, int *is_drag));
-int get_pseudo_mouse_code __ARGS((int button, int is_click, int is_drag));
-int get_fileformat __ARGS((buf_T *buf));
-int get_fileformat_force __ARGS((buf_T *buf, exarg_T *eap));
-void set_fileformat __ARGS((int t, int opt_flags));
-int default_fileformat __ARGS((void));
-int call_shell __ARGS((char_u *cmd, int opt));
-int get_real_state __ARGS((void));
-int after_pathsep __ARGS((char_u *b, char_u *p));
-int same_directory __ARGS((char_u *f1, char_u *f2));
-int vim_chdirfile __ARGS((char_u *fname));
-int illegal_slash __ARGS((char *name));
-char_u *parse_shape_opt __ARGS((int what));
-int get_shape_idx __ARGS((int mouse));
-void update_mouseshape __ARGS((int shape_idx));
-int decrypt_byte __ARGS((void));
-int update_keys __ARGS((int c));
-void crypt_init_keys __ARGS((char_u *passwd));
-char_u *get_crypt_key __ARGS((int store, int twice));
-void *vim_findfile_init __ARGS((char_u *path, char_u *filename, char_u *stopdirs, int level, int free_visited, int need_dir, void *search_ctx, int tagfile, char_u *rel_fname));
-char_u *vim_findfile_stopdir __ARGS((char_u *buf));
-void vim_findfile_cleanup __ARGS((void *ctx));
-char_u *vim_findfile __ARGS((void *search_ctx));
-void vim_findfile_free_visited __ARGS((void *search_ctx));
-char_u *find_file_in_path __ARGS((char_u *ptr, int len, int options, int first, char_u *rel_fname));
-char_u *find_directory_in_path __ARGS((char_u *ptr, int len, int options, char_u *rel_fname));
-char_u *find_file_in_path_option __ARGS((char_u *ptr, int len, int options, int first, char_u *path_option, int need_dir, char_u *rel_fname, char_u *suffixes));
-int vim_chdir __ARGS((char_u *new_dir));
-int get_user_name __ARGS((char_u *buf, int len));
-void sort_strings __ARGS((char_u **files, int count));
-int pathcmp __ARGS((const char *p, const char *q, int maxlen));
-int filewritable __ARGS((char_u *fname));
-int emsg3 __ARGS((char_u *s, char_u *a1, char_u *a2));
-int emsgn __ARGS((char_u *s, long n));
+extern int virtual_active __ARGS((void));
+extern int getviscol __ARGS((void));
+extern int getviscol2 __ARGS((colnr_T col, colnr_T coladd));
+extern int coladvance_force __ARGS((colnr_T wcol));
+extern int coladvance __ARGS((colnr_T wcol));
+extern int getvpos __ARGS((pos_T *pos, colnr_T wcol));
+extern int inc_cursor __ARGS((void));
+extern int inc __ARGS((pos_T *lp));
+extern int incl __ARGS((pos_T *lp));
+extern int dec_cursor __ARGS((void));
+extern int dec __ARGS((pos_T *lp));
+extern int decl __ARGS((pos_T *lp));
+extern void check_cursor_lnum __ARGS((void));
+extern void check_cursor_col __ARGS((void));
+extern void check_cursor __ARGS((void));
+extern void adjust_cursor_col __ARGS((void));
+extern int leftcol_changed __ARGS((void));
+extern void vim_mem_profile_dump __ARGS((void));
+extern char_u *alloc __ARGS((unsigned size));
+extern char_u *alloc_clear __ARGS((unsigned size));
+extern char_u *alloc_check __ARGS((unsigned size));
+extern char_u *lalloc_clear __ARGS((long_u size, int message));
+extern char_u *lalloc __ARGS((long_u size, int message));
+extern void *mem_realloc __ARGS((void *ptr, size_t size));
+extern void do_outofmem_msg __ARGS((long_u size));
+extern void free_all_mem __ARGS((void));
+extern char_u *vim_strsave __ARGS((char_u *string));
+extern char_u *vim_strnsave __ARGS((char_u *string, int len));
+extern char_u *vim_strsave_escaped __ARGS((char_u *string, char_u *esc_chars));
+extern char_u *vim_strsave_escaped_ext __ARGS((char_u *string, char_u *esc_chars, int cc, int bsl));
+extern char_u *vim_strsave_up __ARGS((char_u *string));
+extern char_u *vim_strnsave_up __ARGS((char_u *string, int len));
+extern void vim_strup __ARGS((char_u *p));
+extern char_u *strup_save __ARGS((char_u *orig));
+extern void copy_spaces __ARGS((char_u *ptr, size_t count));
+extern void copy_chars __ARGS((char_u *ptr, size_t count, int c));
+extern void del_trailing_spaces __ARGS((char_u *ptr));
+extern void vim_strncpy __ARGS((char_u *to, char_u *from, size_t len));
+extern int copy_option_part __ARGS((char_u **option, char_u *buf, int maxlen, char *sep_chars));
+extern void vim_free __ARGS((void *x));
+extern int vim_stricmp __ARGS((char *s1, char *s2));
+extern int vim_strnicmp __ARGS((char *s1, char *s2, size_t len));
+extern char_u *vim_strchr __ARGS((char_u *string, int c));
+extern char_u *vim_strbyte __ARGS((char_u *string, int c));
+extern char_u *vim_strrchr __ARGS((char_u *string, int c));
+extern int vim_isspace __ARGS((int x));
+extern void ga_clear __ARGS((garray_T *gap));
+extern void ga_clear_strings __ARGS((garray_T *gap));
+extern void ga_init __ARGS((garray_T *gap));
+extern void ga_init2 __ARGS((garray_T *gap, int itemsize, int growsize));
+extern int ga_grow __ARGS((garray_T *gap, int n));
+extern void ga_concat __ARGS((garray_T *gap, char_u *s));
+extern void ga_append __ARGS((garray_T *gap, int c));
+extern int name_to_mod_mask __ARGS((int c));
+extern int simplify_key __ARGS((int key, int *modifiers));
+extern int handle_x_keys __ARGS((int key));
+extern char_u *get_special_key_name __ARGS((int c, int modifiers));
+extern int trans_special __ARGS((char_u **srcp, char_u *dst, int keycode));
+extern int find_special_key __ARGS((char_u **srcp, int *modp, int keycode));
+extern int extract_modifiers __ARGS((int key, int *modp));
+extern int find_special_key_in_table __ARGS((int c));
+extern int get_special_key_code __ARGS((char_u *name));
+extern char_u *get_key_name __ARGS((int i));
+extern int get_mouse_button __ARGS((int code, int *is_click, int *is_drag));
+extern int get_pseudo_mouse_code __ARGS((int button, int is_click, int is_drag));
+extern int get_fileformat __ARGS((buf_T *buf));
+extern int get_fileformat_force __ARGS((buf_T *buf, exarg_T *eap));
+extern void set_fileformat __ARGS((int t, int opt_flags));
+extern int default_fileformat __ARGS((void));
+extern int call_shell __ARGS((char_u *cmd, int opt));
+extern int get_real_state __ARGS((void));
+extern int after_pathsep __ARGS((char_u *b, char_u *p));
+extern int same_directory __ARGS((char_u *f1, char_u *f2));
+extern int vim_chdirfile __ARGS((char_u *fname));
+extern int illegal_slash __ARGS((char *name));
+extern char_u *parse_shape_opt __ARGS((int what));
+extern int get_shape_idx __ARGS((int mouse));
+extern void update_mouseshape __ARGS((int shape_idx));
+extern int decrypt_byte __ARGS((void));
+extern int update_keys __ARGS((int c));
+extern void crypt_init_keys __ARGS((char_u *passwd));
+extern char_u *get_crypt_key __ARGS((int store, int twice));
+extern void *vim_findfile_init __ARGS((char_u *path, char_u *filename, char_u *stopdirs, int level, int free_visited, int need_dir, void *search_ctx, int tagfile, char_u *rel_fname));
+extern char_u *vim_findfile_stopdir __ARGS((char_u *buf));
+extern void vim_findfile_cleanup __ARGS((void *ctx));
+extern char_u *vim_findfile __ARGS((void *search_ctx));
+extern void vim_findfile_free_visited __ARGS((void *search_ctx));
+extern char_u *find_file_in_path __ARGS((char_u *ptr, int len, int options, int first, char_u *rel_fname));
+extern char_u *find_directory_in_path __ARGS((char_u *ptr, int len, int options, char_u *rel_fname));
+extern char_u *find_file_in_path_option __ARGS((char_u *ptr, int len, int options, int first, char_u *path_option, int need_dir, char_u *rel_fname, char_u *suffixes));
+extern int vim_chdir __ARGS((char_u *new_dir));
+extern int get_user_name __ARGS((char_u *buf, int len));
+extern void sort_strings __ARGS((char_u **files, int count));
+extern int pathcmp __ARGS((const char *p, const char *q, int maxlen));
+extern int filewritable __ARGS((char_u *fname));
+extern int emsg3 __ARGS((char_u *s, char_u *a1, char_u *a2));
+extern int emsgn __ARGS((char_u *s, long n));
 /* vim: set ft=c : */
--- a/src/proto/move.pro
+++ b/src/proto/move.pro
@@ -1,40 +1,40 @@
 /* move.c */
-void update_topline_redraw __ARGS((void));
-void update_topline __ARGS((void));
-void update_curswant __ARGS((void));
-void check_cursor_moved __ARGS((win_T *wp));
-void changed_window_setting __ARGS((void));
-void changed_window_setting_win __ARGS((win_T *wp));
-void set_topline __ARGS((win_T *wp, linenr_T lnum));
-void changed_cline_bef_curs __ARGS((void));
-void changed_cline_bef_curs_win __ARGS((win_T *wp));
-void changed_line_abv_curs __ARGS((void));
-void changed_line_abv_curs_win __ARGS((win_T *wp));
-void validate_botline __ARGS((void));
-void invalidate_botline __ARGS((void));
-void invalidate_botline_win __ARGS((win_T *wp));
-void approximate_botline_win __ARGS((win_T *wp));
-int cursor_valid __ARGS((void));
-void validate_cursor __ARGS((void));
-void validate_cline_row __ARGS((void));
-void validate_virtcol __ARGS((void));
-void validate_virtcol_win __ARGS((win_T *wp));
-void validate_cursor_col __ARGS((void));
-int win_col_off __ARGS((win_T *wp));
-int curwin_col_off __ARGS((void));
-int win_col_off2 __ARGS((win_T *wp));
-int curwin_col_off2 __ARGS((void));
-void curs_columns __ARGS((int scroll));
-void scrolldown __ARGS((long line_count, int byfold));
-void scrollup __ARGS((long line_count, int byfold));
-void check_topfill __ARGS((win_T *wp, int down));
-void scrolldown_clamp __ARGS((void));
-void scrollup_clamp __ARGS((void));
-void scroll_cursor_top __ARGS((int min_scroll, int always));
-void set_empty_rows __ARGS((win_T *wp, int used));
-void scroll_cursor_bot __ARGS((int min_scroll, int set_topbot));
-void scroll_cursor_halfway __ARGS((int atend));
-void cursor_correct __ARGS((void));
-int onepage __ARGS((int dir, long count));
-void halfpage __ARGS((int flag, linenr_T Prenum));
+extern void update_topline_redraw __ARGS((void));
+extern void update_topline __ARGS((void));
+extern void update_curswant __ARGS((void));
+extern void check_cursor_moved __ARGS((win_T *wp));
+extern void changed_window_setting __ARGS((void));
+extern void changed_window_setting_win __ARGS((win_T *wp));
+extern void set_topline __ARGS((win_T *wp, linenr_T lnum));
+extern void changed_cline_bef_curs __ARGS((void));
+extern void changed_cline_bef_curs_win __ARGS((win_T *wp));
+extern void changed_line_abv_curs __ARGS((void));
+extern void changed_line_abv_curs_win __ARGS((win_T *wp));
+extern void validate_botline __ARGS((void));
+extern void invalidate_botline __ARGS((void));
+extern void invalidate_botline_win __ARGS((win_T *wp));
+extern void approximate_botline_win __ARGS((win_T *wp));
+extern int cursor_valid __ARGS((void));
+extern void validate_cursor __ARGS((void));
+extern void validate_cline_row __ARGS((void));
+extern void validate_virtcol __ARGS((void));
+extern void validate_virtcol_win __ARGS((win_T *wp));
+extern void validate_cursor_col __ARGS((void));
+extern int win_col_off __ARGS((win_T *wp));
+extern int curwin_col_off __ARGS((void));
+extern int win_col_off2 __ARGS((win_T *wp));
+extern int curwin_col_off2 __ARGS((void));
+extern void curs_columns __ARGS((int scroll));
+extern void scrolldown __ARGS((long line_count, int byfold));
+extern void scrollup __ARGS((long line_count, int byfold));
+extern void check_topfill __ARGS((win_T *wp, int down));
+extern void scrolldown_clamp __ARGS((void));
+extern void scrollup_clamp __ARGS((void));
+extern void scroll_cursor_top __ARGS((int min_scroll, int always));
+extern void set_empty_rows __ARGS((win_T *wp, int used));
+extern void scroll_cursor_bot __ARGS((int min_scroll, int set_topbot));
+extern void scroll_cursor_halfway __ARGS((int atend));
+extern void cursor_correct __ARGS((void));
+extern int onepage __ARGS((int dir, long count));
+extern void halfpage __ARGS((int flag, linenr_T Prenum));
 /* vim: set ft=c : */
--- a/src/proto/os_msdos.pro
+++ b/src/proto/os_msdos.pro
@@ -1,48 +1,48 @@
 /* os_msdos.c */
-void mch_set_normal_colors __ARGS((void));
-void mch_update_cursor __ARGS((void));
-long_u mch_avail_mem __ARGS((int special));
-void mch_delay __ARGS((long msec, int ignoreinput));
-void mch_write __ARGS((char_u *s, int len));
-int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
-int mch_char_avail __ARGS((void));
-void mch_suspend __ARGS((void));
-void mch_init __ARGS((void));
-int mch_check_win __ARGS((int argc, char **argv));
-int mch_input_isatty __ARGS((void));
-void fname_case __ARGS((char_u *name, int len));
-long mch_get_pid __ARGS((void));
-int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
-void slash_adjust __ARGS((char_u *p));
-int mch_isFullName __ARGS((char_u *fname));
-void mch_early_init __ARGS((void));
-void mch_exit __ARGS((int r));
-void mch_settmode __ARGS((int tmode));
-void mch_setmouse __ARGS((int on));
-int mch_screenmode __ARGS((char_u *arg));
-int mch_get_shellsize __ARGS((void));
-void mch_set_shellsize __ARGS((void));
-void mch_new_shellsize __ARGS((void));
-void mch_check_columns __ARGS((void));
-int mch_call_shell __ARGS((char_u *cmd, int options));
-void mch_breakcheck __ARGS((void));
-int mch_has_exp_wildcard __ARGS((char_u *p));
-int mch_has_wildcard __ARGS((char_u *p));
-int mch_chdir __ARGS((char *path));
-char *djgpp_setlocale __ARGS((void));
-int clip_mch_own_selection __ARGS((VimClipboard *cbd));
-void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
-void clip_mch_request_selection __ARGS((VimClipboard *cbd));
-void clip_mch_set_selection __ARGS((VimClipboard *cbd));
-long mch_getperm __ARGS((char_u *name));
-int mch_setperm __ARGS((char_u *name, long perm));
-void mch_hide __ARGS((char_u *name));
-int mch_isdir __ARGS((char_u *name));
-int mch_can_exe __ARGS((char_u *name));
-int mch_nodetype __ARGS((char_u *name));
-int mch_dirname __ARGS((char_u *buf, int len));
-int mch_remove __ARGS((char_u *name));
-char_u *mch_getenv __ARGS((char_u *name));
-int mch_get_user_name __ARGS((char_u *s, int len));
-void mch_get_host_name __ARGS((char_u *s, int len));
+extern void mch_set_normal_colors __ARGS((void));
+extern void mch_update_cursor __ARGS((void));
+extern long_u mch_avail_mem __ARGS((int special));
+extern void mch_delay __ARGS((long msec, int ignoreinput));
+extern void mch_write __ARGS((char_u *s, int len));
+extern int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
+extern int mch_char_avail __ARGS((void));
+extern void mch_suspend __ARGS((void));
+extern void mch_init __ARGS((void));
+extern int mch_check_win __ARGS((int argc, char **argv));
+extern int mch_input_isatty __ARGS((void));
+extern void fname_case __ARGS((char_u *name, int len));
+extern long mch_get_pid __ARGS((void));
+extern int mch_FullName __ARGS((char_u *fname, char_u *buf, int len, int force));
+extern void slash_adjust __ARGS((char_u *p));
+extern int mch_isFullName __ARGS((char_u *fname));
+extern void mch_early_init __ARGS((void));
+extern void mch_exit __ARGS((int r));
+extern void mch_settmode __ARGS((int tmode));
+extern void mch_setmouse __ARGS((int on));
+extern int mch_screenmode __ARGS((char_u *arg));
+extern int mch_get_shellsize __ARGS((void));
+extern void mch_set_shellsize __ARGS((void));
+extern void mch_new_shellsize __ARGS((void));
+extern void mch_check_columns __ARGS((void));
+extern int mch_call_shell __ARGS((char_u *cmd, int options));
+extern void mch_breakcheck __ARGS((void));
+extern int mch_has_exp_wildcard __ARGS((char_u *p));
+extern int mch_has_wildcard __ARGS((char_u *p));
+extern int mch_chdir __ARGS((char *path));
+extern char *djgpp_setlocale __ARGS((void));
+extern int clip_mch_own_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_lose_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_request_selection __ARGS((VimClipboard *cbd));
+extern void clip_mch_set_selection __ARGS((VimClipboard *cbd));
+extern long mch_getperm __ARGS((char_u *name));
+extern int mch_setperm __ARGS((char_u *name, long perm));
+extern void mch_hide __ARGS((char_u *name));
+extern int mch_isdir __ARGS((char_u *name));
+extern int mch_can_exe __ARGS((char_u *name));
+extern int mch_nodetype __ARGS((char_u *name));
+extern int mch_dirname __ARGS((char_u *buf, int len));
+extern int mch_remove __ARGS((char_u *name));
+extern char_u *mch_getenv __ARGS((char_u *name));
+extern int mch_get_user_name __ARGS((char_u *s, int len));
+extern void mch_get_host_name __ARGS((char_u *s, int len));
 /* vim: set ft=c : */
--- a/src/proto/os_win32.pro
+++ b/src/proto/os_win32.pro
@@ -1,54 +1,54 @@
 /* os_win32.c */
-int dyn_libintl_init __ARGS((char *libname));
-void dyn_libintl_end __ARGS((void));
-void PlatformId __ARGS((void));
-int mch_windows95 __ARGS((void));
-void mch_setmouse __ARGS((int on));
-void mch_update_cursor __ARGS((void));
-int mch_char_avail __ARGS((void));
-int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
-void mch_init __ARGS((void));
-void mch_exit __ARGS((int r));
-int mch_check_win __ARGS((int argc, char **argv));
-void fname_case __ARGS((char_u *name, int len));
-int mch_get_user_name __ARGS((char_u *s, int len));
-void mch_get_host_name __ARGS((char_u *s, int len));
-long mch_get_pid __ARGS((void));
-int mch_dirname __ARGS((char_u *buf, int len));
-long mch_getperm __ARGS((char_u *name));
-int mch_setperm __ARGS((char_u *name, long perm));
-void mch_hide __ARGS((char_u *name));
-int mch_isdir __ARGS((char_u *name));
-int mch_is_linked __ARGS((char_u *fname));
-int mch_writable __ARGS((char_u *name));
-int mch_can_exe __ARGS((char_u *name));
-int mch_nodetype __ARGS((char_u *name));
-vim_acl_T mch_get_acl __ARGS((char_u *fname));
-void mch_set_acl __ARGS((char_u *fname, vim_acl_T acl));
-void mch_free_acl __ARGS((vim_acl_T acl));
-void mch_settmode __ARGS((int tmode));
-int mch_get_shellsize __ARGS((void));
-void mch_set_shellsize __ARGS((void));
-void mch_new_shellsize __ARGS((void));
-void mch_set_winsize_now __ARGS((void));
-int mch_call_shell __ARGS((char_u *cmd, int options));
-void mch_set_normal_colors __ARGS((void));
-void mch_write __ARGS((char_u *s, int len));
-void mch_delay __ARGS((long msec, int ignoreinput));
-int mch_remove __ARGS((char_u *name));
-void mch_breakcheck __ARGS((void));
-long_u mch_avail_mem __ARGS((int special));
-int mch_wrename __ARGS((WCHAR *wold, WCHAR *wnew));
-int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
-char *default_shell __ARGS((void));
-int mch_access __ARGS((char *n, int p));
-int mch_open __ARGS((char *name, int flags, int mode));
-FILE *mch_fopen __ARGS((char *name, char *mode));
-int mch_copy_file_attribute __ARGS((char_u *from, char_u *to));
-int myresetstkoflw __ARGS((void));
-int get_cmd_argsW __ARGS((char ***argvp));
-void free_cmd_argsW __ARGS((void));
-void used_file_arg __ARGS((char *name, int literal, int full_path));
-void set_alist_count __ARGS((void));
-void fix_arg_enc __ARGS((void));
+extern int dyn_libintl_init __ARGS((char *libname));
+extern void dyn_libintl_end __ARGS((void));
+extern void PlatformId __ARGS((void));
+extern int mch_windows95 __ARGS((void));
+extern void mch_setmouse __ARGS((int on));
+extern void mch_update_cursor __ARGS((void));
+extern int mch_char_avail __ARGS((void));
+extern int mch_inchar __ARGS((char_u *buf, int maxlen, long time, int tb_change_cnt));
+extern void mch_init __ARGS((void));
+extern void mch_exit __ARGS((int r));
+extern int mch_check_win __ARGS((int argc, char **argv));
+extern void fname_case __ARGS((char_u *name, int len));
+extern int mch_get_user_name __ARGS((char_u *s, int len));
+extern void mch_get_host_name __ARGS((char_u *s, int len));
+extern long mch_get_pid __ARGS((void));
+extern int mch_dirname __ARGS((char_u *buf, int len));
+extern long mch_getperm __ARGS((char_u *name));
+extern int mch_setperm __ARGS((char_u *name, long perm));
+extern void mch_hide __ARGS((char_u *name));
+extern int mch_isdir __ARGS((char_u *name));
+extern int mch_is_linked __ARGS((char_u *fname));
+extern int mch_writable __ARGS((char_u *name));
+extern int mch_can_exe __ARGS((char_u *name));
+extern int mch_nodetype __ARGS((char_u *name));
+extern vim_acl_T mch_get_acl __ARGS((char_u *fname));
+extern void mch_set_acl __ARGS((char_u *fname, vim_acl_T acl));
+extern void mch_free_acl __ARGS((vim_acl_T acl));
+extern void mch_settmode __ARGS((int tmode));
+extern int mch_get_shellsize __ARGS((void));
+extern void mch_set_shellsize __ARGS((void));
+extern void mch_new_shellsize __ARGS((void));
+extern void mch_set_winsize_now __ARGS((void));
+extern int mch_call_shell __ARGS((char_u *cmd, int options));
+extern void mch_set_normal_colors __ARGS((void));
+extern void mch_write __ARGS((char_u *s, int len));
+extern void mch_delay __ARGS((long msec, int ignoreinput));
+extern int mch_remove __ARGS((char_u *name));
+extern void mch_breakcheck __ARGS((void));
+extern long_u mch_avail_mem __ARGS((int special));
+extern int mch_wrename __ARGS((WCHAR *wold, WCHAR *wnew));
+extern int mch_rename __ARGS((const char *pszOldFile, const char *pszNewFile));
+extern char *default_shell __ARGS((void));
+extern int mch_access __ARGS((char *n, int p));
+extern int mch_open __ARGS((char *name, int flags, int mode));
+extern FILE *mch_fopen __ARGS((char *name, char *mode));
+extern int mch_copy_file_attribute __ARGS((char_u *from, char_u *to));
+extern int myresetstkoflw __ARGS((void));
+extern int get_cmd_argsW __ARGS((char ***argvp));
+extern void free_cmd_argsW __ARGS((void));
+extern void used_file_arg __ARGS((char *name, int literal, int full_path));
+extern void set_alist_count __ARGS((void));
+extern void fix_arg_enc __ARGS((void));
 /* vim: set ft=c : */
deleted file mode 100644
--- a/src/proto/popupmenu.pro
+++ /dev/null
@@ -1,8 +0,0 @@
-/* popupmenu.c */
-void pum_display __ARGS((pumitem_T *array, int size, int selected));
-void pum_redraw __ARGS((void));
-void pum_undisplay __ARGS((void));
-void pum_clear __ARGS((void));
-int pum_visible __ARGS((void));
-int pum_get_height __ARGS((void));
-/* vim: set ft=c : */
--- a/src/proto/quickfix.pro
+++ b/src/proto/quickfix.pro
@@ -1,30 +1,30 @@
 /* quickfix.c */
-int qf_init __ARGS((win_T *wp, char_u *efile, char_u *errorformat, int newlist));
-void qf_free_all __ARGS((win_T *wp));
-void copy_loclist __ARGS((win_T *from, win_T *to));
-void qf_jump __ARGS((qf_info_T *qi, int dir, int errornr, int forceit));
-void qf_list __ARGS((exarg_T *eap));
-void qf_age __ARGS((exarg_T *eap));
-void qf_mark_adjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
-void ex_cwindow __ARGS((exarg_T *eap));
-void ex_cclose __ARGS((exarg_T *eap));
-void ex_copen __ARGS((exarg_T *eap));
-linenr_T qf_current_entry __ARGS((win_T *wp));
-int bt_quickfix __ARGS((buf_T *buf));
-int bt_nofile __ARGS((buf_T *buf));
-int bt_dontwrite __ARGS((buf_T *buf));
-int bt_dontwrite_msg __ARGS((buf_T *buf));
-int buf_hide __ARGS((buf_T *buf));
-int grep_internal __ARGS((cmdidx_T cmdidx));
-void ex_make __ARGS((exarg_T *eap));
-void ex_cc __ARGS((exarg_T *eap));
-void ex_cnext __ARGS((exarg_T *eap));
-void ex_cfile __ARGS((exarg_T *eap));
-void ex_vimgrep __ARGS((exarg_T *eap));
-char_u *skip_vimgrep_pat __ARGS((char_u *p, char_u **s, int *flags));
-int get_errorlist __ARGS((win_T *wp, list_T *list));
-int set_errorlist __ARGS((win_T *wp, list_T *list, int action));
-void ex_cbuffer __ARGS((exarg_T *eap));
-void ex_cexpr __ARGS((exarg_T *eap));
-void ex_helpgrep __ARGS((exarg_T *eap));
+extern int qf_init __ARGS((win_T *wp, char_u *efile, char_u *errorformat, int newlist));
+extern void qf_free_all __ARGS((win_T *wp));
+extern void copy_loclist __ARGS((win_T *from, win_T *to));
+extern void qf_jump __ARGS((qf_info_T *qi, int dir, int errornr, int forceit));
+extern void qf_list __ARGS((exarg_T *eap));
+extern void qf_age __ARGS((exarg_T *eap));
+extern void qf_mark_adjust __ARGS((win_T *wp, linenr_T line1, linenr_T line2, long amount, long amount_after));
+extern void ex_cwindow __ARGS((exarg_T *eap));
+extern void ex_cclose __ARGS((exarg_T *eap));
+extern void ex_copen __ARGS((exarg_T *eap));
+extern linenr_T qf_current_entry __ARGS((win_T *wp));
+extern int bt_quickfix __ARGS((buf_T *buf));
+extern int bt_nofile __ARGS((buf_T *buf));
+extern int bt_dontwrite __ARGS((buf_T *buf));
+extern int bt_dontwrite_msg __ARGS((buf_T *buf));
+extern int buf_hide __ARGS((buf_T *buf));
+extern int grep_internal __ARGS((cmdidx_T cmdidx));
+extern void ex_make __ARGS((exarg_T *eap));
+extern void ex_cc __ARGS((exarg_T *eap));
+extern void ex_cnext __ARGS((exarg_T *eap));
+extern void ex_cfile __ARGS((exarg_T *eap));
+extern void ex_vimgrep __ARGS((exarg_T *eap));
+extern char_u *skip_vimgrep_pat __ARGS((char_u *p, char_u **s, int *flags));
+extern int get_errorlist __ARGS((win_T *wp, list_T *list));
+extern int set_errorlist __ARGS((win_T *wp, list_T *list, int action));
+extern void ex_cbuffer __ARGS((exarg_T *eap));
+extern void ex_cexpr __ARGS((exarg_T *eap));
+extern void ex_helpgrep __ARGS((exarg_T *eap));
 /* vim: set ft=c : */
--- a/src/proto/screen.pro
+++ b/src/proto/screen.pro
@@ -1,50 +1,50 @@
 /* screen.c */
-void redraw_later __ARGS((int type));
-void redraw_win_later __ARGS((win_T *wp, int type));
-void redraw_later_clear __ARGS((void));
-void redraw_all_later __ARGS((int type));
-void redraw_curbuf_later __ARGS((int type));
-void redraw_buf_later __ARGS((buf_T *buf, int type));
-void redrawWinline __ARGS((linenr_T lnum, int invalid));
-void update_curbuf __ARGS((int type));
-void update_screen __ARGS((int type));
-void update_debug_sign __ARGS((buf_T *buf, linenr_T lnum));
-void updateWindow __ARGS((win_T *wp));
-void rl_mirror __ARGS((char_u *str));
-void status_redraw_all __ARGS((void));
-void status_redraw_curbuf __ARGS((void));
-void redraw_statuslines __ARGS((void));
-void win_redraw_last_status __ARGS((frame_T *frp));
-void win_redr_status_matches __ARGS((expand_T *xp, int num_matches, char_u **matches, int match, int showtail));
-void win_redr_status __ARGS((win_T *wp));
-int stl_connected __ARGS((win_T *wp));
-int get_keymap_str __ARGS((win_T *wp, char_u *buf, int len));
-void screen_putchar __ARGS((int c, int row, int col, int attr));
-void screen_getbytes __ARGS((int row, int col, char_u *bytes, int *attrp));
-void screen_puts __ARGS((char_u *text, int row, int col, int attr));
-void screen_puts_len __ARGS((char_u *text, int len, int row, int col, int attr));
-void screen_stop_highlight __ARGS((void));
-void reset_cterm_colors __ARGS((void));
-void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert));
-void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr));
-void check_for_delay __ARGS((int check_msg_scroll));
-int screen_valid __ARGS((int clear));
-void screenalloc __ARGS((int clear));
-void free_screenlines __ARGS((void));
-void screenclear __ARGS((void));
-int can_clear __ARGS((char_u *p));
-void screen_start __ARGS((void));
-void windgoto __ARGS((int row, int col));
-void setcursor __ARGS((void));
-int win_ins_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
-int win_del_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
-int screen_ins_lines __ARGS((int off, int row, int line_count, int end, win_T *wp));
-int screen_del_lines __ARGS((int off, int row, int line_count, int end, int force, win_T *wp));
-int showmode __ARGS((void));
-void unshowmode __ARGS((int force));
-void get_trans_bufname __ARGS((buf_T *buf));
-int redrawing __ARGS((void));
-int messaging __ARGS((void));
-void showruler __ARGS((int always));
-int number_width __ARGS((win_T *wp));
+extern void redraw_later __ARGS((int type));
+extern void redraw_win_later __ARGS((win_T *wp, int type));
+extern void redraw_later_clear __ARGS((void));
+extern void redraw_all_later __ARGS((int type));
+extern void redraw_curbuf_later __ARGS((int type));
+extern void redraw_buf_later __ARGS((buf_T *buf, int type));
+extern void redrawWinline __ARGS((linenr_T lnum, int invalid));
+extern void update_curbuf __ARGS((int type));
+extern void update_screen __ARGS((int type));
+extern void update_debug_sign __ARGS((buf_T *buf, linenr_T lnum));
+extern void updateWindow __ARGS((win_T *wp));
+extern void rl_mirror __ARGS((char_u *str));
+extern void status_redraw_all __ARGS((void));
+extern void status_redraw_curbuf __ARGS((void));
+extern void redraw_statuslines __ARGS((void));
+extern void win_redraw_last_status __ARGS((frame_T *frp));
+extern void win_redr_status_matches __ARGS((expand_T *xp, int num_matches, char_u **matches, int match, int showtail));
+extern void win_redr_status __ARGS((win_T *wp));
+extern int stl_connected __ARGS((win_T *wp));
+extern int get_keymap_str __ARGS((win_T *wp, char_u *buf, int len));
+extern void screen_putchar __ARGS((int c, int row, int col, int attr));
+extern void screen_getbytes __ARGS((int row, int col, char_u *bytes, int *attrp));
+extern void screen_puts __ARGS((char_u *text, int row, int col, int attr));
+extern void screen_puts_len __ARGS((char_u *text, int len, int row, int col, int attr));
+extern void screen_stop_highlight __ARGS((void));
+extern void reset_cterm_colors __ARGS((void));
+extern void screen_draw_rectangle __ARGS((int row, int col, int height, int width, int invert));
+extern void screen_fill __ARGS((int start_row, int end_row, int start_col, int end_col, int c1, int c2, int attr));
+extern void check_for_delay __ARGS((int check_msg_scroll));
+extern int screen_valid __ARGS((int clear));
+extern void screenalloc __ARGS((int clear));
+extern void free_screenlines __ARGS((void));
+extern void screenclear __ARGS((void));
+extern int can_clear __ARGS((char_u *p));
+extern void screen_start __ARGS((void));
+extern void windgoto __ARGS((int row, int col));
+extern void setcursor __ARGS((void));
+extern int win_ins_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
+extern int win_del_lines __ARGS((win_T *wp, int row, int line_count, int invalid, int mayclear));
+extern int screen_ins_lines __ARGS((int off, int row, int line_count, int end, win_T *wp));
+extern int screen_del_lines __ARGS((int off, int row, int line_count, int end, int force, win_T *wp));
+extern int showmode __ARGS((void));
+extern void unshowmode __ARGS((int force));
+extern void get_trans_bufname __ARGS((buf_T *buf));
+extern int redrawing __ARGS((void));
+extern int messaging __ARGS((void));
+extern void showruler __ARGS((int always));
+extern int number_width __ARGS((win_T *wp));
 /* vim: set ft=c : */
--- a/src/proto/search.pro
+++ b/src/proto/search.pro
@@ -1,36 +1,36 @@
 /* search.c */
-int search_regcomp __ARGS((char_u *pat, int pat_save, int pat_use, int options, regmmatch_T *regmatch));
-char_u *get_search_pat __ARGS((void));
-void save_search_patterns __ARGS((void));
-void restore_search_patterns __ARGS((void));
-void free_search_patterns __ARGS((void));
-int ignorecase __ARGS((char_u *pat));
-char_u *last_search_pat __ARGS((void));
-void reset_search_dir __ARGS((void));
-void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
-void last_pat_prog __ARGS((regmmatch_T *regmatch));
-int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum));
-int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options));
-int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
-int searchc __ARGS((cmdarg_T *cap, int t_cmd));
-pos_T *findmatch __ARGS((oparg_T *oap, int initc));
-pos_T *findmatchlimit __ARGS((oparg_T *oap, int initc, int flags, int maxtravel));
-void showmatch __ARGS((int c));
-int findsent __ARGS((int dir, long count));
-int findpar __ARGS((int *pincl, int dir, long count, int what, int both));
-int startPS __ARGS((linenr_T lnum, int para, int both));
-int fwd_word __ARGS((long count, int bigword, int eol));
-int bck_word __ARGS((long count, int bigword, int stop));
-int end_word __ARGS((long count, int bigword, int stop, int empty));
-int bckend_word __ARGS((long count, int bigword, int eol));
-int current_word __ARGS((oparg_T *oap, long count, int include, int bigword));
-int current_sent __ARGS((oparg_T *oap, long count, int include));
-int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other));
-int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
-int current_par __ARGS((oparg_T *oap, long count, int include, int type));
-int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar));
-int linewhite __ARGS((linenr_T lnum));
-void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum));
-int read_viminfo_search_pattern __ARGS((vir_T *virp, int force));
-void write_viminfo_search_pattern __ARGS((FILE *fp));
+extern int search_regcomp __ARGS((char_u *pat, int pat_save, int pat_use, int options, regmmatch_T *regmatch));
+extern char_u *get_search_pat __ARGS((void));
+extern void save_search_patterns __ARGS((void));
+extern void restore_search_patterns __ARGS((void));
+extern void free_search_patterns __ARGS((void));
+extern int ignorecase __ARGS((char_u *pat));
+extern char_u *last_search_pat __ARGS((void));
+extern void reset_search_dir __ARGS((void));
+extern void set_last_search_pat __ARGS((char_u *s, int idx, int magic, int setlast));
+extern void last_pat_prog __ARGS((regmmatch_T *regmatch));
+extern int searchit __ARGS((win_T *win, buf_T *buf, pos_T *pos, int dir, char_u *pat, long count, int options, int pat_use, linenr_T stop_lnum));
+extern int do_search __ARGS((oparg_T *oap, int dirc, char_u *pat, long count, int options));
+extern int search_for_exact_line __ARGS((buf_T *buf, pos_T *pos, int dir, char_u *pat));
+extern int searchc __ARGS((cmdarg_T *cap, int t_cmd));
+extern pos_T *findmatch __ARGS((oparg_T *oap, int initc));
+extern pos_T *findmatchlimit __ARGS((oparg_T *oap, int initc, int flags, int maxtravel));
+extern void showmatch __ARGS((int c));
+extern int findsent __ARGS((int dir, long count));
+extern int findpar __ARGS((int *pincl, int dir, long count, int what, int both));
+extern int startPS __ARGS((linenr_T lnum, int para, int both));
+extern int fwd_word __ARGS((long count, int bigword, int eol));
+extern int bck_word __ARGS((long count, int bigword, int stop));
+extern int end_word __ARGS((long count, int bigword, int stop, int empty));
+extern int bckend_word __ARGS((long count, int bigword, int eol));
+extern int current_word __ARGS((oparg_T *oap, long count, int include, int bigword));
+extern int current_sent __ARGS((oparg_T *oap, long count, int include));
+extern int current_block __ARGS((oparg_T *oap, long count, int include, int what, int other));
+extern int current_tagblock __ARGS((oparg_T *oap, long count_arg, int include));
+extern int current_par __ARGS((oparg_T *oap, long count, int include, int type));
+extern int current_quote __ARGS((oparg_T *oap, long count, int include, int quotechar));
+extern int linewhite __ARGS((linenr_T lnum));
+extern void find_pattern_in_path __ARGS((char_u *ptr, int dir, int len, int whole, int skip_comments, int type, long count, int action, linenr_T start_lnum, linenr_T end_lnum));
+extern int read_viminfo_search_pattern __ARGS((vir_T *virp, int force));
+extern void write_viminfo_search_pattern __ARGS((FILE *fp));
 /* vim: set ft=c : */
--- a/src/proto/spell.pro
+++ b/src/proto/spell.pro
@@ -1,26 +1,26 @@
 /* spell.c */
-int spell_check __ARGS((win_T *wp, char_u *ptr, hlf_T *attrp, int *capcol, int docount));
-int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, hlf_T *attrp));
-void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
-char_u *did_set_spelllang __ARGS((buf_T *buf));
-void spell_free_all __ARGS((void));
-void spell_reload __ARGS((void));
-int spell_check_msm __ARGS((void));
-void put_bytes __ARGS((FILE *fd, long_u nr, int len));
-void ex_mkspell __ARGS((exarg_T *eap));
-void ex_spell __ARGS((exarg_T *eap));
-void spell_add_word __ARGS((char_u *word, int len, int bad, int index, int undo));
-void init_spell_chartab __ARGS((void));
-int spell_check_sps __ARGS((void));
-void spell_suggest __ARGS((int count));
-void ex_spellrepall __ARGS((exarg_T *eap));
-void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap, int interactive));
-char_u *eval_soundfold __ARGS((char_u *word));
-void ex_spellinfo __ARGS((exarg_T *eap));
-void ex_spelldump __ARGS((exarg_T *eap));
-void spell_dump_compl __ARGS((buf_T *buf, char_u *pat, int ic, int *dir, int dumpflags_arg));
-char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
-int spell_word_start __ARGS((int startcol));
-void spell_expand_check_cap __ARGS((colnr_T col));
-int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
+extern int spell_check __ARGS((win_T *wp, char_u *ptr, hlf_T *attrp, int *capcol, int docount));
+extern int spell_move_to __ARGS((win_T *wp, int dir, int allwords, int curline, hlf_T *attrp));
+extern void spell_cat_line __ARGS((char_u *buf, char_u *line, int maxlen));
+extern char_u *did_set_spelllang __ARGS((buf_T *buf));
+extern void spell_free_all __ARGS((void));
+extern void spell_reload __ARGS((void));
+extern int spell_check_msm __ARGS((void));
+extern void put_bytes __ARGS((FILE *fd, long_u nr, int len));
+extern void ex_mkspell __ARGS((exarg_T *eap));
+extern void ex_spell __ARGS((exarg_T *eap));
+extern void spell_add_word __ARGS((char_u *word, int len, int bad, int index, int undo));
+extern void init_spell_chartab __ARGS((void));
+extern int spell_check_sps __ARGS((void));
+extern void spell_suggest __ARGS((int count));
+extern void ex_spellrepall __ARGS((exarg_T *eap));
+extern void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap, int interactive));
+extern char_u *eval_soundfold __ARGS((char_u *word));
+extern void ex_spellinfo __ARGS((exarg_T *eap));
+extern void ex_spelldump __ARGS((exarg_T *eap));
+extern void spell_dump_compl __ARGS((buf_T *buf, char_u *pat, int ic, int *dir, int dumpflags_arg));
+extern char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));
+extern int spell_word_start __ARGS((int startcol));
+extern void spell_expand_check_cap __ARGS((colnr_T col));
+extern int expand_spelling __ARGS((linenr_T lnum, int col, char_u *pat, char_u ***matchp));
 /* vim: set ft=c : */
--- a/src/proto/tag.pro
+++ b/src/proto/tag.pro
@@ -1,12 +1,12 @@
 /* tag.c */
-int do_tag __ARGS((char_u *tag, int type, int count, int forceit, int verbose));
-void tag_freematch __ARGS((void));
-void do_tags __ARGS((exarg_T *eap));
-int find_tags __ARGS((char_u *pat, int *num_matches, char_u ***matchesp, int flags, int mincount, char_u *buf_ffname));
-void free_tag_stuff __ARGS((void));
-int get_tagfname __ARGS((tagname_T *tnp, int first, char_u *buf));
-void tagname_free __ARGS((tagname_T *tnp));
-void simplify_filename __ARGS((char_u *filename));
-int expand_tags __ARGS((int tagnames, char_u *pat, int *num_file, char_u ***file));
-int get_tags __ARGS((list_T *list, char_u *pat));
+extern int do_tag __ARGS((char_u *tag, int type, int count, int forceit, int verbose));
+extern void tag_freematch __ARGS((void));
+extern void do_tags __ARGS((exarg_T *eap));
+extern int find_tags __ARGS((char_u *pat, int *num_matches, char_u ***matchesp, int flags, int mincount, char_u *buf_ffname));
+extern void free_tag_stuff __ARGS((void));
+extern int get_tagfname __ARGS((tagname_T *tnp, int first, char_u *buf));
+extern void tagname_free __ARGS((tagname_T *tnp));
+extern void simplify_filename __ARGS((char_u *filename));
+extern int expand_tags __ARGS((int tagnames, char_u *pat, int *num_file, char_u ***file));
+extern int get_tags __ARGS((list_T *list, char_u *pat));
 /* vim: set ft=c : */
--- a/src/proto/term.pro
+++ b/src/proto/term.pro
@@ -1,60 +1,60 @@
 /* term.c */
-int set_termname __ARGS((char_u *term));
-void set_mouse_termcode __ARGS((int n, char_u *s));
-void del_mouse_termcode __ARGS((int n));
-void getlinecol __ARGS((long *cp, long *rp));
-int add_termcap_entry __ARGS((char_u *name, int force));
-int term_is_8bit __ARGS((char_u *name));
-int term_is_gui __ARGS((char_u *name));
-char_u *tltoa __ARGS((unsigned long i));
-void termcapinit __ARGS((char_u *name));
-void out_flush __ARGS((void));
-void out_flush_check __ARGS((void));
-void out_trash __ARGS((void));
-void out_char __ARGS((unsigned c));
-void out_str_nf __ARGS((char_u *s));
-void out_str __ARGS((char_u *s));
-void term_windgoto __ARGS((int row, int col));
-void term_cursor_right __ARGS((int i));
-void term_append_lines __ARGS((int line_count));
-void term_delete_lines __ARGS((int line_count));
-void term_set_winpos __ARGS((int x, int y));
-void term_set_winsize __ARGS((int width, int height));
-void term_fg_color __ARGS((int n));
-void term_bg_color __ARGS((int n));
-void term_settitle __ARGS((char_u *title));
-void ttest __ARGS((int pairs));
-void add_long_to_buf __ARGS((long_u val, char_u *dst));
-void check_shellsize __ARGS((void));
-void win_new_shellsize __ARGS((void));
-void shell_resized __ARGS((void));
-void shell_resized_check __ARGS((void));
-void set_shellsize __ARGS((int width, int height, int mustset));
-void settmode __ARGS((int tmode));
-void starttermcap __ARGS((void));
-void stoptermcap __ARGS((void));
-void may_req_termresponse __ARGS((void));
-int swapping_screen __ARGS((void));
-void setmouse __ARGS((void));
-int mouse_has __ARGS((int c));
-int mouse_model_popup __ARGS((void));
-void scroll_start __ARGS((void));
-void cursor_on __ARGS((void));
-void cursor_off __ARGS((void));
-void term_cursor_shape __ARGS((void));
-void scroll_region_set __ARGS((win_T *wp, int off));
-void scroll_region_reset __ARGS((void));
-void clear_termcodes __ARGS((void));
-void add_termcode __ARGS((char_u *name, char_u *string, int flags));
-char_u *find_termcode __ARGS((char_u *name));
-char_u *get_termcode __ARGS((int i));
-void del_termcode __ARGS((char_u *name));
-void set_mouse_topline __ARGS((win_T *wp));
-int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
-char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt));
-int find_term_bykeys __ARGS((char_u *src));
-void show_termcodes __ARGS((void));
-int show_one_termcode __ARGS((char_u *name, char_u *code, int printit));
-char_u *translate_mapping __ARGS((char_u *str, int expmap));
-void update_tcap __ARGS((int attr));
+extern int set_termname __ARGS((char_u *term));
+extern void set_mouse_termcode __ARGS((int n, char_u *s));
+extern void del_mouse_termcode __ARGS((int n));
+extern void getlinecol __ARGS((long *cp, long *rp));
+extern int add_termcap_entry __ARGS((char_u *name, int force));
+extern int term_is_8bit __ARGS((char_u *name));
+extern int term_is_gui __ARGS((char_u *name));
+extern char_u *tltoa __ARGS((unsigned long i));
+extern void termcapinit __ARGS((char_u *name));
+extern void out_flush __ARGS((void));
+extern void out_flush_check __ARGS((void));
+extern void out_trash __ARGS((void));
+extern void out_char __ARGS((unsigned c));
+extern void out_str_nf __ARGS((char_u *s));
+extern void out_str __ARGS((char_u *s));
+extern void term_windgoto __ARGS((int row, int col));
+extern void term_cursor_right __ARGS((int i));
+extern void term_append_lines __ARGS((int line_count));
+extern void term_delete_lines __ARGS((int line_count));
+extern void term_set_winpos __ARGS((int x, int y));
+extern void term_set_winsize __ARGS((int width, int height));
+extern void term_fg_color __ARGS((int n));
+extern void term_bg_color __ARGS((int n));
+extern void term_settitle __ARGS((char_u *title));
+extern void ttest __ARGS((int pairs));
+extern void add_long_to_buf __ARGS((long_u val, char_u *dst));
+extern void check_shellsize __ARGS((void));
+extern void win_new_shellsize __ARGS((void));
+extern void shell_resized __ARGS((void));
+extern void shell_resized_check __ARGS((void));
+extern void set_shellsize __ARGS((int width, int height, int mustset));
+extern void settmode __ARGS((int tmode));
+extern void starttermcap __ARGS((void));
+extern void stoptermcap __ARGS((void));
+extern void may_req_termresponse __ARGS((void));
+extern int swapping_screen __ARGS((void));
+extern void setmouse __ARGS((void));
+extern int mouse_has __ARGS((int c));
+extern int mouse_model_popup __ARGS((void));
+extern void scroll_start __ARGS((void));
+extern void cursor_on __ARGS((void));
+extern void cursor_off __ARGS((void));
+extern void term_cursor_shape __ARGS((void));
+extern void scroll_region_set __ARGS((win_T *wp, int off));
+extern void scroll_region_reset __ARGS((void));
+extern void clear_termcodes __ARGS((void));
+extern void add_termcode __ARGS((char_u *name, char_u *string, int flags));
+extern char_u *find_termcode __ARGS((char_u *name));
+extern char_u *get_termcode __ARGS((int i));
+extern void del_termcode __ARGS((char_u *name));
+extern void set_mouse_topline __ARGS((win_T *wp));
+extern int check_termcode __ARGS((int max_offset, char_u *buf, int buflen));
+extern char_u *replace_termcodes __ARGS((char_u *from, char_u **bufp, int from_part, int do_lt));
+extern int find_term_bykeys __ARGS((char_u *src));
+extern void show_termcodes __ARGS((void));
+extern int show_one_termcode __ARGS((char_u *name, char_u *code, int printit));
+extern char_u *translate_mapping __ARGS((char_u *str, int expmap));
+extern void update_tcap __ARGS((int attr));
 /* vim: set ft=c : */
--- a/src/proto/termlib.pro
+++ b/src/proto/termlib.pro
@@ -1,8 +1,8 @@
 /* termlib.c */
-int tgetent __ARGS((char *tbuf, char *term));
-int tgetflag __ARGS((char *id));
-int tgetnum __ARGS((char *id));
-char *tgetstr __ARGS((char *id, char **buf));
-char *tgoto __ARGS((char *cm, int col, int line));
-int tputs __ARGS((char *cp, int affcnt, void (*outc)(unsigned int)));
+extern int tgetent __ARGS((char *tbuf, char *term));
+extern int tgetflag __ARGS((char *id));
+extern int tgetnum __ARGS((char *id));
+extern char *tgetstr __ARGS((char *id, char **buf));
+extern char *tgoto __ARGS((char *cm, int col, int line));
+extern int tputs __ARGS((char *cp, int affcnt, void (*outc)(unsigned int)));
 /* vim: set ft=c : */
--- a/src/proto/ui.pro
+++ b/src/proto/ui.pro
@@ -1,61 +1,61 @@
 /* ui.c */
-void ui_write __ARGS((char_u *s, int len));
-void ui_inchar_undo __ARGS((char_u *s, int len));
-int ui_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
-int ui_char_avail __ARGS((void));
-void ui_delay __ARGS((long msec, int ignoreinput));
-void ui_suspend __ARGS((void));
-void suspend_shell __ARGS((void));
-int ui_get_shellsize __ARGS((void));
-void ui_set_shellsize __ARGS((int mustset));
-void ui_new_shellsize __ARGS((void));
-void ui_breakcheck __ARGS((void));
-void clip_init __ARGS((int can_use));
-void clip_update_selection __ARGS((void));
-void clip_own_selection __ARGS((VimClipboard *cbd));
-void clip_lose_selection __ARGS((VimClipboard *cbd));
-void clip_copy_selection __ARGS((void));
-void clip_auto_select __ARGS((void));
-int clip_isautosel __ARGS((void));
-void clip_modeless __ARGS((int button, int is_click, int is_drag));
-void clip_start_selection __ARGS((int col, int row, int repeated_click));
-void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click));
-void clip_may_redraw_selection __ARGS((int row, int col, int len));
-void clip_clear_selection __ARGS((void));
-void clip_may_clear_selection __ARGS((int row1, int row2));
-void clip_scroll_selection __ARGS((int rows));
-void clip_copy_modeless_selection __ARGS((int both));
-int clip_gen_own_selection __ARGS((VimClipboard *cbd));
-void clip_gen_lose_selection __ARGS((VimClipboard *cbd));
-void clip_gen_set_selection __ARGS((VimClipboard *cbd));
-void clip_gen_request_selection __ARGS((VimClipboard *cbd));
-int vim_is_input_buf_full __ARGS((void));
-int vim_is_input_buf_empty __ARGS((void));
-int vim_free_in_input_buf __ARGS((void));
-int vim_used_in_input_buf __ARGS((void));
-char_u *get_input_buf __ARGS((void));
-void set_input_buf __ARGS((char_u *p));
-void add_to_input_buf __ARGS((char_u *s, int len));
-void add_to_input_buf_csi __ARGS((char_u *str, int len));
-void push_raw_key __ARGS((char_u *s, int len));
-void trash_input_buf __ARGS((void));
-int read_from_input_buf __ARGS((char_u *buf, long maxlen));
-void fill_input_buf __ARGS((int exit_on_error));
-void read_error_exit __ARGS((void));
-void ui_cursor_shape __ARGS((void));
-int check_col __ARGS((int col));
-int check_row __ARGS((int row));
-void open_app_context __ARGS((void));
-void x11_setup_atoms __ARGS((Display *dpy));
-void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd));
-void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
-int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
-void clip_x11_set_selection __ARGS((VimClipboard *cbd));
-int jump_to_mouse __ARGS((int flags, int *inclusive, int which_button));
-int mouse_comp_pos __ARGS((win_T *win, int *rowp, int *colp, linenr_T *lnump));
-win_T *mouse_find_win __ARGS((int *rowp, int *colp));
-int get_fpos_of_mouse __ARGS((pos_T *mpos));
-int vcol2col __ARGS((win_T *wp, linenr_T lnum, int vcol));
-void ui_focus_change __ARGS((int in_focus));
-void im_save_status __ARGS((long *psave));
+extern void ui_write __ARGS((char_u *s, int len));
+extern void ui_inchar_undo __ARGS((char_u *s, int len));
+extern int ui_inchar __ARGS((char_u *buf, int maxlen, long wtime, int tb_change_cnt));
+extern int ui_char_avail __ARGS((void));
+extern void ui_delay __ARGS((long msec, int ignoreinput));
+extern void ui_suspend __ARGS((void));
+extern void suspend_shell __ARGS((void));
+extern int ui_get_shellsize __ARGS((void));
+extern void ui_set_shellsize __ARGS((int mustset));
+extern void ui_new_shellsize __ARGS((void));
+extern void ui_breakcheck __ARGS((void));
+extern void clip_init __ARGS((int can_use));
+extern void clip_update_selection __ARGS((void));
+extern void clip_own_selection __ARGS((VimClipboard *cbd));
+extern void clip_lose_selection __ARGS((VimClipboard *cbd));
+extern void clip_copy_selection __ARGS((void));
+extern void clip_auto_select __ARGS((void));
+extern int clip_isautosel __ARGS((void));
+extern void clip_modeless __ARGS((int button, int is_click, int is_drag));
+extern void clip_start_selection __ARGS((int col, int row, int repeated_click));
+extern void clip_process_selection __ARGS((int button, int col, int row, int_u repeated_click));
+extern void clip_may_redraw_selection __ARGS((int row, int col, int len));
+extern void clip_clear_selection __ARGS((void));
+extern void clip_may_clear_selection __ARGS((int row1, int row2));
+extern void clip_scroll_selection __ARGS((int rows));
+extern void clip_copy_modeless_selection __ARGS((int both));
+extern int clip_gen_own_selection __ARGS((VimClipboard *cbd));
+extern void clip_gen_lose_selection __ARGS((VimClipboard *cbd));
+extern void clip_gen_set_selection __ARGS((VimClipboard *cbd));
+extern void clip_gen_request_selection __ARGS((VimClipboard *cbd));
+extern int vim_is_input_buf_full __ARGS((void));
+extern int vim_is_input_buf_empty __ARGS((void));
+extern int vim_free_in_input_buf __ARGS((void));
+extern int vim_used_in_input_buf __ARGS((void));
+extern char_u *get_input_buf __ARGS((void));
+extern void set_input_buf __ARGS((char_u *p));
+extern void add_to_input_buf __ARGS((char_u *s, int len));
+extern void add_to_input_buf_csi __ARGS((char_u *str, int len));
+extern void push_raw_key __ARGS((char_u *s, int len));
+extern void trash_input_buf __ARGS((void));
+extern int read_from_input_buf __ARGS((char_u *buf, long maxlen));
+extern void fill_input_buf __ARGS((int exit_on_error));
+extern void read_error_exit __ARGS((void));
+extern void ui_cursor_shape __ARGS((void));
+extern int check_col __ARGS((int col));
+extern int check_row __ARGS((int row));
+extern void open_app_context __ARGS((void));
+extern void x11_setup_atoms __ARGS((Display *dpy));
+extern void clip_x11_request_selection __ARGS((Widget myShell, Display *dpy, VimClipboard *cbd));
+extern void clip_x11_lose_selection __ARGS((Widget myShell, VimClipboard *cbd));
+extern int clip_x11_own_selection __ARGS((Widget myShell, VimClipboard *cbd));
+extern void clip_x11_set_selection __ARGS((VimClipboard *cbd));
+extern int jump_to_mouse __ARGS((int flags, int *inclusive, int which_button));
+extern int mouse_comp_pos __ARGS((win_T *win, int *rowp, int *colp, linenr_T *lnump));
+extern win_T *mouse_find_win __ARGS((int *rowp, int *colp));
+extern int get_fpos_of_mouse __ARGS((pos_T *mpos));
+extern int vcol2col __ARGS((win_T *wp, linenr_T lnum, int vcol));
+extern void ui_focus_change __ARGS((int in_focus));
+extern void im_save_status __ARGS((long *psave));
 /* vim: set ft=c : */
--- a/src/structs.h
+++ b/src/structs.h
@@ -1118,7 +1118,9 @@ struct dictvar_S
 # define B_SPELL(buf)  (0)
 #endif
 
+#ifdef FEAT_QUICKFIX
 typedef struct qf_info_S qf_info_T;
+#endif
 
 /*
  * buffer: structure that holds information about one file
--- a/src/testdir/test61.in
+++ b/src/testdir/test61.in
@@ -30,7 +30,7 @@ 10g+:.w >>test.out
 :"
 :/^222/w >>test.out
 :" Delay for three seconds and go some seconds forward and backward
-:sleep 2
+:sleep 3
 Aa:set ul=100
 Ab:set ul=100
 Ac:set ul=100