changeset 796:cc3902a09300

updated for version 7.0232
author vimboss
date Thu, 23 Mar 2006 22:44:10 +0000
parents 86ce35c9750f
children a1a08851eac8
files runtime/autoload/vimball.vim runtime/doc/index.txt src/config.aap.in src/main.aap
diffstat 4 files changed, 326 insertions(+), 153 deletions(-) [+]
line wrap: on
line diff
--- a/runtime/autoload/vimball.vim
+++ b/runtime/autoload/vimball.vim
@@ -1,7 +1,7 @@
 " vimball : construct a file containing both paths and files
 " Author: Charles E. Campbell, Jr.
-" Date:   Mar 20, 2006
-" Version: 4
+" Date:   Mar 22, 2006
+" Version: 5
 " GetLatestVimScripts: 1502 1 :AutoInstall: vimball.vim
 " Copyright: (c) 2004-2006 by Charles E. Campbell, Jr.
 "            The VIM LICENSE applies to Vimball.vim, and Vimball.txt
@@ -15,7 +15,7 @@ if &cp || exists("g:loaded_vimball")
  finish
 endif
 let s:keepcpo        = &cpo
-let g:loaded_vimball = "v4"
+let g:loaded_vimball = "v5"
 set cpo&vim
 
 " =====================================================================
@@ -94,12 +94,10 @@ fun! vimball#MkVimball(line1,line2,write
   " write the vimball
   exe "tabn ".vbtabnr
   exe "cd ".curdir
-  if a:really
-   if a:writelevel
-    exe "w! ".vbname
-   else
-    exe "w ".vbname
-   endif
+  if a:writelevel
+   exe "w! ".vbname
+  else
+   exe "w ".vbname
   endif
 "  call Decho("Vimball<".vbname."> created")
   echo "Vimball<".vbname."> created"
@@ -205,8 +203,10 @@ fun! vimball#Vimball(really)
 "   call Decho("rega<".@a.">")
 
    " write tab to file
-"   call Decho("exe w! ".fname)
-   exe "silent w! ".fname
+   if a:really
+"    call Decho("exe w! ".fname)
+    exe "silent w! ".fname
+   endif
 
 "   call Decho("exe tabn ".curtabnr)
    exe "tabn ".curtabnr
@@ -224,7 +224,7 @@ fun! vimball#Vimball(really)
   endif
 
   " make sure a "Press ENTER..." prompt appears to keep the messages showing!
-  while filecnt < &ch
+  while filecnt <= &ch
    echomsg " "
    let filecnt= filecnt + 1
   endwhile
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1088,6 +1088,7 @@ The commands are sorted on the non-optio
 |:cexpr|	:cex[pr]	read errors from expr and jump to first
 |:cfile|	:cf[ile]	read file with error messages and jump to first
 |:cfirst|	:cfir[st]	go to the specified error, default first one
+|:cgetexpr|	:cgete[xpr]	get errors from expr
 |:cgetfile|	:cg[etfile]	read file with error messages
 |:changes|	:cha[nges]	print the change list
 |:chdir|	:chd[ir]	change directory
@@ -1241,6 +1242,7 @@ The commands are sorted on the non-optio
 |:lexpr|	:lex[pr]	read locations from expr and jump to first
 |:lfile|	:lf[ile]	read file with locations and jump to first
 |:lfirst|	:lfir[st]	go to the specified location, default first one
+|:lgetexpr|	:lgete[xpr]	get locations from expr
 |:lgetfile|	:lg[etfile]	read file with locations
 |:lgrep|	:lgr[ep]	run 'grepprg' and jump to first match
 |:lgrepadd|	:lgrepa[dd]	like :grep, but append to current list
--- a/src/config.aap.in
+++ b/src/config.aap.in
@@ -80,6 +80,8 @@ COMPILEDBY	= @compiledby@
 
 INSTALLVIMDIFF	= @dovimdiff@
 INSTALLGVIMDIFF	= @dogvimdiff@
+INSTALL_LANGS	= @INSTALL_LANGS@
+INSTALL_TOOL_LANGS	= @INSTALL_TOOL_LANGS@
 
 ### Line break character as octal number for "tr"
 NL		= @line_break@
@@ -108,8 +110,6 @@ MOTIF_LIBNAME	= @MOTIF_LIBNAME@
 GUI_INC_LOC	= @GUI_INC_LOC@
 GUI_LIB_LOC	= @GUI_LIB_LOC@
 GUI_X_LIBS	= @GUI_X_LIBS@
-KDE_PREFIX	= @KDE_PREFIX@
-MOC             = @MOC@
 
 ### Any OS dependent extra source and object file
 OS_EXTRA_SRC	= @OS_EXTRA_SRC@
--- a/src/main.aap
+++ b/src/main.aap
@@ -10,6 +10,8 @@
 #                       Can be specified when installing only.
 #                       Example: aap install PREFIX=$HOME
 #
+@if os.name != "posix":
+    :error Sorry, this recipe only works for Unix-like systems.
 
 # Skip the configure stuff when "link.sh" is executing this recipe recursively
 # to build pathdef.c or not building something and auto/config.aap does exist.
@@ -49,11 +51,14 @@
 
     # Dependency: run configure.aap to update config.h and config.aap in the
     # "auto" directory.
+    # NOTE: we can only build for one architecture, because -MM doesn't work
+    # when building for both.
     config {virtual} auto/config.h auto/config.aap :
                          auto/configure.aap configure.aap
                          config.arg config.h.in config.aap.in
         :sys CONFIG_STATUS=auto/config.status
                 ./configure.aap `file2string("config.arg")`
