0
0
mirror of https://github.com/vim/vim.git synced 2025-07-04 23:07:33 -04:00

updated for version 7.0017

This commit is contained in:
Bram Moolenaar 2004-10-07 21:02:47 +00:00
parent e5f258eb4c
commit 3fdfa4a9a5
52 changed files with 959 additions and 589 deletions

View File

@ -1,4 +1,4 @@
*autocmd.txt* For Vim version 7.0aa. Last change: 2004 Aug 30
*autocmd.txt* For Vim version 7.0aa. Last change: 2004 Sep 17
VIM REFERENCE MANUAL by Bram Moolenaar
@ -234,22 +234,26 @@ BufWriteCmd Before writing the whole buffer to a file.
should not be changed. |Cmd-event|
*FileWritePre*
FileWritePre Before writing to a file, when not writing the
whole buffer.
whole buffer. Use the '[ and '] marks for the
range of lines.
*FileWritePost*
FileWritePost After writing to a file, when not writing the
whole buffer.
*FileWriteCmd*
FileWriteCmd Before writing to a file, when not writing the
whole buffer. Should do the writing to the
file. Should not change the buffer.
file. Should not change the buffer. Use the
'[ and '] marks for the range of lines.
|Cmd-event|
*FileAppendPre*
FileAppendPre Before appending to a file.
FileAppendPre Before appending to a file. Use the '[ and ']
marks for the range of lines.
*FileAppendPost*
FileAppendPost After appending to a file.
*FileAppendCmd*
FileAppendCmd Before appending to a file. Should do the
appending to the file. |Cmd-event|
appending to the file. Use the '[ and ']
marks for the range of lines.|Cmd-event|
*FilterWritePre*
FilterWritePre Before writing a file for a filter command or
making a diff.
@ -738,8 +742,9 @@ The '[ and '] marks have a special position:
the new lines will be inserted.
- Before the *ReadPost event the '[ mark is set to the first line that was
just read, the '] mark to the last line.
- Before executing the *WritePre and *AppendPre autocommands the '[ mark is
set to the first line that will be written, the '] mark to the last line.
- Before executing the *WriteCmd, *WritePre and *AppendPre autocommands the '[
mark is set to the first line that will be written, the '] mark to the last
line.
Careful: '[ and '] change when using commands that change the buffer.
In commands which expect a file name, you can use "<afile>" for the file name

View File

@ -1,4 +1,4 @@
*change.txt* For Vim version 7.0aa. Last change: 2004 Jun 16
*change.txt* For Vim version 7.0aa. Last change: 2004 Sep 16
VIM REFERENCE MANUAL by Bram Moolenaar
@ -659,7 +659,7 @@ magic nomagic action ~
\0 replaced with the whole matched pattern *\0* *s/\0*
\1 replaced with the matched pattern in the first
pair of () *s/\1*
\2 replaced with the matched pattern in the first
\2 replaced with the matched pattern in the second
pair of () *s/\2*
.. .. *s/\3*
\9 replaced with the matched pattern in the ninth

View File

@ -1,4 +1,4 @@
*digraph.txt* For Vim version 7.0aa. Last change: 2001 Sep 03
*digraph.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -28,7 +28,8 @@ An alternative is using the 'keymap' option.
*E104* *E39*
:dig[raphs] {char1}{char2} {number} ...
Add digraph {char1}{char2} to the list. {number} is
the decimal representation of the character.
the decimal representation of the character. Normally
it is the Unicode character, see |digraph-encoding|.
Example: >
:digr e: 235 a: 228
< Avoid defining a digraph with '_' (underscore) as the
@ -48,7 +49,24 @@ In the middle of each column is the resulting character. This may be mangled
if you look at it on a system that does not support digraphs or if you print
this file.
The decimal number is the number of the character.
*digraph-encoding*
The decimal number normally is the Unicode number of the character. Note that
the meaning doesn't change when 'encoding' changes. The character will be
converted from Unicode to 'encoding' when needed. This does require the
conversion to be available, it might fail.
When Vim was compiled without the +multi_byte feature, you need to specify the
character in the encoding given with 'encoding'. You might want to use
something like this: >
if has("multi_byte")
digraph oe 339
elseif &encoding == "iso-8859-15"
digraph oe 189
endif
This defines the "oe" digraph for a character that is number 339 in Unicode
and 189 in latin9 (iso-8859-15).
==============================================================================
2. Using digraphs *digraphs-use*
@ -142,6 +160,9 @@ Example: a: is
These are the RFC1345 digraphs for the one-byte characters. See the output of
":digraphs" for the others. The characters above 255 are only available when
Vim was compiled with the |+multi_byte| feature.
Exception: RFC1345 doesn't specify the euro sign. In Vim the digraph =e was
added for this.
*digraph-table*
char digraph hex dec official name ~
^@ NU 0x00 0 NULL (NUL)

View File

@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
*eval.txt* For Vim version 7.0aa. Last change: 2004 Oct 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -125,8 +125,8 @@ Expression syntax summary, from least to most significant:
|expr8| expr9[expr1] index in String
|expr9| number number constant
"string" string constant
'string' literal string constant
"string" string constant, backslash is special
'string' string constant
&option option value
(expr1) nested expression
variable internal variable
@ -355,13 +355,18 @@ Note that "\000" and "\x00" force the end of the string.
literal-string *literal-string* *E115*
---------------
'string' literal string constant *expr-'*
'string' string constant *expr-'*
Note that single quotes are used.
This string is taken literally. No backslashes are removed or have a special
meaning. A literal-string cannot contain a single quote. Use a normal string
for that.
This string is taken as it is. No backslashes are removed or have a special
meaning. A literal-string cannot contain a single quote. Use a normal,
double-quoted string for that.
Single quoted strings are useful for patterns, so that backslashes do not need
to be doubled. These two commands are equivalent: >
if a =~ "\\s*"
if a =~ '\s*'
option *expr-option* *E112* *E113*

View File

