]> granicus.if.org Git - vim/commitdiff
updated for version 7.0017 v7.0017
authorBram Moolenaar <Bram@vim.org>
Thu, 7 Oct 2004 21:02:47 +0000 (21:02 +0000)
committerBram Moolenaar <Bram@vim.org>
Thu, 7 Oct 2004 21:02:47 +0000 (21:02 +0000)
52 files changed:
runtime/doc/autocmd.txt
runtime/doc/change.txt
runtime/doc/digraph.txt
runtime/doc/eval.txt
runtime/doc/if_mzsch.txt
runtime/doc/options.txt
runtime/doc/pi_netrw.txt
runtime/doc/syntax.txt
runtime/doc/tags
runtime/doc/todo.txt
runtime/doc/usr_41.txt
runtime/doc/version7.txt
runtime/filetype.vim
runtime/indent/eiffel.vim
runtime/indent/java.vim
runtime/menu.vim
runtime/plugin/netrw.vim
runtime/scripts.vim
runtime/syntax/lss.vim
runtime/syntax/pccts.vim
runtime/syntax/pod.vim
runtime/syntax/samba.vim
runtime/syntax/scheme.vim
src/GvimExt/gvimext.cpp
src/Makefile
src/digraph.c
src/eval.c
src/fileio.c
src/globals.h
src/gui_gtk.c
src/gui_gtk_x11.c
src/gui_mac.c
src/gui_w32.c
src/gui_w48.c
src/mbyte.c
src/menu.c
src/os_mswin.c
src/os_w32exe.c
src/os_win32.c
src/proto/gui_kde.pro
src/proto/gui_kde_x11.pro
src/proto/mbyte.pro
src/proto/os_win32.pro
src/proto/syntax.pro
src/quickfix.c
src/screen.c
src/structs.h
src/syntax.c
src/testdir/test.ok [deleted file]
src/version.c
src/version.h
src/vim.h

index 14605e80f31227e26ae3744833127ebaaeab8675..eddfead8a0d409c8f1eef8281d233632acfc8a08 100644 (file)
@@ -1,4 +1,4 @@
-*autocmd.txt*   For Vim version 7.0aa.  Last change: 2004 Aug 30
+*autocmd.txt*   For Vim version 7.0aa.  Last change: 2004 Sep 17
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -234,22 +234,26 @@ BufWriteCmd                       Before writing the whole buffer to a file.
                                should not be changed.  |Cmd-event|
                                                        *FileWritePre*
 FileWritePre                   Before writing to a file, when not writing the
-                               whole buffer.
+                               whole buffer.  Use the '[ and '] marks for the
+                               range of lines.
                                                        *FileWritePost*
 FileWritePost                  After writing to a file, when not writing the
                                whole buffer.
                                                        *FileWriteCmd*
 FileWriteCmd                   Before writing to a file, when not writing the
                                whole buffer.  Should do the writing to the
-                               file.  Should not change the buffer.
+                               file.  Should not change the buffer.  Use the
+                               '[ and '] marks for the range of lines.
                                |Cmd-event|
                                                        *FileAppendPre*
-FileAppendPre                  Before appending to a file.
+FileAppendPre                  Before appending to a file.  Use the '[ and ']
+                               marks for the range of lines.
                                                        *FileAppendPost*
 FileAppendPost                 After appending to a file.
                                                        *FileAppendCmd*
 FileAppendCmd                  Before appending to a file.  Should do the
-                               appending to the file. |Cmd-event|
+                               appending to the file.  Use the '[ and ']
+                               marks for the range of lines.|Cmd-event|
                                                        *FilterWritePre*
 FilterWritePre                 Before writing a file for a filter command or
                                making a diff.
@@ -738,8 +742,9 @@ The '[ and '] marks have a special position:
   the new lines will be inserted.
 - Before the *ReadPost event the '[ mark is set to the first line that was
   just read, the '] mark to the last line.
-- Before executing the *WritePre and *AppendPre autocommands the '[ mark is
-  set to the first line that will be written, the '] mark to the last line.
+- Before executing the *WriteCmd, *WritePre and *AppendPre autocommands the '[
+  mark is set to the first line that will be written, the '] mark to the last
+  line.
 Careful: '[ and '] change when using commands that change the buffer.
 
 In commands which expect a file name, you can use "<afile>" for the file name
index 93c554f33d581e395e8880fcb1eae7cc0b83c2e3..48a16111d3b2d7db5fb2e3ae0cd2905d34a5deae 100644 (file)
@@ -1,4 +1,4 @@
-*change.txt*    For Vim version 7.0aa.  Last change: 2004 Jun 16
+*change.txt*    For Vim version 7.0aa.  Last change: 2004 Sep 16
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -659,7 +659,7 @@ magic       nomagic   action    ~
       \0         replaced with the whole matched pattern          *\0* *s/\0*
       \1         replaced with the matched pattern in the first
                  pair of ()                                         *s/\1*
-      \2         replaced with the matched pattern in the first
+      \2         replaced with the matched pattern in the second
                  pair of ()                                         *s/\2*
       ..         ..                                                 *s/\3*
       \9         replaced with the matched pattern in the ninth
index 529b30d2da047192a6e77dc57b1ad1d37c5055cc..ed4527175b8cced3ff9534a1489e701aaf3d27a0 100644 (file)
@@ -1,4 +1,4 @@
-*digraph.txt*   For Vim version 7.0aa.  Last change: 2001 Sep 03
+*digraph.txt*   For Vim version 7.0aa.  Last change: 2004 Oct 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -28,7 +28,8 @@ An alternative is using the 'keymap' option.
                                                        *E104* *E39*
 :dig[raphs] {char1}{char2} {number} ...
                        Add digraph {char1}{char2} to the list.  {number} is
-                       the decimal representation of the character.
+                       the decimal representation of the character.  Normally
+                       it is the Unicode character, see |digraph-encoding|.
                        Example: >
        :digr e: 235 a: 228
 <                      Avoid defining a digraph with '_' (underscore) as the
@@ -48,7 +49,24 @@ In the middle of each column is the resulting character.  This may be mangled
 if you look at it on a system that does not support digraphs or if you print
 this file.
 
-The decimal number is the number of the character.
+                                                       *digraph-encoding*
+The decimal number normally is the Unicode number of the character.  Note that
+the meaning doesn't change when 'encoding' changes.  The character will be
+converted from Unicode to 'encoding' when needed.  This does require the
+conversion to be available, it might fail.
+
+When Vim was compiled without the +multi_byte feature, you need to specify the
+character in the encoding given with 'encoding'.  You might want to use
+something like this: >
+
+       if has("multi_byte")
+               digraph oe 339
+       elseif &encoding == "iso-8859-15"
+               digraph oe 189
+       endif
+
+This defines the "oe" digraph for a character that is number 339 in Unicode
+and 189 in latin9 (iso-8859-15).
 
 ==============================================================================
 2. Using digraphs                                      *digraphs-use*
@@ -142,6 +160,9 @@ Example: a: is 
 These are the RFC1345 digraphs for the one-byte characters.  See the output of
 ":digraphs" for the others.  The characters above 255 are only available when
 Vim was compiled with the |+multi_byte| feature.
+
+Exception: RFC1345 doesn't specify the euro sign.  In Vim the digraph =e was
+added for this.
                                                        *digraph-table*
 char  digraph  hex     dec     official name ~
 ^@     NU      0x00      0     NULL (NUL)
index b85436287381c75c57f47c769578f002d79a53b7..f3ee1feaf4eea29024905c277ed74b0200f5fcc1 100644 (file)
@@ -1,4 +1,4 @@
-*eval.txt*      For Vim version 7.0aa.  Last change: 2004 Sep 13
+*eval.txt*      For Vim version 7.0aa.  Last change: 2004 Oct 06
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -125,8 +125,8 @@ Expression syntax summary, from least to most significant:
 |expr8|        expr9[expr1]            index in String
 
 |expr9|        number                  number constant
-       "string"                string constant
-       'string'                literal string constant
+       "string"                string constant, backslash is special
+       'string'                string constant
        &option                 option value
        (expr1)                 nested expression
        variable                internal variable
@@ -355,13 +355,18 @@ Note that "\000" and "\x00" force the end of the string.
 
 literal-string                                         *literal-string* *E115*
 ---------------
-'string'               literal string constant         *expr-'*
+'string'               string constant                 *expr-'*
 
 Note that single quotes are used.
 
-This string is taken literally.  No backslashes are removed or have a special
-meaning.  A literal-string cannot contain a single quote.  Use a normal string
-for that.
+This string is taken as it is.  No backslashes are removed or have a special
+meaning.  A literal-string cannot contain a single quote.  Use a normal,
+double-quoted string for that.
+
+Single quoted strings are useful for patterns, so that backslashes do not need
+to be doubled.  These two commands are equivalent: >
+       if a =~ "\\s*"
+       if a =~ '\s*'
 
 
 option                                         *expr-option* *E112* *E113*
index 269a0cede53aeb78af64dec8d59be2b063f6b48e..d31815a291118249cdcaa4a21f5d36d7f455a289 100644 (file)
@@ -79,9 +79,33 @@ All the examples below assume this naming scheme.  Note that you need to do
 this again for every buffer.
 
 The auto-instantiation can be achieved with autocommands, e.g. you can put