+                    --with-mac-arch=ppc
                     --cache-file=auto/config.cache
 
     # Configure arguments: create an empty "config.arg" file when its missing
@@ -79,12 +84,41 @@
     CPPFLAGS = `string.replace(_no.CPPFLAGS, "-arch i386 -arch ppc", "-arch ppc")`
 
 # A "PREFIX=dir" argument overrules the value of $prefix
-@if _no.get("PREFIX"):
+# But don't use the default "/usr/local".
+@if _no.get("PREFIX") and _no.get("PREFIX") != '/usr/local':
     prefix = $PREFIX
 
 # Don't want "~/" in prefix.
 prefix = `os.path.expanduser(prefix)`
 
+# For Mac.
+APPDIR = $(VIMNAME).app
+
+### Names of the programs and targets
+VIMTARGET       = $VIMNAME$EXESUF
+EXTARGET        = $EXNAME$LNKSUF
+VIEWTARGET      = $VIEWNAME$LNKSUF
+GVIMNAME        = g$VIMNAME
+GVIMTARGET      = $GVIMNAME$LNKSUF
+GVIEWNAME       = g$VIEWNAME
+GVIEWTARGET     = $GVIEWNAME$LNKSUF
+RVIMNAME        = r$VIMNAME
+RVIMTARGET      = $RVIMNAME$LNKSUF
+RVIEWNAME       = r$VIEWNAME
+RVIEWTARGET     = $RVIEWNAME$LNKSUF
+RGVIMNAME       = r$GVIMNAME
+RGVIMTARGET     = $RGVIMNAME$LNKSUF
+RGVIEWNAME      = r$GVIEWNAME
+RGVIEWTARGET    = $RGVIEWNAME$LNKSUF
+VIMDIFFNAME     = $(VIMNAME)diff
+GVIMDIFFNAME    = g$VIMDIFFNAME
+VIMDIFFTARGET   = $VIMDIFFNAME$LNKSUF
+GVIMDIFFTARGET  = $GVIMDIFFNAME$LNKSUF
+EVIMNAME        = e$VIMNAME
+EVIMTARGET      = $EVIMNAME$LNKSUF
+EVIEWNAME       = e$VIEWNAME
+EVIEWTARGET     = $EVIEWNAME$LNKSUF
+
 #
 # G U I  variant
 #
@@ -100,9 +134,12 @@ prefix = `os.path.expanduser(prefix)`
         GUI_LIBS_DIR    = $GUI_LIB_LOC
         GUI_LIBS1       =
         GUI_LIBS2       = $GTK_LIBNAME
+        GUI_INSTALL     = install_normal
         GUI_TARGETS     = installglinks
-        GUI_MAN_TARGETS = installghelplinks
+        GUI_MAN_TARGETS = yes
         GUI_TESTTARGET  = gui
+        GUI_BUNDLE      =
+        GUI_TESTARG     =
     MOTIF
         GUI_SRC         = gui.c gui_motif.c gui_x11.c pty.c gui_beval.c
                           gui_xmdlg.c gui_xmebw.c
@@ -112,9 +149,12 @@ prefix = `os.path.expanduser(prefix)`
         GUI_LIBS_DIR    = $GUI_LIB_LOC
         GUI_LIBS1       =
         GUI_LIBS2       = $MOTIF_LIBNAME -lXt
+        GUI_INSTALL     = install_normal
         GUI_TARGETS     = installglinks
-        GUI_MAN_TARGETS = installghelplinks
+        GUI_MAN_TARGETS = yes
         GUI_TESTTARGET  = gui
+        GUI_BUNDLE      =
+        GUI_TESTARG     =
     ATHENA
         # XAW_LIB et al. can be overruled to use Xaw3d widgets
         XAW_LIB         ?= -lXaw
@@ -126,9 +166,12 @@ prefix = `os.path.expanduser(prefix)`
         GUI_LIBS_DIR    = $GUI_LIB_LOC
         GUI_LIBS1       = $XAW_LIB
         GUI_LIBS2       = -lXt
+        GUI_INSTALL     = install_normal
         GUI_TARGETS     = installglinks
-        GUI_MAN_TARGETS = installghelplinks
+        GUI_MAN_TARGETS = yes
         GUI_TESTTARGET  = gui
+        GUI_BUNDLE      =
+        GUI_TESTARG     =
     NEXTAW
         # XAW_LIB et al. can be overruled to use Xaw3d widgets
         XAW_LIB         ?= -lXaw
@@ -140,9 +183,27 @@ prefix = `os.path.expanduser(prefix)`
         GUI_LIBS_DIR    = $GUI_LIB_LOC
         GUI_LIBS1       = $NEXTAW_LIB
         GUI_LIBS2       = -lXt
+        GUI_INSTALL     = install_normal
         GUI_TARGETS     = installglinks
-        GUI_MAN_TARGETS = installghelplinks
+        GUI_MAN_TARGETS = yes
         GUI_TESTTARGET  = gui