@ -79,9 +79,33 @@ All the examples below assume this naming scheme. Note that you need to do
this again for every buffer.
The auto-instantiation can be achieved with autocommands, e.g. you can put
something like this in your .vimrc: >
au VimEnter,BufNew,BufNewFile,BufAdd,BufReadPre *
\:mz (require (prefix vim- vimext)
something like this in your .vimrc (EOFs should not have indentation): >
function s:MzRequire()
if has("mzscheme")
:mz << EOF
(require (prefix vim- vimext))
(let ((buf (vim-get-buff-by-name (vim-eval "expand(\"<afile>\")"))))
(when (and buf (not (eq? buf (vim-curr-buff))))
(parameterize ((current-namespace (vim-get-buff-namespace buf)))
(namespace-attach-module vim-global-namespace 'vimext)
(namespace-require '(prefix vim vimext)))))
EOF
endif
endfunction
function s:MzStartup()
if has("mzscheme")
au BufNew,BufNewFile,BufAdd,BufReadPre * :call s:MzRequire()
:mz << EOF
(current-library-collection-paths
(cons
(build-path (find-system-path 'addon-dir) (version) "collects")
(current-library-collection-paths)))
EOF
endif
endfunction
call s:MzStartup()
<
The global namespace just instantiated this module with the prefix "vimext:".

View File

@ -1,4 +1,4 @@
*options.txt* For Vim version 7.0aa. Last change: 2004 Sep 04
*options.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -954,6 +954,12 @@ A jump table for the options with a short description can be found at |Q_op|.
prefer using ".bak", but make sure that you don't have files with
".bak" that you want to keep.
If you like to keep a lot of backups, you could use a BufWritePre
autocommand to change 'backupext' just before writing the file to
include a timestamp. >
:au BufWritePre * let &bex = '-' . strftime("%Y%b%d%X") . '~'
< Use 'backupdir' to put the backup in a different directory.
*'backupskip'* *'bsk'*
'backupskip' 'bsk' string (default: "/tmp/*,$TMPDIR/*,$TMP/*,$TEMP/*")
global

View File

@ -1,4 +1,4 @@
*pi_netrw.txt For Vim version 6.2. Last change: Sep 10, 2004
*pi_netrw.txt For Vim version 6.2. Last change: Sep 13, 2004
VIM REFERENCE MANUAL by Charles E. Campbell, Jr.
@ -587,10 +587,14 @@ NETRW BROWSER VARIABLES *netrw-browse-var*
"directories" and "files" in the
listing. This pattern is used to
remove such embedded messages.
g:netrw_keepdir keep current directory immune from the
browsing directory. The browsing
directory is contained in b:netrw_curdir
g:netrw_keepdir =1 (default) keep current directory
immune from the browsing directory.
=0 keep the current directory the
same as the browsing directory.
The browsing directory is contained in
b:netrw_curdir
g:netrw_list_cmd command for listing remote directories
g:netrw_longlist if =1, then long listing will be default
g:netrw_ftp_list_cmd options for passing along to ftp for
directory listing. Defaults:
unix or g:netrw_cygwin set: : "ls -lF"
@ -601,6 +605,12 @@ NETRW BROWSER VARIABLES *netrw-browse-var*
g:netrw_local_rmdir remove directory command (rmdir)
g:netrw_local_rename rename file/directory command
unix-default: rm win32-default: ren
g:netrw_maxfilenamelen =32 by default, selected so as to make
long listings fit on 80 column displays.
If your screen is wider, and you have
file/directory names longer than 32 bytes,
you may set this option to keep listings
columnar.
g:netrw_mkdir_cmd command for making a remote directory
g:netrw_rm_cmd command for removing files
g:netrw_rmdir_cmd command for removing directories
@ -825,22 +835,26 @@ See the <plugin/NetrwFileHandlers.vim> for an example of how to handle an html
file with mozilla.
MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c*
MAKING THE BROWSING DIRECTORY THE CURRENT DIRECTORY *netrw-c* *netrw-curdir*
By default, g:netrw_keepdir is 0. This setting means that the current
directory will track the browsing directory. However, setting g:netrw_keepdir
to 1 (say, in your <.vimrc>) will keep the current directory independent
of the browsing directory. In that case, in order to make the two
directories the same, use the "c" map (just type c).
By default, g:netrw_keepdir is 1. This setting means that the current
directory will not track the browsing directory. However, setting
g:netrw_keepdir to 0 (say, in your <.vimrc>) will tell netrw to have the
currently browsed directory be the current directory.
With the default setting for g:netrw_keepdir, in order to make the two
directories the same, use the "c" map (just type c). That map will set
the current directory to the current browsing directory.
BOOKMARKING A DIRECTORY *netrw-b*
BOOKMARKING A DIRECTORY *netrw-b* *netrw-bookmark* *netrw-bookmarks*
One may easily "bookmark" a directory by using
{cnt}b
Any count may be used.
Any count may be used. One may use viminfo's "!" option to retain bookmarks
between vim sessions.
CHANGING TO A BOOKMARKED DIRECTORY *netrw-B*
@ -913,7 +927,10 @@ the associated security issues.
P4. I would like long listings to be the default.
let g:netrw_longlist=1
let g:netrw_longlist=1
Check out |netrw-browse-var| for more customizations that
you can set.
P5. My times come up oddly in local browsing
@ -923,10 +940,10 @@ the associated security issues.
your <.vimrc>:
let g:netrw_timefmt= "%X" (where X is the option)
P6. I don't want my current directory changing just because I'm
browsing somewhere.
P6. I want my current directory to track my browsing.
How do I do that?
let g:netrw_keepdir= 1
let g:netrw_keepdir= 0
==============================================================================
@ -979,60 +996,65 @@ which is loaded automatically at startup (assuming :set nocp).
==============================================================================
10. History *netrw-history*
v48: * One may use ftp to do remote host file browsing
v50: * directories now displayed using buftype=nofile; should keep the
directory names as-is
* attempts to remove empty "[No File]" buffers leftover
from :file ..name.. commands
* bugfix: a "caps-lock" editing difficulty left in v49 was fixed
* syntax highlighting for "Showing:" the hiding list included
* bookmarks can now be retained if "!" is in the viminfo option
v49: * will use ftp for http://.../ browsing v48: * One may use ftp to
do remote host file browsing
* (windows and !cygwin) remote browsing with ftp can now use
the "dir" command internally to provide listings
* g:netrw_keepdir now allows one to keep the initial current
directory as the current directory (normally the local
file browser makes the currently viewed directory the
current directory)
directory as the current directory (normally the local file
browser makes the currently viewed directory the current
directory)
* g:netrw_alto and g:netrw_altv now support alternate placement
of windows started with o or v
* Nread ? and Nwrite ? now uses echomsg (instead of echo) so
:messages can repeat showing the help
* bugfix: avoids problems with partial matches of directory names
to prior buffers with longer names
* one can suppress error messages with g:netrw_quiet
* ctrl-h used instead of <Leader>h for editing hiding list
* one may edit the sorting sequence with the S map
* now allows confirmation of deletion with [y(es) n(o) a(ll) q(uit)]
* the "x" map now handles special file viewing with:
(windows) rundll32 url.dll
(gnome) gnome-open
(kde) kfmclient
If none of these are on the executable path, then
* one can suppress error messages with g:netrw_quiet ctrl-h used
* instead of <Leader>h for editing hiding list one may edit the
* sorting sequence with the S map now allows confirmation of
* deletion with [y(es) n(o) a(ll) q(uit)] the "x" map now handles
* special file viewing with:
(windows) rundll32 url.dll (gnome) gnome-open (kde)
kfmclient If none of these are on the executable path, then
NetrwFileHandlers.vim is used.
* directory bookmarking during both local and remote browsing
implemented
* one may view all, use the hiding list to suppress, or use the
hiding list to show-only remote and local file/directory listings
* improved unusual file and directory name handling
* preview window support
v47: * now handles local directory browsing.
v46: * now handles remote directory browsing
hiding list to show-only remote and local file/directory
listings
* improved unusual file and directory name handling preview
* window support
v47: * now handles local directory browsing. v46: * now handles
remote directory browsing
* g:netrw_silent (if 1) will cause all transfers to be silent'd
v45: * made the [user@]hostname:path form a bit more restrictive
to better handle errors in using protocols
(e.g. scp:usr@host:file was being recognized as an rcp request)
v44: * changed from "rsync -a" to just "rsync"
v45: * made the [user@]hostname:path form a bit more restrictive to
better handle errors in using protocols (e.g. scp:usr@host:file
was being recognized as an rcp request) v44: * changed from
"rsync -a" to just "rsync"
* somehow an editing error messed up the test to recognize
use of the fetch method for NetRead.
* more debugging statements included
v43: * moved "Explanation" comments to <pi_netrw.txt> help file
as "Network Reference" (|netrw-ref|)
v43: * moved "Explanation" comments to <pi_netrw.txt> help file as
"Network Reference" (|netrw-ref|)
* <netrw.vim> now uses Dfunc() Decho() and Dret() for debugging
* removed superfluous NetRestorePosn() calls
v42: * now does BufReadPre and BufReadPost events on file:///*
and file://localhost/*
v41: * installed file:///* and file://localhost/* handling
v40: * prevents redraw when a protocol error occurs so that the
user may see it
v39: * sftp support
v38: * Now uses NetRestorePosn() calls with Nread/Nwrite commands
v42: * now does BufReadPre and BufReadPost events on file:///* and
file://localhost/* v41: * installed file:///* and
file://localhost/* handling v40: * prevents redraw when a
protocol error occurs so that the user may see it v39: * sftp
support v38: * Now uses NetRestorePosn() calls with
Nread/Nwrite commands
* Temporary files now removed via bwipe! instead of bwipe
(thanks to Dave Roberts)
v37: * Claar's modifications which test if ftp is successful, otherwise
give an error message
(thanks to Dave Roberts) v37: * Claar's modifications which
test if ftp is successful, otherwise give an error message
* After a read, the alternate file was pointing to the temp file.
The temp file buffer is now wiped out.
* removed silent from transfer methods so user can see what's

View File

@ -1,4 +1,4 @@
*syntax.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
*syntax.txt* For Vim version 7.0aa. Last change: 2004 Sep 18
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1799,7 +1799,7 @@ If you do not want complex things like '@{${"foo"}}' to be parsed: >
:let perl_no_extended_vars = 1
{In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.)
(In Vim 6.x it was the other way around: "perl_extended_vars" enabled it.)
The coloring strings can be changed. By default strings and qq friends will be
highlighted like the first line. If you set the variable

View File

@ -3542,6 +3542,7 @@ E675 print.txt /*E675*
E676 options.txt /*E676*
E677 eval.txt /*E677*
E678 pattern.txt /*E678*
E679 syntax.txt /*E679*
E68 pattern.txt /*E68*
E69 pattern.txt /*E69*
E70 pattern.txt /*E70*
@ -4414,6 +4415,7 @@ diff-options diff.txt /*diff-options*
diff-patchexpr diff.txt /*diff-patchexpr*
diff.txt diff.txt /*diff.txt*
digraph-arg change.txt /*digraph-arg*
digraph-encoding digraph.txt /*digraph-encoding*
digraph-table digraph.txt /*digraph-table*
digraph.txt digraph.txt /*digraph.txt*
digraphs digraph.txt /*digraphs*
@ -4920,7 +4922,6 @@ hebrew hebrew.txt /*hebrew*
hebrew.txt hebrew.txt /*hebrew.txt*
help various.txt /*help*
help-context help.txt /*help-context*
help-tags tags 1
help-translated various.txt /*help-translated*
help-xterm-window various.txt /*help-xterm-window*
help.txt help.txt /*help.txt*
@ -5454,6 +5455,8 @@ netrw-R pi_netrw.txt /*netrw-R*
netrw-S pi_netrw.txt /*netrw-S*
netrw-activate pi_netrw.txt /*netrw-activate*
netrw-b pi_netrw.txt /*netrw-b*
netrw-bookmark pi_netrw.txt /*netrw-bookmark*
netrw-bookmarks pi_netrw.txt /*netrw-bookmarks*
netrw-browse pi_netrw.txt /*netrw-browse*
netrw-browse-cmds pi_netrw.txt /*netrw-browse-cmds*
netrw-browse-var pi_netrw.txt /*netrw-browse-var*
@ -5463,6 +5466,7 @@ netrw-contents pi_netrw.txt /*netrw-contents*
netrw-cr pi_netrw.txt /*netrw-cr*
netrw-credits pi_netrw.txt /*netrw-credits*
netrw-ctrl-l pi_netrw.txt /*netrw-ctrl-l*
netrw-curdir pi_netrw.txt /*netrw-curdir*
netrw-d pi_netrw.txt /*netrw-d*
netrw-debug pi_netrw.txt /*netrw-debug*
netrw-delete pi_netrw.txt /*netrw-delete*

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
*todo.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -30,18 +30,15 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Endless loop when "syntax reset" in ~/.vim/after/syntax/syncolor.vim.
Crash when using ":set background=dark". Solved!
Limit init_highlight() to five recursive calls?
patch for Vim 6.3 for free_oldval and init_highlight()?
Add browsedir(): like browse() but for directories.
For GTK it already sort-of works when the default name is empty.
Crash with long line. (Walter Briscoe, Sep 13)
When ":file" sets the alternate file name and it's empty this doesn't make
sense. Could skip it, but would that break scripts that rely on the buffer to
exist?
Add fix for appending BOM to 6.3? Reported by Alex Jakushev.
Win32 console doesn't compile. Does GetCommandLineW() work for non-GUI?
(Dave Roberts) If yes, then move the functions to another file.
link with kernel32.lib?
Folding support for 2html. (Carl Osterwisch, Oct 4)
How to evaluate an expression in the sandbox?
Aborting at the ATTENTION prompt causes trouble:
buffer remains active, nwindows isn't closed (fixed in buffer.c)
@ -59,7 +56,44 @@ Win32: When the path to a file has Russian characters, ":cd %:p:h" doesn't
work. (Valery Kondakoff)
Solved in os_mswin.c. Add to 6.3?
Patch for Win32 textdomain: NAKADAIRA Yukihiro, Sept 17.
GTK 2 error message with this sequence (Namsh Oct 7):
- start gvim with French locale
- set enc=utf-8
- :aunmenu *
- :unlet did_install_default_menus
- :source $VIMRUNTIME/menu.vim
Valencia: executable("xxd.exe") returns true while "!xxd" doesn't work.
Works fine for me. Only in specific environment?
netrw plugin: When coming back to the same directory a scratch buffer appears.
Only on Win32. (Charles Campbell, Sept 15)
New Eiffel indent script from Jocelyn Fiat. OK with David Clarke.
Win32: not using 'tenc' in GUI causes problems on Win 98? (Jiri Jezdinsky)
Try out with Russian input method.
After "Y" '[ and '] are not at start/end of the yanked text. (Ken Clark)
Patch for adding 'fsync' option: disable using fsync() on file write. (Sept.
26, Ciaran McCreesh)
Folding for C syntax: (Olaf Dabrunz 27 sept 2004)
Add remark about using Vim with VS .net to Visvim docs. (David Fishburn, Sept
27)
Vim icon for documents associated with Vim? (Rahul Kulkarni, sept 28)
Add a function to test if a font name actually works.
When using "set laststatus=2 cmdheight=2" in the .gvimrc you only get one line
for the cmdline. (Christian Robinson) When the Vim window is resized (e.g.,
xterm with many lines) it's OK.
For version 7.0:
@ -70,6 +104,7 @@ For version 7.0:
7 For Visual mode: Command to do a search for the string in the marked
area. Only when fewer than two lines. Use "g/" and "gb". Patch from
Yegappan Lakshmanan. 2004 Jul 11
When more than two lines: perform a search in the Visual area only.
8 Make 'statusline' local, so that each window can have a different
value. But should it also be local to a buffer? (Yegappan Lakshmanan
has a patch, 2004 Jul 11)
@ -168,6 +203,12 @@ For version 7.0:
- findmatch() should be adjusted for Lisp. See remark at
get_lisp_indent(). Esp. \( and \) should be skipped. (Dorai Sitaram,
incomplete patch Mar 18)
- Set user variables to the names of the actually used user vimrc file,
the first directory looked for user plugins/syntax files.
$MYVIMRC for .vimrc, $MYGVIMRC for .gvimrc, $MYRUNTIME/plugin for
runtime files?
Also: when the environment variable exists, use it. If it doesn't
exist, set it. Requires good names: $VIM_USER_VIMRC $VIM_USER_DIR
- In the kvim/KDE source files fix the formatting.
@ -192,6 +233,8 @@ For version 7.0:
the contains list directly for matching syntax items.
- Keep wordlist in syntax group, load it only once and use it several
times later. Sort of global syntax items.
- Use wordlists from openoffice (myspell). Work together with them to
update the wordlist. (Adri Verhoef, Aad Nales)
- REFACTORING: The main() function is very long. Move parts to separate
functions, especially loops. Ideas from Walter Briscoe (2003 Apr 3, 2004
Feb 9).
@ -205,9 +248,33 @@ For version 7.0:
http://sourceforge.net/projects/insenvim
http://cedet.sourceforge.net/intellisense.shtml (for Emacs)
Ivan Villanueva has something for Java.
Can't call it Intellisense, it is a trademark by Microsoft.
Ideas from the Vim 7 BOF at SANE:
- It's not possible to have one solution for all languages. Design an
interface for completion plugins. The matches can be done in a
Vim-script list.
- For interpreted languages, use the interpreter to obtain information.
Should work for Java (Eclipse does this), Python, Tcl, etc.
- Check Readline for its completion interface.
- Use ctags for other languages. Writing a file could trigger running
ctags, merging the tags of the changed file.
- UNDO TREE: keep all states of the text, don't delete undo info.
When making a change, instead of clearing any future undo (thus redo)
info, make a new branch.
To navigate through the undo tree number the states of the text
sequentially and make it possible to go through the tree in that order.
Could also use timestamps (to show the time and/or jump to a state five
minutes ago). (David Schweikert)
To go from one state to another: backtrack to a common state, then forward
again.
Only difficult thing: When going back in time, how to find the previous
text state in the tree?
Show the list of changes in a window to be able to select a version?
- PERSISTENT UNDO: store undo in a file.
Support multiple threads. Show the list of changes in a window to be able
to select a version.
Use timestamps, so that a version a certain time ago can be found and info
before some time/date can be flushed. 'undopersist' gives maximum time to
keep undo: "3h", "1d", "2w", "1y", etc. For the file use dot and
extension: ".filename.un~" (like swapfile but "un~" instead of "swp").
7 SWAP FILE CHANGE: When a dos format file was edited with ":e ++ff=unix",
Vim is killed and trying to recover the file, 'ff' will be dos. Same for
non-default fileencoding. (Miroslaw Dobrzanski-Neumann, Jul 17)
@ -235,8 +302,12 @@ For version 7.0:
- STICKY CURSOR: Add a way of scrolling that leaves the cursor where it is.
Especially when using the scrollbar. Typing a cursor-movement command
scrolls back to where the cursor is.
- Execute a function with standard option values. No need to save and
restore option values. Especially useful for new options. Problem: how
to avoid a performance penalty (esp. for string options)?
8 Support four composing/combining characters, needed for Hebrew. (Ron Aaron)
Add the 'maxcombining' option to set the nr. of composing characters.
At the same time support more colors (use two bytes when necessary).
- Add a few more things to 'diffopt': "horizontal", "vertical",
"foldcolumn". (Benji Fisher, 2004 Jun 21)
- FileChangedShellPost autocommand event: after (not) reloading a changed
@ -265,6 +336,9 @@ For version 7.0:
- "onemore" flag in 'virtualedit': move cursor past end of line. Patch by
Mattias Flodin (2004 Jul 30)
The fsync() in buf_write() causes laptop harddisk spinup. Add an option to
avoid it?
Support ":set syntax=cpp.doxygen"? Suggested patch by Michael Geddes (9 Aug
2004). Should also work for 'filetype'.
@ -274,6 +348,9 @@ Smilauer, 2004 Sep 13)
Win32: In 'fileencodings' allow using "acp" for the active codepage. Useful
value: "ucs-bom,utf-8,acp,latin1"
Win32: Cannot edit a file starting with # with --remote. (Giuseppe Bilotta,
Oct 6 2004)
For manipulating buffers without opening a new window, support Virtual
windows. Example:
:virtwin let l = GetBufLine(4, 10)
@ -291,6 +368,10 @@ Win32: In the generated batch files, use $VIMRUNTIME if it's set. Examples by
Mathias Michaelis (2004 Sep 6)
Also place vimtutor.bat in %windir%?
Support ":enew filename" to edit a new buffer with a name. It's like "enew |
file filename" but without setting the alternate file to a buffer without a
name. (Charles Campbell)
Vi incompatibility:
9 In Ex mode, "u" undoes all changes, not just the last one. (John Cowan)
@ -386,6 +467,7 @@ GTK+ GUI known bugs:
KDE GUI known bugs:
- The default font is ugly. bold text isn't displayed correctly.
(bold characters are half the width of normal characters)
- Error messages when starting up. The "tip of the day" box is empty.
- Encoding of menu items needs to be converted. (Yasuhiro Matsumoto)
@ -2041,6 +2123,7 @@ Autocommands:
*Leave - Leaving a mode (in pair with the above *Enter)
VimLeaveCheck - Before Vim decides to exit, so that it can be cancelled
when exiting isn't a good idea.
WinMoved - when windows have been moved around, e.g, ":wincmd J"
CmdUndefined - Like FuncUndefined but for user commands.
SearchPost - After doing a search command (e.g. to do "M")
PreDirChanged/PostDirChanged
@ -2511,8 +2594,6 @@ Mappings and Abbreviations:
- Add command to repeat a whole mapping ("." only repeats the last change in
a mapping). Also: Repeat a whole insert command, including any mappings
that it included. Sort-of automatic recording?
- Make it possible to undo all the commands from a mapping, including a
trailing unfinished command, e.g. for ":map K iX^[r".
- Add an option to ":map" that makes it display the special keys in
<> notation (e.g. <CR> instead of ^M). Or just always do this?
- Include an option (or flag to 'cpoptions') that makes errors in mappings
@ -2663,6 +2744,8 @@ item stack to allow matching (). One side is "push X on
Undo:
- Make it possible to undo all the commands from a mapping, including a
trailing unfinished command, e.g. for ":map K iX^[r".
- When accidentally hitting "R" instead of Ctrl-R, further Ctrl-R is not
possible, even when typing <Esc> immediately. (Grahn) Also for "i", "a",
etc. Postpone saving for undo until something is really inserted?
@ -2676,9 +2759,6 @@ Undo:
version without changing the rest of the file. Stop doing this when a
change includes only some of these lines and changes the line count. Need
to store these undo actions as a separate change that can be undone.
7 Add an undo tree: When making a change, instead of clearing any future
undo (thus redo) info, make a new branch. How to navigate through the
undo tree?
- For u_save() include the column number. This can be used to set '[ and '].
And in the future the undo can be made more efficient (Webb).
- In out-of-memory situations: Free allocated space in undo, and reduce the
@ -2897,7 +2977,7 @@ Digraphs:
below/above).
- Use digraph table to tell Vim about the collating sequence of special
characters?
8 Add command to remove (all) digraphs. (Brown)
8 Add command to remove one or more (all) digraphs. (Brown)
7 Support different sets of digraphs (depending on the character set?). At
least Latin1/Unicode, Latin-2, MS-DOS (esp. for Win32).

View File

@ -1,4 +1,4 @@
*usr_41.txt* For Vim version 7.0aa. Last change: 2004 Aug 28
*usr_41.txt* For Vim version 7.0aa. Last change: 2004 Oct 06
VIM USER MANUAL - by Bram Moolenaar
@ -218,9 +218,9 @@ To avoid the need for a backslash, you can use a string in single quotes: >
:echo name
< "peter" ~
Inside a single-quote string all the characters are taken literally. The
drawback is that it's impossible to include a single quote. A backslash is
taken literally as well, thus you can't use it to change the meaning of the
Inside a single-quote string all the characters are as they are. The drawback
is that it's impossible to include a single quote. A backslash is taken
literally as well, thus you can't use it to change the meaning of the
character after it.
In double-quote strings it is possible to use special characters. Here are
a few useful ones:

View File

@ -1,4 +1,4 @@
*version7.txt* For Vim version 7.0aa. Last change: 2004 Sep 13
*version7.txt* For Vim version 7.0aa. Last change: 2004 Oct 07
VIM REFERENCE MANUAL by Bram Moolenaar
@ -243,6 +243,12 @@ upper case. Add color support to the builtin vt320 terminal codes.
For the '%' item in 'viminfo', allow a number to set a maximum for the number
of buffers.
When a file looks like a shell script, check for an "exec" command that starts
the tcl interpreter. (suggested by Alexios Zavras)
Support conversion between utf-8 and latin9 (iso-8859-15) internally, so that
digraphs still work when iconv is not available.
==============================================================================
COMPILE TIME CHANGES *compile-changes-7*
@ -373,4 +379,21 @@ When an error message is given while waiting for a character (e.g., when an
xterm reports the number of colors), the hit-enter prompt overwrote the last
line. Don't reset msg_didout in normal_cmd() for K_IGNORE.
Mac GUI: Shift-Tab didn't work.
When defining tooltip text, don't translate terminal codes, since it's not
going to be used like a command.
GTK 2: Check the tooltip text for valid utf-8 characters to avoid getting a
GTK error. Invalid characters may appear when 'encoding' is changed.
GTK 2: Add a safety check for invalid utf-8 sequences, they can crash pango.
Win32: When 'encoding' is changed while starting up, use the Unicode command
line to convert the file arguments to 'encoding'. Both for the GUI and the
console version.
Win32 GUI: latin9 text (iso-8859-15) was not displayed correctly, because
there is no codepage for latin9. Do our own conversion from latin9 to UCS2.
vim:tw=78:ts=8:ft=help:norl:

View File

@ -1,7 +1,7 @@
" Vim support file to detect file types
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2004 Sep 11
" Last Change: 2004 Oct 02
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@ -1339,22 +1339,41 @@ fun! SetFileTypeSH(name)
unlet b:is_bash
endif
endif
setf sh
call SetFileTypeShell("sh")
endfun
" For shell-like file types, check for an "exec" command hidden in a comment,
" as used for Tcl.
fun! SetFileTypeShell(name)
let l = 2
while l < 20 && l < line("$") && getline(l) =~ '^\s*\(#\|$\)'
" Skip empty and comment lines.
let l = l + 1
endwhile
if l < line("$") && getline(l) =~ '\s*exec\s' && getline(l - 1) =~ '^\s*#.*\\$'
" Found an "exec" line after a comment with continuation
let n = substitute(getline(l),'\s*exec\s\+\([^ ]*/\)\=', '', '')
if n =~ '\<tclsh\|\<wish'
setf tcl
return
endif
endif
exe "setf " . a:name
endfun
" tcsh scripts
au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login setf tcsh
au BufNewFile,BufRead .tcshrc*,*.tcsh,tcsh.tcshrc,tcsh.login call SetFileTypeShell("tcsh")
" csh scripts, but might also be tcsh scripts (on some systems csh is tcsh)
au BufNewFile,BufRead .login*,.cshrc*,csh.cshrc,csh.login,csh.logout,*.csh,.alias call SetFileTypeCSH()
fun! SetFileTypeCSH()
if exists("g:filetype_csh")
exe "setf " . g:filetype_csh
call SetFileTypeShell(g:filetype_csh)
elseif &shell =~ "tcsh"
setf tcsh
call SetFileTypeShell("tcsh")
else
setf csh
call SetFileTypeShell("csh")
endif
endfun

View File

@ -1,9 +1,11 @@
" Vim indent file
" Language: Eiffel
" Maintainer: David Clarke <gadicath@dishevelled.net>
" Maintainer: Jocelyn Fiat <eiffel@djoce.net>
" Previous-Maintainer: David Clarke <gadicath@dishevelled.net>
" $Date$
" $Revision$
" URL: http://gadicath.webhop.net/other/eiffel.vim
" URL: http://www.djoce.net/page/vim/
" Last Change: 2004 Sep 14
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@ -20,8 +22,6 @@ setlocal comments=:--
setlocal indentkeys+==end,=else,=ensure,=require,=check,=loop,=until
setlocal indentkeys+==creation,=feature,=inherit,=class,=is,=redefine,=rename,=variant
setlocal indentkeys+==invariant,=do,=local,=export
setlocal sw=3
setlocal tw=78
" Define some stuff
" keywords grouped by indenting
@ -96,7 +96,7 @@ function GetEiffelIndent()
" set indent of zero end statements that are at an indent of 3, this should
" only ever be the class's end.
if getline(v:lnum) =~ '^\s*end\>' && ind == 3
if getline(v:lnum) =~ '^\s*end\>' && ind == &sw
let ind = 0
endif

View File

@ -1,7 +1,7 @@
" Vim indent file
" Language: Java
" Maintainer: Toby Allsopp <toby.allsopp@peace.com>
" Last Change: 2003 Oct 21
" Maintainer: Toby Allsopp <toby.allsopp@peace.com> (resigned)
" Last Change: 2004 Oct 05
" Only load this indent file when no other was loaded.
if exists("b:did_indent")

View File

@ -2,7 +2,7 @@
" You can also use this as a start for your own set of menus.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2004 May 26
" Last Change: 2004 Sep 16
" Note that ":an" (short for ":anoremenu") is often used to make a menu work
" in all modes and avoid side effects from mappings defined by the user.
@ -382,7 +382,7 @@ if has("keymap")
endif
unlet s:n
endif
if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_photon")
if has("win32") || has("win16") || has("gui_gtk") || has("gui_kde") || has("gui_photon") || has("gui_mac")
an 20.470 &Edit.Select\ Fo&nt\.\.\. :set guifont=*<CR>
endif

View File

@ -1,7 +1,7 @@
" netrw.vim: Handles file transfer and remote directory listing across a network
" Last Change: Sep 10, 2004
" Last Change: Sep 14, 2004
" Maintainer: Charles E. Campbell, Jr. PhD <drchipNOSPAM at campbellfamily.biz>
" Version: 48
" Version: 51a NOT RELEASED
" License: Vim License (see vim's :help license)
"
" But be doers of the Word, and not only hearers, deluding your own selves
@ -14,7 +14,7 @@
if exists("g:loaded_netrw") || &cp
finish
endif
let g:loaded_netrw = "v48"
let g:loaded_netrw = "v51a"
let s:save_cpo = &cpo
let loaded_explorer = 1
set cpo&vim
@ -115,7 +115,7 @@ if !exists("g:netrw_hide")
let g:netrw_hide= 1
endif
if !exists("g:netrw_ftp_browse_reject")
let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not'
let g:netrw_ftp_browse_reject='^total\s\+\d\+$\|^Trying\s\+\d\+.*$\|^KERBEROS_V\d rejected\|^Security extensions not\|No such file\|: connect to address [0-9a-fA-F:]*: No route to host$'
endif
if !exists("g:netrw_keepdir")
let g:netrw_keepdir= 1
@ -140,6 +140,9 @@ endif
if !exists("g:netrw_altv")
let g:netrw_altv= 0
endif
if !exists("g:netrw_maxfilenamelen")
let g:netrw_maxfilenamelen= 32
endif
" BufEnter event ignored by decho when following variable is true
" Has a side effect that doau BufReadPost doesn't work, so
@ -211,9 +214,11 @@ if version >= 600
au BufReadCmd file:///* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
au BufReadCmd file://localhost/* exe "silent doau BufReadPre ".expand("<afile>")|exe 'e /'.substitute(expand("<afile>"),"file:/*","","")|exe "silent doau BufReadPost ".expand("<afile>")
endif
au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
au BufReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread 0r ".expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
au FileReadCmd ftp://*,rcp://*,scp://*,http://*,dav://*,rsync://*,sftp://* exe "silent doau BufReadPre ".expand("<afile>")|exe "Nread " .expand("<afile>")|exe "silent doau BufReadPost ".expand("<afile>")
au BufWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* exe "silent doau BufWritePre ".expand("<afile>")|exe "'[,']Nwrite " .expand("<afile>")|exe "silent doau BufWritePost ".expand("<afile>")
" au FileWriteCmd ftp://*,rcp://*,scp://*,dav://*,rsync://*,sftp://* if exists("vcount")|call Decho("vcount=".vcount)|else|call Decho("no vcount")|endif
augroup END
endif
@ -1025,7 +1030,8 @@ fun! <SID>NetBrowse(dirname)
" call Dfunc("NetBrowse(dirname<".a:dirname.">) longlist=".g:netrw_longlist)
" sanity check
if exists("b:netrw_method") && b:netrw_method =~ '[23]'
if exists("b:netrw_method") && b:netrw_method =~ '[235]'
" call Decho("b:netrw_method=".b:netrw_method)
if !executable("ftp")
if !exists("g:netrw_quiet")
echoerr "***netrw*** this system doesn't support remote directory listing via ftp"
@ -1066,11 +1072,13 @@ fun! <SID>NetBrowse(dirname)
" call Decho("set up path <".path .">")
" call Decho("set up fname <".fname .">")
if method == "ftp"
if method == "ftp" || method == "http"
let method = "ftp"
let listcmd = g:netrw_ftp_list_cmd
else
let listcmd = substitute(g:netrw_list_cmd,'\<HOSTNAME\>',user.machine,'')
endif
if exists("b:netrw_method")
" call Decho("setting s:netrw_method<".b:netrw_method.">")
let s:netrw_method= b:netrw_method
@ -1144,11 +1152,12 @@ fun! <SID>NetBrowse(dirname)
endif
" rename file to reflect where its from
setlocal ts=32 bt=nofile bh=wipe nobl
setlocal bt=nofile bh=wipe nobl noswf
exe "setlocal ts=".g:netrw_maxfilenamelen
" call Decho("exe file ".escape(bufname,s:netrw_cd_escape))
exe 'file '.escape(bufname,s:netrw_cd_escape)
" call Decho("renaming file to bufname<".bufname.">")
setlocal bt=nowrite bh=hide nobl
setlocal bh=hide nobl
" set up buffer-local mappings
" call Decho("set up buffer-local mappings")
@ -1338,7 +1347,6 @@ fun! <SID>NetBrowseChgDir(dirname,newdir)
else
" strip off a directory name from dirname
let dirname= substitute(dirname,'^\(.*/\)[^/]\+/','\1','')
exe "silent! keepjumps ".curline.",$d"
endif
" call Decho("go up one dir: dirname<".dirname."> trailer<".trailer.">")
@ -1573,7 +1581,7 @@ fun! <SID>NetBrowseX(fname,remote)
if a:remote == 1
let eikeep= &ei
set ei=all bh=delete bt=nofile
set ei=all bh=delete bt=nofile noswf
exe "norm! \<c-o>"
let &ei= eikeep
redraw!
@ -1601,15 +1609,13 @@ fun! NetBrowseFtpCmd(path,cmd)
exe "silent! keepjumps ".curline.",$d"
".........................................
if s:netrw_method == 2
if s:netrw_method == 2 || s:netrw_method == 5
" ftp + <.netrc>: Method #2
if a:path != ""
put ='cd '.a:path
endif
exe "put ='".a:cmd."'"
" redraw!|call inputsave()|call input("Pausing...")|call inputrestore() "Decho
" redraw!|call inputsave()|call input("Pausing...")|call inputrestore()
if exists("g:netrw_port") && g:netrw_port != ""
" call Decho("exe ".g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port)
exe g:netrw_silentxfer.curline.",$!".g:netrw_ftp_cmd." -i ".g:netrw_machine." ".g:netrw_port
@ -1875,29 +1881,29 @@ fun! <SID>NetBookmarkDir(chg,curdir)
if a:chg == 0
" bookmark the current directory
let s:netrw_bookmarkdir_{v:count}= a:curdir
if !exists("s:bookmarkmax")
let s:bookmarkmax= v:count
elseif v:count > s:bookmarkmax
let s:bookmarkmax= v:count
let g:NETRW_BOOKMARKDIR_{v:count}= a:curdir
if !exists("g:NETRW_BOOKMARKMAX")
let g:NETRW_BOOKMARKMAX= v:count
elseif v:count > g:NETRW_BOOKMARKMAX
let g:NETRW_BOOKMARKMAX= v:count
endif
elseif a:chg == 1
" change to the bookmarked directory
if exists("s:netrw_bookmarkdir_{v:count}")
exe "e ".s:netrw_bookmarkdir_{v:count}
if exists("g:NETRW_BOOKMARKDIR_{v:count}")
exe "e ".g:NETRW_BOOKMARKDIR_{v:count}
else
echomsg "Sorry, bookmark#".v:count." doesn't exist!"
endif
elseif exists("s:bookmarkmax")
elseif exists("g:NETRW_BOOKMARKMAX")
" list bookmarks
" call Decho("list bookmarks [0,".s:bookmarkmax."]")
" call Decho("list bookmarks [0,".g:NETRW_BOOKMARKMAX."]")
let cnt= 0
while cnt <= s:bookmarkmax
if exists("s:netrw_bookmarkdir_{cnt}")
echo "Netrw Bookmark#".cnt.": ".s:netrw_bookmarkdir_{cnt}
" call Decho("Netrw Bookmark#".cnt.": ".s:netrw_bookmarkdir_{cnt})
while cnt <= g:NETRW_BOOKMARKMAX
if exists("g:NETRW_BOOKMARKDIR_{cnt}")
echo "Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt}
" call Decho("Netrw Bookmark#".cnt.": ".g:NETRW_BOOKMARKDIR_{cnt})
endif
let cnt= cnt + 1
endwhile
@ -1905,7 +1911,6 @@ fun! <SID>NetBookmarkDir(chg,curdir)
" call Dret("NetBookmarkDir")
endfun
" ---------------------------------------------------------------------
" Browsing Support For Local Directories And Files: {{{1
@ -1972,20 +1977,32 @@ fun! <SID>LocalBrowse(dirname)
endif
endif
" call Decho("buffer already exists, but needs re-listing (buf#".dirnamenr.")")
" call Decho("buffer name<".bufname("%")."> dirname<".dirname.">")
setlocal ma
keepjumps %d
if expand("%:p") != dirname
if expand("%") != dirname
" set standard browser options on buffer
setlocal bt=nofile bh=hide nobl noswf
exe "setlocal ts=".g:netrw_maxfilenamelen
exe 'silent! file '.escape(dirname,s:netrw_cd_escape)
" call Decho("renamed file to<".escape(dirname,' #').">")
" call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">")
" call Decho("yielding actual bufname<".bufname("%").">")
endif
else
" call Decho("generate new buffer named<".escape(dirname,' #').">")
silent! enew!
" set standard browser options on buffer
setlocal bt=nofile bh=hide nobl noswf
exe "setlocal ts=".g:netrw_maxfilenamelen
exe 'silent! file '.substitute(escape(dirname,s:netrw_cd_escape),'/$','','e')
" call Decho("renamed file to<".escape(dirname,s:netrw_cd_escape).">")
" call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'/$','','e').">")
" call Decho("yielding actual bufname<".bufname("%").">")
endif
if bufname("#") == "" && bufnr("#") != -1
" the file command produces a lot of [No File] buffers
" call Decho("wiping out nofile buffer#".bufnr("#"))
exe bufnr("#")."bwipe"
endif
" set standard browser options on buffer
setlocal ts=32 bt=nowrite bh=hide nobl
" set up all the maps
" call Decho("Setting up local browser maps")
@ -2076,7 +2093,7 @@ fun! <SID>LocalBrowse(dirname)
setlocal noma nomod
if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
" call Dret("LocalBrowse : file<".expand("%:p").">")
" call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
endfun
" ---------------------------------------------------------------------
@ -2123,7 +2140,7 @@ fun! LocalBrowseList(dirname)
let filelist = substitute(filelist,'^.\{-}\n\(.*\)$','\1','e')
else
let file = filelist
let filelist= ""
let filelist = ""
endif
let pfile= file
if isdirectory(file)

View File

@ -1,7 +1,7 @@
" Vim support file to detect file types in scripts
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last change: 2004 Sep 02
" Last change: 2004 Oct 02
" This file is called by an autocommand for every file that has just been
" loaded into a buffer. It checks if the type of file can be recognized by
@ -57,14 +57,14 @@ if s:line1 =~ "^#!"
" csh scripts
elseif s:name =~ '^csh\>'
if exists("g:filetype_csh")
let &ft = g:filetype_csh
call SetFileTypeShell(g:filetype_csh)
else
set ft=csh
call SetFileTypeShell("csh")
endif
" tcsh scripts
elseif s:name =~ '^tcsh\>'
set ft=tcsh
call SetFileTypeShell("tcsh")
" Z shell scripts
elseif s:name =~ '^zsh\>'

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: Lynx 2.7.1 style file
" Maintainer: Scott Bigham <dsb@cs.duke.edu>
" Last Change: 2001 May 09
" Maintainer: Scott Bigham <dsb@killerbunnies.org>
" Last Change: 2004 Oct 06
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded

View File

@ -1,6 +1,6 @@
" Vim syntax file
" Language: PCCTS
" Maintainer: Scott Bigham <dsb@cs.duke.edu>
" Maintainer: Scott Bigham <dsb@killerbunnies.org>
" Last Change: 10 Aug 1999
" For version 5.x: Clear all syntax items

View File

@ -1,7 +1,7 @@
" Vim syntax file
" Language: Perl POD format
" Maintainer: Scott Bigham <dsb@cs.duke.edu>
" Last Change: 2001 May 09
" Maintainer: Scott Bigham <dsb@killerbunnies.org>
" Last Change: 2004 Oct 05
" To add embedded POD documentation highlighting to your syntax file, add
" the commands:
@ -25,7 +25,7 @@ elseif exists("b:current_syntax")
endif
" POD commands
syn match podCommand "^=head[12]" nextgroup=podCmdText
syn match podCommand "^=head[1234]" nextgroup=podCmdText
syn match podCommand "^=item" nextgroup=podCmdText
syn match podCommand "^=over" nextgroup=podOverIndent skipwhite
syn match podCommand "^=back"
@ -52,7 +52,11 @@ syn match podSpecial "\(\<\|&\)\I\i*\(::\I\i*\)*([^)]*)"
syn match podSpecial "[$@%]\I\i*\(::\I\i*\)*\>"
" Special formatting sequences
syn region podFormat start="[IBSCLFXEZ]<" end=">" oneline contains=podFormat
syn region podFormat start="[IBSCLFX]<[^<]"me=e-1 end=">" oneline contains=podFormat
syn match podFormat "Z<>"
syn match podFormat "E<\(\d\+\|\I\i*\)>" contains=podEscape,podEscape2
syn match podEscape "\I\i*>"me=e-1 contained
syn match podEscape2 "\d\+>"me=e-1 contained
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
@ -72,6 +76,8 @@ if version >= 508 || !exists("did_pod_syntax_inits")
HiLink podFormat Identifier
HiLink podVerbatimLine PreProc
HiLink podSpecial Identifier
HiLink podEscape String
HiLink podEscape2 Number
delcommand HiLink
endif

View File

@ -2,7 +2,7 @@
" Language: samba configuration files (smb.conf)
" Maintainer: Rafael Garcia-Suarez <rgarciasuarez@free.fr>
" URL: http://rgarciasuarez.free.fr/vim/syntax/samba.vim
" Last change: 2002 May 06
" Last change: 2004 September 21
" Don't forget to run your config file through testparm(1)!
@ -17,8 +17,8 @@ endif
syn case ignore
syn match sambaParameter /^[a-zA-Z \t]\+=/ contains=sambaKeyword
syn match sambaSection /^\s*\[[a-zA-Z0-9_\-. ]\+\]/
syn match sambaMacro /%[SPugUGHvhmLMNpRdaIT]/
syn match sambaSection /^\s*\[[a-zA-Z0-9_\-.$ ]\+\]/
syn match sambaMacro /%[SPugUGHvhmLMNpRdaITD]/
syn match sambaMacro /%$([a-zA-Z0-9_]\+)/
syn match sambaComment /^\s*[;#].*/
syn match sambaContinue /\\$/
@ -92,6 +92,18 @@ syn keyword sambaKeyword contained acls allocate bytes count csc devmode
syn keyword sambaKeyword contained disable dn egd entropy enum extensions mmap
syn keyword sambaKeyword contained policy spin spoolss
" Since Samba 3.0.2
syn keyword sambaKeyword contained abort afs algorithmic backend
syn keyword sambaKeyword contained charset cups defer display
syn keyword sambaKeyword contained enable idmap kerberos lookups
syn keyword sambaKeyword contained methods modules nested NIS ntlm NTLMv2
syn keyword sambaKeyword contained objects paranoid partners passdb
syn keyword sambaKeyword contained plaintext prefix primary private
syn keyword sambaKeyword contained profile quota realm replication
syn keyword sambaKeyword contained reported rid schannel sendfile sharing
syn keyword sambaKeyword contained shutdown signing special spnego
syn keyword sambaKeyword contained store unknown unwriteable
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
" For version 5.8 and later: only when an item doesn't have highlighting yet

View File

@ -194,7 +194,6 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
syn keyword schemeExtSyntax error raise opt-lambda define-values unit unit/sig define-signature
syn keyword schemeExtSyntax invoke-unit/sig define-values/invoke-unit/sig compound-unit/sig import export
syn keyword schemeExtSyntax link syntax quasisyntax unsyntax with-syntax
hi def link schemeExtSyntax Type
syn keyword schemeExtFunc format system-type current-extension-compiler current-extension-linker
syn keyword schemeExtFunc use-standard-linker use-standard-compiler
@ -217,7 +216,6 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
syn keyword schemeExtFunc exn:special-comment? exn:syntax? exn:thread? exn:user? exn:variable? exn:application:mismatch?
" Command-line parsing
syn keyword schemeExtFunc command-line current-command-line-arguments once-any help-labels multi once-each
hi def link schemeExtFunc PreProc
" syntax quoting, unquoting and quasiquotation
syn region schemeUnquote matchgroup=Delimiter start="#," end=![ \t\[\]()";]!me=e-1 contains=ALL
@ -230,6 +228,37 @@ if exists("b:is_mzscheme") || exists("is_mzscheme")
syn region schemeQuoted matchgroup=Delimiter start="#['`](" matchgroup=Delimiter end=")" contains=ALL
endif
if exists("b:is_chicken") || exists("is_chicken")
syn match schemeOther oneline "##[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
syn match schemeExtSyntax oneline "#:[-a-z!$%&*/:<=>?^_~0-9+.@#%]\+"
syn keyword schemeExtSyntax unit uses declare hide foreign-declare foreign-parse foreign-parse/spec
syn keyword schemeExtSyntax foreign-lambda foreign-lambda*
syn keyword schemeExtSyntax let-optionals let-optionals* define-foreign-variable
syn keyword schemeExtFunc ##core#inline ##sys#error ##sys#update-errno
" here-string
syn region schemeString start=+#<<\s*\z(.*\)+ end=+^\z1$+
if filereadable(expand("<sfile>:p:h")."/cpp.vim")
unlet! b:current_syntax
syn include @ChickenC <sfile>:p:h/cpp.vim
syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-declare "+ end=+")\@=+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+foreign-declare\s*#<<\z(.*\)$+hs=s+15 end=+^\z1$+ contains=@ChickenC
syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse "+ end=+")\@=+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+foreign-parse\s*#<<\z(.*\)$+hs=s+13 end=+^\z1$+ contains=@ChickenC
syn region ChickenC matchgroup=schemeOther start=+(\@<=foreign-parse/spec "+ end=+")\@=+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+foreign-parse/spec\s*#<<\z(.*\)$+hs=s+18 end=+^\z1$+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+#>+ end=+<#+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+#>?+ end=+<#+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+#>!+ end=+<#+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+#>\$+ end=+<#+ contains=@ChickenC
syn region ChickenC matchgroup=schemeComment start=+#>%+ end=+<#+ contains=@ChickenC
endif
endif
" Synchronization and the wrapping up...
syn sync match matchPlace grouphere NONE "^[^ \t]"
@ -255,12 +284,14 @@ if version >= 508 || !exists("did_scheme_syntax_inits")
HiLink schemeBoolean Boolean
HiLink schemeDelimiter Delimiter
HiLink schemeConstant Constant
HiLink schemeConstant Constant
HiLink schemeComment Comment
HiLink schemeMultilineComment Comment
HiLink schemeError Error
HiLink schemeExtSyntax Type
HiLink schemeExtFunc PreProc
delcommand HiLink
endif

View File

@ -630,7 +630,7 @@ STDMETHODIMP CShellExt::QueryContextMenu(HMENU hMenu,
*pos = 0;
}
// Now concatenate
strncpy(temp, _("Edit with existing Vim - &"), MAX_PATH - 1);
strncpy(temp, _("Edit with existing Vim - "), MAX_PATH - 1);
strncat(temp, title, MAX_PATH - 1);
InsertMenu(hMenu,
indexMenu++,

View File

@ -1202,7 +1202,7 @@ CARBONGUI_TESTARG = VIMPROG=../$(CARBONGUI_BUNDLE)/Contents/MacOS/$(VIMTARGET)
# All GUI files
ALL_GUI_SRC = gui.c gui_gtk.c gui_gtk_f.c gui_motif.c gui_athena.c gui_gtk_x11.c gui_x11.c gui_at_sb.c gui_at_fs.c pty.c gui_kde.cc gui_kde_wid.cc gui_kde_x11.cc gui_kde_wid_moc.cc
ALL_GUI_PRO = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro gui_kde.pro gui_kde_x11.pro
ALL_GUI_PRO = gui.pro gui_gtk.pro gui_motif.pro gui_athena.pro gui_gtk_x11.pro gui_x11.pro gui_w16.pro gui_w32.pro gui_amiga.pro gui_photon.pro
# }}}

View File

@ -1428,6 +1428,7 @@ digr_T digraphdefault[] =
{'L', 'i', 0x20a4},
{'P', 't', 0x20a7},
{'W', '=', 0x20a9},
{'=', 'e', 0x20ac}, /* euro */
{'o', 'C', 0x2103},
{'c', 'o', 0x2105},
{'o', 'F', 0x2109},

View File

@ -8526,46 +8526,46 @@ set_cmdarg(eap, oldarg)
unsigned len;
oldval = vimvars[VV_CMDARG].val;
if (eap != NULL)
if (eap == NULL)
{
if (eap->force_bin == FORCE_BIN)
len = 6;
else if (eap->force_bin == FORCE_NOBIN)
len = 8;
else
len = 0;
if (eap->force_ff != 0)
len += (unsigned)STRLEN(eap->cmd + eap->force_ff) + 6;
# ifdef FEAT_MBYTE
if (eap->force_enc != 0)
len += (unsigned)STRLEN(eap->cmd + eap->force_enc) + 7;
# endif
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);
# ifdef FEAT_MBYTE
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;
}
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;
# endif
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);
# ifdef FEAT_MBYTE
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;
}
#endif

View File

@ -4066,7 +4066,7 @@ restore_backup:
{
#ifdef FEAT_MBYTE
if (write_info.bw_conv_error)
errmsg = (char_u *)_("E513: write error, conversion failed");
errmsg = (char_u *)_("E513: write error, conversion failed (make 'fenc' empty to override)");
else
#endif
if (got_int)

View File

@ -677,6 +677,7 @@ EXTERN int enc_utf8 INIT(= FALSE); /* UTF-8 encoded Unicode */
/* Codepage nr of 'encoding'. Negative means it's not been set yet, zero
* means 'encoding' is not a valid codepage. */
EXTERN int enc_codepage INIT(= -1);
EXTERN int enc_latin9 INIT(= FALSE); /* 'encoding' is latin9 */
# endif
EXTERN int has_mbyte INIT(= 0); /* any multi-byte encoding */

View File

@ -749,6 +749,10 @@ gui_mch_add_menu_item(vimmenu_T *menu, int idx)
text = CONVERT_TO_UTF8(menu->dname);
tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
if (tooltip != NULL && !utf_valid_string(tooltip, NULL))
/* Invalid text, can happen when 'encoding' is changed. Avoid
* a nasty GTK error message, skip the tooltip. */
CONVERT_TO_UTF8_FREE(tooltip);
menu->id = gtk_toolbar_insert_item(
toolbar,
@ -993,6 +997,8 @@ gui_mch_menu_set_tip(vimmenu_T *menu)
# ifdef HAVE_GTK2
tooltip = CONVERT_TO_UTF8(menu->strings[MENU_INDEX_TIP]);
if (tooltip == NULL || utf_valid_string(tooltip, NULL))
/* Only set the tooltip when it's valid utf-8. */
# else
tooltip = menu->strings[MENU_INDEX_TIP];
# endif

View File

@ -5239,6 +5239,14 @@ not_ascii:
int last_glyph_rbearing;
int cells = 0; /* cells occupied by current cluster */
/* Safety check: pango crashes when invoked with invalid utf-8
* characters. */
if (!utf_valid_string(s, s + len))
{
column_offset = len;
goto skipitall;
}
/* original width of the current cluster */
cluster_width = PANGO_SCALE * gui.char_width;
@ -5372,6 +5380,7 @@ not_ascii:
pango_attr_list_unref(attr_list);
}
skipitall:
if (flags & DRAW_UNDERL)
gdk_draw_line(gui.drawarea->window,
gui.text_gc,

View File

@ -2200,6 +2200,7 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
KeySym key_sym;
int key_char;
int modifiers;
int simplify = FALSE;
/* Mask the mouse (as per user setting) */
if (p_mh)
@ -2253,7 +2254,7 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
/* Handle special keys. */
#if 0
/* Why have this been removed? */
/* Why has this been removed? */
if (!(theEvent->modifiers & (cmdKey | controlKey | rightControlKey)))
#endif
{
@ -2270,11 +2271,14 @@ gui_mac_doKeyEvent(EventRecord *theEvent)
# endif
key_char = TO_SPECIAL(special_keys[i].vim_code0,
special_keys[i].vim_code1);
key_char = simplify_key(key_char,&modifiers);
simplify = TRUE;
break;
}
}
/* For some keys the modifier is included in the char itself. */
if (simplify || key_char == TAB || key_char == ' ')
key_char = simplify_key(key_char, &modifiers);
/* Add the modifier to the input bu if needed */
/* Do not want SHIFT-A or CTRL-A with modifier */

View File

@ -1709,6 +1709,33 @@ im_get_status()
}
#endif
#ifdef FEAT_MBYTE
/*
* Convert latin9 text to ucs-2.
*/
static void
latin9_to_ucs(char_u *text, int len, WCHAR *unicodebuf)
{
int c;
while (len-- >= 0)
{
c = *text++;
switch (c)
{
case 0xa4: c = 0x20ac; break; /* euro */
case 0xa6: c = 0x0160; break; /* S hat */
case 0xa8: c = 0x0161; break; /* S -hat */
case 0xb4: c = 0x017d; break; /* Z hat */
case 0xb8: c = 0x017e; break; /* Z -hat */
case 0xbc: c = 0x0152; break; /* OE */
case 0xbd: c = 0x0153; break; /* oe */
case 0xbe: c = 0x0178; break; /* Y */
}
*unicodebuf++ = c;
}
}
#endif
#ifdef FEAT_RIGHTLEFT
/*
@ -1907,7 +1934,9 @@ gui_mch_draw_string(
/* Check if the Unicode buffer exists and is big enough. Create it
* with the same lengt as the multi-byte string, the number of wide
* characters is always equal or smaller. */
if ((enc_utf8 || (enc_codepage > 0 && (int)GetACP() != enc_codepage))
if ((enc_utf8
|| (enc_codepage > 0 && (int)GetACP() != enc_codepage)
|| enc_latin9)
&& (unicodebuf == NULL || len > unibuflen))
{
vim_free(unicodebuf);
@ -1950,13 +1979,16 @@ gui_mch_draw_string(
foptions, pcliprect, unicodebuf, clen, unicodepdy);
len = cells; /* used for underlining */
}
else if (enc_codepage > 0 && (int)GetACP() != enc_codepage)
else if ((enc_codepage > 0 && (int)GetACP() != enc_codepage) || enc_latin9)
{
/* If we want to display codepage data, and the current CP is not the
* ANSI one, we need to go via Unicode. */
if (unicodebuf != NULL)
{
len = MultiByteToWideChar(enc_codepage,
if (enc_latin9)
latin9_to_ucs(text, len, unicodebuf);
else
len = MultiByteToWideChar(enc_codepage,
MB_PRECOMPOSED,
(char *)text, len,
(LPWSTR)unicodebuf, unibuflen);

View File

@ -3277,6 +3277,7 @@ _OnScroll(
return 0;
}
/*
* Get command line arguments.
* Use "prog" as the name of the program and "cmdline" as the arguments.
@ -3299,6 +3300,14 @@ get_cmd_args(char *prog, char *cmdline, char ***argvp, char **tofree)
char **argv = NULL;
int round;
#ifdef FEAT_MBYTE
/* Try using the Unicode version first, it takes care of conversion when
* 'encoding' is changed. */
argc = get_cmd_argsW(&argv);
if (argc != 0)
goto done;
#endif
/* Handle the program name. Remove the ".exe" extension, and find the 1st
* non-space. */
p = strrchr(prog, '.');
@ -3405,8 +3414,9 @@ get_cmd_args(char *prog, char *cmdline, char ***argvp, char **tofree)
}
}
argv[argc] = NULL; /* NULL-terminated list */
done:
argv[argc] = NULL; /* NULL-terminated list */
*argvp = argv;
return argc;
}

View File

@ -216,7 +216,7 @@ enc_canon_table[] =
#define IDX_ISO_14 13
{"iso-8859-14", ENC_8BIT, 0},
#define IDX_ISO_15 14
{"iso-8859-15", ENC_8BIT, 0},
{"iso-8859-15", ENC_8BIT + ENC_LATIN9, 0},
#define IDX_KOI8_R 15
{"koi8-r", ENC_8BIT, 0},
#define IDX_KOI8_U 16
@ -534,6 +534,7 @@ codepage_invalid:
#ifdef WIN3264
enc_codepage = encname2codepage(p_enc);
enc_latin9 = (STRCMP(p_enc, "iso-8859-15") == 0);
#endif
/*
@ -2486,6 +2487,36 @@ mb_tail_off(base, p)
return 1 - dbcs_head_off(base, p);
}
#if defined(HAVE_GTK2) || defined(PROTO)
/*
* Return TRUE if string "s" is a valid utf-8 string.
* When "end" is NULL stop at the first NUL.
* When "end" is positive stop there.
*/
int
utf_valid_string(s, end)
char_u *s;
char_u *end;
{
int l;
char_u *p = s;
while (end == NULL ? *p != NUL : p < end)
{
if ((*p & 0xc0) == 0x80)
return FALSE; /* invalid lead byte */
l = utf8len_tab[*p];
if (end != NULL && p + l > end)
return FALSE; /* incomplete byte sequence */
++p;
while (--l > 0)
if ((*p++ & 0xc0) != 0x80)
return FALSE; /* invalid trail byte */
}
return TRUE;
}
#endif
#if defined(FEAT_GUI) || defined(PROTO)
/*
* Special version of mb_tail_off() for use in ScreenLines[].
@ -5453,11 +5484,22 @@ convert_setup(vcp, from, to)
vcp->vc_type = CONV_TO_UTF8;
vcp->vc_factor = 2; /* up to twice as long */
}
else if ((from_prop & ENC_LATIN9) && (to_prop & ENC_UNICODE))
{
/* Internal latin9 -> utf-8 conversion. */
vcp->vc_type = CONV_9_TO_UTF8;
vcp->vc_factor = 3; /* up to three as long (euro sign) */
}
else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN1))
{
/* Internal utf-8 -> latin1 conversion. */
vcp->vc_type = CONV_TO_LATIN1;
}
else if ((from_prop & ENC_UNICODE) && (to_prop & ENC_LATIN9))
{
/* Internal utf-8 -> latin9 conversion. */
vcp->vc_type = CONV_TO_LATIN9;
}
#ifdef WIN3264
/* Win32-specific codepage <-> codepage conversion without iconv. */
else if (((from_prop & ENC_UNICODE) || encname2codepage(from) > 0)
@ -5622,12 +5664,13 @@ 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;
@ -5635,7 +5678,34 @@ string_convert_ext(vcp, ptr, lenp, unconvlenp)
*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)
*lenp = (int)(d - retval);
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)

View File

@ -392,6 +392,8 @@ ex_menu(eap)
map_to = (char_u *)"";
map_buf = NULL;
}
else if (modes & MENU_TIP_MODE)
map_buf = NULL; /* Menu tips are plain text. */
else
map_to = replace_termcodes(map_to, &map_buf, FALSE, TRUE);
menuarg.modes = modes;

View File

@ -267,6 +267,10 @@ mch_early_init(void)
AnsiUpperBuff(toupper_tab, 256);
AnsiLowerBuff(tolower_tab, 256);
#endif
#if defined(FEAT_MBYTE) && !defined(FEAT_GUI)
(void)get_cmd_argsW(NULL);
#endif
}
@ -298,7 +302,25 @@ mch_settitle(
gui_mch_settitle(title, icon);
# else
if (title != NULL)
{
# ifdef FEAT_MBYTE
if (enc_codepage >= 0 && (int)GetACP() != enc_codepage)
{
/* Convert the title from 'encoding' to the active codepage. */
WCHAR *wp = enc_to_ucs2(title, NULL);
int n;
if (wp != NULL)
{
n = SetConsoleTitleW(wp);
vim_free(wp);
if (n != 0 || GetLastError() != ERROR_CALL_NOT_IMPLEMENTED)
return;
}
}
# endif
SetConsoleTitle(title);
}
# endif
}

View File

@ -30,24 +30,6 @@ VimMain
__ARGS((int argc, char **argv));
int (_cdecl *pmain)(int, char **);
#ifdef FEAT_MBYTE
/* The commandline arguments in UCS2. */
static DWORD nArgsW = 0;
static LPWSTR *ArglistW = NULL;
static int global_argc;
static char **global_argv;
static int used_file_argc = 0; /* last argument in global_argv[] used
for the argument list. */
static int *used_file_indexes = NULL; /* indexes in global_argv[] for
command line arguments added to
the argument list */
static int used_file_count = 0; /* nr of entries in used_file_indexes */
static int used_file_literal = FALSE; /* take file names literally */
static int used_file_full_path = FALSE; /* file name was full path */
static int used_alist_count = 0;
#endif
#ifndef PROTO
#ifdef FEAT_GUI
#ifndef VIMDLL
@ -76,56 +58,14 @@ WinMain(
* startup path (so the .vimrc file can be found w/o a VIM env. var.) */
GetModuleFileName(NULL, prog, 255);
/* Separate the command line into arguments. Use the Unicode functions
* when possible. When 'encoding' is later changed these are used to
* recode the arguments. */
#ifdef FEAT_MBYTE
ArglistW = CommandLineToArgvW(GetCommandLineW(), &nArgsW);
if (ArglistW != NULL)
{
argv = malloc((nArgsW + 1) * sizeof(char *));
if (argv != NULL)
{
int i;
argv[argc] = NULL;
argc = nArgsW;
for (i = 0; i < argc; ++i)
{
int len;
WideCharToMultiByte_alloc(GetACP(), 0,
ArglistW[i], wcslen(ArglistW[i]) + 1,
(LPSTR *)&argv[i], &len, 0, 0);
if (argv[i] == NULL)
{
while (i > 0)
free(argv[--i]);
free(argv);
argc = 0;
}
}
}
}
argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
if (argc == 0)
#endif
{
argc = get_cmd_args(prog, (char *)lpszCmdLine, &argv, &tofree);
if (argc == 0)
{
MessageBox(0, "Could not allocate memory for command line.",
"VIM Error", 0);
return 0;
}
MessageBox(0, "Could not allocate memory for command line.",
"VIM Error", 0);
return 0;
}
#ifdef FEAT_MBYTE
global_argc = argc;
global_argv = argv;
used_file_indexes = malloc(argc * sizeof(int));
#endif
#ifdef DYNAMIC_GETTEXT
/* Initialize gettext library */
dyn_libintl_init(NULL);
@ -190,108 +130,9 @@ errout:
free(argv);
free(tofree);
#ifdef FEAT_MBYTE
if (ArglistW != NULL)
GlobalFree(ArglistW);
free_cmd_argsW();
#endif
return 0;
}
#endif
#ifdef FEAT_MBYTE
/*
* Remember "name" is an argument that was added to the argument list.
* This avoids that we have to re-parse the argument list when fix_arg_enc()
* is called.
*/
void
used_file_arg(name, literal, full_path)
char *name;
int literal;
int full_path;
{
int i;
if (used_file_indexes == NULL)
return;
for (i = used_file_argc + 1; i < global_argc; ++i)
if (STRCMP(global_argv[i], name) == 0)
{
used_file_argc = i;
used_file_indexes[used_file_count++] = i;
break;
}
used_file_literal = literal;
used_file_full_path = full_path;
}
/*
* Remember the length of the argument list as it was. If it changes then we
* leave it alone when 'encoding' is set.
*/
void
set_alist_count(void)
{
used_alist_count = GARGCOUNT;
}
/*
* Fix the encoding of the command line arguments. Invoked when 'encoding'
* has been changed while starting up. Use the UCS-2 command line arguments
* and convert them to 'encoding'.
*/
void
fix_arg_enc()
{
int i;
int idx;
char_u *str;
/* Safety checks:
* - if argument count differs between the wide and non-wide argument
* list, something must be wrong.
* - the file name arguments must have been located.
* - the length of the argument list wasn't changed by the user.
*/
if (global_argc != (int)nArgsW
|| ArglistW == NULL
|| used_file_indexes == NULL
|| used_file_count == 0
|| used_alist_count != GARGCOUNT)
return;
/* Clear the argument list. Make room for the new arguments. */
alist_clear(&global_alist);
if (ga_grow(&global_alist.al_ga, used_file_count) == FAIL)
return; /* out of memory */
for (i = 0; i < used_file_count; ++i)
{
idx = used_file_indexes[i];
str = ucs2_to_enc(ArglistW[idx], NULL);
if (str != NULL)
alist_add(&global_alist, str, used_file_literal ? 2 : 0);
}
if (!used_file_literal)
{
/* Now expand wildcards in the arguments. */
/* Temporarily add '(' and ')' to 'isfname'. These are valid
* filename characters but are excluded from 'isfname' to make
* "gf" work on a file name in parenthesis (e.g.: see vim.h). */
do_cmdline_cmd((char_u *)":let SaVe_ISF = &isf|set isf+=(,)");
alist_expand();
do_cmdline_cmd((char_u *)":let &isf = SaVe_ISF|unlet SaVe_ISF");
}
/* If wildcard expansion failed, we are editing the first file of the
* arglist and there is no file name: Edit the first argument now. */
if (curwin->w_arg_idx == 0 && curbuf->b_fname == NULL)
{
do_cmdline_cmd((char_u *)":rewind");
if (GARGCOUNT == 1 && used_file_full_path)
(void)vim_chdirfile(alist_name(&GARGLIST[0]));
}
}
#endif

View File

@ -92,6 +92,7 @@ FILE* fdDump = NULL;
#define WINAPI
#define WINBASEAPI
typedef char * LPCSTR;
typedef char * LPWSTR;
typedef int ACCESS_MASK;
typedef int BOOL;
typedef int COLORREF;
@ -301,19 +302,19 @@ dyn_libintl_end()
}
static char *
null_libintl_gettext(const 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

View File

@ -1,4 +1,4 @@
/* gui_kde.c */
/* gui_kde.cc */
void gui_mch_add_menu __ARGS((vimmenu_T *menu, int idx));
void gui_mch_add_menu_item __ARGS((vimmenu_T *menu, int idx));
void gui_mch_set_text_area_pos __ARGS((int x, int y, int w, int h));
@ -16,4 +16,4 @@ void gui_mch_find_dialog __ARGS((exarg_T *eap));
void gui_mch_replace_dialog __ARGS((exarg_T *eap));
void ex_helpfind __ARGS((exarg_T *eap));
void gui_make_popup __ARGS((char_u *path_name));
/* vim: set ft=c : */
/* vim: set ft=cpp : */

View File

@ -1,4 +1,4 @@
/* gui_kde_x11.c */
/* gui_kde_x11.cc */
void gui_mch_prepare __ARGS((int *argc, char **argv));
void gui_mch_set_blinking __ARGS((long waittime, long on, long off));
void gui_mch_stop_blink __ARGS((void));
@ -59,4 +59,4 @@ void mch_set_mouse_shape __ARGS((int shape));
char_u *gui_mch_font_dialog __ARGS((char_u *oldval));
void gui_mch_settitle __ARGS((char_u *title,char_u *icon));
void gui_mch_update_codec __ARGS((void));
/* vim: set ft=c : */
/* vim: set ft=cpp : */

View File

@ -47,6 +47,7 @@ int dbcs_screen_head_off __ARGS((char_u *base, char_u *p));
int utf_head_off __ARGS((char_u *base, char_u *p));
int mb_off_next __ARGS((char_u *base, char_u *p));
int mb_tail_off __ARGS((char_u *base, char_u *p));
int utf_valid_string __ARGS((char_u *s, char_u *end));
int dbcs_screen_tail_off __ARGS((char_u *base, char_u *p));
void mb_adjust_cursor __ARGS((void));
void mb_adjustpos __ARGS((pos_T *lp));

View File

@ -45,4 +45,9 @@ int mch_open __ARGS((char *name, int flags, int mode));
FILE *mch_fopen __ARGS((char *name, char *mode));
int mch_copy_file_attribute __ARGS((char_u *from, char_u *to));
int myresetstkoflw __ARGS((void));
int get_cmd_argsW __ARGS((char ***argvp));
void free_cmd_argsW __ARGS((void));
void used_file_arg __ARGS((char *name, int literal, int full_path));
void set_alist_count __ARGS((void));
void fix_arg_enc __ARGS((void));
/* vim: set ft=c : */

View File

@ -13,7 +13,7 @@ char_u *get_syntax_name __ARGS((expand_T *xp, int idx));
int syn_get_id __ARGS((long lnum, long col, int trans));
int syn_get_foldlevel __ARGS((win_T *wp, long lnum));
void init_highlight __ARGS((int both, int reset));
int load_colors __ARGS((char_u *p));
int load_colors __ARGS((char_u *name));
void do_highlight __ARGS((char_u *line, int forceit, int init));
void restore_cterm_colors __ARGS((void));
void set_normal_colors __ARGS((void));

View File

@ -1124,6 +1124,7 @@ qf_jump(dir, errornr, forceit)
# endif
if (win_split(0, n) == FAIL)
goto theend;
opened_window = TRUE; /* close it when fail */
if (curwin->w_height < p_hh)
win_setheight((int)p_hh);
@ -1137,7 +1138,7 @@ qf_jump(dir, errornr, forceit)
* If currently in the quickfix window, find another window to show the
* file in.
*/
if (bt_quickfix(curbuf))
if (bt_quickfix(curbuf) && !opened_window)
{
/*
* If there is no file specified, we don't know where to go.

View File

@ -6651,9 +6651,14 @@ screenalloc(clear)
len = screen_Columns;
else
len = Columns;
mch_memmove(new_ScreenLines + new_LineOffset[new_row],
ScreenLines + LineOffset[old_row],
(size_t)len * sizeof(schar_T));
#ifdef FEAT_MBYTE
/* When switching to utf-8 dont copy characters, they
* may be invalid now. */
if (!(enc_utf8 && ScreenLinesUC == NULL))
#endif
mch_memmove(new_ScreenLines + new_LineOffset[new_row],
ScreenLines + LineOffset[old_row],
(size_t)len * sizeof(schar_T));
#ifdef FEAT_MBYTE
if (enc_utf8 && ScreenLinesUC != NULL)
{

View File

@ -854,16 +854,18 @@ typedef struct
#define CONV_NONE 0
#define CONV_TO_UTF8 1
#define CONV_TO_LATIN1 2
#define CONV_ICONV 3
#define CONV_9_TO_UTF8 2
#define CONV_TO_LATIN1 3
#define CONV_TO_LATIN9 4
#define CONV_ICONV 5
#ifdef WIN3264
# define CONV_CODEPAGE 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
/*

View File

@ -437,17 +437,21 @@ syntax_start(wp, lnum)
linenr_T parsed_lnum;
linenr_T first_stored;
int dist;
static int changedtick = 0; /* remember the last change ID */
reg_syn = TRUE; /* let vim_regexec() know we're using syntax */
/*
* After switching buffers, invalidate current_state.
* Also do this when a change was made, the current state may be invalid
* then.
*/
if (syn_buf != wp->w_buffer)
if (syn_buf != wp->w_buffer || changedtick != syn_buf->b_changedtick)
{
invalidate_current_state();
syn_buf = wp->w_buffer;
}
changedtick = syn_buf->b_changedtick;
syn_win = wp;
/*
@ -7392,7 +7396,7 @@ get_attr_entry(table, aep)
return i + ATTR_OFF;
}
if (table->ga_len + ATTR_OFF == 256)
if (table->ga_len + ATTR_OFF >= 256)
{
/*
* Running out of attribute entries! remove all attributes, and

View File

@ -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)

View File

@ -17,6 +17,7 @@
* Vim originated from Stevie version 3.6 (Fish disk 217) by GRWalter (Fred)
* It has been changed beyond recognition since then.
*
* Differences between version 6.x and 7.x can be found with ":help version7".
* Differences between version 5.x and 6.x can be found with ":help version6".
* Differences between version 4.x and 5.x can be found with ":help version5".
* Differences between version 3.0 and 4.x can be found with ":help version4".
@ -1028,7 +1029,7 @@ intro_message(colon)
"",
N_("type :q<Enter> to exit "),
N_("type :help<Enter> or <F1> for on-line help"),
N_("type :help version6<Enter> for version info"),
N_("type :help version7<Enter> for version info"),
NULL,
"",
N_("Running in Vi compatible mode"),

View File

@ -36,5 +36,5 @@
#define VIM_VERSION_NODOT "vim70aa"
#define VIM_VERSION_SHORT "7.0aa"
#define VIM_VERSION_MEDIUM "7.0aa ALPHA"
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2004 June 30)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2004 June 30, compiled "
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2004 Oct 4)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2004 Oct 4, compiled "

View File

@ -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