summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/autocmd.txt19
-rw-r--r--runtime/doc/change.txt4
-rw-r--r--runtime/doc/digraph.txt27
-rw-r--r--runtime/doc/eval.txt19
-rw-r--r--runtime/doc/if_mzsch.txt30
-rw-r--r--runtime/doc/options.txt8
-rw-r--r--runtime/doc/pi_netrw.txt122
-rw-r--r--runtime/doc/syntax.txt4
-rw-r--r--runtime/doc/tags6
-rw-r--r--runtime/doc/todo.txt118
-rw-r--r--runtime/doc/usr_41.txt8
-rw-r--r--runtime/doc/version7.txt25
-rw-r--r--runtime/filetype.vim31
-rw-r--r--runtime/indent/eiffel.vim10
-rw-r--r--runtime/indent/java.vim4
-rw-r--r--runtime/menu.vim4
-rw-r--r--runtime/plugin/netrw.vim93
-rw-r--r--runtime/scripts.vim8
-rw-r--r--runtime/syntax/lss.vim4
-rw-r--r--runtime/syntax/pccts.vim2
-rw-r--r--runtime/syntax/pod.vim14
-rw-r--r--runtime/syntax/samba.vim18
-rw-r--r--runtime/syntax/scheme.vim37
-rw-r--r--src/GvimExt/gvimext.cpp2
-rw-r--r--src/Makefile2
-rw-r--r--src/digraph.c1
-rw-r--r--src/eval.c66
-rw-r--r--src/fileio.c2
-rw-r--r--src/globals.h1
-rw-r--r--src/gui_gtk.c6
-rw-r--r--src/gui_gtk_x11.c9
-rw-r--r--src/gui_mac.c8
-rw-r--r--src/gui_w32.c38
-rw-r--r--src/gui_w48.c12
-rw-r--r--src/mbyte.c100
-rw-r--r--src/menu.c2
-rw-r--r--src/os_mswin.c22
-rw-r--r--src/os_w32exe.c169
-rw-r--r--src/os_win32.c327
-rw-r--r--src/proto/gui_kde.pro4
-rw-r--r--src/proto/gui_kde_x11.pro4
-rw-r--r--src/proto/mbyte.pro1
-rw-r--r--src/proto/os_win32.pro5
-rw-r--r--src/proto/syntax.pro2
-rw-r--r--src/quickfix.c3
-rw-r--r--src/screen.c11
-rw-r--r--src/structs.h16
-rw-r--r--src/syntax.c8
-rw-r--r--src/testdir/test.ok92
-rw-r--r--src/version.c3
-rw-r--r--src/version.h4
-rw-r--r--src/vim.h3
52 files changed, 954 insertions, 584 deletions
diff --git a/runtime/doc/autocmd.txt b/runtime/doc/autocmd.txt
index 14605e80f..eddfead8a 100644
--- a/runtime/doc/autocmd.txt
+++ b/runtime/doc/autocmd.txt
@@ -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
diff --git a/runtime/doc/change.txt b/runtime/doc/change.txt
index 93c554f33..48a16111d 100644
--- a/runtime/doc/change.txt
+++ b/runtime/doc/change.txt
@@ -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
diff --git a/runtime/doc/digraph.txt b/runtime/doc/digraph.txt
index 529b30d2d..ed4527175 100644
--- a/runtime/doc/digraph.txt
+++ b/runtime/doc/digraph.txt
@@ -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 ä and o: 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)
diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt
index b85436287..f3ee1feaf 100644
--- a/runtime/doc/eval.txt
+++ b/runtime/doc/eval.txt
@@ -1,4 +1,4 @@
-*eval.txt* For Vim version 7.0aa. Last change: 2004 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*
diff --git a/runtime/doc/if_mzsch.txt b/runtime/doc/if_mzsch.txt
index 269a0cede..d31815a29 100644
--- a/runtime/doc/if_mzsch.txt
+++ b/runtime/doc/if_mzsch.txt
@@ -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:".
diff --git a/runtime/doc/options.txt b/runtime/doc/options.txt
index 17201b457..4879a64b6 100644
--- a/runtime/doc/options.txt
+++ b/runtime/doc/options.txt
@@ -1,4 +1,4 @@
-*options.txt* For Vim version 7.0aa. Last change: 2004 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
diff --git a/runtime/doc/pi_netrw.txt b/runtime/doc/pi_netrw.txt
index 991c9a4a0..47d0d7e7e 100644
--- a/runtime/doc/pi_netrw.txt
+++ b/runtime/doc/pi_netrw.txt
@@ -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
diff --git a/runtime/doc/syntax.txt b/runtime/doc/syntax.txt
index 152728f53..6fe03f9dd 100644
--- a/runtime/doc/syntax.txt
+++ b/runtime/doc/syntax.txt
@@ -1,4 +1,4 @@
-*syntax.txt* For Vim version 7.0aa. Last change: 2004 Sep 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
diff --git a/runtime/doc/tags b/runtime/doc/tags
index 98aa7aa2e..c46eeb65b 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -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*
diff --git a/runtime/doc/todo.txt b/runtime/doc/todo.txt
index d4d0cdaa2..7cb6dbad6 100644
--- a/runtime/doc/todo.txt
+++ b/runtime/doc/todo.txt
@@ -1,4 +1,4 @@
-*todo.txt* For Vim version 7.0aa. Last change: 2004 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).
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 97c39d9a0..ace402f9a 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -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:
diff --git a/runtime/doc/version7.txt b/runtime/doc/version7.txt
index 01705ff29..707453249 100644
--- a/runtime/doc/version7.txt
+++ b/runtime/doc/version7.txt
@@ -1,4 +1,4 @@
-*version7.txt* For Vim version 7.0aa. Last change: 2004 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:
diff --git a/runtime/filetype.vim b/runtime/filetype.vim
index 5fd12aa9f..26c222f0b 100644
--- a/runtime/filetype.vim
+++ b/runtime/filetype.vim
@@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
-" Last Change: 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
diff --git a/runtime/indent/eiffel.vim b/runtime/indent/eiffel.vim
index ac31d1043..22b932a67 100644
--- a/runtime/indent/eiffel.vim
+++ b/runtime/indent/eiffel.vim
@@ -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
diff --git a/runtime/indent/java.vim b/runtime/indent/java.vim
index a600c4bf3..311d7086e 100644
--- a/runtime/indent/java.vim
+++ b/runtime/indent/java.vim
@@ -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")
diff --git a/runtime/menu.vim b/runtime/menu.vim
index b4ab63030..b504ff82c 100644
--- a/runtime/menu.vim
+++ b/runtime/menu.vim
@@ -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
diff --git a/runtime/plugin/netrw.vim b/runtime/plugin/netrw.vim
index 9f5dc9e74..608cc7d21 100644
--- a/runtime/plugin/netrw.vim
+++ b/runtime/plugin/netrw.vim
@@ -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)
diff --git a/runtime/scripts.vim b/runtime/scripts.vim
index 07d04ff07..69bee3aaf 100644
--- a/runtime/scripts.vim
+++ b/runtime/scripts.vim
@@ -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\>'
diff --git a/runtime/syntax/lss.vim b/runtime/syntax/lss.vim
index fe20701d1..6620707f9 100644
--- a/runtime/syntax/lss.vim
+++ b/runtime/syntax/lss.vim
@@ -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
diff --git a/runtime/syntax/pccts.vim b/runtime/syntax/pccts.vim
index ef5268117..8341f5bd4 100644
--- a/runtime/syntax/pccts.vim
+++ b/runtime/syntax/pccts.vim
@@ -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
diff --git a/runtime/syntax/pod.vim b/runtime/syntax/pod.vim
index 24d0c852c..60f335365 100644
--- a/runtime/syntax/pod.vim
+++ b/runtime/syntax/pod.vim
@@ -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
diff --git a/runtime/syntax/samba.vim b/runtime/syntax/samba.vim
index 10f7edce6..31570e093 100644
--- a/runtime/syntax/samba.vim
+++ b/runtime/syntax/samba.vim
@@ -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
diff --git a/runtime/syntax/scheme.vim b/runtime/syntax/scheme.vim
index 1d4f55ddc..41d491c65 100644
--- a/runtime/syntax/scheme.vim
+++ b/runtime/syntax/scheme.vim
@@ -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
diff --git a/src/GvimExt/gvimext.cpp b/src/GvimExt/gvimext.cpp
index 1cb0b8365..5a175d36d 100644
--- a/src/GvimExt/gvimext.cpp
+++ b/src/GvimExt/gvimext.cpp
@@ -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++,
diff --git a/src/Makefile b/src/Makefile
index fade47f35..72f0cb8b0 100644
--- a/src/Makefile
+++ b/src/Makefile
@@ -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
# }}}
diff --git a/src/digraph.c b/src/digraph.c
index de61ce2c7..4c15d498c 100644
--- a/src/digraph.c
+++ b/src/digraph.c
@@ -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},
diff --git a/src/eval.c b/src/eval.c
index df83da5a8..492feba59 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -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
diff --git a/src/fileio.c b/src/fileio.c
index c925775a9..bf29748d0 100644
--- a/src/fileio.c
+++ b/src/fileio.c
@@ -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)
diff --git a/src/globals.h b/src/globals.h
index 83e6c4b96..93371347f 100644
--- a/src/globals.h
+++ b/src/globals.h
@@ -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 */
diff --git a/src/gui_gtk.c b/src/gui_gtk.c
index 0d552c05f..ed4e5bc77 100644
--- a/src/gui_gtk.c
+++ b/src/gui_gtk.c
@@ -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
diff --git a/src/gui_gtk_x11.c b/src/gui_gtk_x11.c
index aed649b27..bc727733f 100644
--- a/src/gui_gtk_x11.c
+++ b/src/gui_gtk_x11.c
@@ -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,
diff --git a/src/gui_mac.c b/src/gui_mac.c
index 645e0b5b8..f60567e57 100644
--- a/src/gui_mac.c
+++ b/src/gui_mac.c
@@ -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 */
diff --git a/src/gui_w32.c b/src/gui_w32.c
index a3a7ffa24..ef20a28c6 100644
--- a/src/gui_w32.c
+++ b/src/gui_w32.c
@@ -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);
diff --git a/src/gui_w48.c b/src/gui_w48.c
index 7b8d8de30..eeaf651c7 100644
--- a/src/gui_w48.c
+++ b/src/gui_w48.c
@@ -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;
}
diff --git a/src/mbyte.c b/src/mbyte.c
index a71fb5174..071096653 100644
--- a/src/mbyte.c
+++ b/src/mbyte.c
@@ -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)
diff --git a/src/menu.c b/src/menu.c
index fc8411fbf..258b84da9 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -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;
diff --git a/src/os_mswin.c b/src/os_mswin.c
index 7b5da8a4c..7f2288ee5 100644
--- a/src/os_mswin.c
+++ b/src/os_mswin.c
@@ -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
}
diff --git a/src/os_w32exe.c b/src/os_w32exe.c
index 7bdceadcb..ac9bf3c4a 100644
--- a/src/os_w32exe.c
+++ b/src/os_w32exe.c
@@ -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
-
diff --git a/src/os_win32.c b/src/os_win32.c
index bc6c7d4fd..fce48f9fc 100644
--- a/src/os_win32.c
+++ b/src/os_win32.c
@@ -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 char* msgid)
+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 char* domainname)
+null_libintl_textdomain(const char *domainname)
{
return NULL;
}
@@ -530,7 +531,7 @@ const static struct
__stdcall
#endif
win32_kbd_patch_key(
- KEY_EVENT_RECORD* pker)
+ 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_RECORD* pmer)
+ 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
diff --git a/src/proto/gui_kde.pro b/src/proto/gui_kde.pro
index 3a52fa77c..50671f44e 100644
--- a/src/proto/gui_kde.pro
+++ b/src/proto/gui_kde.pro
@@ -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 : */
diff --git a/src/proto/gui_kde_x11.pro b/src/proto/gui_kde_x11.pro
index 7d968d9c5..c4eb5b0e8 100644
--- a/src/proto/gui_kde_x11.pro
+++ b/src/proto/gui_kde_x11.pro
@@ -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 : */
diff --git a/src/proto/mbyte.pro b/src/proto/mbyte.pro
index 9567a0acb..88f14f4b8 100644
--- a/src/proto/mbyte.pro
+++ b/src/proto/mbyte.pro
@@ -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));
diff --git a/src/proto/os_win32.pro b/src/proto/os_win32.pro
index 2daa1467b..185c8ad62 100644
--- a/src/proto/os_win32.pro
+++ b/src/proto/os_win32.pro
@@ -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 : */
diff --git a/src/proto/syntax.pro b/src/proto/syntax.pro
index b4dd3eae6..82cebceb2 100644
--- a/src/proto/syntax.pro
+++ b/src/proto/syntax.pro
@@ -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));
diff --git a/src/quickfix.c b/src/quickfix.c
index b939275a3..0cb9c6956 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -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.
diff --git a/src/screen.c b/src/screen.c
index 628be9a9e..6c1d6ccef 100644
--- a/src/screen.c
+++ b/src/screen.c
@@ -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)
{
diff --git a/src/structs.h b/src/structs.h
index 9297f1306..4975af531 100644
--- a/src/structs.h
+++ b/src/structs.h
@@ -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 4 /* 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
/*
diff --git a/src/syntax.c b/src/syntax.c
index e99f09743..4956aec44 100644
--- a/src/syntax.c
+++ b/src/syntax.c
@@ -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
index 1842af259..000000000
--- a/src/testdir/test.ok
+++ /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)
diff --git a/src/version.c b/src/version.c
index e65631454..f27f0eaea 100644
--- a/src/version.c
+++ b/src/version.c
@@ -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"),
diff --git a/src/version.h b/src/version.h
index 5799d9cc4..67b47d570 100644
--- a/src/version.h
+++ b/src/version.h
@@ -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 "
diff --git a/src/vim.h b/src/vim.h
index 66eed35ca..11ff2a526 100644
--- 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