-something like this in your .vimrc: >
-    au VimEnter,BufNew,BufNewFile,BufAdd,BufReadPre *
-       \:mz (require (prefix vim- vimext)
+something like this in your .vimrc (EOFs should not have indentation): >
+    function s:MzRequire()
+       if has("mzscheme")
+           :mz << EOF
+           (require (prefix vim- vimext))
+           (let ((buf (vim-get-buff-by-name (vim-eval "expand(\"<afile>\")"))))
+             (when (and buf (not (eq? buf (vim-curr-buff))))
+               (parameterize ((current-namespace (vim-get-buff-namespace buf)))
+                 (namespace-attach-module vim-global-namespace 'vimext)
+                 (namespace-require '(prefix vim vimext)))))
+    EOF
+       endif
+    endfunction
+
+    function s:MzStartup()
+       if has("mzscheme")
+           au BufNew,BufNewFile,BufAdd,BufReadPre * :call s:MzRequire()
+           :mz << EOF
+           (current-library-collection-paths
+               (cons
+                   (build-path (find-system-path 'addon-dir) (version) "collects")
+                   (current-library-collection-paths)))
+    EOF
+       endif
+    endfunction
+
+    call s:MzStartup()
 <
 
 The global namespace just instantiated this module with the prefix "vimext:".
index 17201b457e5324ea73634f8b8bcfaf911846257f..4879a64b6952d9b9264b9657ec2e71cfaeba8f37 100644 (file)
@@ -1,4 +1,4 @@
-*options.txt*  For Vim version 7.0aa.  Last change: 2004 Sep 04
+*options.txt*  For Vim version 7.0aa.  Last change: 2004 Oct 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -954,6 +954,12 @@ A jump table for the options with a short description can be found at |Q_op|.
        prefer using ".bak", but make sure that you don't have files with
        ".bak" that you want to keep.
 
+       If you like to keep a lot of backups, you could use a BufWritePre
+       autocommand to change 'backupext' just before writing the file to
+       include a timestamp. >
+               :au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~'
+<      Use 'backupdir' to put the backup in a different directory.
+
                                                *'backupskip'* *'bsk'*
 'backupskip' 'bsk'     string  (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
                        global
index 991c9a4a05d175e10b7bd7947b7b87bf1d027e05..47d0d7e7eb63cf89df19311fb2560043d7254bad 100644 (file)
@@ -1,4 +1,4 @@
-*pi_netrw.txt  For Vim version 6.2.  Last change: Sep 10, 2004
+*pi_netrw.txt  For Vim version 6.2.  Last change: Sep 13, 2004
 
 
                VIM REFERENCE MANUAL    by Charles E. Campbell, Jr.
@@ -587,10 +587,14 @@ NETRW BROWSER VARIABLES                                   *netrw-browse-var*
                                        "directories" and "files" in the
                                        listing.  This pattern is used to
                                        remove such embedded messages.
-       g:netrw_keepdir                 keep current directory immune from the
-                                       browsing directory.  The browsing
-                                       directory is contained in b:netrw_curdir
+       g:netrw_keepdir                 =1 (default) keep current directory
+                                       immune from the browsing directory.
+                                       =0 keep the current directory the
+                                       same as the browsing directory.
+                                       The browsing directory is contained in
+                                       b:netrw_curdir
        g:netrw_list_cmd                command for listing remote directories
+       g:netrw_longlist                if =1, then long listing will be default
        g:netrw_ftp_list_cmd            options for passing along to ftp for
                                        directory listing.  Defaults:
                                         unix or g:netrw_cygwin set: : "ls -lF"
@@ -601,6 +605,12 @@ NETRW BROWSER VARIABLES                                    *netrw-browse-var*
        g:netrw_local_rmdir             remove directory command (rmdir)
        g:netrw_local_rename            rename file/directory command
                                        unix-default: rm    win32-default: ren
+       g:netrw_maxfilenamelen          =32 by default, selected so as to make
+                                       long listings fit on 80 column displays.
+                                       If your screen is wider, and you have
+                                       file/directory names longer than 32 bytes,
+                                       you may set this option to keep listings
+                                       columnar.
        g:netrw_mkdir_cmd               command for making a remote directory
        g:netrw_rm_cmd                  command for removing files
        g:netrw_rmdir_cmd               command for removing directories
@@ -825,22 +835,26 @@ See the <plugin/NetrwFileHandlers.vim> for an example of how to handle an html
 file with mozilla.
 
 
-MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY            *netrw-c*
+MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY    *netrw-c* *netrw-curdir*
 
-By default, g:netrw_keepdir is 0.  This setting means that the current
-directory will track the browsing directory.  However, setting g:netrw_keepdir
-to 1 (say, in your <.vimrc>) will keep the current directory independent
-of the browsing directory.  In that case, in order to make the two
-directories the same, use the "c" map (just type c).
+By default, g:netrw_keepdir is 1.  This setting means that the current
+directory will not track the browsing directory.  However, setting
+g:netrw_keepdir to 0 (say, in your <.vimrc>) will tell netrw to have the
+currently browsed directory be the current directory.
 
+With the default setting for g:netrw_keepdir, in order to make the two
+directories the same, use the "c" map (just type c).  That map will set
+the current directory to the current browsing directory.
 
-BOOKMARKING A DIRECTORY                                                *netrw-b*
+
+BOOKMARKING A DIRECTORY                *netrw-b* *netrw-bookmark* *netrw-bookmarks*
 
 One may easily "bookmark" a directory by using
 
        {cnt}b
 
-Any count may be used.
+Any count may be used.  One may use viminfo's "!" option to retain bookmarks
+between vim sessions.
 
 
 CHANGING TO A BOOKMARKED DIRECTORY                             *netrw-B*
@@ -913,7 +927,10 @@ the associated security issues.
 
        P4. I would like long listings to be the default.
 
-               let g:netrw_longlist=1
+                       let g:netrw_longlist=1
+
+               Check out |netrw-browse-var| for more customizations that
+               you can set.
 
        P5. My times come up oddly in local browsing
 
@@ -923,10 +940,10 @@ the associated security issues.
                your <.vimrc>:
                        let g:netrw_timefmt= "%X"  (where X is the option)
 
-       P6. I don't want my current directory changing just because I'm
-           browsing somewhere.
+       P6. I want my current directory to track my browsing.
+           How do I do that?
 
-               let g:netrw_keepdir= 1
+               let g:netrw_keepdir= 0
        
 
 ==============================================================================
@@ -979,60 +996,65 @@ which is loaded automatically at startup (assuming :set nocp).
 ==============================================================================
 10. History                                            *netrw-history*
 
-       v48: * One may use ftp to do remote host file browsing
+       v50: * directories now displayed using buftype=nofile; should keep the
+              directory names as-is
+            * attempts to remove empty "[No File]" buffers leftover
+              from :file ..name.. commands
+            * bugfix: a "caps-lock" editing difficulty left in v49 was fixed
+            * syntax highlighting for "Showing:" the hiding list included
+            * bookmarks can now be retained if "!" is in the viminfo option
+       v49: * will use ftp for http://.../ browsing v48: * One may use ftp to
+              do remote host file browsing
             * (windows and !cygwin) remote browsing with ftp can now use
               the "dir" command internally to provide listings
             * g:netrw_keepdir now allows one to keep the initial current
-              directory as the current directory (normally the local
-              file browser makes the currently viewed directory the
-              current directory)
+              directory as the current directory (normally the local file
+              browser makes the currently viewed directory the current
+              directory)
             * g:netrw_alto and g:netrw_altv now support alternate placement
               of windows started with o or v
             * Nread ? and Nwrite ?  now uses echomsg (instead of echo) so
               :messages can repeat showing the help
             * bugfix: avoids problems with partial matches of directory names
               to prior buffers with longer names
-            * one can suppress error messages with g:netrw_quiet
-            * ctrl-h used instead of <Leader>h for editing hiding list
-            * one may edit the sorting sequence with the S map
-            * now allows confirmation of deletion with [y(es) n(o) a(ll) q(uit)]
-            * the "x" map now handles special file viewing with:
-              (windows) rundll32 url.dll
-              (gnome)   gnome-open
-              (kde)     kfmclient
-              If none of these are on the executable path, then
+            * one can suppress error messages with g:netrw_quiet ctrl-h used
+            * instead of <Leader>h for editing hiding list one may edit the
+            * sorting sequence with the S map now allows confirmation of
+            * deletion with [y(es) n(o) a(ll) q(uit)] the "x" map now handles
+            * special file viewing with:
+              (windows) rundll32 url.dll (gnome)   gnome-open (kde)
+              kfmclient If none of these are on the executable path, then
               NetrwFileHandlers.vim is used.
             * directory bookmarking during both local and remote browsing
               implemented
             * one may view all, use the hiding list to suppress, or use the
-              hiding list to show-only remote and local file/directory listings
-            * improved unusual file and directory name handling
-            * preview window support
-       v47: * now handles local directory browsing.
-       v46: * now handles remote directory browsing
+              hiding list to show-only remote and local file/directory
+              listings
+            * improved unusual file and directory name handling preview
+            * window support
+       v47: * now handles local directory browsing.  v46: * now handles
+       remote directory browsing
             * g:netrw_silent (if 1) will cause all transfers to be silent'd
-       v45: * made the [user@]hostname:path form a bit more restrictive
-              to better handle errors in using protocols
-              (e.g. scp:usr@host:file was being recognized as an rcp request)
-       v44: * changed from "rsync -a" to just "rsync"
+       v45: * made the [user@]hostname:path form a bit more restrictive to
+              better handle errors in using protocols (e.g. scp:usr@host:file
+              was being recognized as an rcp request) v44: * changed from
+              "rsync -a" to just "rsync"
             * somehow an editing error messed up the test to recognize
               use of the fetch method for NetRead.
             * more debugging statements included
-       v43: * moved "Explanation" comments to <pi_netrw.txt> help file
-              as "Network Reference" (|netrw-ref|)
+       v43: * moved "Explanation" comments to <pi_netrw.txt> help file as
+              "Network Reference" (|netrw-ref|)
             * <netrw.vim> now uses Dfunc() Decho() and Dret() for debugging
             * removed superfluous NetRestorePosn() calls
-       v42: * now does BufReadPre and BufReadPost events on file:///*
-              and file://localhost/*
-       v41: * installed file:///* and file://localhost/* handling
-       v40: * prevents redraw when a protocol error occurs so that the
-              user may see it
-       v39: * sftp support
-       v38: * Now uses NetRestorePosn() calls with Nread/Nwrite commands
+       v42: * now does BufReadPre and BufReadPost events on file:///* and
+              file://localhost/* v41: * installed file:///* and
+              file://localhost/* handling v40: * prevents redraw when a
+              protocol error occurs so that the user may see it v39: * sftp
+              support v38: * Now uses NetRestorePosn() calls with
+              Nread/Nwrite commands
             * Temporary files now removed via bwipe! instead of bwipe
-              (thanks to Dave Roberts)
-       v37: * Claar's modifications which test if ftp is successful, otherwise
-              give an error message
+              (thanks to Dave Roberts) v37: * Claar's modifications which
+              test if ftp is successful, otherwise give an error message
             * After a read, the alternate file was pointing to the temp file.
               The temp file buffer is now wiped out.
             * removed silent from transfer methods so user can see what's
index 152728f5319838e5ce813ef24f7ba1e21138be33..6fe03f9dd105ecaff004401422fa5303b1c8cfa0 100644 (file)
@@ -1,4 +1,4 @@
-*syntax.txt*   For Vim version 7.0aa.  Last change: 2004 Sep 13
+*syntax.txt*   For Vim version 7.0aa.  Last change: 2004 Sep 18
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -1799,7 +1799,7 @@ If you do not want complex things like '@{${"foo"}}' to be parsed: >
 
        :let perl_no_extended_vars = 1
 
-{In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.)
+(In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.)
 
 The coloring strings can be changed. By default strings and qq friends will be
 highlighted like the first line. If you set the variable
index 98aa7aa2ea315ef773023473cce3a3d471d8e228..c46eeb65bcb4b322bfbd569bb420f43b5c713ce5 100644 (file)
@@ -3542,6 +3542,7 @@ E675      print.txt       /*E675*
 E676   options.txt     /*E676*
 E677   eval.txt        /*E677*
 E678   pattern.txt     /*E678*
+E679   syntax.txt      /*E679*
 E68    pattern.txt     /*E68*
 E69    pattern.txt     /*E69*
 E70    pattern.txt     /*E70*
@@ -4414,6 +4415,7 @@ diff-options      diff.txt        /*diff-options*
 diff-patchexpr diff.txt        /*diff-patchexpr*
 diff.txt       diff.txt        /*diff.txt*
 digraph-arg    change.txt      /*digraph-arg*
+digraph-encoding       digraph.txt     /*digraph-encoding*
 digraph-table  digraph.txt     /*digraph-table*
 digraph.txt    digraph.txt     /*digraph.txt*
 digraphs       digraph.txt     /*digraphs*
@@ -4920,7 +4922,6 @@ hebrew    hebrew.txt      /*hebrew*
 hebrew.txt     hebrew.txt      /*hebrew.txt*
 help   various.txt     /*help*
 help-context   help.txt        /*help-context*
-help-tags      tags    1
 help-translated        various.txt     /*help-translated*
 help-xterm-window      various.txt     /*help-xterm-window*
 help.txt       help.txt        /*help.txt*
@@ -5454,6 +5455,8 @@ netrw-R   pi_netrw.txt    /*netrw-R*
 netrw-S        pi_netrw.txt    /*netrw-S*
 netrw-activate pi_netrw.txt    /*netrw-activate*
 netrw-b        pi_netrw.txt    /*netrw-b*
+netrw-bookmark pi_netrw.txt    /*netrw-bookmark*
+netrw-bookmarks        pi_netrw.txt    /*netrw-bookmarks*
 netrw-browse   pi_netrw.txt    /*netrw-browse*
 netrw-browse-cmds      pi_netrw.txt    /*netrw-browse-cmds*
 netrw-browse-var       pi_netrw.txt    /*netrw-browse-var*
@@ -5463,6 +5466,7 @@ netrw-contents    pi_netrw.txt    /*netrw-contents*
 netrw-cr       pi_netrw.txt    /*netrw-cr*
 netrw-credits  pi_netrw.txt    /*netrw-credits*
 netrw-ctrl-l   pi_netrw.txt    /*netrw-ctrl-l*
+netrw-curdir   pi_netrw.txt    /*netrw-curdir*
 netrw-d        pi_netrw.txt    /*netrw-d*
 netrw-debug    pi_netrw.txt    /*netrw-debug*
 netrw-delete   pi_netrw.txt    /*netrw-delete*
index d4d0cdaa208087c9498a88a8c314cf941b36fb4c..7cb6dbad69cd4b59cc78eed393ca0affb247e1c9 100644 (file)
@@ -1,4 +1,4 @@
-*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Sep 13
+*todo.txt*      For Vim version 7.0aa.  Last change: 2004 Oct 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -30,18 +30,15 @@ be worked on, but only if you sponsor Vim development.  See |sponsor|.
                                                        *known-bugs*
 -------------------- Known bugs and current work -----------------------
 
-Endless loop when "syntax reset" in ~/.vim/after/syntax/syncolor.vim.
-Crash when using ":set background=dark".  Solved!
-Limit init_highlight() to five recursive calls?
-    patch for Vim 6.3 for free_oldval and init_highlight()?
+Add browsedir(): like browse() but for directories.
+    For GTK it already sort-of works when the default name is empty.
 
-Crash with long line. (Walter Briscoe, Sep 13)
+When ":file" sets the alternate file name and it's empty this doesn't make
+sense.  Could skip it, but would that break scripts that rely on the buffer to
+exist?
 
-Add fix for appending BOM to 6.3?  Reported by Alex Jakushev.
-
-Win32 console doesn't compile.  Does GetCommandLineW() work for non-GUI?
-(Dave Roberts)  If yes, then move the functions to another file.
-link with kernel32.lib?
+Folding support for 2html. (Carl Osterwisch, Oct 4)
+How to evaluate an expression in the sandbox?
 
 Aborting at the ATTENTION prompt causes trouble:
     buffer remains active, nwindows isn't closed (fixed in buffer.c)
@@ -59,7 +56,44 @@ Win32: When the path to a file has Russian characters, ":cd %:p:h" doesn't
 work. (Valery Kondakoff)
 Solved in os_mswin.c.  Add to 6.3?
 
+Patch for Win32 textdomain: NAKADAIRA Yukihiro, Sept 17.
+
+GTK 2 error message with this sequence (Namsh Oct 7):
+       - start gvim with French locale
+       - set enc=utf-8
+       - :aunmenu *
+       - :unlet  did_install_default_menus
+       - :source $VIMRUNTIME/menu.vim
+
 Valencia: executable("xxd.exe") returns true while "!xxd" doesn't work.
+Works fine for me.  Only in specific environment?
+
+netrw plugin: When coming back to the same directory a scratch buffer appears.
+Only on Win32. (Charles Campbell, Sept 15)
+
+New Eiffel indent script from Jocelyn Fiat.  OK with David Clarke.
+
+Win32: not using 'tenc' in GUI causes problems on Win 98?  (Jiri Jezdinsky)
+Try out with Russian input method.
+
+After "Y" '[ and '] are not at start/end of the yanked text. (Ken Clark)
+
+Patch for adding 'fsync' option: disable using fsync() on file write. (Sept.
+26, Ciaran McCreesh)
+
+Folding for C syntax: (Olaf Dabrunz 27 sept 2004)
+
+Add remark about using Vim with VS .net to Visvim docs. (David Fishburn, Sept
+27)
+
+Vim icon for documents associated with Vim? (Rahul Kulkarni, sept 28)
+
+Add a function to test if a font name actually works.
+
+When using "set laststatus=2 cmdheight=2" in the .gvimrc you only get one line
+for the cmdline. (Christian Robinson)  When the Vim window is resized (e.g.,
+xterm with many lines) it's OK.
+
 
 For version 7.0:
 
@@ -70,6 +104,7 @@ For version 7.0:
     7   For Visual mode: Command to do a search for the string in the marked
        area.  Only when fewer than two lines. Use "g/" and "gb".  Patch from
        Yegappan Lakshmanan. 2004 Jul 11
+       When more than two lines: perform a search in the Visual area only.
     8   Make 'statusline' local, so that each window can have a different
        value.  But should it also be local to a buffer? (Yegappan Lakshmanan
        has a patch, 2004 Jul 11)
@@ -168,6 +203,12 @@ For version 7.0:
     -   findmatch() should be adjusted for Lisp.  See remark at
        get_lisp_indent().  Esp. \( and \) should be skipped. (Dorai Sitaram,
        incomplete patch Mar 18)
+    -  Set user variables to the names of the actually used user vimrc file,
+       the first directory looked for user plugins/syntax files.
+       $MYVIMRC for .vimrc, $MYGVIMRC for .gvimrc, $MYRUNTIME/plugin for
+       runtime files?
+       Also: when the environment variable exists, use it.  If it doesn't
+       exist, set it.  Requires good names: $VIM_USER_VIMRC  $VIM_USER_DIR
 
 
 -   In the kvim/KDE source files fix the formatting.
@@ -192,6 +233,8 @@ For version 7.0:
          the contains list directly for matching syntax items.
         - Keep wordlist in syntax group, load it only once and use it several
          times later.  Sort of global syntax items.
+       - Use wordlists from openoffice (myspell).  Work together with them to
+         update the wordlist.  (Adri Verhoef, Aad Nales)
 -   REFACTORING: The main() function is very long.  Move parts to separate
     functions, especially loops.  Ideas from Walter Briscoe (2003 Apr 3, 2004
     Feb 9).
@@ -205,9 +248,33 @@ For version 7.0:
        http://sourceforge.net/projects/insenvim
        http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
        Ivan Villanueva has something for Java.
+    Can't call it Intellisense, it is a trademark by Microsoft.
+    Ideas from the Vim 7 BOF at SANE:
+    - It's not possible to have one solution for all languages.  Design an
+      interface for completion plugins.  The matches can be done in a
+      Vim-script list.
+    - For interpreted languages, use the interpreter to obtain information.
+      Should work for Java (Eclipse does this), Python, Tcl, etc.
+    - Check Readline for its completion interface.
+    - Use ctags for other languages.  Writing a file could trigger running
+      ctags, merging the tags of the changed file.
+-   UNDO TREE: keep all states of the text, don't delete undo info.
+    When making a change, instead of clearing any future undo (thus redo)
+    info, make a new branch.
+    To navigate through the undo tree number the states of the text
+    sequentially and make it possible to go through the tree in that order.
+    Could also use timestamps (to show the time and/or jump to a state five
+    minutes ago). (David Schweikert)
+    To go from one state to another: backtrack to a common state, then forward
+    again.
+    Only difficult thing: When going back in time, how to find the previous
+    text state in the tree?
+    Show the list of changes in a window to be able to select a version?
 -   PERSISTENT UNDO: store undo in a file.
-    Support multiple threads.  Show the list of changes in a window to be able
-    to select a version.
+    Use timestamps, so that a version a certain time ago can be found and info
+    before some time/date can be flushed. 'undopersist' gives maximum time to
+    keep undo: "3h", "1d", "2w", "1y", etc.  For the file use dot and
+    extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
 7   SWAP FILE CHANGE: When a dos format file was edited with ":e ++ff=unix",
     Vim is killed and trying to recover the file, 'ff' will be dos.  Same for
     non-default fileencoding.  (Miroslaw Dobrzanski-Neumann, Jul 17)
@@ -235,8 +302,12 @@ For version 7.0:
 -   STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
     Especially when using the scrollbar.  Typing a cursor-movement command
     scrolls back to where the cursor is.
+-   Execute a function with standard option values.  No need to save and
+    restore option values.  Especially useful for new options.  Problem: how
+    to avoid a performance penalty (esp. for string options)?
 8   Support four composing/combining characters, needed for Hebrew. (Ron Aaron)
     Add the 'maxcombining' option to set the nr. of composing characters.
+    At the same time support more colors (use two bytes when necessary).
 -   Add a few more things to 'diffopt': "horizontal", "vertical",
     "foldcolumn". (Benji Fisher, 2004 Jun 21)
 -   FileChangedShellPost autocommand event: after (not) reloading a changed
@@ -265,6 +336,9 @@ For version 7.0:
 -   "onemore" flag in 'virtualedit': move cursor past end of line.  Patch by
     Mattias Flodin (2004 Jul 30)
 
+The fsync() in buf_write() causes laptop harddisk spinup.  Add an option to
+avoid it?
+
 Support ":set syntax=cpp.doxygen"?  Suggested patch by Michael Geddes (9 Aug
 2004).  Should also work for 'filetype'.
 
@@ -274,6 +348,9 @@ Smilauer, 2004 Sep 13)
 Win32: In 'fileencodings' allow using "acp" for the active codepage.  Useful
 value: "ucs-bom,utf-8,acp,latin1"
 
+Win32: Cannot edit a file starting with # with --remote. (Giuseppe Bilotta,
+Oct 6 2004)
+
 For manipulating buffers without opening a new window, support Virtual
 windows.  Example:
     :virtwin let l = GetBufLine(4, 10)
@@ -291,6 +368,10 @@ Win32: In the generated batch files, use $VIMRUNTIME if it's set.  Examples by
 Mathias Michaelis (2004 Sep 6)
 Also place vimtutor.bat in %windir%?
 
+Support ":enew filename" to edit a new buffer with a name.  It's like "enew |
+file filename" but without setting the alternate file to a buffer without a
+name. (Charles Campbell)
+
 
 Vi incompatibility:
 9   In Ex mode, "u" undoes all changes, not just the last one. (John Cowan)
@@ -386,6 +467,7 @@ GTK+ GUI known bugs:
 
 KDE GUI known bugs:
 -   The default font is ugly.  bold text isn't displayed correctly.
+    (bold characters are half the width of normal characters)
 -   Error messages when starting up.  The "tip of the day" box is empty.
 -   Encoding of menu items needs to be converted. (Yasuhiro Matsumoto)
 
@@ -2041,6 +2123,7 @@ Autocommands:
     *Leave         - Leaving a mode (in pair with the above *Enter)
     VimLeaveCheck    - Before Vim decides to exit, so that it can be cancelled
                      when exiting isn't a good idea.
+    WinMoved       - when windows have been moved around, e.g, ":wincmd J"
     CmdUndefined    - Like FuncUndefined but for user commands.
     SearchPost     - After doing a search command (e.g. to do "M")
     PreDirChanged/PostDirChanged
@@ -2511,8 +2594,6 @@ Mappings and Abbreviations:
 -   Add command to repeat a whole mapping ("." only repeats the last change in
     a mapping).  Also: Repeat a whole insert command, including any mappings
     that it included.  Sort-of automatic recording?
--   Make it possible to undo all the commands from a mapping, including a
-    trailing unfinished command, e.g. for ":map K iX^[r".
 -   Add an option to ":map" that makes it display the special keys in
     <> notation (e.g. <CR> instead of ^M).  Or just always do this?
 -   Include an option (or flag to 'cpoptions') that makes errors in mappings
@@ -2663,6 +2744,8 @@ item stack to allow matching ().  One side is "push X on
 
 
 Undo:
+-   Make it possible to undo all the commands from a mapping, including a
+    trailing unfinished command, e.g. for ":map K iX^[r".
 -   When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
     possible, even when typing <Esc> immediately. (Grahn)  Also for "i", "a",
     etc.  Postpone saving for undo until something is really inserted?
@@ -2676,9 +2759,6 @@ Undo:
     version without changing the rest of the file.  Stop doing this when a
     change includes only some of these lines and changes the line count.  Need
     to store these undo actions as a separate change that can be undone.
-7   Add an undo tree: When making a change, instead of clearing any future
-    undo (thus redo) info, make a new branch.  How to navigate through the
-    undo tree?
 -   For u_save() include the column number. This can be used to set '[ and '].
     And in the future the undo can be made more efficient (Webb).
 -   In out-of-memory situations: Free allocated space in undo, and reduce the
@@ -2897,7 +2977,7 @@ Digraphs:
     below/above).
 -   Use digraph table to tell Vim about the collating sequence of special
     characters?
-8   Add command to remove (all) digraphs. (Brown)
+8   Add command to remove one or more (all) digraphs. (Brown)
 7   Support different sets of digraphs (depending on the character set?).  At
     least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).
 
index 97c39d9a06d9f5816133427f6080ffb648511421..ace402f9a1a551bfe67aa021848c48d1294c76e1 100644 (file)
@@ -1,4 +1,4 @@
-*usr_41.txt*   For Vim version 7.0aa.  Last change: 2004 Aug 28
+*usr_41.txt*   For Vim version 7.0aa.  Last change: 2004 Oct 06
 
                     VIM USER MANUAL - by Bram Moolenaar
 
@@ -218,9 +218,9 @@ To avoid the need for a backslash, you can use a string in single quotes: >
        :echo name
 <      "peter" ~
 
-Inside a single-quote string all the characters are taken literally.  The
-drawback is that it's impossible to include a single quote.  A backslash is
-taken literally as well, thus you can't use it to change the meaning of the
+Inside a single-quote string all the characters are as they are.  The drawback
+is that it's impossible to include a single quote.  A backslash is taken
+literally as well, thus you can't use it to change the meaning of the
 character after it.
    In double-quote strings it is possible to use special characters.  Here are
 a few useful ones:
index 01705ff29957268f002c28c4bfbbbd329d61030d..70745324982b171f35d6b04ff5fdc22beca64fbd 100644 (file)
@@ -1,4 +1,4 @@
-*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Sep 13
+*version7.txt*  For Vim version 7.0aa.  Last change: 2004 Oct 07
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -243,6 +243,12 @@ upper case.  Add color support to the builtin vt320 terminal codes.
 For the '%' item in 'viminfo', allow a number to set a maximum for the number
 of buffers.
 
+When a file looks like a shell script, check for an "exec" command that starts
+the tcl interpreter. (suggested by Alexios Zavras)
+
+Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that
+digraphs still work when iconv is not available.
+
 ==============================================================================
 COMPILE TIME CHANGES                                   *compile-changes-7*
 
@@ -373,4 +379,21 @@ When an error message is given while waiting for a character (e.g., when an
 xterm reports the number of colors), the hit-enter prompt overwrote the last
 line.  Don't reset msg_didout in normal_cmd() for K_IGNORE.
 
+Mac GUI: Shift-Tab didn't work.
+
+When defining tooltip text, don't translate terminal codes, since it's not
+going to be used like a command.
+
+GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a
+GTK error.  Invalid characters may appear when 'encoding' is changed.
+
+GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango.
+
+Win32: When 'encoding' is changed while starting up, use the Unicode command
+line to convert the file arguments to 'encoding'.  Both for the GUI and the
+console version.
+
+Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because
+there is no codepage for latin9.  Do our own conversion from latin9 to UCS2.
+
  vim:tw=78:ts=8:ft=help:norl:
index 5fd12aa9fccc47427926740f44cc45917ae04daf..26c222f0bbb6a8ab2b7f0b708cc158aa315a94d3 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to detect file types
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2004 Sep 11
+" Last Change: 2004 Oct 02
 
 " Listen very carefully, I will say this only once
 if exists("did_load_filetypes")
@@ -1339,22 +1339,41 @@ fun! SetFileTypeSH(name)
       unlet b:is_bash
     endif
   endif
-  setf sh
+  call SetFileTypeShell("sh")
+endfun
+
+" For shell-like file types, check for an "exec" command hidden in a comment,
+" as used for Tcl.
+fun! SetFileTypeShell(name)
+  let l = 2
+  while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)'
+    " Skip empty and comment lines.
+    let l = l + 1
+  endwhile
+  if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$'
+    " Found an "exec" line after a comment with continuation
+    let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '')
+    if n =~ '\<tclsh\|\<wish'
+      setf tcl
+      return
+    endif
+  endif
+  exe "setf " . a:name
 endfun
 
 " tcsh scripts
-au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login   setf tcsh
+au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login   call SetFileTypeShell("tcsh")
 
 " csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
 au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias  call SetFileTypeCSH()
 
 fun! SetFileTypeCSH()
   if exists("g:filetype_csh")
-    exe "setf " . g:filetype_csh
+    call SetFileTypeShell(g:filetype_csh)
   elseif &shell =~ "tcsh"
-    setf tcsh
+    call SetFileTypeShell("tcsh")
   else
-    setf csh
+    call SetFileTypeShell("csh")
   endif
 endfun
 
index ac31d10435150b42dd3aaec8b9e530dcf02b278d..22b932a67b3c9396b51347cdcb779f966e3c76a7 100644 (file)
@@ -1,9 +1,11 @@
 " Vim indent file
 " Language:    Eiffel
-" Maintainer:  David Clarke <gadicath@dishevelled.net>
+" Maintainer:  Jocelyn Fiat <eiffel@djoce.net>
+" Previous-Maintainer: David Clarke <gadicath@dishevelled.net>
 " $Date$
 " $Revision$
-" URL: http://gadicath.webhop.net/other/eiffel.vim
+" URL: http://www.djoce.net/page/vim/
+" Last Change: 2004 Sep 14
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
@@ -20,8 +22,6 @@ setlocal comments=:--
 setlocal indentkeys+==end,=else,=ensure,=require,=check,=loop,=until
 setlocal indentkeys+==creation,=feature,=inherit,=class,=is,=redefine,=rename,=variant
 setlocal indentkeys+==invariant,=do,=local,=export
-setlocal sw=3
-setlocal tw=78
 
 " Define some stuff
 " keywords grouped by indenting
@@ -96,7 +96,7 @@ function GetEiffelIndent()
 
   " set indent of zero end statements that are at an indent of 3, this should
   " only ever be the class's end.
-  if getline(v:lnum) =~ '^\s*end\>' && ind == 3
+  if getline(v:lnum) =~ '^\s*end\>' && ind == &sw
     let ind = 0
   endif
 
index a600c4bf338a70686327a3dc7d37acb80b031a36..311d7086e60cf2f7ae77f49139dbae367a178e74 100644 (file)
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:    Java
-" Maintainer:  Toby Allsopp <toby.allsopp@peace.com>
-" Last Change: 2003 Oct 21
+" Maintainer:  Toby Allsopp <toby.allsopp@peace.com> (resigned)
+" Last Change: 2004 Oct 05
 
 " Only load this indent file when no other was loaded.
 if exists("b:did_indent")
index b4ab630309772b9718c7fdd916bb60f4702d0e4f..b504ff82cc1f9f0d95f10a2cb72839ff04089787 100644 (file)
@@ -2,7 +2,7 @@
 " You can also use this as a start for your own set of menus.
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last Change: 2004 May 26
+" Last Change: 2004 Sep 16
 
 " Note that ":an" (short for ":anoremenu") is often used to make a menu work
 " in all modes and avoid side effects from mappings defined by the user.
@@ -382,7 +382,7 @@ if has("keymap")
   endif
   unlet s:n
 endif
-if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_photon")
+if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
   an 20.470 &Edit.Select\ Fo&nt\.\.\.  :set guifont=*<CR>
 endif
 
index 9f5dc9e74adb2ce5271b99a8d04307eac2730bbe..608cc7d21e953e6668691eee8e1a05c160981b7c 100644 (file)
@@ -1,7 +1,7 @@
 " netrw.vim: Handles file transfer and remote directory listing across a network
-" Last Change: Sep 10, 2004
+" Last Change: Sep 14, 2004
 " Maintainer:  Charles E. Campbell, Jr. PhD   <drchipNOSPAM at campbellfamily.biz>
-" Version:     48
+" Version:     51a     NOT RELEASED
 " License:     Vim License  (see vim's :help license)
 "
 "  But be doers of the Word, and not only hearers, deluding your own selves
@@ -14,7 +14,7 @@
 if exists("g:loaded_netrw") || &cp
   finish
 endif
-let g:loaded_netrw  = "v48"
+let g:loaded_netrw  = "v51a"
 let s:save_cpo      = &cpo
 let loaded_explorer = 1
 set cpo&vim
@@ -115,7 +115,7 @@ if !exists("g:netrw_hide")
  let g:netrw_hide= 1
 endif
 if !exists("g:netrw_ftp_browse_reject")
- let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not'
+ let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
 endif
 if !exists("g:netrw_keepdir")
  let g:netrw_keepdir= 1
@@ -140,6 +140,9 @@ endif
 if !exists("g:netrw_altv")
  let g:netrw_altv= 0
 endif
+if !exists("g:netrw_maxfilenamelen")
+ let g:netrw_maxfilenamelen= 32
+endif
 
 " BufEnter event ignored by decho when following variable is true
 "  Has a side effect that doau BufReadPost doesn't work, so
@@ -211,9 +214,11 @@ if version >= 600
    au BufReadCmd  file:///*            exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
    au BufReadCmd  file://localhost/*   exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
   endif
-  au BufReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*   exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
-  au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*   exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread "   .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
-  au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*                    exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
+  au BufReadCmd   ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*  exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
+  au FileReadCmd  ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://*  exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread "   .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
+  au BufWriteCmd  ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*           exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
+  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*           exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
+"  au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://*          if exists("vcount")|call Decho("vcount=".vcount)|else|call Decho("no vcount")|endif
  augroup END
 endif
 
@@ -1025,7 +1030,8 @@ fun! <SID>NetBrowse(dirname)
 "  call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".g:netrw_longlist)
 
   " sanity check
-  if exists("b:netrw_method") && b:netrw_method =~ '[23]'
+  if exists("b:netrw_method") && b:netrw_method =~ '[235]'
+"   call Decho("b:netrw_method=".b:netrw_method)
    if !executable("ftp")
     if !exists("g:netrw_quiet")
      echoerr "***netrw*** this system doesn't support remote directory listing via ftp"
@@ -1066,11 +1072,13 @@ fun! <SID>NetBrowse(dirname)
 "  call Decho("set up path   <".path   .">")
 "  call Decho("set up fname  <".fname  .">")
 
-  if method == "ftp"
+  if method == "ftp" || method == "http"
+   let method  = "ftp"
    let listcmd = g:netrw_ftp_list_cmd
   else
    let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'')
   endif
+
   if exists("b:netrw_method")
 "   call Decho("setting s:netrw_method<".b:netrw_method.">")
    let s:netrw_method= b:netrw_method
@@ -1144,11 +1152,12 @@ fun! <SID>NetBrowse(dirname)
   endif
 
   " rename file to reflect where its from
-  setlocal ts=32 bt=nofile bh=wipe nobl
+  setlocal bt=nofile bh=wipe nobl noswf
+  exe "setlocal ts=".g:netrw_maxfilenamelen
 "  call Decho("exe file ".escape(bufname,s:netrw_cd_escape))
   exe 'file '.escape(bufname,s:netrw_cd_escape)
 "  call Decho("renaming file to bufname<".bufname.">")
-  setlocal bt=nowrite bh=hide nobl
+  setlocal bh=hide nobl
 
   " set up buffer-local mappings
 "  call Decho("set up buffer-local mappings")
@@ -1338,7 +1347,6 @@ fun! <SID>NetBrowseChgDir(dirname,newdir)
    else
     " strip off a directory name from dirname
     let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','')
-  exe "silent! keepjumps ".curline.",$d"
    endif
 "   call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">")
 
@@ -1573,7 +1581,7 @@ fun! <SID>NetBrowseX(fname,remote)
 
   if a:remote == 1
    let eikeep= &ei
-   set ei=all bh=delete bt=nofile
+   set ei=all bh=delete bt=nofile noswf
    exe "norm! \<c-o>"
    let &ei= eikeep
    redraw!
@@ -1601,15 +1609,13 @@ fun! NetBrowseFtpCmd(path,cmd)
   exe "silent! keepjumps ".curline.",$d"
 
    ".........................................
-  if s:netrw_method == 2
+  if s:netrw_method == 2 || s:netrw_method == 5
    " ftp + <.netrc>:  Method #2
    if a:path != ""
     put ='cd '.a:path
    endif
    exe "put ='".a:cmd."'"
-
-
-"    redraw!|call inputsave()|call input("Pausing...")|call inputrestore() "Decho
+"    redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
    if exists("g:netrw_port") && g:netrw_port != ""
 "    call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
     exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
@@ -1875,29 +1881,29 @@ fun! <SID>NetBookmarkDir(chg,curdir)
 
   if a:chg == 0
    " bookmark the current directory
-   let s:netrw_bookmarkdir_{v:count}= a:curdir
-   if !exists("s:bookmarkmax")
-    let s:bookmarkmax= v:count
-   elseif v:count > s:bookmarkmax
-    let s:bookmarkmax= v:count
+   let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
+   if !exists("g:NETRW_BOOKMARKMAX")
+    let g:NETRW_BOOKMARKMAX= v:count
+   elseif v:count > g:NETRW_BOOKMARKMAX
+    let g:NETRW_BOOKMARKMAX= v:count
    endif
 
   elseif a:chg == 1
    " change to the bookmarked directory
-   if exists("s:netrw_bookmarkdir_{v:count}")
-    exe "e ".s:netrw_bookmarkdir_{v:count}
+   if exists("g:NETRW_BOOKMARKDIR_{v:count}")
+    exe "e ".g:NETRW_BOOKMARKDIR_{v:count}
    else
     echomsg "Sorry, bookmark#".v:count." doesn't exist!"
    endif
 
-  elseif exists("s:bookmarkmax")
+  elseif exists("g:NETRW_BOOKMARKMAX")
    " list bookmarks
-"   call Decho("list bookmarks [0,".s:bookmarkmax."]")
+"   call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
    let cnt= 0
-   while cnt <= s:bookmarkmax
-    if exists("s:netrw_bookmarkdir_{cnt}")
-     echo "Netrw Bookmark#".cnt.": ".s:netrw_bookmarkdir_{cnt}
-"     call Decho("Netrw Bookmark#".cnt.": ".s:netrw_bookmarkdir_{cnt})
+   while cnt <= g:NETRW_BOOKMARKMAX
+    if exists("g:NETRW_BOOKMARKDIR_{cnt}")
+     echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
+"     call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
     endif
     let cnt= cnt + 1
    endwhile
@@ -1905,7 +1911,6 @@ fun! <SID>NetBookmarkDir(chg,curdir)
 "  call Dret("NetBookmarkDir")
 endfun
 
-
 " ---------------------------------------------------------------------
 "  Browsing Support For Local Directories And Files:    {{{1
 
@@ -1972,20 +1977,32 @@ fun! <SID>LocalBrowse(dirname)
     endif
    endif
 "   call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")")
+"   call Decho("buffer name<".bufname("%")."> dirname<".dirname.">")
    setlocal ma
    keepjumps %d
-   if expand("%:p") != dirname
+   if expand("%") != dirname
+    " set standard browser options on buffer
+    setlocal bt=nofile bh=hide nobl noswf
+    exe "setlocal ts=".g:netrw_maxfilenamelen
     exe 'silent! file '.escape(dirname,s:netrw_cd_escape)
-"    call Decho("renamed file to<".escape(dirname,' #').">")
+"    call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">")
+"    call Decho("yielding actual bufname<".bufname("%").">")
    endif
   else
 "   call Decho("generate new buffer named<".escape(dirname,' #').">")
    silent! enew!
+   " set standard browser options on buffer
+   setlocal bt=nofile bh=hide nobl noswf
+   exe "setlocal ts=".g:netrw_maxfilenamelen
    exe 'silent! file '.substitute(escape(dirname,s:netrw_cd_escape),'/$','','e')
-"   call Decho("renamed file to<".escape(dirname,s:netrw_cd_escape).">")
+"   call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'/$','','e').">")
+"   call Decho("yielding actual bufname<".bufname("%").">")
+  endif
+  if bufname("#") == "" && bufnr("#") != -1
+   " the file command produces a lot of [No File] buffers
+"   call Decho("wiping out nofile buffer#".bufnr("#"))
+   exe bufnr("#")."bwipe"
   endif
-  " set standard browser options on buffer
-  setlocal ts=32 bt=nowrite bh=hide nobl
 
   " set up all the maps
 "  call Decho("Setting up local browser maps")
@@ -2076,7 +2093,7 @@ fun! <SID>LocalBrowse(dirname)
   setlocal noma nomod
   if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
 
-"  call Dret("LocalBrowse : file<".expand("%:p").">")
+"  call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
 endfun
 
 " ---------------------------------------------------------------------
@@ -2123,7 +2140,7 @@ fun! LocalBrowseList(dirname)
     let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
    else
     let file     = filelist
-    let filelist= ""
+    let filelist = ""
    endif
    let pfile= file
    if isdirectory(file)
index 07d04ff0750c779d7f7a08e861a18b2764ebc2c5..69bee3aaf7858a76fe0911b70e71d052f5084964 100644 (file)
@@ -1,7 +1,7 @@
 " Vim support file to detect file types in scripts
 "
 " Maintainer:  Bram Moolenaar <Bram@vim.org>
-" Last change: 2004 Sep 02
+" Last change: 2004 Oct 02
 
 " This file is called by an autocommand for every file that has just been
 " loaded into a buffer.  It checks if the type of file can be recognized by
@@ -57,14 +57,14 @@ if s:line1 =~ "^#!"
     " csh scripts
   elseif s:name =~ '^csh\>'
     if exists("g:filetype_csh")
-      let &ft = g:filetype_csh
+      call SetFileTypeShell(g:filetype_csh)
     else
-      set ft=csh
+      call SetFileTypeShell("csh")
     endif
 
     " tcsh scripts
   elseif s:name =~ '^tcsh\>'
-    set ft=tcsh
+    call SetFileTypeShell("tcsh")
 
     " Z shell scripts
   elseif s:name =~ '^zsh\>'
index fe20701d15158bd40ca79a7e0f83d1b27a674a79..6620707f9285b800fb5105af647ee0a3f2e057df 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    Lynx 2.7.1 style file
-" Maintainer:  Scott Bigham <dsb@cs.duke.edu>
-" Last Change: 2001 May 09
+" Maintainer:  Scott Bigham <dsb@killerbunnies.org>
+" Last Change: 2004 Oct 06
 
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
index ef52681179d7c10f587e9e7725b4ed74f91c4a76..8341f5bd432124abf5f720e0bc28b1723774d6bb 100644 (file)
@@ -1,6 +1,6 @@
 " Vim syntax file
 " Language:    PCCTS
-" Maintainer:  Scott Bigham <dsb@cs.duke.edu>
+" Maintainer:  Scott Bigham <dsb@killerbunnies.org>
 " Last Change: 10 Aug 1999
 
 " For version 5.x: Clear all syntax items
index 24d0c852ccab7fb858f399265395aec10b955257..60f33536502e6025f9fff9e61f19ad2cb3f78597 100644 (file)
@@ -1,7 +1,7 @@
 " Vim syntax file
 " Language:    Perl POD format
-" Maintainer:  Scott Bigham <dsb@cs.duke.edu>
-" Last Change: 2001 May 09
+" Maintainer:  Scott Bigham <dsb@killerbunnies.org>
+" Last Change: 2004 Oct 05
 
 " To add embedded POD documentation highlighting to your syntax file, add
 " the commands:
@@ -25,7 +25,7 @@ elseif exists("b:current_syntax")
 endif
 
 " POD commands
-syn match podCommand   "^=head[12]"    nextgroup=podCmdText
+syn match podCommand   "^=head[1234]"  nextgroup=podCmdText
 syn match podCommand   "^=item"        nextgroup=podCmdText
 syn match podCommand   "^=over"        nextgroup=podOverIndent skipwhite
 syn match podCommand   "^=back"
@@ -52,7 +52,11 @@ syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)"
 syn match podSpecial   "[$@%]\I\i*\(::\I\i*\)*\>"
 
 " Special formatting sequences
-syn region podFormat   start="[IBSCLFXEZ]<" end=">" oneline contains=podFormat
+syn region podFormat   start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat
+syn match  podFormat   "Z<>"
+syn match  podFormat   "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2
+syn match  podEscape   "\I\i*>"me=e-1 contained
+syn match  podEscape2  "\d\+>"me=e-1 contained
 
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
@@ -72,6 +76,8 @@ if version >= 508 || !exists("did_pod_syntax_inits")
   HiLink podFormat             Identifier
   HiLink podVerbatimLine       PreProc
   HiLink podSpecial            Identifier
+  HiLink podEscape             String
+  HiLink podEscape2            Number
 
   delcommand HiLink
 endif
index 10f7edce65f5fd913d31bb03d5f5b9a11eac497c..31570e093d85ef155c54f8b926aa4c5403862a4d 100644 (file)
@@ -2,7 +2,7 @@
 " Language:    samba configuration files (smb.conf)
 " Maintainer:  Rafael Garcia-Suarez <rgarciasuarez@free.fr>
 " URL:         http://rgarciasuarez.free.fr/vim/syntax/samba.vim
-" Last change: 2002 May 06
+" Last change: 2004 September 21
 
 " Don't forget to run your config file through testparm(1)!
 
@@ -17,8 +17,8 @@ endif
 syn case ignore
 
 syn match sambaParameter /^[a-zA-Z \t]\+=/ contains=sambaKeyword
-syn match sambaSection /^\s*\[[a-zA-Z0-9_\-. ]\+\]/
-syn match sambaMacro /%[SPugUGHvhmLMNpRdaIT]/
+syn match sambaSection /^\s*\[[a-zA-Z0-9_\-.$ ]\+\]/
+syn match sambaMacro /%[SPugUGHvhmLMNpRdaITD]/
 syn match sambaMacro /%$([a-zA-Z0-9_]\+)/
 syn match sambaComment /^\s*[;#].*/
 syn match sambaContinue /\\$/
@@ -92,6 +92,18 @@ syn keyword sambaKeyword contained acls allocate bytes count csc devmode
 syn keyword sambaKeyword contained disable dn egd entropy enum extensions mmap
 syn keyword sambaKeyword contained policy spin spoolss
 
+" Since Samba 3.0.2
+syn keyword sambaKeyword contained abort afs algorithmic backend
+syn keyword sambaKeyword contained charset cups defer display
+syn keyword sambaKeyword contained enable idmap kerberos lookups
+syn keyword sambaKeyword contained methods modules nested NIS ntlm NTLMv2
+syn keyword sambaKeyword contained objects paranoid partners passdb
+syn keyword sambaKeyword contained plaintext prefix primary private
+syn keyword sambaKeyword contained profile quota realm replication
+syn keyword sambaKeyword contained reported rid schannel sendfile sharing
+syn keyword sambaKeyword contained shutdown signing special spnego
+syn keyword sambaKeyword contained store unknown unwriteable
+
 " Define the default highlighting.
 " For version 5.7 and earlier: only when not done already
 " For version 5.8 and later: only when an item doesn't have highlighting yet
index 1d4f55ddc12d24f29bc470221bd39d7bc3bb7c36..41d491c65743a7a4b6b186b85ccbb7155c152488 100644 (file)
@@ -194,7 +194,6 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
     syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature 
     syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export
     syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax
-    hi def link schemeExtSyntax Type
 
     syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker
     syn keyword schemeExtFunc use-standard-linker use-standard-compiler
@@ -217,7 +216,6 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
     syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch?
     " Command-line parsing
     syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each 
-    hi def link schemeExtFunc PreProc
 
     " syntax quoting, unquoting and quasiquotation
     syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL
@@ -230,6 +228,37 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
     syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL
 endif
 
+
+if exists("b:is_chicken") || exists("is_chicken")
+    syn match schemeOther oneline    "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+    syn match schemeExtSyntax oneline    "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
+
+    syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
+    syn keyword schemeExtSyntax foreign-lambda foreign-lambda* 
+    syn keyword schemeExtSyntax let-optionals let-optionals* define-foreign-variable
+    syn keyword schemeExtFunc ##core#inline ##sys#error ##sys#update-errno
+
+    " here-string
+    syn region schemeString start=+#<<\s*\z(.*\)+ end=+^\z1$+
+    if filereadable(expand("<sfile>:p:h")."/cpp.vim")
+       unlet! b:current_syntax
+       syn include @ChickenC <sfile>:p:h/cpp.vim
+       syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-declare "+ end=+")\@=+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+foreign-declare\s*#<<\z(.*\)$+hs=s+15 end=+^\z1$+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse "+ end=+")\@=+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+foreign-parse\s*#<<\z(.*\)$+hs=s+13 end=+^\z1$+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse/spec "+ end=+")\@=+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+foreign-parse/spec\s*#<<\z(.*\)$+hs=s+18 end=+^\z1$+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+#>+ end=+<#+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+#>?+ end=+<#+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+#>!+ end=+<#+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+#>\$+ end=+<#+ contains=@ChickenC
+       syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC
+    endif
+
+endif
+
 " Synchronization and the wrapping up...
 
 syn sync match matchPlace grouphere NONE "^[^ \t]"
@@ -255,12 +284,14 @@ if version >= 508 || !exists("did_scheme_syntax_inits")
   HiLink schemeBoolean         Boolean
 
   HiLink schemeDelimiter       Delimiter
-  HiLink schemeConstant        Constant
+  HiLink schemeConstant                Constant
 
   HiLink schemeComment         Comment
   HiLink schemeMultilineComment        Comment
   HiLink schemeError           Error
 
+  HiLink schemeExtSyntax       Type
+  HiLink schemeExtFunc         PreProc
   delcommand HiLink
 endif
 
index 1cb0b83659d712bc96249c712fe358c41cdd988b..5a175d36d450c49c21598441bc70896b9b5a8417 100644 (file)
@@ -630,7 +630,7 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
            *pos = 0;
        }
        // Now concatenate
-       strncpy(temp, _("Edit with existing Vim - &"), MAX_PATH - 1);
+       strncpy(temp, _("Edit with existing Vim - "), MAX_PATH - 1);
        strncat(temp, title, MAX_PATH - 1);
        InsertMenu(hMenu,
                indexMenu++,
index fade47f3527b7895ef9ce8b180c57e66e71cd62f..72f0cb8b09173529f5cedcb88263f8b9c5b854ab 100644 (file)
@@ -1202,7 +1202,7 @@ CARBONGUI_TESTARG = VIMPROG=../$(CARBONGUI_BUNDLE)/Contents/MacOS/$(VIMTARGET)
 
 # All GUI files
 ALL_GUI_SRC  = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_wid.cc gui_kde_x11.cc gui_kde_wid_moc.cc
-ALL_GUI_PRO  = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro gui_kde.pro gui_kde_x11.pro
+ALL_GUI_PRO  = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro
 
 # }}}
 
index de61ce2c7bacb10efa14226ce0333f838915c122..4c15d498c8da9b4b35f3ed994c8105cdf76c051e 100644 (file)
@@ -1428,6 +1428,7 @@ digr_T    digraphdefault[] =
        {'L', 'i', 0x20a4},
        {'P', 't', 0x20a7},
        {'W', '=', 0x20a9},
+       {'=', 'e', 0x20ac}, /* euro */
        {'o', 'C', 0x2103},
        {'c', 'o', 0x2105},
        {'o', 'F', 0x2109},
index df83da5a8a32985239225bee13620e8a803c0162..492feba59e01d3b7940adc2da2d6217afeaad88e 100644 (file)
@@ -8526,46 +8526,46 @@ set_cmdarg(eap, oldarg)
     unsigned   len;
 
     oldval = vimvars[VV_CMDARG].val;
-    if (eap != NULL)
+    if (eap == NULL)
     {
-       if (eap->force_bin == FORCE_BIN)
-           len = 6;
-       else if (eap->force_bin == FORCE_NOBIN)
-           len = 8;
-       else
-           len = 0;
-       if (eap->force_ff != 0)
-           len += (unsigned)STRLEN(eap->cmd + eap->force_ff) + 6;
+       vim_free(oldval);
+       vimvars[VV_CMDARG].val = oldarg;
+       return NULL;
+    }
+
+    if (eap->force_bin == FORCE_BIN)
+       len = 6;
+    else if (eap->force_bin == FORCE_NOBIN)
+       len = 8;
+    else
+       len = 0;
+    if (eap->force_ff != 0)
+       len += (unsigned)STRLEN(eap->cmd + eap->force_ff) + 6;
 # ifdef FEAT_MBYTE
-       if (eap->force_enc != 0)
-           len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
+    if (eap->force_enc != 0)
+       len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
 # endif
 
-       newval = alloc(len + 1);
-       if (newval == NULL)
-           return NULL;
+    newval = alloc(len + 1);
+    if (newval == NULL)
+       return NULL;
 
-       if (eap->force_bin == FORCE_BIN)
-           sprintf((char *)newval, " ++bin");
-       else if (eap->force_bin == FORCE_NOBIN)
-           sprintf((char *)newval, " ++nobin");
-       else
-           *newval = NUL;
-       if (eap->force_ff != 0)
-           sprintf((char *)newval + STRLEN(newval), " ++ff=%s",
-                                                   eap->cmd + eap->force_ff);
+    if (eap->force_bin == FORCE_BIN)
+       sprintf((char *)newval, " ++bin");
+    else if (eap->force_bin == FORCE_NOBIN)
+       sprintf((char *)newval, " ++nobin");
+    else
+       *newval = NUL;
+    if (eap->force_ff != 0)
+       sprintf((char *)newval + STRLEN(newval), " ++ff=%s",
+                                               eap->cmd + eap->force_ff);
 # ifdef FEAT_MBYTE
-       if (eap->force_enc != 0)
-           sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
-                                                  eap->cmd + eap->force_enc);
+    if (eap->force_enc != 0)
+       sprintf((char *)newval + STRLEN(newval), " ++enc=%s",
+                                              eap->cmd + eap->force_enc);
 # endif
-       vimvars[VV_CMDARG].val = newval;
-       return oldval;
-    }
-
-    vim_free(oldval);
-    vimvars[VV_CMDARG].val = oldarg;
-    return NULL;
+    vimvars[VV_CMDARG].val = newval;
+    return oldval;
 }
 #endif
 
index c925775a9bfde991852d1970a59145e1fa03c2ff..bf29748d04cab39483b055f884007e3c98da386b 100644 (file)
@@ -4066,7 +4066,7 @@ restore_backup:
        {
 #ifdef FEAT_MBYTE
            if (write_info.bw_conv_error)
-               errmsg = (char_u *)_("E513: write error, conversion failed");
+               errmsg = (char_u *)_("E513: write error, conversion failed (make 'fenc' empty to override)");
            else
 #endif
                if (got_int)
index 83e6c4b961bc6870842f0941c6c0cae246075eb9..93371347f4963322d7685f49f1230e8ec7ee5489 100644 (file)
@@ -677,6 +677,7 @@ EXTERN int  enc_utf8 INIT(= FALSE);         /* UTF-8 encoded Unicode */
 /* Codepage nr of 'encoding'.  Negative means it's not been set yet, zero
  * means 'encoding' is not a valid codepage. */
 EXTERN int     enc_codepage INIT(= -1);
+EXTERN int     enc_latin9 INIT(= FALSE);       /* 'encoding' is latin9 */
 # endif
 EXTERN int     has_mbyte INIT(= 0);            /* any multi-byte encoding */
 
index 0d552c05f5717df6f926747e83839fed1fa0281d..ed4e5bc771e49c0f627720becbcf2b30dba52071 100644 (file)
@@ -749,6 +749,10 @@ gui_mch_add_menu_item(vimmenu_T *menu, int idx)
 
            text    = CONVERT_TO_UTF8(menu->dname);
            tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
+           if (tooltip != NULL && !utf_valid_string(tooltip, NULL))
+               /* Invalid text, can happen when 'encoding' is changed.  Avoid
+                * a nasty GTK error message, skip the tooltip. */
+               CONVERT_TO_UTF8_FREE(tooltip);
 
            menu->id = gtk_toolbar_insert_item(
                    toolbar,
@@ -993,6 +997,8 @@ gui_mch_menu_set_tip(vimmenu_T *menu)
 
 # ifdef HAVE_GTK2
        tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
+       if (tooltip == NULL || utf_valid_string(tooltip, NULL))
+           /* Only set the tooltip when it's valid utf-8. */
 # else
        tooltip = menu->strings[MENU_INDEX_TIP];
 # endif
index aed649b2777721527573ac52bdcbbe64102c6ab7..bc727733f3fa9cd132187e4873a6724d41736485 100644 (file)
@@ -5239,6 +5239,14 @@ not_ascii:
        int             last_glyph_rbearing;
        int             cells = 0;  /* cells occupied by current cluster */
 
+       /* Safety check: pango crashes when invoked with invalid utf-8
+        * characters. */
+       if (!utf_valid_string(s, s + len))
+       {
+           column_offset = len;
+           goto skipitall;
+       }
+
        /* original width of the current cluster */
        cluster_width = PANGO_SCALE * gui.char_width;
 
@@ -5372,6 +5380,7 @@ not_ascii:
        pango_attr_list_unref(attr_list);
     }
 
+skipitall:
     if (flags & DRAW_UNDERL)
        gdk_draw_line(gui.drawarea->window,
                      gui.text_gc,
index 645e0b5b876bf96910632c59fded1a33e4f22fe2..f60567e5709611e18a893ac11f78d6777249d47c 100644 (file)
@@ -2200,6 +2200,7 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
     KeySym             key_sym;
     int                        key_char;
     int                        modifiers;
+    int                        simplify = FALSE;
 
     /* Mask the mouse (as per user setting) */
     if (p_mh)
@@ -2253,7 +2254,7 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
 
     /* Handle special keys. */
 #if 0
-    /* Why have this been removed? */
+    /* Why has this been removed? */
     if (!(theEvent->modifiers & (cmdKey | controlKey | rightControlKey)))
 #endif
     {
@@ -2270,11 +2271,14 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
 # endif
                        key_char = TO_SPECIAL(special_keys[i].vim_code0,
                                                special_keys[i].vim_code1);
-                   key_char = simplify_key(key_char,&modifiers);
+                   simplify = TRUE;
                    break;
                }
     }
 
+    /* For some keys the modifier is included in the char itself. */
+    if (simplify || key_char == TAB || key_char == ' ')
+       key_char = simplify_key(key_char, &modifiers);
 
     /* Add the modifier to the input bu if needed */
     /* Do not want SHIFT-A or CTRL-A with modifier */
index a3a7ffa248492805f296166cb28899cf52af9dea..ef20a28c66ff5e2ab9ff1a81a7ba51946a31e55c 100644 (file)
@@ -1709,6 +1709,33 @@ im_get_status()
 }
 #endif
 
+#ifdef FEAT_MBYTE
+/*
+ * Convert latin9 text to ucs-2.
+ */
+    static void
+latin9_to_ucs(char_u *text, int len, WCHAR *unicodebuf)
+{
+    int                c;
+
+    while (len-- >= 0)
+    {
+       c = *text++;
+       switch (c)
+       {
+           case 0xa4: c = 0x20ac; break;   /* euro */
+           case 0xa6: c = 0x0160; break;   /* S hat */
+           case 0xa8: c = 0x0161; break;   /* S -hat */
+           case 0xb4: c = 0x017d; break;   /* Z hat */
+           case 0xb8: c = 0x017e; break;   /* Z -hat */
+           case 0xbc: c = 0x0152; break;   /* OE */
+           case 0xbd: c = 0x0153; break;   /* oe */
+           case 0xbe: c = 0x0178; break;   /* Y */
+       }
+       *unicodebuf++ = c;
+    }
+}
+#endif
 
 #ifdef FEAT_RIGHTLEFT
 /*
@@ -1907,7 +1934,9 @@ gui_mch_draw_string(
     /* Check if the Unicode buffer exists and is big enough.  Create it
      * with the same lengt as the multi-byte string, the number of wide
      * characters is always equal or smaller. */
-    if ((enc_utf8 || (enc_codepage > 0 && (int)GetACP() != enc_codepage))
+    if ((enc_utf8
+               || (enc_codepage > 0 && (int)GetACP() != enc_codepage)
+               || enc_latin9)
            && (unicodebuf == NULL || len > unibuflen))
     {
        vim_free(unicodebuf);
@@ -1950,13 +1979,16 @@ gui_mch_draw_string(
                             foptions, pcliprect, unicodebuf, clen, unicodepdy);
        len = cells;    /* used for underlining */
     }
-    else if (enc_codepage > 0 && (int)GetACP() != enc_codepage)
+    else if ((enc_codepage > 0 && (int)GetACP() != enc_codepage) || enc_latin9)
     {
        /* If we want to display codepage data, and the current CP is not the
         * ANSI one, we need to go via Unicode. */
        if (unicodebuf != NULL)
        {
-           len = MultiByteToWideChar(enc_codepage,
+           if (enc_latin9)
+               latin9_to_ucs(text, len, unicodebuf);
+           else
+               len = MultiByteToWideChar(enc_codepage,
                        MB_PRECOMPOSED,
                        (char *)text, len,
                        (LPWSTR)unicodebuf, unibuflen);
index 7b8d8de30d3afa930f1c90f5108bd9840fdd2be2..eeaf651c77f5d05c50358e4effce6f99c938bacb 100644 (file)
@@ -3277,6 +3277,7 @@ _OnScroll(
     return 0;
 }
 
+
 /*
  * Get command line arguments.
  * Use "prog" as the name of the program and "cmdline" as the arguments.
@@ -3299,6 +3300,14 @@ get_cmd_args(char *prog, char *cmdline, char ***argvp, char **tofree)
     char       **argv = NULL;
     int                round;
 
+#ifdef FEAT_MBYTE
+    /* Try using the Unicode version first, it takes care of conversion when
+     * 'encoding' is changed. */
+    argc = get_cmd_argsW(&argv);
+    if (argc != 0)
+       goto done;
+#endif
+
     /* Handle the program name.  Remove the ".exe" extension, and find the 1st
      * non-space. */
     p = strrchr(prog, '.');
@@ -3405,8 +3414,9 @@ get_cmd_args(char *prog, char *cmdline, char ***argvp, char **tofree)
        }
     }
 
-    argv[argc] = NULL;         /* NULL-terminated list */
+done:
 
+    argv[argc] = NULL;         /* NULL-terminated list */
     *argvp = argv;
     return argc;
 }
index a71fb51746514d549c6fa5cbf35d4d52ec04f3d1..0710966532357fcf8a633ce3fd856085be6d19fd 100644 (file)
@@ -216,7 +216,7 @@ enc_canon_table[] =
 #define IDX_ISO_14     13
     {"iso-8859-14",    ENC_8BIT,               0},
 #define IDX_ISO_15     14
-    {"iso-8859-15",    ENC_8BIT,               0},
+    {"iso-8859-15",    ENC_8BIT + ENC_LATIN9,  0},
 #define IDX_KOI8_R     15
     {"koi8-r",         ENC_8BIT,               0},
 #define IDX_KOI8_U     16
@@ -534,6 +534,7 @@ codepage_invalid:
 
 #ifdef WIN3264
     enc_codepage = encname2codepage(p_enc);
+    enc_latin9 = (STRCMP(p_enc, "iso-8859-15") == 0);
 #endif
 
     /*
@@ -2486,6 +2487,36 @@ mb_tail_off(base, p)
     return 1 - dbcs_head_off(base, p);
 }
 
+#if defined(HAVE_GTK2) || defined(PROTO)
+/*
+ * Return TRUE if string "s" is a valid utf-8 string.
+ * When "end" is NULL stop at the first NUL.
+ * When "end" is positive stop there.
+ */
+    int
+utf_valid_string(s, end)
+    char_u     *s;
+    char_u     *end;
+{
+    int                l;
+    char_u     *p = s;
+
+    while (end == NULL ? *p != NUL : p < end)
+    {
+       if ((*p & 0xc0) == 0x80)
+           return FALSE;       /* invalid lead byte */
+       l = utf8len_tab[*p];
+       if (end != NULL && p + l > end)
+           return FALSE;       /* incomplete byte sequence */
+       ++p;
+       while (--l > 0)
+           if ((*p++ & 0xc0) != 0x80)
+               return FALSE;   /* invalid trail byte */
+    }
+    return TRUE;
+}
+#endif
+
 #if defined(FEAT_GUI) || defined(PROTO)
 /*
  * Special version of mb_tail_off() for use in ScreenLines[].
@@ -5453,11 +5484,22 @@ convert_setup(vcp, from, to)
        vcp->vc_type = CONV_TO_UTF8;
        vcp->vc_factor = 2;     /* up to twice as long */
     }
+    else if ((from_prop & ENC_LATIN9) && (to_prop & ENC_UNICODE))
+    {
+       /* Internal latin9 -> utf-8 conversion. */
+       vcp->vc_type = CONV_9_TO_UTF8;
+       vcp->vc_factor = 3;     /* up to three as long (euro sign) */
+    }
     else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN1))
     {
        /* Internal utf-8 -> latin1 conversion. */
        vcp->vc_type = CONV_TO_LATIN1;
     }
+    else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN9))
+    {
+       /* Internal utf-8 -> latin9 conversion. */
+       vcp->vc_type = CONV_TO_LATIN9;
+    }
 #ifdef WIN3264
     /* Win32-specific codepage <-> codepage conversion without iconv. */
     else if (((from_prop & ENC_UNICODE) || encname2codepage(from) > 0)
@@ -5622,13 +5664,40 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
            d = retval;
            for (i = 0; i < len; ++i)
            {
-               if (ptr[i] < 0x80)
-                   *d++ = ptr[i];
+               c = ptr[i];
+               if (c < 0x80)
+                   *d++ = c;
                else
                {
-                   *d++ = 0xc0 + ((unsigned)ptr[i] >> 6);
-                   *d++ = 0x80 + (ptr[i] & 0x3f);
+                   *d++ = 0xc0 + ((unsigned)c >> 6);
+                   *d++ = 0x80 + (c & 0x3f);
+               }
+           }
+           *d = NUL;
+           if (lenp != NULL)
+               *lenp = (int)(d - retval);
+           break;
+
+       case CONV_9_TO_UTF8:    /* latin9 to utf-8 conversion */
+           retval = alloc(len * 3 + 1);
+           if (retval == NULL)
+               break;
+           d = retval;
+           for (i = 0; i < len; ++i)
+           {
+               c = ptr[i];
+               switch (c)
+               {
+                   case 0xa4: c = 0x20ac; break;   /* euro */
+                   case 0xa6: c = 0x0160; break;   /* S hat */
+                   case 0xa8: c = 0x0161; break;   /* S -hat */
+                   case 0xb4: c = 0x017d; break;   /* Z hat */
+                   case 0xb8: c = 0x017e; break;   /* Z -hat */
+                   case 0xbc: c = 0x0152; break;   /* OE */
+                   case 0xbd: c = 0x0153; break;   /* oe */
+                   case 0xbe: c = 0x0178; break;   /* Y */
                }
+               d += utf_char2bytes(c, d);
            }
            *d = NUL;
            if (lenp != NULL)
@@ -5636,6 +5705,7 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
            break;
 
        case CONV_TO_LATIN1:    /* utf-8 to latin1 conversion */
+       case CONV_TO_LATIN9:    /* utf-8 to latin9 conversion */
            retval = alloc(len + 1);
            if (retval == NULL)
                break;
@@ -5658,6 +5728,26 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
                else
                {
                    c = utf_ptr2char(ptr + i);
+                   if (vcp->vc_type == CONV_TO_LATIN9)
+                       switch (c)
+                       {
+                           case 0x20ac: c = 0xa4; break;   /* euro */
+                           case 0x0160: c = 0xa6; break;   /* S hat */
+                           case 0x0161: c = 0xa8; break;   /* S -hat */
+                           case 0x017d: c = 0xb4; break;   /* Z hat */
+                           case 0x017e: c = 0xb8; break;   /* Z -hat */
+                           case 0x0152: c = 0xbc; break;   /* OE */
+                           case 0x0153: c = 0xbd; break;   /* oe */
+                           case 0x0178: c = 0xbe; break;   /* Y */
+                           case 0xa4:
+                           case 0xa6:
+                           case 0xa8:
+                           case 0xb4:
+                           case 0xb8:
+                           case 0xbc:
+                           case 0xbd:
+                           case 0xbe: c = 0x100; break; /* not in latin9 */
+                       }
                    if (!utf_iscomposing(c))    /* skip composing chars */
                    {
                        if (c < 0x100)
index fc8411fbfcacb7a361a68ccfaaf9f035e474279c..258b84da9b2a2ecf9b64196ee7e4d79545731175 100644 (file)
@@ -392,6 +392,8 @@ ex_menu(eap)
            map_to = (char_u *)"";
            map_buf = NULL;
        }
+       else if (modes & MENU_TIP_MODE)
+           map_buf = NULL;     /* Menu tips are plain text. */
        else
            map_to = replace_termcodes(map_to, &map_buf, FALSE, TRUE);
        menuarg.modes = modes;
index 7b5da8a4c0594d93e1ab6c6410d35c155c39e4c3..7f2288ee5eca5dd2015bda37a9af4f96eb7156a0 100644 (file)
@@ -267,6 +267,10 @@ mch_early_init(void)
     AnsiUpperBuff(toupper_tab, 256);
     AnsiLowerBuff(tolower_tab, 256);
 #endif
+
+#if defined(FEAT_MBYTE) && !defined(FEAT_GUI)
+    (void)get_cmd_argsW(NULL);
+#endif
 }
 
 
@@ -298,7 +302,25 @@ mch_settitle(
     gui_mch_settitle(title, icon);
 # else
     if (title != NULL)
+    {
+#  ifdef FEAT_MBYTE
+       if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
+       {
+           /* Convert the title from 'encoding' to the active codepage. */
+           WCHAR       *wp = enc_to_ucs2(title, NULL);
+           int n;
+
+           if (wp != NULL)
+           {
+               n = SetConsoleTitleW(wp);
+               vim_free(wp);
+               if (n != 0 || GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
+                   return;
+           }
+       }
+#  endif
        SetConsoleTitle(title);
+    }
 # endif
 }
 
index 7bdceadcbc075ee6e1f6fd31a19adf509e6a0617..ac9bf3c4ac25e8767d2198d1b7bce55a88f74a09 100644 (file)
@@ -30,24 +30,6 @@ VimMain
        __ARGS((int argc, char **argv));
 int (_cdecl *pmain)(int, char **);
 
-#ifdef FEAT_MBYTE
-/* The commandline arguments in UCS2. */
-static DWORD   nArgsW = 0;
-static LPWSTR  *ArglistW = NULL;
-static int     global_argc;
-static char    **global_argv;
-
-static int     used_file_argc = 0;     /* last argument in global_argv[] used
-                                          for the argument list. */
-static int     *used_file_indexes = NULL; /* indexes in global_argv[] for
-                                             command line arguments added to
-                                             the argument list */
-static int     used_file_count = 0;    /* nr of entries in used_file_indexes */
-static int     used_file_literal = FALSE;  /* take file names literally */
-static int     used_file_full_path = FALSE;  /* file name was full path */
-static int     used_alist_count = 0;
-#endif
-
 #ifndef PROTO
 #ifdef FEAT_GUI
 #ifndef VIMDLL
@@ -76,56 +58,14 @@ WinMain(
      * startup path (so the .vimrc file can be found w/o a VIM env. var.) */
     GetModuleFileName(NULL, prog, 255);
 
-    /* Separate the command line into arguments.  Use the Unicode functions
-     * when possible. When 'encoding' is later changed these are used to
-     * recode the arguments. */
-#ifdef FEAT_MBYTE
-    ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW);
-    if (ArglistW != NULL)
-    {
-       argv = malloc((nArgsW + 1) * sizeof(char *));
-       if (argv != NULL)
-       {
-           int         i;
-
-           argv[argc] = NULL;
-           argc = nArgsW;
-           for (i = 0; i < argc; ++i)
-           {
-               int     len;
-
-               WideCharToMultiByte_alloc(GetACP(), 0,
-                               ArglistW[i], wcslen(ArglistW[i]) + 1,
-                               (LPSTR *)&argv[i], &len, 0, 0);
-               if (argv[i] == NULL)
-               {
-                   while (i > 0)
-                       free(argv[--i]);
-                   free(argv);
-                   argc = 0;
-               }
-           }
-       }
-    }
-
+    argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
     if (argc == 0)
-#endif
     {
-       argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
-       if (argc == 0)
-       {
-           MessageBox(0, "Could not allocate memory for command line.",
-                                                                 "VIM Error", 0);
-           return 0;
-       }
+       MessageBox(0, "Could not allocate memory for command line.",
+                                                             "VIM Error", 0);
+       return 0;
     }
 
-#ifdef FEAT_MBYTE
-    global_argc = argc;
-    global_argv = argv;
-    used_file_indexes = malloc(argc * sizeof(int));
-#endif
-
 #ifdef DYNAMIC_GETTEXT
     /* Initialize gettext library */
     dyn_libintl_init(NULL);
@@ -190,108 +130,9 @@ errout:
     free(argv);
     free(tofree);
 #ifdef FEAT_MBYTE
-    if (ArglistW != NULL)
-       GlobalFree(ArglistW);
+    free_cmd_argsW();
 #endif
 
     return 0;
 }
 #endif
-
-#ifdef FEAT_MBYTE
-/*
- * Remember "name" is an argument that was added to the argument list.
- * This avoids that we have to re-parse the argument list when fix_arg_enc()
- * is called.
- */
-    void
-used_file_arg(name, literal, full_path)
-    char       *name;
-    int                literal;
-    int                full_path;
-{
-    int                i;
-
-    if (used_file_indexes == NULL)
-       return;
-    for (i = used_file_argc + 1; i < global_argc; ++i)
-       if (STRCMP(global_argv[i], name) == 0)
-       {
-           used_file_argc = i;
-           used_file_indexes[used_file_count++] = i;
-           break;
-       }
-    used_file_literal = literal;
-    used_file_full_path = full_path;
-}
-
-/*
- * Remember the length of the argument list as it was.  If it changes then we
- * leave it alone when 'encoding' is set.
- */
-    void
-set_alist_count(void)
-{
-    used_alist_count = GARGCOUNT;
-}
-
-/*
- * Fix the encoding of the command line arguments.  Invoked when 'encoding'
- * has been changed while starting up.  Use the UCS-2 command line arguments
- * and convert them to 'encoding'.
- */
-    void
-fix_arg_enc()
-{
-    int                i;
-    int                idx;
-    char_u     *str;
-
-    /* Safety checks:
-     * - if argument count differs between the wide and non-wide argument
-     *   list, something must be wrong.
-     * - the file name arguments must have been located.
-     * - the length of the argument list wasn't changed by the user.
-     */
-    if (global_argc != (int)nArgsW
-           || ArglistW == NULL
-           || used_file_indexes == NULL
-           || used_file_count == 0
-           || used_alist_count != GARGCOUNT)
-       return;
-
-    /* Clear the argument list.  Make room for the new arguments. */
-    alist_clear(&global_alist);
-    if (ga_grow(&global_alist.al_ga, used_file_count) == FAIL)
-       return;     /* out of memory */
-
-    for (i = 0; i < used_file_count; ++i)
-    {
-       idx = used_file_indexes[i];
-       str = ucs2_to_enc(ArglistW[idx], NULL);
-       if (str != NULL)
-           alist_add(&global_alist, str, used_file_literal ? 2 : 0);
-    }
-
-    if (!used_file_literal)
-    {
-       /* Now expand wildcards in the arguments. */
-       /* Temporarily add '(' and ')' to 'isfname'.  These are valid
-        * filename characters but are excluded from 'isfname' to make
-        * "gf" work on a file name in parenthesis (e.g.: see vim.h). */
-       do_cmdline_cmd((char_u *)":let SaVe_ISF = &isf|set isf+=(,)");
-       alist_expand();
-       do_cmdline_cmd((char_u *)":let &isf = SaVe_ISF|unlet SaVe_ISF");
-    }
-
-    /* If wildcard expansion failed, we are editing the first file of the
-     * arglist and there is no file name: Edit the first argument now. */
-    if (curwin->w_arg_idx == 0 && curbuf->b_fname == NULL)
-    {
-       do_cmdline_cmd((char_u *)":rewind");
-       if (GARGCOUNT == 1 && used_file_full_path)
-           (void)vim_chdirfile(alist_name(&GARGLIST[0]));
-    }
-}
-#endif
-
index bc6c7d4fd7fb1ca4cd23bcae26ecf826e0dd3e12..fce48f9fcdbb4d192cbf716ed74bc5777f43bfbc 100644 (file)
@@ -92,6 +92,7 @@ FILE* fdDump = NULL;
 #define WINAPI
 #define WINBASEAPI
 typedef char * LPCSTR;
+typedef char * LPWSTR;
 typedef int ACCESS_MASK;
 typedef int BOOL;
 typedef int COLORREF;
@@ -301,19 +302,19 @@ dyn_libintl_end()
 }
 
     static char *
-null_libintl_gettext(const charmsgid)
+null_libintl_gettext(const char *msgid)
 {
     return (char*)msgid;
 }
 
     static char *
-null_libintl_bindtextdomain(const char* domainname, const char* dirname)
+null_libintl_bindtextdomain(const char *domainname, const char *dirname)
 {
     return NULL;
 }
 
     static char *
-null_libintl_textdomain(const chardomainname)
+null_libintl_textdomain(const char *domainname)
 {
     return NULL;
 }
@@ -530,7 +531,7 @@ const static struct
     __stdcall
 #endif
 win32_kbd_patch_key(
-    KEY_EVENT_RECORDpker)
+    KEY_EVENT_RECORD *pker)
 {
     UINT uMods = pker->dwControlKeyState;
     static int s_iIsDead = 0;
@@ -734,8 +735,7 @@ decode_key_event(
  */
 # ifdef FEAT_GUI_W32
     void
-mch_setmouse(
-    int on)
+mch_setmouse(int on)
 {
 }
 # else
@@ -749,8 +749,7 @@ static int g_yMouse;                    /* mouse y coordinate */
  * Enable or disable mouse input
  */
     void
-mch_setmouse(
-    int on)
+mch_setmouse(int on)
 {
     DWORD cmodein;
 
@@ -798,7 +797,7 @@ mch_setmouse(
  */
     static BOOL
 decode_mouse_event(
-    MOUSE_EVENT_RECORDpmer)
+    MOUSE_EVENT_RECORD *pmer)
 {
     static int s_nOldButton = -1;
     static int s_nOldMouseClick = -1;
@@ -1214,7 +1213,7 @@ WaitForChar(long msec)
  * return non-zero if a character is available
  */
     int
-mch_char_avail()
+mch_char_avail(void)
 {
     return WaitForChar(0L);
 }
@@ -1579,7 +1578,7 @@ executable_exists(char *name)
  * GUI version of mch_init().
  */
     void
-mch_init()
+mch_init(void)
 {
 #ifndef __MINGW32__
     extern int _fmode;
@@ -1746,10 +1745,10 @@ FitConsoleWindow(
 
 typedef struct ConsoleBufferStruct
 {
-    BOOL IsValid;
-    CONSOLE_SCREEN_BUFFER_INFO Info;
-    PCHAR_INFO Buffer;
-    COORD BufferSize;
+    BOOL                       IsValid;
+    CONSOLE_SCREEN_BUFFER_INFO Info;
+    PCHAR_INFO                 Buffer;
+    COORD                      BufferSize;
 } ConsoleBuffer;
 
 /*
@@ -1853,8 +1852,8 @@ SaveConsoleBuffer(
  */
     static BOOL
 RestoreConsoleBuffer(
-    ConsoleBuffer *cb,
-    BOOL RestoreScreen)
+    ConsoleBuffer   *cb,
+    BOOL           RestoreScreen)
 {
     COORD BufferCoord;
     SMALL_RECT WriteRegion;
@@ -1949,23 +1948,19 @@ static BOOL g_fCanChangeIcon = FALSE;
  */
     static BOOL
 GetConsoleIcon(
-    HWND hWnd,
-    HICON *phIconSmall,
-    HICON *phIcon)
+    HWND       hWnd,
+    HICON      *phIconSmall,
+    HICON      *phIcon)
 {
     if (hWnd == NULL)
        return FALSE;
 
     if (phIconSmall != NULL)
-    {
-       *phIconSmall = (HICON) SendMessage(hWnd, WM_GETICON,
-                           (WPARAM) ICON_SMALL, (LPARAM) 0);
-    }
+       *phIconSmall = (HICON)SendMessage(hWnd, WM_GETICON,
+                                              (WPARAM)ICON_SMALL, (LPARAM)0);
     if (phIcon != NULL)
-    {
-       *phIcon = (HICON) SendMessage(hWnd, WM_GETICON,
-                           (WPARAM) ICON_BIG, (LPARAM) 0);
-    }
+       *phIcon = (HICON)SendMessage(hWnd, WM_GETICON,
+                                                (WPARAM)ICON_BIG, (LPARAM)0);
     return TRUE;
 }
 
@@ -1979,26 +1974,22 @@ GetConsoleIcon(
  */
     static BOOL
 SetConsoleIcon(
-    HWND hWnd,
-    HICON hIconSmall,
-    HICON hIcon)
+    HWND    hWnd,
+    HICON   hIconSmall,
+    HICON   hIcon)
 {
-    HICON hPrevIconSmall;
-    HICON hPrevIcon;
+    HICON   hPrevIconSmall;
+    HICON   hPrevIcon;
 
     if (hWnd == NULL)
        return FALSE;
 
     if (hIconSmall != NULL)
-    {
-       hPrevIconSmall = (HICON) SendMessage(hWnd, WM_SETICON,
-                           (WPARAM) ICON_SMALL, (LPARAM) hIconSmall);
-    }
+       hPrevIconSmall = (HICON)SendMessage(hWnd, WM_SETICON,
+                                     (WPARAM)ICON_SMALL, (LPARAM)hIconSmall);
     if (hIcon != NULL)
-    {
-       hPrevIcon = (HICON) SendMessage(hWnd, WM_SETICON,
-                           (WPARAM) ICON_BIG, (LPARAM) hIcon);
-    }
+       hPrevIcon = (HICON)SendMessage(hWnd, WM_SETICON,
+                                            (WPARAM)ICON_BIG,(LPARAM) hIcon);
     return TRUE;
 }
 
@@ -2059,7 +2050,7 @@ static DWORD g_cmodeout = 0;
  * non-GUI version of mch_init().
  */
     void
-mch_init()
+mch_init(void)
 {
 #ifndef FEAT_RESTORE_ORIG_SCREEN
     CONSOLE_SCREEN_BUFFER_INFO csbi;
@@ -2341,8 +2332,8 @@ fname_case(
  */
     int
 mch_get_user_name(
-    char_u *s,
-    int len)
+    char_u  *s,
+    int            len)
 {
     char szUserName[MAX_COMPUTERNAME_LENGTH + 1];
     DWORD cch = sizeof szUserName;
@@ -2379,7 +2370,7 @@ mch_get_host_name(
  * return process ID
  */
     long
-mch_get_pid()
+mch_get_pid(void)
 {
     return (long)GetCurrentProcessId();
 }
@@ -2429,8 +2420,7 @@ mch_dirname(
  * else FILE_ATTRIBUTE_* defined in winnt.h
  */
     long
-mch_getperm(
-    char_u *name)
+mch_getperm(char_u *name)
 {
 #ifdef FEAT_MBYTE
     if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
@@ -2457,8 +2447,8 @@ mch_getperm(
  */
     int
 mch_setperm(
-    char_u *name,
-    long perm)
+    char_u  *name,
+    long    perm)
 {
     perm |= FILE_ATTRIBUTE_ARCHIVE;    /* file has changed, set archive bit */
 #ifdef FEAT_MBYTE
@@ -2656,8 +2646,7 @@ struct my_acl
  * Return NULL if the ACL is not available for whatever reason.
  */
     vim_acl_T
-mch_get_acl(fname)
-    char_u     *fname;
+mch_get_acl(char_u *fname)
 {
 #ifndef HAVE_ACL
     return (vim_acl_T)NULL;
@@ -2701,9 +2690,7 @@ mch_get_acl(fname)
  * This must only be called with "acl" equal to what mch_get_acl() returned.
  */
     void
-mch_set_acl(fname, acl)
-    char_u     *fname;
-    vim_acl_T  acl;
+mch_set_acl(char_u *fname, vim_acl_T acl)
 {
 #ifdef HAVE_ACL
     struct my_acl   *p = (struct my_acl *)acl;
@@ -2726,8 +2713,7 @@ mch_set_acl(fname, acl)
 }
 
     void
-mch_free_acl(acl)
-    vim_acl_T  acl;
+mch_free_acl(vim_acl_T acl)
 {
 #ifdef HAVE_ACL
     struct my_acl   *p = (struct my_acl *)acl;
@@ -2791,8 +2777,7 @@ handler_routine(
  * set the tty in (raw) ? "raw" : "cooked" mode
  */
     void
-mch_settmode(
-    int tmode)
+mch_settmode(int tmode)
 {
     DWORD cmodein;
     DWORD cmodeout;
@@ -2840,7 +2825,7 @@ mch_settmode(
  * Return OK when size could be determined, FAIL otherwise.
  */
     int
-mch_get_shellsize()
+mch_get_shellsize(void)
 {
     CONSOLE_SCREEN_BUFFER_INFO csbi;
 
@@ -2873,9 +2858,9 @@ mch_get_shellsize()
  */
     static void
 ResizeConBufAndWindow(
-    HANDLE hConsole,
-    int xSize,
-    int ySize)
+    HANDLE  hConsole,
+    int            xSize,
+    int            ySize)
 {
     CONSOLE_SCREEN_BUFFER_INFO csbi;   /* hold current console buffer info */
     SMALL_RECT     srWindowRect;       /* hold the new console size */
@@ -2955,7 +2940,7 @@ ResizeConBufAndWindow(
  * Set the console window to `Rows' * `Columns'
  */
     void
-mch_set_shellsize()
+mch_set_shellsize(void)
 {
     COORD coordScreen;
 
@@ -2984,7 +2969,7 @@ mch_set_shellsize()
  * Rows and/or Columns has changed.
  */
     void
-mch_new_shellsize()
+mch_new_shellsize(void)
 {
     set_scroll_region(0, 0, Columns - 1, Rows - 1);
 }
@@ -2994,7 +2979,7 @@ mch_new_shellsize()
  * Called when started up, to set the winsize that was delayed.
  */
     void
-mch_set_winsize_now()
+mch_set_winsize_now(void)
 {
     if (suppress_winsize == 2)
     {
@@ -3134,8 +3119,8 @@ mch_system(char *cmd, int options)
  */
     int
 mch_call_shell(
-    char_u *cmd,
-    int options)       /* SHELL_*, see vim.h */
+    char_u  *cmd,
+    int            options)    /* SHELL_*, see vim.h */
 {
     int                x = 0;
     int                tmode = cur_tmode;
@@ -3510,8 +3495,7 @@ clear_to_end_of_line(void)
  * Scroll the scroll region up by `cLines' lines
  */
     static void
-scroll(
-    unsigned cLines)
+scroll(unsigned cLines)
 {
     COORD oldcoord = g_coord;
 
@@ -3549,8 +3533,7 @@ set_scroll_region(
  * Insert `cLines' lines at the current cursor position
  */
     static void
-insert_lines(
-    unsigned cLines)
+insert_lines(unsigned cLines)
 {
     SMALL_RECT     source;
     COORD          dest;
@@ -3591,8 +3574,7 @@ insert_lines(
  * Delete `cLines' lines at the current cursor position
  */
     static void
-delete_lines(
-    unsigned cLines)
+delete_lines(unsigned cLines)
 {
     SMALL_RECT     source;
     COORD          dest;
@@ -3655,8 +3637,7 @@ gotoxy(
  * See ../doc/os_win32.txt for the numbers.
  */
     static void
-textattr(
-    WORD wAttr)
+textattr(WORD wAttr)
 {
     g_attrCurrent = wAttr;
 
@@ -3665,8 +3646,7 @@ textattr(
 
 
     static void
-textcolor(
-    WORD wAttr)
+textcolor(WORD wAttr)
 {
     g_attrCurrent = (g_attrCurrent & 0xf0) + wAttr;
 
@@ -3675,8 +3655,7 @@ textcolor(
 
 
     static void
-textbackground(
-    WORD wAttr)
+textbackground(WORD wAttr)
 {
     g_attrCurrent = (g_attrCurrent & 0x0f) + (wAttr << 4);
 
@@ -3688,7 +3667,7 @@ textbackground(
  * restore the default text attribute (whatever we started with)
  */
     static void
-normvideo()
+normvideo(void)
 {
     textattr(g_attrDefault);
 }
@@ -3711,7 +3690,7 @@ standout(void)
  * Turn off standout mode
  */
     static void
-standend()
+standend(void)
 {
     if (g_attrPreStandout)
     {
@@ -3725,7 +3704,7 @@ standend()
  * Set normal fg/bg color, based on T_ME.  Called whem t_me has been set.
  */
     void
-mch_set_normal_colors()
+mch_set_normal_colors(void)
 {
     char_u     *p;
     int                n;
@@ -3749,7 +3728,7 @@ mch_set_normal_colors()
  * visual bell: flash the screen
  */
     static void
-visual_bell()
+visual_bell(void)
 {
     COORD   coordOrigin = {0, 0};
     WORD    attrFlash = ~g_attrCurrent & 0xff;
@@ -3775,8 +3754,7 @@ visual_bell()
  * Make the cursor visible or invisible
  */
     static void
-cursor_visible(
-    BOOL fVisible)
+cursor_visible(BOOL fVisible)
 {
     s_cursor_visible = fVisible;
 #ifdef MCH_CURSOR_SHAPE
@@ -4178,7 +4156,7 @@ mch_remove(char_u *name)
  * check for an "interrupt signal": CTRL-break or CTRL-C
  */
     void
-mch_breakcheck()
+mch_breakcheck(void)
 {
 #ifndef FEAT_GUI_W32       /* never used */
     if (g_fCtrlCPressed || g_fCBrkPressed)
@@ -4195,8 +4173,7 @@ mch_breakcheck()
  * Return sum of available physical and page file memory.
  */
     long_u
-mch_avail_mem(
-    int special)
+mch_avail_mem(int special)
 {
     MEMORYSTATUS       ms;
 
@@ -4382,7 +4359,7 @@ mch_rename(
  * Get the default shell for the current hardware platform
  */
     char *
-default_shell()
+default_shell(void)
 {
     char* psz = NULL;
 
@@ -4867,5 +4844,177 @@ myresetstkoflw(void)
 
     return 1;
 }
+#endif
+
+
+#if defined(FEAT_MBYTE) || defined(PROTO)
+/*
+ * The command line arguments in UCS2
+ */
+static DWORD   nArgsW = 0;
+static LPWSTR  *ArglistW = NULL;
+static int     global_argc = 0;
+static char    **global_argv;
+
+static int     used_file_argc = 0;     /* last argument in global_argv[] used
+                                          for the argument list. */
+static int     *used_file_indexes = NULL; /* indexes in global_argv[] for
+                                             command line arguments added to
+                                             the argument list */
+static int     used_file_count = 0;    /* nr of entries in used_file_indexes */
+static int     used_file_literal = FALSE;  /* take file names literally */
+static int     used_file_full_path = FALSE;  /* file name was full path */
+static int     used_alist_count = 0;
+
+
+/*
+ * Get the command line arguments.  Unicode version.
+ * Returns argc.  Zero when something fails.
+ */
+    int
+get_cmd_argsW(char ***argvp)
+{
+    char       **argv = NULL;
+    int                argc = 0;
+    int                i;
+
+    ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW);
+    if (ArglistW != NULL)
+    {
+       argv = malloc((nArgsW + 1) * sizeof(char *));
+       if (argv != NULL)
+       {
+           argc = nArgsW;
+           argv[argc] = NULL;
+           for (i = 0; i < argc; ++i)
+           {
+               int     len;
+
+               /* Convert each Unicode argument to the current codepage. */
+               WideCharToMultiByte_alloc(GetACP(), 0,
+                               ArglistW[i], wcslen(ArglistW[i]) + 1,
+                               (LPSTR *)&argv[i], &len, 0, 0);
+               if (argv[i] == NULL)
+               {
+                   /* Out of memory, clear everything. */
+                   while (i > 0)
+                       free(argv[--i]);
+                   free(argv);
+                   argc = 0;
+               }
+           }
+       }
+    }
+
+    global_argc = argc;
+    global_argv = argv;
+    if (argc > 0)
+       used_file_indexes = malloc(argc * sizeof(int));
+
+    if (argvp != NULL)
+       *argvp = argv;
+    return argc;
+}
+
+    void
+free_cmd_argsW(void)
+{
+    if (ArglistW != NULL)
+    {
+       GlobalFree(ArglistW);
+       ArglistW = NULL;
+    }
+}
+
+/*
+ * Remember "name" is an argument that was added to the argument list.
+ * This avoids that we have to re-parse the argument list when fix_arg_enc()
+ * is called.
+ */
+    void
+used_file_arg(char *name, int literal, int full_path)
+{
+    int                i;
+
+    if (used_file_indexes == NULL)
+       return;
+    for (i = used_file_argc + 1; i < global_argc; ++i)
+       if (STRCMP(global_argv[i], name) == 0)
+       {
+           used_file_argc = i;
+           used_file_indexes[used_file_count++] = i;
+           break;
+       }
+    used_file_literal = literal;
+    used_file_full_path = full_path;
+}
+
+/*
+ * Remember the length of the argument list as it was.  If it changes then we
+ * leave it alone when 'encoding' is set.
+ */
+    void
+set_alist_count(void)
+{
+    used_alist_count = GARGCOUNT;
+}
 
+/*
+ * Fix the encoding of the command line arguments.  Invoked when 'encoding'
+ * has been changed while starting up.  Use the UCS-2 command line arguments
+ * and convert them to 'encoding'.
+ */
+    void
+fix_arg_enc(void)
+{
+    int                i;
+    int                idx;
+    char_u     *str;
+
+    /* Safety checks:
+     * - if argument count differs between the wide and non-wide argument
+     *   list, something must be wrong.
+     * - the file name arguments must have been located.
+     * - the length of the argument list wasn't changed by the user.
+     */
+    if (global_argc != (int)nArgsW
+           || ArglistW == NULL
+           || used_file_indexes == NULL
+           || used_file_count == 0
+           || used_alist_count != GARGCOUNT)
+       return;
+
+    /* Clear the argument list.  Make room for the new arguments. */
+    alist_clear(&global_alist);
+    if (ga_grow(&global_alist.al_ga, used_file_count) == FAIL)
+       return;     /* out of memory */
+
+    for (i = 0; i < used_file_count; ++i)
+    {
+       idx = used_file_indexes[i];
+       str = ucs2_to_enc(ArglistW[idx], NULL);
+       if (str != NULL)
+           alist_add(&global_alist, str, used_file_literal ? 2 : 0);
+    }
+
+    if (!used_file_literal)
+    {
+       /* Now expand wildcards in the arguments. */
+       /* Temporarily add '(' and ')' to 'isfname'.  These are valid
+        * filename characters but are excluded from 'isfname' to make
+        * "gf" work on a file name in parenthesis (e.g.: see vim.h). */
+       do_cmdline_cmd((char_u *)":let SaVe_ISF = &isf|set isf+=(,)");
+       alist_expand();
+       do_cmdline_cmd((char_u *)":let &isf = SaVe_ISF|unlet SaVe_ISF");
+    }
+
+    /* If wildcard expansion failed, we are editing the first file of the
+     * arglist and there is no file name: Edit the first argument now. */
+    if (curwin->w_arg_idx == 0 && curbuf->b_fname == NULL)
+    {
+       do_cmdline_cmd((char_u *)":rewind");
+       if (GARGCOUNT == 1 && used_file_full_path)
+           (void)vim_chdirfile(alist_name(&GARGLIST[0]));
+    }
+}
 #endif
index 3a52fa77c56e54d4d351f42eede2cf80f57f72f6..50671f44ed627f2686b12b4843a39b9c11486845 100644 (file)
@@ -1,4 +1,4 @@
-/* gui_kde.c */
+/* gui_kde.cc */
 void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
 void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
 void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
@@ -16,4 +16,4 @@ void gui_mch_find_dialog __ARGS((exarg_T *eap));
 void gui_mch_replace_dialog __ARGS((exarg_T *eap));
 void ex_helpfind __ARGS((exarg_T *eap));
 void gui_make_popup __ARGS((char_u *path_name));
-/* vim: set ft=c : */
+/* vim: set ft=cpp : */
index 7d968d9c5a847a73bceebaefca2ee52420638f73..c4eb5b0e8e0d97b3b6a48914bacf1523d01262f1 100644 (file)
@@ -1,4 +1,4 @@
-/* gui_kde_x11.c */
+/* gui_kde_x11.cc */
 void gui_mch_prepare __ARGS((int *argc, char **argv));
 void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
 void gui_mch_stop_blink __ARGS((void));
@@ -59,4 +59,4 @@ void mch_set_mouse_shape __ARGS((int shape));
 char_u *gui_mch_font_dialog __ARGS((char_u *oldval));
 void gui_mch_settitle __ARGS((char_u *title,char_u *icon));
 void gui_mch_update_codec __ARGS((void));
-/* vim: set ft=c : */
+/* vim: set ft=cpp : */
index 9567a0acbb8375e73b0b9bfb0f18333e60ac6476..88f14f4b8f69d142279d135cb5ed1e31ed2d55ea 100644 (file)
@@ -47,6 +47,7 @@ int dbcs_screen_head_off __ARGS((char_u *base, char_u *p));
 int utf_head_off __ARGS((char_u *base, char_u *p));
 int mb_off_next __ARGS((char_u *base, char_u *p));
 int mb_tail_off __ARGS((char_u *base, char_u *p));
+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));
index 2daa1467b68f6565b465db9da6361abfa4900859..185c8ad6235745d4b4e06be7cb7c56ede940bd8e 100644 (file)
@@ -45,4 +45,9 @@ 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));
 /* vim: set ft=c : */
index b4dd3eae66df7f2d33dae09546cb82c97e5f1366..82cebceb26f7c451f997c64a863c504ccea3c43d 100644 (file)
@@ -13,7 +13,7 @@ char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
 int syn_get_id __ARGS((long lnum, long col, int trans));
 int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
 void init_highlight __ARGS((int both, int reset));
-int load_colors __ARGS((char_u *p));
+int load_colors __ARGS((char_u *name));
 void do_highlight __ARGS((char_u *line, int forceit, int init));
 void restore_cterm_colors __ARGS((void));
 void set_normal_colors __ARGS((void));
index b939275a37a382760c951cbb0e6abf8d03fe7092..0cb9c6956c108ae0339d8ce0d2f4a89a6c9f227b 100644 (file)
@@ -1124,6 +1124,7 @@ qf_jump(dir, errornr, forceit)
 # endif
            if (win_split(0, n) == FAIL)
                goto theend;
+           opened_window = TRUE;       /* close it when fail */
 
            if (curwin->w_height < p_hh)
                win_setheight((int)p_hh);
@@ -1137,7 +1138,7 @@ qf_jump(dir, errornr, forceit)
      * If currently in the quickfix window, find another window to show the
      * file in.
      */
-    if (bt_quickfix(curbuf))
+    if (bt_quickfix(curbuf) && !opened_window)
     {
        /*
         * If there is no file specified, we don't know where to go.
index 628be9a9ed64faf28f71e23acf6be54b06939e3b..6c1d6ccef22524b2ec57a1f2e601ccd549b4b5de 100644 (file)
@@ -6651,9 +6651,14 @@ screenalloc(clear)
                        len = screen_Columns;
                    else
                        len = Columns;
-                   mch_memmove(new_ScreenLines + new_LineOffset[new_row],
-                           ScreenLines + LineOffset[old_row],
-                           (size_t)len * sizeof(schar_T));
+#ifdef FEAT_MBYTE
+                   /* When switching to utf-8 dont copy characters, they
+                    * may be invalid now. */
+                   if (!(enc_utf8 && ScreenLinesUC == NULL))
+#endif
+                       mch_memmove(new_ScreenLines + new_LineOffset[new_row],
+                               ScreenLines + LineOffset[old_row],
+                               (size_t)len * sizeof(schar_T));
 #ifdef FEAT_MBYTE
                    if (enc_utf8 && ScreenLinesUC != NULL)
                    {
index 9297f1306c9da8bbced261a53bd6054b95692d49..4975af5314e65a531f8fbf0bc26bfe3f617d2c19 100644 (file)
@@ -854,16 +854,18 @@ typedef struct
 
 #define CONV_NONE              0
 #define CONV_TO_UTF8           1
-#define CONV_TO_LATIN1         2
-#define CONV_ICONV             3
+#define CONV_9_TO_UTF8         2
+#define CONV_TO_LATIN1         3
+#define CONV_TO_LATIN9         4
+#define CONV_ICONV             5
 #ifdef WIN3264
-# define CONV_CODEPAGE               /* codepage -> codepage */
+# define CONV_CODEPAGE         10      /* codepage -> codepage */
 #endif
 #ifdef MACOS_X
-# define CONV_MAC_LATIN1       5
-# define CONV_LATIN1_MAC       6
-# define CONV_MAC_UTF8         7
-# define CONV_UTF8_MAC         8
+# define CONV_MAC_LATIN1       20
+# define CONV_LATIN1_MAC       21
+# define CONV_MAC_UTF8         22
+# define CONV_UTF8_MAC         23
 #endif
 
 /*
index e99f097439be23571229ed3fd66da8a8d76f1a3e..4956aec449d4a383cb01c1b8d45ec0a4a0eebfa0 100644 (file)
@@ -437,17 +437,21 @@ syntax_start(wp, lnum)
     linenr_T   parsed_lnum;
     linenr_T   first_stored;
     int                dist;
+    static int changedtick = 0;        /* remember the last change ID */
 
     reg_syn = TRUE;    /* let vim_regexec() know we're using syntax */
 
     /*
      * After switching buffers, invalidate current_state.
+     * Also do this when a change was made, the current state may be invalid
+     * then.
      */
-    if (syn_buf != wp->w_buffer)
+    if (syn_buf != wp->w_buffer || changedtick != syn_buf->b_changedtick)
     {
        invalidate_current_state();
        syn_buf = wp->w_buffer;
     }
+    changedtick = syn_buf->b_changedtick;
     syn_win = wp;
 
     /*
@@ -7392,7 +7396,7 @@ get_attr_entry(table, aep)
        return i + ATTR_OFF;
     }
 
-    if (table->ga_len + ATTR_OFF == 256)
+    if (table->ga_len + ATTR_OFF >= 256)
     {
        /*
         * Running out of attribute entries!  remove all attributes, and
diff --git a/src/testdir/test.ok b/src/testdir/test.ok
deleted file mode 100644 (file)
index 1842af2..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-Results of test49.vim:
-*** Test   1: OK (34695)
-*** Test   2: OK (34695)
-*** Test   3: OK (1384648195)
-*** Test   4: OK (32883)
-*** Test   5: OK (32883)
-*** Test   6: OK (603978947)
-*** Test   7: OK (90563)
-*** Test   8: OK (562493431)
-*** Test   9: OK (363)
-*** Test  10: OK (559615)
-*** Test  11: OK (2049)
-*** Test  12: OK (352256)
-*** Test  13: OK (145)
-*** Test  14: OK (42413)
-*** Test  15: OK (42413)
-*** Test  16: OK (8722)
-*** Test  17: OK (285127993)
-*** Test  18: OK (67224583)
-*** Test  19: OK (69275973)
-*** Test  20: OK (1874575085)
-*** Test  21: OK (147932225)
-*** Test  22: OK (4161)
-*** Test  23: OK (49)
-*** Test  24: OK (41)
-*** Test  25: OK (260177811)
-*** Test  26: OK (1681500476)
-*** Test  27: OK (1996459)
-*** Test  28: OK (1996459)
-*** Test  29: OK (170428555)
-*** Test  30: OK (190905173)
-*** Test  31: OK (190905173)
-*** Test  32: OK (354833067)
---- Test  33: sum = 178275600 (ok)
-*** Test  33: OK (1216907538)
-*** Test  34: OK (2146584868)
-*** Test  35: OK (2146584868)
-*** Test  36: OK (1071644672)
-*** Test  37: OK (1071644672)
-*** Test  38: OK (357908480)
-*** Test  39: OK (357908480)
-*** Test  40: OK (357908480)
-*** Test  41: OK (3076095)
-*** Test  42: OK (1505155949)
-*** Test  43: OK (1157763329)
-*** Test  44: OK (1031761407)
-*** Test  45: OK (1157763329)
-*** Test  46: OK (739407)
-*** Test  47: OK (371213935)
-*** Test  48: OK (756255461)
-*** Test  49: OK (179000669)
-*** Test  50: OK (363550045)
-*** Test  51: OK (40744667)
-*** Test  52: OK (1247112011)
-*** Test  53: OK (131071)
-*** Test  54: OK (2047)
-*** Test  55: OK (1023)
-*** Test  56: OK (511)
-*** Test  57: OK (2147450880)
-*** Test  58: OK (624945)
-*** Test  59: OK (2038431743)
-*** Test  60: OK (311511339)
-*** Test  61: OK (374889517)
-*** Test  62: OK (286331153)
-*** Test  63: OK (236978127)
-*** Test  64: OK (1499645335)
-*** Test  65: OK (70187)
-*** Test  66: OK (5464)
-*** Test  67: OK (212514423)
-*** Test  68: OK (212514423)
-*** Test  69: OK (8995471)
-*** Test  70: OK (69544277)
-*** Test  71: OK (34886997)
-*** Test  72: OK (1789569365)
-*** Test  73: OK (9032615)
-*** Test  74: OK (224907669)
-*** Test  75: OK (2000403408)
-*** Test  76: OK (1610087935)
-*** Test  77: OK (1388671)
-*** Test  78: OK (134217728)
-*** Test  79: OK (70288929)
-*** Test  80: OK (17895765)
-*** Test  81: OK (387)
-*** Test  82: OK (8454401)
-*** Test  83: OK (2835)
-*** Test  84: OK (934782101)
-*** Test  85: OK (198689)
---- Test  86: All tests were run with throwing exceptions on error.
-             The $VIMNOERRTHROW control is not configured.
---- Test  86: All tests were run with throwing exceptions on interrupt.
-             The $VIMNOINTTHROW control is not configured.
-*** Test  86: OK (50443995)
index e6563145410fb30de06a1e69bc088070e9fedb98..f27f0eaea6191ae4d2bdd3a2802942077344cb39 100644 (file)
@@ -17,6 +17,7 @@
  * Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
  * It has been changed beyond recognition since then.
  *
+ * Differences between version 6.x and 7.x can be found with ":help version7".
  * Differences between version 5.x and 6.x can be found with ":help version6".
  * Differences between version 4.x and 5.x can be found with ":help version5".
  * Differences between version 3.0 and 4.x can be found with ":help version4".
@@ -1028,7 +1029,7 @@ intro_message(colon)
        "",
        N_("type  :q<Enter>               to exit         "),
        N_("type  :help<Enter>  or  <F1>  for on-line help"),
-       N_("type  :help version6<Enter>   for version info"),
+       N_("type  :help version7<Enter>   for version info"),
        NULL,
        "",
        N_("Running in Vi compatible mode"),
index 5799d9cc4397566ec8d2c5b51b5bf4a97b4a30b4..67b47d5709139d23eaeedd8d2d089013cb5e03bd 100644 (file)
@@ -36,5 +36,5 @@
 #define VIM_VERSION_NODOT      "vim70aa"
 #define VIM_VERSION_SHORT      "7.0aa"
 #define VIM_VERSION_MEDIUM     "7.0aa ALPHA"
-#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2004 June 30)"
-#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2004 June 30, compiled "
+#define VIM_VERSION_LONG       "VIM - Vi IMproved 7.0aa ALPHA (2004 Oct 4)"
+#define VIM_VERSION_LONG_DATE  "VIM - Vi IMproved 7.0aa ALPHA (2004 Oct 4, compiled "
index 66eed35ca3bffaa1eeab1543f69a1b16f6a9bc15..11ff2a526e532d039f89d71e70a7cac5e62cff2a 100644 (file)
--- a/src/vim.h
+++ b/src/vim.h
@@ -1715,7 +1715,8 @@ typedef int VimClipboard; /* This is required for the prototypes. */
 # define ENC_2WORD     0x100       /* Unicode: UTF-16 */
 
 # define ENC_LATIN1    0x200       /* Latin1 */
-# define ENC_MACROMAN  0x400       /* Mac Roman (not Macro Man! :-) */
+# define ENC_LATIN9    0x400       /* Latin9 */
+# define ENC_MACROMAN  0x800       /* Mac Roman (not Macro Man! :-) */
 #endif
 
 #ifdef FEAT_MBYTE