+        GUI_BUNDLE      =
+        GUI_TESTARG     =
+    CARBONGUI
+        GUI_SRC         =  gui.c gui_mac.c pty.c
+        GUI_OBJ         =
+        GUI_DEFS        = -DFEAT_GUI_MAC -fno-common -fpascal-strings \
+                            -Wall -Wno-unknown-pragmas -mdynamic-no-pic -pipe
+        GUI_IPATH       = $GUI_INC_LOC
+        GUI_LIBS_DIR    = $GUI_LIB_LOC
+        GUI_LIBS1       = -framework Carbon
+        GUI_LIBS2       =
+        GUI_INSTALL     = install_macosx
+        GUI_TARGETS     = installglinks
+        GUI_MAN_TARGETS = yes
+        GUI_TESTTARGET  = gui
+        GUI_BUNDLE      = gui_bundle
+        GUI_TESTARG     = VIMPROG=../$(APPDIR)/Contents/MacOS/$(VIMTARGET)
     PHOTONGUI
         GUI_SRC         = gui.c gui_photon.c pty.c
         GUI_OBJ         =
@@ -151,9 +212,12 @@ prefix = `os.path.expanduser(prefix)`
         GUI_LIBS_DIR    =
         GUI_LIBS1       = -lph -lphexlib
         GUI_LIBS2       =
+        GUI_INSTALL     = install_normal
         GUI_TARGETS     = installglinks
-        GUI_MAN_TARGETS = installghelplinks
+        GUI_MAN_TARGETS = yes
         GUI_TESTTARGET  = gui
+        GUI_BUNDLE      =
+        GUI_TESTARG     =
     *
         GUI_SRC         =
         GUI_OBJ         =
@@ -162,9 +226,12 @@ prefix = `os.path.expanduser(prefix)`
         GUI_LIBS_DIR    =
         GUI_LIBS1       =
         GUI_LIBS2       =
+        GUI_INSTALL     = install_normal
         GUI_TARGETS     =
         GUI_MAN_TARGETS =
         GUI_TESTTARGET  =
+        GUI_BUNDLE      =
+        GUI_TESTARG     =
 
 
 PRE_DEFS = -Iproto -I. $DEFS $GUI_DEFS $GUI_IPATH $CPPFLAGS $?(EXTRA_IPATHS)
@@ -181,6 +248,10 @@ Target = $VIMNAME
 # reconfig target also builds Vim (reconfiguration is handled above).
 reconfig {virtual}: $Target
 
+distclean: clean
+    :del {force} auto/config.h auto/config.aap
+    :del {force} auto/config.cache auto/config.status
+
 
 # Execute the test scripts.  Run these after compiling Vim, before installing.
 #
@@ -192,7 +263,7 @@ reconfig {virtual}: $Target
 #
 test check:
     VimProg = ../$Target
-    :execute testdir/main.aap $GUI_TESTTARGET
+    :execute testdir/main.aap $GUI_TESTTARGET $GUI_TESTARG
 
 testclean {virtual}:
     :del {force} testdir/*.out testdir/test.log
@@ -273,7 +344,7 @@ Objects =
 # TODO: make is still used for subdirectories, need to write a recipe.
 MAKE ?= make
 
-all: $Target
+all: $Target $GUI_BUNDLE
 
 # This dependency is required to build auto/osdef.h before automatic
 # dependencies are generated.
@@ -371,31 +442,6 @@ auto/pathdef.c: auto/config.aap
         :print >> $target char_u *compiled_sys = (char_u *)"$where";
 
 
-### Names of the programs and targets
-VIMTARGET       = $VIMNAME$EXESUF
-EXTARGET        = $EXNAME$LNKSUF
-VIEWTARGET      = $VIEWNAME$LNKSUF
-GVIMNAME        = g$VIMNAME
-GVIMTARGET      = $GVIMNAME$LNKSUF
-GVIEWNAME       = g$VIEWNAME
-GVIEWTARGET     = $GVIEWNAME$LNKSUF
-RVIMNAME        = r$VIMNAME
-RVIMTARGET      = $RVIMNAME$LNKSUF
-RVIEWNAME       = r$VIEWNAME
-RVIEWTARGET     = $RVIEWNAME$LNKSUF
-RGVIMNAME       = r$GVIMNAME
-RGVIMTARGET     = $RGVIMNAME$LNKSUF
-RGVIEWNAME      = r$GVIEWNAME
-RGVIEWTARGET    = $RGVIEWNAME$LNKSUF
-VIMDIFFNAME     = $(VIMNAME)diff
-GVIMDIFFNAME    = g$VIMDIFFNAME
-VIMDIFFTARGET   = $VIMDIFFNAME$LNKSUF
-GVIMDIFFTARGET  = $GVIMDIFFNAME$LNKSUF
-EVIMNAME        = e$VIMNAME
-EVIMTARGET      = $EVIMNAME$LNKSUF
-EVIEWNAME       = e$VIEWNAME
-EVIEWTARGET     = $EVIEWNAME$LNKSUF
-
 ### Names of the tools that are also made
 TOOLS = xxd/xxd$EXESUF
 
@@ -403,8 +449,8 @@ TOOLS = xxd/xxd$EXESUF
 # existing path to install into a special place (for generating a package).
 DESTDIR ?=
 
-### Location of man pages
-MANSUBDIR = $MANDIR/man1
+### Location of man pages under $MANTOPDIR
+MAN1DIR = /man1
 
 ### Location of Vim files (should not need to be changed, and
 ### some things might not work when they are changed!)
@@ -424,6 +470,7 @@ KMAPSUBDIR = /keymap
 MACROSUBDIR = /macros
 TOOLSSUBDIR = /tools
 TUTORSUBDIR = /tutor
+SPELLSUBDIR = /spell
 PRINTSUBDIR = /print
 PODIR = po
 
@@ -449,7 +496,8 @@ PODIR = po
 ### You can override these if you want to install them somewhere else.
 ### Edit feature.h for compile-time settings.
 VIMLOC          = $DATADIR$VIMDIR
-VIMRTLOC        = $DATADIR$VIMDIR$VIMRTDIR
+@if not _no.get("VIMRTLOC"):
+    VIMRTLOC        = $DATADIR$VIMDIR$VIMRTDIR
 VIMRCLOC        = $VIMLOC
 HELPSUBLOC      = $VIMRTLOC$HELPSUBDIR
 COLSUBLOC       = $VIMRTLOC$COLSUBDIR
@@ -464,6 +512,7 @@ KMAPSUBLOC      = $VIMRTLOC$KMAPSUBDIR
 MACROSUBLOC     = $VIMRTLOC$MACROSUBDIR
 TOOLSSUBLOC     = $VIMRTLOC$TOOLSSUBDIR
 TUTORSUBLOC     = $VIMRTLOC$TUTORSUBDIR
+SPELLSUBLOC	= $VIMRTLOC$SPELLSUBDIR
 PRINTSUBLOC     = $VIMRTLOC$PRINTSUBDIR
 SCRIPTLOC       = $VIMRTLOC
 
@@ -561,6 +610,9 @@ TOOLSSOURCE = ../runtime/tools
 # Where to copy the tutor files from
 TUTORSOURCE = ../runtime/tutor
 
+# Where to copy the spell files from
+SPELLSOURCE = ../runtime/spell
+
 # Where to look for language specific files
 LANGSOURCE = ../runtime/lang
 
@@ -590,20 +642,39 @@ DEST_KMAP = $DESTDIR$KMAPSUBLOC
 DEST_MACRO = $DESTDIR$MACROSUBLOC
 DEST_TOOLS = $DESTDIR$TOOLSSUBLOC
 DEST_TUTOR = $DESTDIR$TUTORSUBLOC
+DEST_SPELL = $DESTDIR$SPELLSUBLOC
 DEST_SCRIPT = $DESTDIR$SCRIPTLOC
 DEST_PRINT = $DESTDIR$PRINTSUBLOC
-DEST_MAN = $DESTDIR$MANSUBDIR
+DEST_MAN_TOP = $DESTDIR$?(MANDIR)
+
+# We assume that the ".../man/xx/man1/" directory is for latin1 manual pages.
+# Some systems use UTF-8, but these should find the ".../man/xx.UTF-8/man1/"
+# directory first.
+# FreeBSD uses ".../man/xx.ISO8859-1/man1" for latin1, use that one too.
+DEST_MAN = $(DEST_MAN_TOP)$(MAN1DIR)
+DEST_MAN_FR = $(DEST_MAN_TOP)/fr$(MAN1DIR)
+DEST_MAN_FR_I = $(DEST_MAN_TOP)/fr.ISO8859-1$(MAN1DIR)
+DEST_MAN_FR_U = $(DEST_MAN_TOP)/fr.UTF-8$(MAN1DIR)
+DEST_MAN_IT = $(DEST_MAN_TOP)/it$(MAN1DIR)
+DEST_MAN_IT_I = $(DEST_MAN_TOP)/it.ISO8859-1$(MAN1DIR)
+DEST_MAN_IT_U = $(DEST_MAN_TOP)/it.UTF-8$(MAN1DIR)
+DEST_MAN_RU = $(DEST_MAN_TOP)/ru.KOI8-R$(MAN1DIR)
+DEST_MAN_RU_U = $(DEST_MAN_TOP)/ru.UTF-8$(MAN1DIR)
 
 # These are directories, create them when needed.
 :attr {directory = $DIRMOD} $DEST_BIN $DEST_VIM $DEST_RT $DEST_HELP $DEST_COL
                 $DEST_SYN $DEST_IND $DEST_AUTO $DEST_PLUG $DEST_FTP $DEST_LANG
                 $DEST_COMP $DEST_KMAP $DEST_MACRO $DEST_TOOLS $DEST_TUTOR
-                $DEST_SCRIPT $DEST_PRINT $DEST_MAN
+                $DEST_SCRIPT $DEST_PRINT $DEST_MAN $DEST_SPELL
+                $DEST_MAN_FR $DEST_MAN_FR_I $DEST_MAN_FR_U $DEST_MAN_IT
+                $DEST_MAN_IT_I $DEST_MAN_IT_U $DEST_MAN_RU $DEST_MAN_RU_U
 
 #
 # I N S T A L L
 #
-install:
+install: $GUI_INSTALL
+
+install_normal:
     @if not os.path.isdir(_no.DEST_BIN):
         @try:
             :mkdir $DEST_BIN
@@ -611,7 +682,7 @@ install:
         @   pass
     @if os.access(_no.DEST_BIN, os.W_OK):
         # Bin directory is writable, install directly.
-        :update installvim installtools install-languages install-icons
+        :update installvim installtools $INSTALL_LANGS install-icons
     @else:
         # Bin directory is not writable, need to become root.
         :print The destination directory "$DEST_BIN" is not writable.
@@ -619,8 +690,8 @@ install:
         :print Otherwise, type the root password to continue installing.
         :asroot $AAP install
 
-installvim {virtual}: installvimbin installruntime installlinks \
-                        installhelplinks installmacros installtutor
+installvim {virtual}: installvimbin  installtutorbin \
+                        installruntime installlinks installmanlinks
 
 installvimbin {virtual}{force}: $Target $DEST_BIN
         exe = $DEST_BIN/$VIMTARGET
@@ -636,53 +707,20 @@ installvimbin {virtual}{force}: $Target 
         @if _no.get("LINKIT"):
             :sys $LINKIT
 
+# Long list of arguments for the shell script that installs the manual pages
+# for one language.
+INSTALLMANARGS = $(VIMLOC) $(SCRIPTLOC) $(VIMRCLOC) $(HELPSOURCE) $(MANMOD) \
+		$(VIMNAME) $(VIMDIFFNAME) $(EVIMNAME)
+
+# Install most of the runtime files
+installruntime {virtual}: installrtbase installmacros installtutor installspell
+
 # install the help files; first adjust the contents for the location
-installruntime {virtual}{force}: $HELPSOURCE/vim.1 $DEST_MAN $DEST_VIM
+installrtbase {virtual}{force}: $HELPSOURCE/vim.1 $DEST_VIM
                 $DEST_RT $DEST_HELP $DEST_COL $DEST_SYN $DEST_IND
                 $DEST_FTP $DEST_AUTO $DEST_PLUG $DEST_TUTOR $DEST_COMP
-                $DEST_PRINT
-        :print generating $DEST_MAN/$(VIMNAME).1
-        :cat $HELPSOURCE/vim.1 |
-                :eval re.sub("/usr/local/lib/vim", _no.VIMLOC, stdin) |
-                :eval re.sub(_no.VIMLOC + "/doc", _no.HELPSUBLOC, stdin) |
-                :eval re.sub(_no.VIMLOC + "/syntax", _no.SYNSUBLOC, stdin) |
-                :eval re.sub(_no.VIMLOC + "/tutor", _no.TUTORSUBLOC, stdin) |
-                :eval re.sub(_no.VIMLOC + "/vimrc",
-                                               _no.VIMRCLOC + "/vimrc", stdin) |
-                :eval re.sub(_no.VIMLOC + "/gvimrc",
-                                              _no.VIMRCLOC + "/gvimrc", stdin) |
-                :eval re.sub(_no.VIMLOC + "/menu.vim",
-                                           _no.SCRIPTLOC + "/menu.vim", stdin) |
-                :eval re.sub(_no.VIMLOC + "/bugreport.vim",
-                                      _no.SCRIPTLOC + "/bugreport.vim", stdin) |
-                :eval re.sub(_no.VIMLOC + "/filetype.vim",
-                                       _no.SCRIPTLOC + "/filetype.vim", stdin) |
-                :eval re.sub(_no.VIMLOC + "/ftoff.vim",
-                                          _no.SCRIPTLOC + "/ftoff.vim", stdin) |
-                :eval re.sub(_no.VIMLOC + "/scripts.vim",
-                                        _no.SCRIPTLOC + "/scripts.vim", stdin) |
-                :eval re.sub(_no.VIMLOC + "/optwin.vim",
-                                         _no.SCRIPTLOC + "/optwin.vim", stdin) |
-                :eval re.sub(_no.VIMLOC + "/\\*.ps",
-                                                 _no.SCRIPTLOC + "/*.ps", stdin)
-                >! $DEST_MAN/$(VIMNAME).1
-        :chmod $MANMOD $DEST_MAN/$(VIMNAME).1
-
-        :print generating $DEST_MAN/$(VIMNAME)tutor.1
-        :cat $HELPSOURCE/vimtutor.1 |
-                :eval re.sub("/usr/local/lib/vim", _no.VIMLOC, stdin) |
-                :eval re.sub(_no.VIMLOC + "/tutor", _no.TUTORSUBLOC, stdin)
-                >! $DEST_MAN/$(VIMNAME)tutor.1
-        :chmod $MANMOD $DEST_MAN/$(VIMNAME)tutor.1
-
-        :copy $HELPSOURCE/vimdiff.1 $DEST_MAN/$(VIMDIFFNAME).1
-        :chmod $MANMOD $DEST_MAN/$(VIMDIFFNAME).1
-
-        :print generating $DEST_MAN/$(EVIMNAME).1
-        :cat $HELPSOURCE/evim.1 |
-                :eval re.sub("/usr/local/lib/vim", _no.SCRIPTLOC, stdin)
-                >! $DEST_MAN/$(EVIMNAME).1
-        :chmod $MANMOD $DEST_MAN/$(EVIMNAME).1
+                $DEST_SPELL $DEST_PRINT
+        :sys ./installman.sh install $(DEST_MAN) "" $(INSTALLMANARGS)
 
         :cd $HELPSOURCE
         @try:
@@ -781,15 +819,31 @@ installmacros {virtual}{force}: $MACROSO
         :chmod $SCRIPTMOD $DEST_MACRO/less.sh
 
 # install the tutor files
-installtutor {virtual}{force}: $TUTORSOURCE $DEST_VIM $DEST_RT $DEST_TUTOR
+installtutorbin {virtual}{force}: $DEST_VIM
         :copy vimtutor $DEST_BIN/$(VIMNAME)tutor
         :chmod $SCRIPTMOD $DEST_BIN/$(VIMNAME)tutor
+
+installtutor {virtual}{force}: $DEST_RT $DEST_TUTOR
         :copy $TUTORSOURCE/tutor* $TUTORSOURCE/README* $DEST_TUTOR
         :chmod $HELPMOD $DEST_TUTOR/*
 
+# Install the spell files, if they exist.  This assumes at least the English
+# spell file is there.
+installspell {virtual}: $(DEST_VIM) $(DEST_RT) $(DEST_SPELL)
+	enspl = $(SPELLSOURCE)/en.latin1.spl
+        @if os.path.exists(enspl):
+            :copy $(SPELLSOURCE)/*.spl $(SPELLSOURCE)/*.vim $(DEST_SPELL)
+            :chmod $(HELPMOD) $(DEST_SPELL)/*.spl $(DEST_SPELL)/*.vim
+            @try:
+                :copy $(SPELLSOURCE)/*.sug $(DEST_SPELL)
+                :chmod $(HELPMOD) $(DEST_SPELL)/*.sug
+            @except:
+            @   pass
+
 # install helper program xxd
 installtools {virtual}{force}: $TOOLS $DEST_BIN $DEST_MAN \
-                $TOOLSSOURCE $DEST_VIM $DEST_RT $DEST_TOOLS
+                $TOOLSSOURCE $DEST_VIM $DEST_RT $DEST_TOOLS \
+                $INSTALL_TOOL_LANGS
         xxd = $DEST_BIN/xxd$EXESUF
         @if os.path.exists(xxd):
           :move {force} $xxd $(xxd).rm
@@ -797,8 +851,8 @@ installtools {virtual}{force}: $TOOLS $D
         :copy xxd/xxd$EXESUF $DEST_BIN
         :do strip $DEST_BIN/xxd$EXESUF
         :chmod $BINMOD $DEST_BIN/xxd$EXESUF
-        :copy $HELPSOURCE/xxd.1 $DEST_MAN
-        :chmod $MANMOD $DEST_MAN/xxd.1
+        :sys ./installman.sh xxd $(DEST_MAN) "" $(INSTALLMANARGS)
+#
 # install the runtime tools
         @try:
         @  if aap_has(":tree"):
@@ -831,8 +885,44 @@ installtools {virtual}{force}: $TOOLS $D
 
         :sys chmod $SCRIPTMOD ``grep -l "^#!" $DEST_TOOLS/*``
 
+# install the language specific files for tools, if they were unpacked
+install-tool-languages:
+        :sys ./installman.sh xxd $(DEST_MAN_FR) "-fr" $(INSTALLMANARGS)
+	:sys ./installman.sh xxd $(DEST_MAN_FR_I) "-fr" $(INSTALLMANARGS)
+	:sys ./installman.sh xxd $(DEST_MAN_FR_U) "-fr.UTF-8" $(INSTALLMANARGS)
+	:sys ./installman.sh xxd $(DEST_MAN_IT) "-it" $(INSTALLMANARGS)
+	:sys ./installman.sh xxd $(DEST_MAN_IT_I) "-it" $(INSTALLMANARGS)
+	:sys ./installman.sh xxd $(DEST_MAN_IT_U) "-it.UTF-8" $(INSTALLMANARGS)
+	:sys ./installman.sh xxd $(DEST_MAN_RU) "-ru" $(INSTALLMANARGS)
+	:sys ./installman.sh xxd $(DEST_MAN_RU_U) "-ru.UTF-8" $(INSTALLMANARGS)
+
 # install the language specific files, if they were unpacked
 install-languages {virtual}{force}: languages $DEST_LANG $DEST_KMAP
+        :sys ./installman.sh install $(DEST_MAN_FR) "-fr" $(INSTALLMANARGS)
+	:sys ./installman.sh install $(DEST_MAN_FR_I) "-fr" $(INSTALLMANARGS)
+	:sys ./installman.sh install $(DEST_MAN_FR_U) "-fr.UTF-8" $(INSTALLMANARGS)
+	:sys ./installman.sh install $(DEST_MAN_IT) "-it" $(INSTALLMANARGS)
+	:sys ./installman.sh install $(DEST_MAN_IT_I) "-it" $(INSTALLMANARGS)
+	:sys ./installman.sh install $(DEST_MAN_IT_U) "-it.UTF-8" $(INSTALLMANARGS)
+	:sys ./installman.sh install $(DEST_MAN_RU) "-ru" $(INSTALLMANARGS)
+	:sys ./installman.sh install $(DEST_MAN_RU_U) "-ru.UTF-8" $(INSTALLMANARGS)
+	:sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_FR) $(INSTALLMLARGS)
+        :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_FR_I) $(INSTALLMLARGS)
+        :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_FR_U) $(INSTALLMLARGS)
+        :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_IT) $(INSTALLMLARGS)
+        :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_IT_I) $(INSTALLMLARGS)
+        :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_IT_U) $(INSTALLMLARGS)
+        :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_RU) $(INSTALLMLARGS)
+        :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN_RU_U) $(INSTALLMLARGS)
+
         @if _no.MAKEMO:
            :sys cd $PODIR; $MAKE prefix=$DESTDIR$prefix \
                     LOCALEDIR=$DEST_LANG INSTALL_DATA=cp FILEMOD=$FILEMOD install
@@ -926,73 +1016,64 @@ installgvimdiff {virtual}: $DEST_BIN/$GV
 
 # create links for the manual pages with various names to vim.  This is only
 # done when the links (or manpages with the same name) don't exist yet.
-installhelplinks {virtual}: $GUI_MAN_TARGETS \
-                        $DEST_MAN/$(EXNAME).1 \
-                        $DEST_MAN/$(VIEWNAME).1 \
-                        $DEST_MAN/$(RVIMNAME).1 \
-                        $DEST_MAN/$(RVIEWNAME).1
-
-installghelplinks {virtual}: $DEST_MAN/$(GVIMNAME).1 \
-                        $DEST_MAN/$(GVIEWNAME).1 \
-                        $DEST_MAN/$(RGVIMNAME).1 \
-                        $DEST_MAN/$(RGVIEWNAME).1 \
-                        $DEST_MAN/$(GVIMDIFFNAME).1 \
-                        $DEST_MAN/$(EVIEWNAME).1
-
-$DEST_MAN/$(EXNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(EXNAME).1
-
-$DEST_MAN/$(VIEWNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(VIEWNAME).1
+INSTALLMLARGS = $(VIMNAME) $(VIMDIFFNAME) $(EVIMNAME) \
+		$(EXNAME) $(VIEWNAME) $(RVIMNAME) $(RVIEWNAME) \
+		$(GVIMNAME) $(GVIEWNAME) $(RGVIMNAME) $(RGVIEWNAME) \
+		$(GVIMDIFFNAME) $(EVIEWNAME)
 
-$DEST_MAN/$(GVIMNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(GVIMNAME).1
-
-$DEST_MAN/$(GVIEWNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(GVIEWNAME).1
-
-$DEST_MAN/$(RVIMNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(RVIMNAME).1
-
-$DEST_MAN/$(RVIEWNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(RVIEWNAME).1
-
-$DEST_MAN/$(RGVIMNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(RGVIMNAME).1
-
-$DEST_MAN/$(RGVIEWNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMNAME).1 $(RGVIEWNAME).1
-
-$DEST_MAN/$(GVIMDIFFNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(VIMDIFFNAME).1 $(GVIMDIFFNAME).1
-
-$DEST_MAN/$(EVIEWNAME).1: {buildcheck = }
-    :sys cd $DEST_MAN; ln -s $(EVIMNAME).1 $(EVIEWNAME).1
+installmanlinks {virtual}:
+    :sys ./installml.sh install "$(GUI_MAN_TARGETS)" \
+		$(DEST_MAN) $(INSTALLMLARGS)
 
 #
 # U N I N S T A L L
 #
 uninstall {virtual}{force}: uninstall_runtime
     :del {force} $DEST_BIN/$VIMTARGET
-    :del {force} $DEST_MAN/$(VIMNAME).1 $DEST_MAN/$(VIMNAME)tutor.1
     :del {force} $DEST_BIN/vimtutor
-    :del {force} $DEST_BIN/xxd$EXESUF $DEST_MAN/xxd.1
     :del {force} $DEST_BIN/$EXTARGET $DEST_BIN/$VIEWTARGET
     :del {force} $DEST_BIN/$GVIMTARGET $DEST_BIN/$GVIEWTARGET
     :del {force} $DEST_BIN/$RVIMTARGET $DEST_BIN/$RVIEWTARGET
     :del {force} $DEST_BIN/$RGVIMTARGET $DEST_BIN/$RGVIEWTARGET
     :del {force} $DEST_BIN/$VIMDIFFTARGET $DEST_BIN/$GVIMDIFFTARGET
     :del {force} $DEST_BIN/$EVIMTARGET $DEST_BIN/$EVIEWTARGET
-    :del {force} $DEST_MAN/$(EXNAME).1 $DEST_MAN/$(VIEWNAME).1
-    :del {force} $DEST_MAN/$(GVIMNAME).1 $DEST_MAN/$(GVIEWNAME).1
-    :del {force} $DEST_MAN/$(RVIMNAME).1 $DEST_MAN/$(RVIEWNAME).1
-    :del {force} $DEST_MAN/$(RGVIMNAME).1 $DEST_MAN/$(RGVIEWNAME).1
-    :del {force} $DEST_MAN/$(VIMDIFFNAME).1 $DEST_MAN/$(GVIMDIFFNAME).1
-    :del {force} $DEST_MAN/$(EVIMNAME).1 $DEST_MAN/$(EVIEWNAME).1
+    :del {force} $DEST_BIN/xxd$EXESUF
 
 # Note: "deldir" will fail if any files were added after "make install", that
 # is intentionally: Keep files the user added.
 uninstall_runtime {virtual}{force}:
+    :sys ./installman.sh uninstall $(DEST_MAN) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_FR) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_FR_I) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_FR_U) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_IT) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_IT_I) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_IT_U) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_RU) "" $(INSTALLMANARGS)
+    :sys ./installman.sh uninstall $(DEST_MAN_RU_U) "" $(INSTALLMANARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_FR) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_FR_I) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_FR_U) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_IT) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_IT_I) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_IT_U) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_RU) $(INSTALLMLARGS)
+    :sys ./installml.sh uninstall "$(GUI_MAN_TARGETS)" \
+            $(DEST_MAN_RU_U) $(INSTALLMLARGS)
+    :del {force} $DEST_MAN/xxd.1
+    :del {force} $(DEST_MAN_FR)/xxd.1 $(DEST_MAN_FR_I)/xxd.1 $(DEST_MAN_FR_U)/xxd.1
+    :del {force} $(DEST_MAN_IT)/xxd.1 $(DEST_MAN_IT_I)/xxd.1 $(DEST_MAN_IT_U)/xxd.1
+    :del {force} $(DEST_MAN_RU)/xxd.1 $(DEST_MAN_RU_U)/xxd.1
+
     :del {force} $DEST_HELP/*.txt $DEST_HELP/tags $DEST_HELP/*.pl
     :del {force} $SYS_MENU_FILE $SYS_SYNMENU_FILE $SYS_DELMENU_FILE
     :del {force} $SYS_BUGR_FILE $EVIM_FILE $MSWIN_FILE
@@ -1007,6 +1088,7 @@ uninstall_runtime {virtual}{force}:
     :del {force} $DEST_PRINT/*.ps
     :del {force}{recursive} $DEST_MACRO
     :del {force}{recursive} $DEST_TUTOR
+    :del {force}{recursive} $DEST_SPELL
     :del {force}{recursive} $DEST_TOOLS
     :del {force}{recursive} $DEST_LANG
     :del {force}{recursive} $DEST_KMAP
@@ -1022,5 +1104,94 @@ uninstall_runtime {virtual}{force}:
     @except:
         :print Cannot delete $DEST_VIM
 
+###############################################################################
+### MacOS X installation
+###
+### This installs a runnable Vim.app in $(prefix)
+
+REZ    = /Developer/Tools/Rez
+RESDIR = $(APPDIR)/Contents/Resources
+@r = re.compile('.*VIM_VERSION_SHORT\\s*"(\\d[^"]*)".*', re.S)
+VERSION = /`r.match(open("version.h").read()).group(1)`
+ICON_APP = gui_mac.icns
+
+### Common flags
+M4FLAGSX = $?(M4FLAGS) -DAPP_EXE=$(VIMNAME) -DAPP_NAME=$(VIMNAME) \
+		-DAPP_VER=$(VERSION) -DICON_APP=$(ICON_APP)
+
+### Icons
+ICONS = $(RESDIR)/$(ICON_APP)
+
+:attr {directory = $DIRMOD} $RESDIR
+
+# If you uncomment the following lines the *.icns in the src directory will be
+# detected by this Makefile automatically, and used for Vim.
+#ICON_APP = $(shell if [ -e app.icns ] ; then echo app.icns ; else echo gui_mac.icns ; fi)
+#ICON_DOC = $(shell if [ -e doc.icns ] ; then echo doc.icns ; else echo ; fi)
+#ICON_DOCTXT = $(shell if [ -e doc-txt.icns ] ; then echo doc-txt.icns ; else echo ; fi)
+#ICONS = $(addprefix $(RESDIR)/, $(ICON_APP) $(ICON_DOC) $(ICON_DOCTXT))
+
+install_macosx {virtual}: gui_bundle
+# Remove the link to the runtime dir, don't want to copy all of that.
+        :delete {force} $(RESDIR)/vim/runtime
+        :copy {r} $APPDIR $DESTDIR$prefix
+        :tree $DESTDIR$prefix {dirname = AAPDIR}
+             :delete {recursive} $name
+# Install the runtime files.  Recursive!
+	:mkdir {r}{f} $DESTDIR$prefix/$RESDIR/vim/runtime
+#	:mkdir $(DESTDIR)$(prefix)/$(APPDIR)/bin
+        :execute main.aap PREFIX=$DESTDIR$prefix/$RESDIR/vim VIMRTLOC=$DESTDIR$prefix/$RESDIR/vim/runtime installruntime
+# Put the link back.
+        :symlink `os.getcwd()`/../runtime $RESDIR/vim/runtime
+# TODO: Create the vimtutor application.
+
+gui_bundle {virtual}: $(RESDIR) bundle-dir bundle-executable bundle-info \
+                        bundle-resource bundle-language
+
+bundle-dir {virtual}: $(APPDIR)/Contents $(VIMTARGET)
+# Make a link to the runtime directory, so that we can try out the executable
+# without installing it.
+        :mkdir {r}{f} $(RESDIR)/vim
+        :symlink {quiet} `os.getcwd()`/../runtime $(RESDIR)/vim/runtime
+
+bundle-executable {virtual}: $(VIMTARGET)
+        :mkdir {r}{f} $(APPDIR)/Contents/MacOS
+        :copy $(VIMTARGET) $(APPDIR)/Contents/MacOS/$(VIMTARGET)
+
+bundle-info {virtual}:  bundle-dir
+        :print Creating PkgInfo
+        :print "APPLVIM!" >! $(APPDIR)/Contents/PkgInfo
+        :print Creating Info.plist
+        :sys m4 $(M4FLAGSX) infplist.xml > $(APPDIR)/Contents/Info.plist
+
+bundle-resource {virtual}: bundle-dir bundle-icons bundle-rsrc
+
+bundle-icons {virtual}: $ICONS
+
+### Classic resources
+# Resource fork (in the form of a .rsrc file) for Classic Vim (Mac OS 9)
+# This file is also required for OS X Vim.
+bundle-rsrc {virtual}: os_mac.rsr.hqx
+    :print Creating resource fork
+    :sys python dehqx.py $source
+    :del {force} gui_mac.rsrc
+    :move gui_mac.rsrc.rsrcfork $(RESDIR)/$(VIMNAME).rsrc
+
+# po/Make_osx.pl says something about generating a Mac message file
+# for Ukrananian.  Would somebody using Mac OS X in Ukranian
+# *really* be upset that Carbon Vim was not localised in
+# Ukranian?
+#
+#bundle-language: bundle-dir po/Make_osx.pl
+#	cd po && perl Make_osx.pl --outdir ../$(RESDIR) $(MULTILANG)
+bundle-language {virtual}: bundle-dir
+
+$(APPDIR)/Contents:
+    :mkdir {r} $(APPDIR)/Contents/MacOS
+    :mkdir {r} $(RESDIR)/English.lproj
+
+$ICONS: $ICON_APP
+    :copy $source $target
+
 
 # vim: sts=4 sw=4 :