0
0
mirror of https://github.com/vim/vim.git synced 2025-07-24 10:45:12 -04:00

updated for version 7.0216

This commit is contained in:
Bram Moolenaar 2006-03-06 23:29:24 +00:00
parent 768b8c4dbc
commit 362e1a30c6
95 changed files with 9798 additions and 1335 deletions

View File

@ -248,6 +248,7 @@ SRC_DOS = \
src/Make_mvc.mak \
src/Make_w16.mak \
src/bigvim.bat \
src/msvcsetup.bat \
src/dimm.idl \
src/dlldata.c \
src/dosinst.c \
@ -285,6 +286,7 @@ SRC_DOS = \
src/uninstal.c \
src/vim.def \
src/vim.rc \
src/vimio.h \
src/gvim.exe.mnf \
src/vim16.def \
src/vim16.rc \

View File

@ -128,21 +128,24 @@ MINOR = 0aa
# - Rename the executables to "vimd32.exe", "xxdd32.exe", "installd32.exe" and
# "uninstald32.exe".
# Win32 console version:
# - Set environment for Visual C++ 5.0: "vcvars32"
# - Set environment for Visual C++ Toolkit 2003: "msvcsetup.bat"
# - "nmake -f Make_mvc.mak"
# - "rm testdir/*.out", "nmake -f Make_mvc.mak test" and check the output.
# - Rename the executables to "vimw32.exe", "xxdw32.exe".
# - Rename ObjC/vim.pdb to vimw32.pdb.
# - When building the Win32s version later, delete vimrun.exe, install.exe and
# uninstal.exe. Otherwise rename executables to installw32.exe and
# uninstalw32.exe.
# Win32 GUI version:
# - "nmake -f Make_mvc.mak GUI=yes.
# - move "gvim.exe" to here (otherwise the OLE version will overwrite it).
# - Move ObjC/gvim.pdb to here.
# - Delete vimrun.exe, install.exe and uninstall.exe.
# - Copy "GvimExt/gvimext.dll" to here.
# Win32 GUI version with OLE, PERL, TCL, PYTHON and dynamic IME:
# - Run src/bigvim.bat ("nmake -f Make_mvc.mak GUI=yes OLE=yes IME=yes ...)
# - Rename "gvim.exe" to "gvim_ole.exe".
# - Rename ObjC/gvim.pdb to "gvim_ole.pdb".
# - Delete install.exe and uninstall.exe.
# - If building the Win32s version delete vimrun.exe.
# Win32s GUI version:
@ -430,6 +433,7 @@ dosbin_gvim: dist no_title.vim dist/$(COMMENT_GVIM)
cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe
cp gvimext.dll dist/vim/$(VIMRTDIR)/gvimext.dll
cd dist && zip -9 -rD -z gvim$(VERSION).zip vim <$(COMMENT_GVIM)
cp gvim.pdb dist/gvim$(VERSION).pdb
# make Win32 console
dosbin_w32: dist no_title.vim dist/$(COMMENT_W32)
@ -446,6 +450,7 @@ dosbin_w32: dist no_title.vim dist/$(COMMENT_W32)
cp installw32.exe dist/vim/$(VIMRTDIR)/install.exe
cp uninstalw32.exe dist/vim/$(VIMRTDIR)/uninstal.exe
cd dist && zip -9 -rD -z vim$(VERSION)w32.zip vim <$(COMMENT_W32)
cp vimw32.pdb dist/vim$(VERSION)w32.pdb
# make 32bit DOS
dosbin_d32: dist no_title.vim dist/$(COMMENT_D32)
@ -500,6 +505,7 @@ dosbin_ole: dist no_title.vim dist/$(COMMENT_OLE)
cp src/VisVim/VisVim.dll dist/vim/$(VIMRTDIR)/VisVim.dll
cp src/VisVim/README_VisVim.txt dist/vim/$(VIMRTDIR)
cd dist && zip -9 -rD -z gvim$(VERSION)ole.zip vim <$(COMMENT_OLE)
cp gvim_ole.pdb dist/gvim$(VERSION)ole.pdb
# make Win32s gvim
dosbin_s: dist no_title.vim dist/$(COMMENT_W32S)

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,4 @@
*change.txt* For Vim version 7.0aa. Last change: 2006 Feb 15
*change.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -765,6 +765,10 @@ break the line.
For convenience a <NL> character is also used as a line break. Prepend a
backslash to get a real <NL> character (which will be a NUL in the file).
When the result is a |List| then the items are joined with separating line
breaks. Thus each item becomes a line, except that they can contain line
breaks themselves.
The whole matched text can be accessed with "submatch(0)". The text matched
with the first pair of () with "submatch(1)". Likewise for further
sub-matches in ().

View File

@ -1,4 +1,4 @@
*editing.txt* For Vim version 7.0aa. Last change: 2006 Feb 24
*editing.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -414,7 +414,9 @@ You can have the backticks expanded as a Vim expression, instead of an
external command, by using the syntax `={expr}` e.g.: >
:e `=tempname()`
The expression can contain just about anything, thus this can also be used to
avoid the special meaning of '"', '|', '%' and '#'.
avoid the special meaning of '"', '|', '%' and '#'. Names are to be separated
with line breaks. When the result is a |List| then each item is used as a
name. Line breaks also separate names.
*++opt* *[++opt]*
The [++opt] argument can be used to force the value of 'fileformat',

View File

@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.0aa. Last change: 2006 Mar 04
*eval.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -3371,7 +3371,7 @@ match({expr}, {pat}[, {start}[, {count}]]) *match()*
If there is no match -1 is returned.
Example: >
:echo match("testing", "ing") " results in 4
:echo match([1, 'x'], '\a') " results in 2
:echo match([1, 'x'], '\a') " results in 1
< See |string-match| for how {pat} is used.
*strpbrk()*
Vim doesn't have a strpbrk() function. But you can do: >
@ -3728,6 +3728,9 @@ readfile({fname} [, {binary} [, {max}]])
remote_expr({server}, {string} [, {idvar}])
Send the {string} to {server}. The string is sent as an
expression and the result is returned after evaluation.
The result must be a String or a |List|. A |List| is turned
into a String by joining the items with a line break in
between (not at the end), like with join(expr, "\n").
If {idvar} is present, it is taken as the name of a
variable and a {serverid} for later use with
remote_read() is stored there.
@ -3884,9 +3887,11 @@ search({pattern} [, {flags} [, {stopline}]]) *search()*
If there is no match a 0 is returned and the cursor doesn't
move. No error message is given.
When a match has been found its line number is returned. With
the 'p' flag the returned value is one more than the first
sub-match in \(\). One if there is none.
When a match has been found its line number is returned.
*search()-sub-match*
With the 'p' flag the returned value is one more than the
first sub-match in \(\). One if none of them matched but the
whole pattern did match.
To get the column number too use |searchpos()|.
The cursor will be positioned at the match, unless the 'n'
@ -4039,9 +4044,15 @@ searchpos({pattern} [, {flags} [, {stopline}]]) *searchpos()*
is the line number and the second element is the byte index of
the column position of the match. If no match is found,
returns [0, 0].
>
:let [lnum,col] = searchpos('mypattern', 'n')
<
Example: >
:let [lnum, col] = searchpos('mypattern', 'n')
< When the 'p' flag is given then there is an extra item with
the sub-pattern match number |search()-sub-match|. Example: >
:let [lnum, col, submatch] = searchpos('\(\l\)\|\(\u\)', 'np')
< In this example "submatch" is 2 when a lowercase letter is
found |/\l|, 3 when an uppercase letter is found |/\u|.
server2client( {clientid}, {string}) *server2client()*
Send a reply string to {clientid}. The most recent {clientid}
that sent a string can be retrieved with expand("<client>").

View File

@ -1,4 +1,4 @@
*if_mzsch.txt* For Vim version 7.0aa. Last change: 2006 Jan 05
*if_mzsch.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Sergey Khorev
@ -166,7 +166,10 @@ interface.
Common
------
(command {command-string}) Perform the vim ":Ex" style command.
(eval {expr-string}) Evaluate the vim command string.
(eval {expr-string}) Evaluate the vim expression to a string.
A |List| is turned into a string by
joining the items and inserting line
breaks.
NOTE clashes with MzScheme eval
(range-start) Start/End of the range passed with
(range-end) the Scheme command.

View File

@ -1,4 +1,4 @@
*if_ole.txt* For Vim version 7.0aa. Last change: 2005 Mar 29
*if_ole.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Paul Moore
@ -77,7 +77,8 @@ Eval(expr) Evaluate an expression.
This method takes a single parameter, which is an expression in Vim's normal
format (see |expression|). It returns a string, which is the result of
evaluating the expression.
evaluating the expression. A |List| is turned into a string by joining the
items and inserting line breaks.
Examples (Visual Basic syntax) >
Line20 = Vim.Eval("getline(20)")

View File

@ -1,4 +1,4 @@
*if_perl.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
*if_perl.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Sven Verdoolaege
@ -181,6 +181,8 @@ VIM::Eval({expr}) Evaluates {expr} and returns (success, val).
value of internal |variables| x, and '$x' is equivalent
to perl's $ENV{x}. All |functions| accessible from
the command-line are valid for {expr}.
A |List| is turned into a string by joining the items
and inserting line breaks.
*perl-SetHeight*
Window->SetHeight({height})

View File

@ -1,4 +1,4 @@
*if_ruby.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
*if_ruby.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Shugo Maeda
@ -117,6 +117,8 @@ VIM::command({cmd})
VIM::evaluate({expr})
Evaluates {expr} using the vim internal expression evaluator (see
|expression|). Returns the expression result as a string.
A |List| is turned into a string by joining the items and inserting
line breaks.
==============================================================================
3. VIM::Buffer objects *ruby-buffer*

View File

@ -1,4 +1,4 @@
*if_tcl.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
*if_tcl.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Ingo Wilken
@ -133,7 +133,8 @@ Commands:
Evaluates the expression {expr} using vim's internal expression
evaluator (see |expression|). Any expression that queries a buffer
or window property uses the current buffer/current window. Returns
the result as a string.
the result as a string. A |List| is turned into a string by joining
the items and inserting line breaks.
Examples: >
set perl_available [::vim::expr has("perl")]
< See also |tcl-window-expr| and |tcl-buffer-expr|.

View File

@ -1,4 +1,4 @@
*index.txt* For Vim version 7.0aa. Last change: 2006 Mar 04
*index.txt* For Vim version 7.0aa. Last change: 2006 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1419,6 +1419,7 @@ The commands are sorted on the non-optional part of their name.
|:source| :so[urce] read Vim or Ex commands from a file
|:spelldump| :spelld[ump] split window and fill with all correct words
|:spellgood| :spe[llgood] add good word for spelling
|:spellinfo| :spelli[nfo] show info about loaded spell files
|:spellrepall| :spellr[epall] replace all bad words like last |z=|
|:spellundo| :spellu[ndo] remove good or bad word
|:spellwrong| :spellw[rong] add spelling mistake

View File

@ -1,4 +1,4 @@
*insert.txt* For Vim version 7.0aa. Last change: 2006 Mar 04
*insert.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -130,6 +130,9 @@ CTRL-R {0-9a-z"%#*+:.-=} *i_CTRL-R*
the cursor up:
CTRL-R ="\<Up>"
Use CTRL-R CTRL-R to insert text literally.
When the result is a |List| the items are used
as lines. They can have line breaks inside
too.
See |registers| about registers. {not in Vi}
CTRL-R CTRL-R {0-9a-z"%#*+/:.-=} *i_CTRL-R_CTRL-R*
@ -1239,6 +1242,30 @@ both major engines implemented element, even if this is not in standards it
will be suggested. All other elements are not placed in suggestion list.
PHP *ft-php-omni*
Completion of PHP code requires tags file for completion of data from external
files. You should use Exuberant ctags version 5.5.4 or newer. You can find it
here: http://ctags.sourceforge.net/
Script completes:
- after $ variables name
- function names with additonal info:
- in case of built-in functions list of possible arguments and after | type
data returned by function
- in case of user function arguments and name of file were function was
defined (if it is not current file)
Note: when doing completion first time Vim will load all necessary data into
memory. It may take several seconds. After next use of completion delay
shouldn't be noticeable.
Script detects if cursor is inside <?php ?> tags. If it is outside it will
automatically switch to HTML/CSS/JavaScript completion. Note: contrary to
original HTML files completion of tags (and only tags) isn't context aware.
SYNTAX *ft-syntax-omni*
This uses the current syntax highlighting for completion. It can be used for

View File

@ -1,4 +1,4 @@
*map.txt* For Vim version 7.0aa. Last change: 2006 Feb 24
*map.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1089,6 +1089,7 @@ completion can be enabled:
-complete=event autocommand events
-complete=expression Vim expression
-complete=file file and directory names
-complete=shellcmd Shell command
-complete=function function name
-complete=help help subjects
-complete=highlight highlight groups

View File

@ -1,4 +1,4 @@
*mbyte.txt* For Vim version 7.0aa. Last change: 2005 Oct 14
*mbyte.txt* For Vim version 7.0aa. Last change: 2006 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar et al.
@ -1257,11 +1257,16 @@ Double-width characters are supported. This works best with 'guifontwide' or
normal width and a space to fill the gap. Note that the 'guifontset' option
is no longer relevant in the GTK+ 2 GUI.
Up to two combining characters can be used. The combining character is drawn
on top of the preceding character. When editing text a composing character is
mostly considered part of the preceding character. For example "x" will
delete a character and its following composing characters by default. If the
'delcombine' option is on, then pressing 'x' will delete the combining
*mbyte-combining* *mbyte-composing*
A composing or combining character is used to change the meaning of the
character before it. The combining characters are drawn on top of the
preceding character.
Up to two combining characters can be used by default. This can be changed
with the 'maxcombine' option.
When editing text a composing character is mostly considered part of the
preceding character. For example "x" will delete a character and its
following composing characters by default.
If the 'delcombine' option is on, then pressing 'x' will delete the combining
characters, one at a time, then the base character. But when inserting, you
type the first character and the following composing characters separately,
after which they will be joined. The "r" command will not allow you to type a

View File

@ -1,4 +1,4 @@
*options.txt* For Vim version 7.0aa. Last change: 2006 Mar 04
*options.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1050,7 +1050,10 @@ A jump table for the options with a short description can be found at |Q_op|.
To check whether line breaks in the balloon text work use this check: >
if has("balloon_multiline")
<
< When they are supported "\n" characters will start a new line. If the
expression evaluates to a |List| this is equal to using each List item
as a string and putting "\n" in between them.
*'binary'* *'bin'* *'nobinary'* *'nobin'*
'binary' 'bin' boolean (default off)
local to buffer
@ -3262,6 +3265,8 @@ A jump table for the options with a short description can be found at |Q_op|.
'e' Add tab pages when indicated with 'showtabline'.
'guitablabel' can be used to change the text in the labels.
When 'e' is missing a non-GUI tab pages line may be used.
The GUI tabs are only supported on some systens, currently
only for GTK.
'f' Foreground: Don't use fork() to detach the GUI from the shell
where it was started. Use this for programs that wait for the
@ -4289,6 +4294,20 @@ A jump table for the options with a short description can be found at |Q_op|.
set. Note that this is not in milliseconds, like other options that
set a time. This is to be compatible with Nvi.
*'maxcombine'* *'mco'*
'maxcombine' 'mco' number (default 2)
global
{not in Vi}
{only available when compiled with the |+multi_byte|
feature}
The maximum number of combining characters supported for displaying.
Only used when 'encoding' is "utf-8".
The default is OK for most languages. Hebrew may require 4.
Maximum value is 6.
Even when this option is set to 2 you can still edit text with more
combining characters, you just can't see them. Use |g8| or |ga|.
See |mbyte-combining|.
*'maxfuncdepth'* *'mfd'*
'maxfuncdepth' 'mfd' number (default 100)
global
@ -7176,9 +7195,9 @@ A jump table for the options with a short description can be found at |Q_op|.
"dh". If you use this, you may also want to use the mapping
":map <BS> X" to make backspace delete the character in front of the
cursor.
When 'l' is included, you get a side effect: "yl" on an empty line
will include the <EOL>, so that "p" will insert a new line. That's
why including 'h' and 'l' are not recommended.
When 'l' is included and it is used after an operator at the end of a
line then it will not move to the next line. This makes "dl", "cl",
"yl" etc. work normally.
NOTE: This option is set to the Vi default value when 'compatible' is
set and to the Vim default value when 'compatible' is reset.

View File

@ -1,4 +1,4 @@
*pattern.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
*pattern.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -16,8 +16,9 @@ explanations are in chapter 27 |usr_27.txt|.
5. Multi items |pattern-multi-items|
6. Ordinary atoms |pattern-atoms|
7. Ignoring case in a pattern |/ignorecase|
8. Compare with Perl patterns |perl-patterns|
9. Highlighting matches |match-highlight|
8. Composing characters |patterns-composing|
9. Compare with Perl patterns |perl-patterns|
10. Highlighting matches |match-highlight|
==============================================================================
1. Search commands *search-commands* *E486*
@ -1104,12 +1105,6 @@ Examples:
\cfoo - - foo Foo FOO
foo\C - - foo
*/\Z*
When "\Z" appears anywhere in the pattern, composing characters are ignored.
Thus only the base characters need to match, the composing characters may be
different and the number of composing characters may differ. Only relevant
when 'encoding' is "utf-8".
Technical detail: *NL-used-for-Nul*
<Nul> characters in the file are stored as <NL> in memory. In the display
they are shown as "^@". The translation is done when reading and writing
@ -1134,7 +1129,27 @@ expect. But invalid bytes may cause trouble, a pattern with an invalid byte
will probably never match.
==============================================================================
8. Compare with Perl patterns *perl-patterns*
8. Composing characters *patterns-composing*
*/\Z*
When "\Z" appears anywhere in the pattern, composing characters are ignored.
Thus only the base characters need to match, the composing characters may be
different and the number of composing characters may differ. Only relevant
when 'encoding' is "utf-8".
When a composing character appears at the start of the pattern of after an
item that doesn't include the composing character, a match is found at any
character that includes this composing character.
When using a dot and a composing character, this works the same as the
composing character by itself, except that it doesn't matter what comes before
this.
The order of composing characters matters, even though changing the order
doen't change what a character looks like. This may change in the future.
==============================================================================
9. Compare with Perl patterns *perl-patterns*
Vim's regexes are most similar to Perl's, in terms of what you can do. The
difference between them is mostly just notation; here's a summary of where
@ -1144,7 +1159,7 @@ Capability in Vimspeak in Perlspeak ~
----------------------------------------------------------------
force case insensitivity \c (?i)
force case sensitivity \C (?-i)
backref-less grouping \%(atom) (?:atom)
backref-less grouping \%(atom\) (?:atom)
conservative quantifiers \{-n,m} *?, +?, ??, {}?
0-width match atom\@= (?=atom)
0-width non-match atom\@! (?!atom)
@ -1177,10 +1192,10 @@ Finally, these constructs are unique to Perl:
- \& (which is to \| what "and" is to "or"; it forces several branches
to match at one spot)
- matching lines/columns by number: \%5l \%5c \%5v
- limiting the "return value" of a regex: \zs \ze
- setting the start and end of the match: \zs \ze
==============================================================================
9. Highlighting matches *match-highlight*
10. Highlighting matches *match-highlight*
*:mat* *:match*
:mat[ch] {group} /{pattern}/

View File

@ -1,4 +1,4 @@
*quickref.txt* For Vim version 7.0aa. Last change: 2006 Feb 13
*quickref.txt* For Vim version 7.0aa. Last change: 2006 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -588,337 +588,341 @@ In Insert or Command-line mode:
the help.
Short explanation of each option: *option-list*
|'aleph'| |'al'| ASCII code of the letter Aleph (Hebrew)
|'allowrevins'| |'ari'| allow CTRL-_ in Insert and Command-line mode
|'altkeymap'| |'akm'| for default second language (Farsi/Hebrew)
|'ambiwidth'| |'ambw'| what to do with Unicode chars of ambiguous width
|'antialias'| |'anti'| Mac OS X: use smooth, antialiased fonts
|'autochdir'| |'acd'| change directory to the file in the current window
|'arabic'| |'arab'| for Arabic as a default second language
|'arabicshape'| |'arshape'| do shaping for Arabic characters
|'autoindent'| |'ai'| take indent for new line from previous line
|'autoread'| |'ar'| autom. read file when changed outside of Vim
|'autowrite'| |'aw'| automatically write file if changed
|'autowriteall'| |'awa'| as 'autowrite', but works with more commands
|'background'| |'bg'| "dark" or "light", used for highlight colors
|'backspace'| |'bs'| how backspace works at start of line
|'backup'| |'bk'| keep backup file after overwriting a file
|'backupcopy'| |'bkc'| make backup as a copy, don't rename the file
|'backupdir'| |'bdir'| list of directories for the backup file
|'backupext'| |'bex'| extension used for the backup file
|'backupskip'| |'bsk'| no backup for files that match these patterns
|'balloondelay'| |'bdlay'| delay in mS before a balloon may pop up
|'ballooneval'| |'beval'| switch on balloon evaluation
|'balloonexpr'| |'bexpr'| expression to show in balloon
|'binary'| |'bin'| read/write/edit file in binary mode
|'bioskey'| |'biosk'| MS-DOS: use bios calls for input characters
|'bomb'| prepend a Byte Order Mark to the file
|'breakat'| |'brk'| characters that may cause a line break
|'browsedir'| |'bsdir'| which directory to start browsing in
|'bufhidden'| |'bh'| what to do when buffer is no longer in window
|'buflisted'| |'bl'| whether the buffer shows up in the buffer list
|'buftype'| |'bt'| special type of buffer
|'casemap'| |'cmp'| specifies how case of letters is changed
|'cdpath'| |'cd'| list of directories searched with ":cd"
|'cedit'| key used to open the command-line window
|'charconvert'| |'ccv'| expression for character encoding conversion
|'cindent'| |'cin'| do C program indenting
|'cinkeys'| |'cink'| keys that trigger indent when 'cindent' is set
|'cinoptions'| |'cino'| how to do indenting when 'cindent' is set
|'cinwords'| |'cinw'| words where 'si' and 'cin' add an indent
|'clipboard'| |'cb'| use the clipboard as the unnamed register
|'cmdheight'| |'ch'| number of lines to use for the command-line
|'cmdwinheight'| |'cwh'| height of the command-line window
|'columns'| |'co'| number of columns in the display
|'comments'| |'com'| patterns that can start a comment line
|'commentstring'| |'cms'| template for comments; used for fold marker
|'compatible'| |'cp'| behave Vi-compatible as much as possible
|'complete'| |'cpt'| specify how Insert mode completion works
|'completefunc'| |'cfu'| function to be used for Insert mode completion
|'completeopt'| |'cot'| options for Insert mode completion
|'confirm'| |'cf'| ask what to do about unsaved/read-only files
|'conskey'| |'consk'| get keys directly from console (MS-DOS only)
|'copyindent'| |'ci'| make 'autoindent' use existing indent structure
|'cpoptions'| |'cpo'| flags for Vi-compatible behavior
|'cscopepathcomp'| |'cspc'| how many components of the path to show
|'cscopeprg'| |'csprg'| command to execute cscope
|'cscopequickfix'| |'csqf'| use quickfix window for cscope results
|'cscopetag'| |'cst'| use cscope for tag commands
|'cscopetagorder'| |'csto'| determines ":cstag" search order
|'cscopeverbose'| |'csverb'| give messages when adding a cscope database
|'debug'| set to "msg" to see all error messages
|'define'| |'def'| pattern to be used to find a macro definition
|'delcombine'| |'deco'| delete combining characters on their own
|'dictionary'| |'dict'| list of file names used for keyword completion
|'diff'| use diff mode for the current window
|'diffexpr'| |'dex'| expression used to obtain a diff file
|'diffopt'| |'dip'| options for using diff mode
|'digraph'| |'dg'| enable the entering of digraphs in Insert mode
|'directory'| |'dir'| list of directory names for the swap file
|'display'| |'dy'| list of flags for how to display text
|'eadirection'| |'ead'| in which direction 'equalalways' works
|'edcompatible'| |'ed'| toggle flags of ":substitute" command
|'encoding'| |'enc'| encoding used internally
|'endofline'| |'eol'| write <EOL> for last line in file
|'equalalways'| |'ea'| windows are automatically made the same size
|'equalprg'| |'ep'| external program to use for "=" command
|'errorbells'| |'eb'| ring the bell for error messages
|'errorfile'| |'ef'| name of the errorfile for the QuickFix mode
|'errorformat'| |'efm'| description of the lines in the error file
|'esckeys'| |'ek'| recognize function keys in Insert mode
|'eventignore'| |'ei'| autocommand events that are ignored
|'expandtab'| |'et'| use spaces when <Tab> is inserted
|'exrc'| |'ex'| read .vimrc and .exrc in the current directory
|'fileencoding'| |'fenc'| file encoding for multi-byte text
|'fileencodings'| |'fencs'| automatically detected character encodings
|'fileformat'| |'ff'| file format used for file I/O
|'fileformats'| |'ffs'| automatically detected values for 'fileformat'
|'filetype'| |'ft'| type of file, used for autocommands
|'fillchars'| |'fcs'| characters to use for displaying special items
|'fkmap'| |'fk'| Farsi keyboard mapping
|'foldclose'| |'fcl'| close a fold when the cursor leaves it
|'foldcolumn'| |'fdc'| width of the column used to indicate folds
|'foldenable'| |'fen'| set to display all folds open
|'foldexpr'| |'fde'| expression used when 'foldmethod' is "expr"
|'foldignore'| |'fdi'| ignore lines when 'foldmethod' is "indent"
|'foldlevel'| |'fdl'| close folds with a level higher than this
|'foldlevelstart'| |'fdls'| 'foldlevel' when starting to edit a file
|'foldmarker'| |'fmr'| markers used when 'foldmethod' is "marker"
|'foldmethod'| |'fdm'| folding type
|'foldminlines'| |'fml'| minimum number of lines for a fold to be closed
|'foldnestmax'| |'fdn'| maximum fold depth
|'foldopen'| |'fdo'| for which commands a fold will be opened
|'foldtext'| |'fdt'| expression used to display for a closed fold
|'formatlistpat'| |'flp'| pattern used to recognize a list header
|'formatoptions'| |'fo'| how automatic formatting is to be done
|'formatprg'| |'fp'| name of external program used with "gq" command
|'formatexpr'| |'fex'| expression used with "gq" command
|'fsync'| |'fs'| whether to invoke fsync() after file write
|'gdefault'| |'gd'| the ":substitute" flag 'g' is default on
|'grepformat'| |'gfm'| format of 'grepprg' output
|'grepprg'| |'gp'| program to use for ":grep"
|'guicursor'| |'gcr'| GUI: settings for cursor shape and blinking
|'guifont'| |'gfn'| GUI: Name(s) of font(s) to be used
|'guifontset'| |'gfs'| GUI: Names of multi-byte fonts to be used
|'guifontwide'| |'gfw'| list of font names for double-wide characters
|'guiheadroom'| |'ghr'| GUI: pixels room for window decorations
|'guioptions'| |'go'| GUI: Which components and options are used
|'guipty'| GUI: try to use a pseudo-tty for ":!" commands
|'helpfile'| |'hf'| full path name of the main help file
|'helpheight'| |'hh'| minimum height of a new help window
|'helplang'| |'hlg'| preferred help languages
|'hidden'| |'hid'| don't unload buffer when it is |abandon|ed
|'highlight'| |'hl'| sets highlighting mode for various occasions
|'hlsearch'| |'hls'| highlight matches with last search pattern
|'history'| |'hi'| number of command-lines that are remembered
|'hkmap'| |'hk'| Hebrew keyboard mapping
|'hkmapp'| |'hkp'| phonetic Hebrew keyboard mapping
|'icon'| let Vim set the text of the window icon
|'iconstring'| string to use for the Vim icon text
|'ignorecase'| |'ic'| ignore case in search patterns
|'imactivatekey'| |'imak'| key that activates the X input method
|'imcmdline'| |'imc'| use IM when starting to edit a command line
|'imdisable'| |'imd'| do not use the IM in any mode
|'iminsert'| |'imi'| use :lmap or IM in Insert mode
|'imsearch'| |'ims'| use :lmap or IM when typing a search pattern
|'include'| |'inc'| pattern to be used to find an include file
|'includeexpr'| |'inex'| expression used to process an include line
|'incsearch'| |'is'| highlight match while typing search pattern
|'indentexpr'| |'inde'| expression used to obtain the indent of a line
|'indentkeys'| |'indk'| keys that trigger indenting with 'indentexpr'
|'infercase'| |'inf'| adjust case of match for keyword completion
|'insertmode'| |'im'| start the edit of a file in Insert mode
|'isfname'| |'isf'| characters included in file names and pathnames
|'isident'| |'isi'| characters included in identifiers
|'iskeyword'| |'isk'| characters included in keywords
|'isprint'| |'isp'| printable characters
|'joinspaces'| |'js'| two spaces after a period with a join command
|'key'| encryption key
|'keymap'| |'kmp'| name of a keyboard mapping
|'keymodel'| |'km'| enable starting/stopping selection with keys
|'keywordprg'| |'kp'| program to use for the "K" command
|'langmap'| |'lmap'| alphabetic characters for other language mode
|'langmenu'| |'lm'| language to be used for the menus
|'laststatus'| |'ls'| tells when last window has status lines
|'lazyredraw'| |'lz'| don't redraw while executing macros
|'linebreak'| |'lbr'| wrap long lines at a blank
|'lines'| number of lines in the display
|'linespace'| |'lsp'| number of pixel lines to use between characters
|'lisp'| automatic indenting for Lisp
|'lispwords'| |'lw'| words that change how lisp indenting works
|'list'| show <Tab> and <EOL>
|'listchars'| |'lcs'| characters for displaying in list mode
|'loadplugins'| |'lpl'| load plugin scripts when starting up
|'magic'| changes special characters in search patterns
|'makeef'| |'mef'| name of the errorfile for ":make"
|'makeprg'| |'mp'| program to use for the ":make" command
|'matchpairs'| |'mps'| pairs of characters that "%" can match
|'matchtime'| |'mat'| tenths of a second to show matching paren
|'maxfuncdepth'| |'mfd'| maximum recursive depth for user functions
|'maxmapdepth'| |'mmd'| maximum recursive depth for mapping
|'maxmem'| |'mm'| maximum memory (in Kbyte) used for one buffer
|'maxmempattern'| |'mmp'| maximum memory (in Kbyte) used for pattern search
|'maxmemtot'| |'mmt'| maximum memory (in Kbyte) used for all buffers
|'menuitems'| |'mis'| maximum number of items in a menu
|'mkspellmem'| |'msm'| memory used before |:mkspell| compresses the tree
|'modeline'| |'ml'| recognize modelines at start or end of file
|'modelines'| |'mls'| number of lines checked for modelines
|'modifiable'| |'ma'| changes to the text are not possible
|'modified'| |'mod'| buffer has been modified
|'more'| pause listings when the whole screen is filled
|'mouse'| enable the use of mouse clicks
|'mousefocus'| |'mousef'| keyboard focus follows the mouse
|'mousehide'| |'mh'| hide mouse pointer while typing
|'mousemodel'| |'mousem'| changes meaning of mouse buttons
|'mouseshape'| |'mouses'| shape of the mouse pointer in different modes
|'mousetime'| |'mouset'| max time between mouse double-click
|'mzquantum'| |'mzq'| the interval between polls for MzScheme threads
|'nrformats'| |'nf'| number formats recognized for CTRL-A command
|'number'| |'nu'| print the line number in front of each line
|'numberwidth'| |'nuw'| number of columns used for the line number
|'omnifunc'| |'ofu'| function for filetype-specific completion
|'operatorfunc'| |'opfunc'| funtion to be called for |g@| operator
|'osfiletype'| |'oft'| operating system-specific filetype information
|'paragraphs'| |'para'| nroff macros that separate paragraphs
|'paste'| allow pasting text
|'pastetoggle'| |'pt'| key code that causes 'paste' to toggle
|'patchexpr'| |'pex'| expression used to patch a file
|'patchmode'| |'pm'| keep the oldest version of a file
|'path'| |'pa'| list of directories searched with "gf" et.al.
|'preserveindent'| |'pi'| preserve the indent structure when reindenting
|'previewheight'| |'pvh'| height of the preview window
|'previewwindow'| |'pvw'| identifies the preview window
|'printdevice'| |'pdev'| name of the printer to be used for :hardcopy
|'printencoding'| |'penc'| encoding to be used for printing
|'printexpr'| |'pexpr'| expression used to print PostScript for :hardcopy
|'printfont'| |'pfn'| name of the font to be used for :hardcopy
|'printheader'| |'pheader'| format of the header used for :hardcopy
|'printmbcharset'| |'pmbcs'| CJK character set to be used for :hardcopy
|'printmbfont'| |'pmbfn'| font names to be used for CJK output of :hardcopy
|'printoptions'| |'popt'| controls the format of :hardcopy output
|'quoteescape'| |'qe'| escape characters used in a string
|'readonly'| |'ro'| disallow writing the buffer
|'remap'| allow mappings to work recursively
|'report'| threshold for reporting nr. of lines changed
|'restorescreen'| |'rs'| Win32: restore screen when exiting
|'revins'| |'ri'| inserting characters will work backwards
|'rightleft'| |'rl'| window is right-to-left oriented
|'rightleftcmd'| |'rlc'| commands for which editing works right-to-left
|'ruler'| |'ru'| show cursor line and column in the status line
|'rulerformat'| |'ruf'| custom format for the ruler
|'runtimepath'| |'rtp'| list of directories used for runtime files
|'scroll'| |'scr'| lines to scroll with CTRL-U and CTRL-D
|'scrollbind'| |'scb'| scroll in window as other windows scroll
|'scrolljump'| |'sj'| minimum number of lines to scroll
|'scrolloff'| |'so'| minimum nr. of lines above and below cursor
|'scrollopt'| |'sbo'| how 'scrollbind' should behave
|'sections'| |'sect'| nroff macros that separate sections
|'secure'| secure mode for reading .vimrc in current dir
|'selection'| |'sel'| what type of selection to use
|'selectmode'| |'slm'| when to use Select mode instead of Visual mode
|'sessionoptions'| |'ssop'| options for |:mksession|
|'shell'| |'sh'| name of shell to use for external commands
|'shellcmdflag'| |'shcf'| flag to shell to execute one command
|'shellpipe'| |'sp'| string to put output of ":make" in error file
|'shellquote'| |'shq'| quote character(s) for around shell command
|'shellredir'| |'srr'| string to put output of filter in a temp file
|'shellslash'| |'ssl'| use forward slash for shell file names
|'shelltemp'| |'stmp'| whether to use a temp file for shell commands
|'shelltype'| |'st'| Amiga: influences how to use a shell
|'shellxquote'| |'sxq'| like 'shellquote', but include redirection
|'shiftround'| |'sr'| round indent to multiple of shiftwidth
|'shiftwidth'| |'sw'| number of spaces to use for (auto)indent step
|'shortmess'| |'shm'| list of flags, reduce length of messages
|'shortname'| |'sn'| non-MS-DOS: Filenames assumed to be 8.3 chars
|'showbreak'| |'sbr'| string to use at the start of wrapped lines
|'showcmd'| |'sc'| show (partial) command in status line
|'showfulltag'| |'sft'| show full tag pattern when completing tag
|'showmatch'| |'sm'| briefly jump to matching bracket if insert one
|'showmode'| |'smd'| message on status line to show current mode
|'sidescroll'| |'ss'| minimum number of columns to scroll horizontal
|'sidescrolloff'| |'siso'| min. nr. of columns to left and right of cursor
|'smartcase'| |'scs'| no ignore case when pattern has uppercase
|'smartindent'| |'si'| smart autoindenting for C programs
|'smarttab'| |'sta'| use 'shiftwidth' when inserting <Tab>
|'softtabstop'| |'sts'| number of spaces that <Tab> uses while editing
|'spell'| enable spell checking
|'spellcapcheck'| |'spc'| pattern to locate end of a sentence
|'spellfile'| |'spf'| files where |zg| and |zw| store words
|'spelllang'| |'spl'| language(s) to do spell checking for
|'spellsuggest'| |'sps'| method(s) used to suggest spelling corrections
|'splitbelow'| |'sb'| new window from split is below the current one
|'splitright'| |'spr'| new window is put right of the current one
|'startofline'| |'sol'| commands move cursor to first blank in line
|'statusline'| |'stl'| custom format for the status line
|'suffixes'| |'su'| suffixes that are ignored with multiple match
|'suffixesadd'| |'sua'| suffixes added when searching for a file
|'swapfile'| |'swf'| whether to use a swapfile for a buffer
|'swapsync'| |'sws'| how to sync the swap file
|'switchbuf'| |'swb'| sets behavior when switching to another buffer
|'synmaxcol'| |'smc'| maximum column to find syntax items
|'syntax'| |'syn'| syntax to be loaded for current buffer
|'tabstop'| |'ts'| number of spaces that <Tab> in file uses
|'tagbsearch'| |'tbs'| use binary searching in tags files
|'taglength'| |'tl'| number of significant characters for a tag
|'tagrelative'| |'tr'| file names in tag file are relative
|'tags'| |'tag'| list of file names used by the tag command
|'tagstack'| |'tgst'| push tags onto the tag stack
|'term'| name of the terminal
|'termbidi'| |'tbidi'| terminal takes care of bi-directionality
|'termencoding'| |'tenc'| character encoding used by the terminal
|'terse'| shorten some messages
|'textauto'| |'ta'| obsolete, use 'fileformats'
|'textmode'| |'tx'| obsolete, use 'fileformat'
|'textwidth'| |'tw'| maximum width of text that is being inserted
|'thesaurus'| |'tsr'| list of thesaurus files for keyword completion
|'tildeop'| |'top'| tilde command "~" behaves like an operator
|'timeout'| |'to'| time out on mappings and key codes
|'timeoutlen'| |'tm'| time out time in milliseconds
|'title'| let Vim set the title of the window
|'titlelen'| percentage of 'columns' used for window title
|'titleold'| old title, restored when exiting
|'titlestring'| string to use for the Vim window title
|'toolbar'| |'tb'| GUI: which items to show in the toolbar
|'toolbariconsize'| |'tbis'| size of the toolbar icons (for GTK 2 only)
|'ttimeout'| time out on mappings
|'ttimeoutlen'| |'ttm'| time out time for key codes in milliseconds
|'ttybuiltin'| |'tbi'| use built-in termcap before external termcap
|'ttyfast'| |'tf'| indicates a fast terminal connection
|'ttymouse'| |'ttym'| type of mouse codes generated
|'ttyscroll'| |'tsl'| maximum number of lines for a scroll
|'ttytype'| |'tty'| alias for 'term'
|'undolevels'| |'ul'| maximum number of changes that can be undone
|'updatecount'| |'uc'| after this many characters flush swap file
|'updatetime'| |'ut'| after this many milliseconds flush swap file
|'verbose'| |'vbs'| give informative messages
|'verbosefile'| |'vfile'| file to write messages in
|'viewdir'| |'vdir'| directory where to store files with :mkview
|'viewoptions'| |'vop'| specifies what to save for :mkview
|'viminfo'| |'vi'| use .viminfo file upon startup and exiting
|'virtualedit'| |'ve'| when to use virtual editing
|'visualbell'| |'vb'| use visual bell instead of beeping
|'warn'| warn for shell command when buffer was changed
|'weirdinvert'| |'wi'| for terminals that have weird inversion method
|'whichwrap'| |'ww'| allow specified keys to cross line boundaries
|'wildchar'| |'wc'| command-line character for wildcard expansion
|'wildcharm'| |'wcm'| like 'wildchar' but also works when mapped
|'wildignore'| |'wig'| files matching these patterns are not completed
|'wildmenu'| |'wmnu'| use menu for command line completion
|'wildmode'| |'wim'| mode for 'wildchar' command-line expansion
|'wildoptions'| |'wop'| specifies how command line completion is done.
|'winaltkeys'| |'wak'| when the windows system handles ALT keys
|'winheight'| |'wh'| minimum number of lines for the current window
|'winfixheight'| |'wfh'| keep window height when opening/closing windows
|'winminheight'| |'wmh'| minimum number of lines for any window
|'winminwidth'| |'wmw'| minimal number of columns for any window
|'winwidth'| |'wiw'| minimal number of columns for current window
|'wrap'| long lines wrap and continue on the next line
|'wrapmargin'| |'wm'| chars from the right where wrapping starts
|'wrapscan'| |'ws'| searches wrap around the end of the file
|'write'| writing to a file is allowed
|'writeany'| |'wa'| write to file with no need for "!" override
|'writebackup'| |'wb'| make a backup before overwriting a file
|'writedelay'| |'wd'| delay this many msec for each char (for debug)
'aleph' 'al' ASCII code of the letter Aleph (Hebrew)
'allowrevins' 'ari' allow CTRL-_ in Insert and Command-line mode
'altkeymap' 'akm' for default second language (Farsi/Hebrew)
'ambiwidth' 'ambw' what to do with Unicode chars of ambiguous width
'antialias' 'anti' Mac OS X: use smooth, antialiased fonts
'autochdir' 'acd' change directory to the file in the current window
'arabic' 'arab' for Arabic as a default second language
'arabicshape' 'arshape' do shaping for Arabic characters
'autoindent' 'ai' take indent for new line from previous line
'autoread' 'ar' autom. read file when changed outside of Vim
'autowrite' 'aw' automatically write file if changed
'autowriteall' 'awa' as 'autowrite', but works with more commands
'background' 'bg' "dark" or "light", used for highlight colors
'backspace' 'bs' how backspace works at start of line
'backup' 'bk' keep backup file after overwriting a file
'backupcopy' 'bkc' make backup as a copy, don't rename the file
'backupdir' 'bdir' list of directories for the backup file
'backupext' 'bex' extension used for the backup file
'backupskip' 'bsk' no backup for files that match these patterns
'balloondelay' 'bdlay' delay in mS before a balloon may pop up
'ballooneval' 'beval' switch on balloon evaluation
'balloonexpr' 'bexpr' expression to show in balloon
'binary' 'bin' read/write/edit file in binary mode
'bioskey' 'biosk' MS-DOS: use bios calls for input characters
'bomb' prepend a Byte Order Mark to the file
'breakat' 'brk' characters that may cause a line break
'browsedir' 'bsdir' which directory to start browsing in
'bufhidden' 'bh' what to do when buffer is no longer in window
'buflisted' 'bl' whether the buffer shows up in the buffer list
'buftype' 'bt' special type of buffer
'casemap' 'cmp' specifies how case of letters is changed
'cdpath' 'cd' list of directories searched with ":cd"
'cedit' key used to open the command-line window
'charconvert' 'ccv' expression for character encoding conversion
'cindent' 'cin' do C program indenting
'cinkeys' 'cink' keys that trigger indent when 'cindent' is set
'cinoptions' 'cino' how to do indenting when 'cindent' is set
'cinwords' 'cinw' words where 'si' and 'cin' add an indent
'clipboard' 'cb' use the clipboard as the unnamed register
'cmdheight' 'ch' number of lines to use for the command-line
'cmdwinheight' 'cwh' height of the command-line window
'columns' 'co' number of columns in the display
'comments' 'com' patterns that can start a comment line
'commentstring' 'cms' template for comments; used for fold marker
'compatible' 'cp' behave Vi-compatible as much as possible
'complete' 'cpt' specify how Insert mode completion works
'completefunc' 'cfu' function to be used for Insert mode completion
'completeopt' 'cot' options for Insert mode completion
'confirm' 'cf' ask what to do about unsaved/read-only files
'conskey' 'consk' get keys directly from console (MS-DOS only)
'copyindent' 'ci' make 'autoindent' use existing indent structure
'cpoptions' 'cpo' flags for Vi-compatible behavior
'cscopepathcomp' 'cspc' how many components of the path to show
'cscopeprg' 'csprg' command to execute cscope
'cscopequickfix' 'csqf' use quickfix window for cscope results
'cscopetag' 'cst' use cscope for tag commands
'cscopetagorder' 'csto' determines ":cstag" search order
'cscopeverbose' 'csverb' give messages when adding a cscope database
'debug' set to "msg" to see all error messages
'define' 'def' pattern to be used to find a macro definition
'delcombine' 'deco' delete combining characters on their own
'dictionary' 'dict' list of file names used for keyword completion
'diff' use diff mode for the current window
'diffexpr' 'dex' expression used to obtain a diff file
'diffopt' 'dip' options for using diff mode
'digraph' 'dg' enable the entering of digraphs in Insert mode
'directory' 'dir' list of directory names for the swap file
'display' 'dy' list of flags for how to display text
'eadirection' 'ead' in which direction 'equalalways' works
'edcompatible' 'ed' toggle flags of ":substitute" command
'encoding' 'enc' encoding used internally
'endofline' 'eol' write <EOL> for last line in file
'equalalways' 'ea' windows are automatically made the same size
'equalprg' 'ep' external program to use for "=" command
'errorbells' 'eb' ring the bell for error messages
'errorfile' 'ef' name of the errorfile for the QuickFix mode
'errorformat' 'efm' description of the lines in the error file
'esckeys' 'ek' recognize function keys in Insert mode
'eventignore' 'ei' autocommand events that are ignored
'expandtab' 'et' use spaces when <Tab> is inserted
'exrc' 'ex' read .vimrc and .exrc in the current directory
'fileencoding' 'fenc' file encoding for multi-byte text
'fileencodings' 'fencs' automatically detected character encodings
'fileformat' 'ff' file format used for file I/O
'fileformats' 'ffs' automatically detected values for 'fileformat'
'filetype' 'ft' type of file, used for autocommands
'fillchars' 'fcs' characters to use for displaying special items
'fkmap' 'fk' Farsi keyboard mapping
'foldclose' 'fcl' close a fold when the cursor leaves it
'foldcolumn' 'fdc' width of the column used to indicate folds
'foldenable' 'fen' set to display all folds open
'foldexpr' 'fde' expression used when 'foldmethod' is "expr"
'foldignore' 'fdi' ignore lines when 'foldmethod' is "indent"
'foldlevel' 'fdl' close folds with a level higher than this
'foldlevelstart' 'fdls' 'foldlevel' when starting to edit a file
'foldmarker' 'fmr' markers used when 'foldmethod' is "marker"
'foldmethod' 'fdm' folding type
'foldminlines' 'fml' minimum number of lines for a fold to be closed
'foldnestmax' 'fdn' maximum fold depth
'foldopen' 'fdo' for which commands a fold will be opened
'foldtext' 'fdt' expression used to display for a closed fold
'formatlistpat' 'flp' pattern used to recognize a list header
'formatoptions' 'fo' how automatic formatting is to be done
'formatprg' 'fp' name of external program used with "gq" command
'formatexpr' 'fex' expression used with "gq" command
'fsync' 'fs' whether to invoke fsync() after file write
'gdefault' 'gd' the ":substitute" flag 'g' is default on
'grepformat' 'gfm' format of 'grepprg' output
'grepprg' 'gp' program to use for ":grep"
'guicursor' 'gcr' GUI: settings for cursor shape and blinking
'guifont' 'gfn' GUI: Name(s) of font(s) to be used
'guifontset' 'gfs' GUI: Names of multi-byte fonts to be used
'guifontwide' 'gfw' list of font names for double-wide characters
'guiheadroom' 'ghr' GUI: pixels room for window decorations
'guioptions' 'go' GUI: Which components and options are used
'guipty' GUI: try to use a pseudo-tty for ":!" commands
'guitablabel' 'gtl' GUI: custom label for a tab page
'helpfile' 'hf' full path name of the main help file
'helpheight' 'hh' minimum height of a new help window
'helplang' 'hlg' preferred help languages
'hidden' 'hid' don't unload buffer when it is |abandon|ed
'highlight' 'hl' sets highlighting mode for various occasions
'hlsearch' 'hls' highlight matches with last search pattern
'history' 'hi' number of command-lines that are remembered
'hkmap' 'hk' Hebrew keyboard mapping
'hkmapp' 'hkp' phonetic Hebrew keyboard mapping
'icon' let Vim set the text of the window icon
'iconstring' string to use for the Vim icon text
'ignorecase' 'ic' ignore case in search patterns
'imactivatekey' 'imak' key that activates the X input method
'imcmdline' 'imc' use IM when starting to edit a command line
'imdisable' 'imd' do not use the IM in any mode
'iminsert' 'imi' use :lmap or IM in Insert mode
'imsearch' 'ims' use :lmap or IM when typing a search pattern
'include' 'inc' pattern to be used to find an include file
'includeexpr' 'inex' expression used to process an include line
'incsearch' 'is' highlight match while typing search pattern
'indentexpr' 'inde' expression used to obtain the indent of a line
'indentkeys' 'indk' keys that trigger indenting with 'indentexpr'
'infercase' 'inf' adjust case of match for keyword completion
'insertmode' 'im' start the edit of a file in Insert mode
'isfname' 'isf' characters included in file names and pathnames
'isident' 'isi' characters included in identifiers
'iskeyword' 'isk' characters included in keywords
'isprint' 'isp' printable characters
'joinspaces' 'js' two spaces after a period with a join command
'key' encryption key
'keymap' 'kmp' name of a keyboard mapping
'keymodel' 'km' enable starting/stopping selection with keys
'keywordprg' 'kp' program to use for the "K" command
'langmap' 'lmap' alphabetic characters for other language mode
'langmenu' 'lm' language to be used for the menus
'laststatus' 'ls' tells when last window has status lines
'lazyredraw' 'lz' don't redraw while executing macros
'linebreak' 'lbr' wrap long lines at a blank
'lines' number of lines in the display
'linespace' 'lsp' number of pixel lines to use between characters
'lisp' automatic indenting for Lisp
'lispwords' 'lw' words that change how lisp indenting works
'list' show <Tab> and <EOL>
'listchars' 'lcs' characters for displaying in list mode
'loadplugins' 'lpl' load plugin scripts when starting up
'magic' changes special characters in search patterns
'makeef' 'mef' name of the errorfile for ":make"
'makeprg' 'mp' program to use for the ":make" command
'matchpairs' 'mps' pairs of characters that "%" can match
'matchtime' 'mat' tenths of a second to show matching paren
'maxfuncdepth' 'mfd' maximum recursive depth for user functions
'maxmapdepth' 'mmd' maximum recursive depth for mapping
'maxmem' 'mm' maximum memory (in Kbyte) used for one buffer
'maxmempattern' 'mmp' maximum memory (in Kbyte) used for pattern search
'maxmemtot' 'mmt' maximum memory (in Kbyte) used for all buffers
'menuitems' 'mis' maximum number of items in a menu
'mkspellmem' 'msm' memory used before |:mkspell| compresses the tree
'modeline' 'ml' recognize modelines at start or end of file
'modelines' 'mls' number of lines checked for modelines
'modifiable' 'ma' changes to the text are not possible
'modified' 'mod' buffer has been modified
'more' pause listings when the whole screen is filled
'mouse' enable the use of mouse clicks
'mousefocus' 'mousef' keyboard focus follows the mouse
'mousehide' 'mh' hide mouse pointer while typing
'mousemodel' 'mousem' changes meaning of mouse buttons
'mouseshape' 'mouses' shape of the mouse pointer in different modes
'mousetime' 'mouset' max time between mouse double-click
'mzquantum' 'mzq' the interval between polls for MzScheme threads
'nrformats' 'nf' number formats recognized for CTRL-A command
'number' 'nu' print the line number in front of each line
'numberwidth' 'nuw' number of columns used for the line number
'omnifunc' 'ofu' function for filetype-specific completion
'operatorfunc' 'opfunc' funtion to be called for |g@| operator
'osfiletype' 'oft' operating system-specific filetype information
'paragraphs' 'para' nroff macros that separate paragraphs
'paste' allow pasting text
'pastetoggle' 'pt' key code that causes 'paste' to toggle
'patchexpr' 'pex' expression used to patch a file
'patchmode' 'pm' keep the oldest version of a file
'path' 'pa' list of directories searched with "gf" et.al.
'preserveindent' 'pi' preserve the indent structure when reindenting
'previewheight' 'pvh' height of the preview window
'previewwindow' 'pvw' identifies the preview window
'printdevice' 'pdev' name of the printer to be used for :hardcopy
'printencoding' 'penc' encoding to be used for printing
'printexpr' 'pexpr' expression used to print PostScript for :hardcopy
'printfont' 'pfn' name of the font to be used for :hardcopy
'printheader' 'pheader' format of the header used for :hardcopy
'printmbcharset' 'pmbcs' CJK character set to be used for :hardcopy
'printmbfont' 'pmbfn' font names to be used for CJK output of :hardcopy
'printoptions' 'popt' controls the format of :hardcopy output
'quoteescape' 'qe' escape characters used in a string
'readonly' 'ro' disallow writing the buffer
'remap' allow mappings to work recursively
'report' threshold for reporting nr. of lines changed
'restorescreen' 'rs' Win32: restore screen when exiting
'revins' 'ri' inserting characters will work backwards
'rightleft' 'rl' window is right-to-left oriented
'rightleftcmd' 'rlc' commands for which editing works right-to-left
'ruler' 'ru' show cursor line and column in the status line
'rulerformat' 'ruf' custom format for the ruler
'runtimepath' 'rtp' list of directories used for runtime files
'scroll' 'scr' lines to scroll with CTRL-U and CTRL-D
'scrollbind' 'scb' scroll in window as other windows scroll
'scrolljump' 'sj' minimum number of lines to scroll
'scrolloff' 'so' minimum nr. of lines above and below cursor
'scrollopt' 'sbo' how 'scrollbind' should behave
'sections' 'sect' nroff macros that separate sections
'secure' secure mode for reading .vimrc in current dir
'selection' 'sel' what type of selection to use
'selectmode' 'slm' when to use Select mode instead of Visual mode
'sessionoptions' 'ssop' options for |:mksession|
'shell' 'sh' name of shell to use for external commands
'shellcmdflag' 'shcf' flag to shell to execute one command
'shellpipe' 'sp' string to put output of ":make" in error file
'shellquote' 'shq' quote character(s) for around shell command
'shellredir' 'srr' string to put output of filter in a temp file
'shellslash' 'ssl' use forward slash for shell file names
'shelltemp' 'stmp' whether to use a temp file for shell commands
'shelltype' 'st' Amiga: influences how to use a shell
'shellxquote' 'sxq' like 'shellquote', but include redirection
'shiftround' 'sr' round indent to multiple of shiftwidth
'shiftwidth' 'sw' number of spaces to use for (auto)indent step
'shortmess' 'shm' list of flags, reduce length of messages
'shortname' 'sn' non-MS-DOS: Filenames assumed to be 8.3 chars
'showbreak' 'sbr' string to use at the start of wrapped lines
'showcmd' 'sc' show (partial) command in status line
'showfulltag' 'sft' show full tag pattern when completing tag
'showmatch' 'sm' briefly jump to matching bracket if insert one
'showmode' 'smd' message on status line to show current mode
'showtabline' 'stal' tells when the tab pages line is displayed
'sidescroll' 'ss' minimum number of columns to scroll horizontal
'sidescrolloff' 'siso' min. nr. of columns to left and right of cursor
'smartcase' 'scs' no ignore case when pattern has uppercase
'smartindent' 'si' smart autoindenting for C programs
'smarttab' 'sta' use 'shiftwidth' when inserting <Tab>
'softtabstop' 'sts' number of spaces that <Tab> uses while editing
'spell' enable spell checking
'spellcapcheck' 'spc' pattern to locate end of a sentence
'spellfile' 'spf' files where |zg| and |zw| store words
'spelllang' 'spl' language(s) to do spell checking for
'spellsuggest' 'sps' method(s) used to suggest spelling corrections
'splitbelow' 'sb' new window from split is below the current one
'splitright' 'spr' new window is put right of the current one
'startofline' 'sol' commands move cursor to first blank in line
'statusline' 'stl' custom format for the status line
'suffixes' 'su' suffixes that are ignored with multiple match
'suffixesadd' 'sua' suffixes added when searching for a file
'swapfile' 'swf' whether to use a swapfile for a buffer
'swapsync' 'sws' how to sync the swap file
'switchbuf' 'swb' sets behavior when switching to another buffer
'synmaxcol' 'smc' maximum column to find syntax items
'syntax' 'syn' syntax to be loaded for current buffer
'tabstop' 'ts' number of spaces that <Tab> in file uses
'tabline' 'tal' custom format for the console tab pages line
'tabpagemax' 'tpm' maximum number of tab pages for |-p| and "tab all"
'tagbsearch' 'tbs' use binary searching in tags files
'taglength' 'tl' number of significant characters for a tag
'tagrelative' 'tr' file names in tag file are relative
'tags' 'tag' list of file names used by the tag command
'tagstack' 'tgst' push tags onto the tag stack
'term' name of the terminal
'termbidi' 'tbidi' terminal takes care of bi-directionality
'termencoding' 'tenc' character encoding used by the terminal
'terse' shorten some messages
'textauto' 'ta' obsolete, use 'fileformats'
'textmode' 'tx' obsolete, use 'fileformat'
'textwidth' 'tw' maximum width of text that is being inserted
'thesaurus' 'tsr' list of thesaurus files for keyword completion
'tildeop' 'top' tilde command "~" behaves like an operator
'timeout' 'to' time out on mappings and key codes
'timeoutlen' 'tm' time out time in milliseconds
'title' let Vim set the title of the window
'titlelen' percentage of 'columns' used for window title
'titleold' old title, restored when exiting
'titlestring' string to use for the Vim window title
'toolbar' 'tb' GUI: which items to show in the toolbar
'toolbariconsize' 'tbis' size of the toolbar icons (for GTK 2 only)
'ttimeout' time out on mappings
'ttimeoutlen' 'ttm' time out time for key codes in milliseconds
'ttybuiltin' 'tbi' use built-in termcap before external termcap
'ttyfast' 'tf' indicates a fast terminal connection
'ttymouse' 'ttym' type of mouse codes generated
'ttyscroll' 'tsl' maximum number of lines for a scroll
'ttytype' 'tty' alias for 'term'
'undolevels' 'ul' maximum number of changes that can be undone
'updatecount' 'uc' after this many characters flush swap file
'updatetime' 'ut' after this many milliseconds flush swap file
'verbose' 'vbs' give informative messages
'verbosefile' 'vfile' file to write messages in
'viewdir' 'vdir' directory where to store files with :mkview
'viewoptions' 'vop' specifies what to save for :mkview
'viminfo' 'vi' use .viminfo file upon startup and exiting
'virtualedit' 've' when to use virtual editing
'visualbell' 'vb' use visual bell instead of beeping
'warn' warn for shell command when buffer was changed
'weirdinvert' 'wi' for terminals that have weird inversion method
'whichwrap' 'ww' allow specified keys to cross line boundaries
'wildchar' 'wc' command-line character for wildcard expansion
'wildcharm' 'wcm' like 'wildchar' but also works when mapped
'wildignore' 'wig' files matching these patterns are not completed
'wildmenu' 'wmnu' use menu for command line completion
'wildmode' 'wim' mode for 'wildchar' command-line expansion
'wildoptions' 'wop' specifies how command line completion is done.
'winaltkeys' 'wak' when the windows system handles ALT keys
'winheight' 'wh' minimum number of lines for the current window
'winfixheight' 'wfh' keep window height when opening/closing windows
'winminheight' 'wmh' minimum number of lines for any window
'winminwidth' 'wmw' minimal number of columns for any window
'winwidth' 'wiw' minimal number of columns for current window
'wrap' long lines wrap and continue on the next line
'wrapmargin' 'wm' chars from the right where wrapping starts
'wrapscan' 'ws' searches wrap around the end of the file
'write' writing to a file is allowed
'writeany' 'wa' write to file with no need for "!" override
'writebackup' 'wb' make a backup before overwriting a file
'writedelay' 'wd' delay this many msec for each char (for debug)
------------------------------------------------------------------------------
*Q_ur* Undo/Redo commands

View File

@ -1,4 +1,4 @@
*remote.txt* For Vim version 7.0aa. Last change: 2005 Apr 01
*remote.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -53,8 +53,8 @@ The following command line arguments are available:
*--remote-send*
--remote-send {keys} Send {keys} to server and exit.
*--remote-expr*
--remote-expr {expr} Evaluate {expr} in server and
print the result on stdout.
--remote-expr {expr} Evaluate {expr} in server and print the result
on stdout.
*--serverlist*
--serverlist Output a list of server names.

View File

@ -1,4 +1,4 @@
*spell.txt* For Vim version 7.0aa. Last change: 2006 Mar 04
*spell.txt* For Vim version 7.0aa. Last change: 2006 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -841,6 +841,29 @@ flags. But Myspell doesn't support that, thus you may not want to use it
anyway. For compatibility use an 8-bit encoding.
INFORMATION
These entries in the affix file can be used to add information to the spell
file. There are no restrictions on the format, but they should be in the
right encoding.
*spell-NAME* *spell-VERSION* *spell-HOME*
*spell-AUTHOR* *spell-EMAIL* *spell-COPYRIGHT*
NAME Name of the language
VERSION 1.0.1 with fixes
HOME http://www.myhome.eu
AUTHOR John Doe
EMAIL john AT Doe DOT net
COPYRIGHT LGPL
These fields are put in the .spl file as-is. The |:spellinfo| command can be
used to view the info.
*:spellinfo* *:spelli*
:spelli[nfo] Display the information for the spell file(s) used for
the current buffer.
CHARACTER TABLES
*spell-affix-chars*
When using an 8-bit encoding the affix file should define what characters are
@ -1157,12 +1180,12 @@ words with this flag combine in any order. This means there is no control
over which word comes first. Example:
COMPOUNDFLAG c ~
*spell-COMPOUNDFLAGS*
*spell-COMPOUNDRULE*
A more advanced method to specify how compound words can be formed uses
multiple items with multiple flags. This is not compatible with Myspell 3.0.
Let's start with an example:
COMPOUNDFLAGS c+ ~
COMPOUNDFLAGS se ~
COMPOUNDRULE c+ ~
COMPOUNDRULE se ~
The first line defines that words with the "c" flag can be concatenated in any
order. The second line defines compound words that are made of one word with
@ -1180,7 +1203,7 @@ You can make these words:
soup
onionsoup
The COMPOUNDFLAGS item may appear multiple times. The argument is made out of
The COMPOUNDRULE item may appear multiple times. The argument is made out of
one or more groups, where each group can be:
one flag e.g., c
alternate flags inside [] e.g., [abc]
@ -1190,20 +1213,20 @@ Optionally this may be followed by:
This is similar to the regexp pattern syntax (but not the same!). A few
examples with the sequence of word flags they require:
COMPOUNDFLAGS x+ x xx xxx etc.
COMPOUNDFLAGS yz yz
COMPOUNDFLAGS x+z xz xxz xxxz etc.
COMPOUNDFLAGS yx+ yx yxx yxxx etc.
COMPOUNDRULE x+ x xx xxx etc.
COMPOUNDRULE yz yz
COMPOUNDRULE x+z xz xxz xxxz etc.
COMPOUNDRULE yx+ yx yxx yxxx etc.
COMPOUNDFLAGS [abc]z az bz cz
COMPOUNDFLAGS [abc]+z az aaz abaz bz baz bcbz cz caz cbaz etc.
COMPOUNDFLAGS a[xyz]+ ax axx axyz ay ayx ayzz az azy azxy etc.
COMPOUNDFLAGS sm*e se sme smme smmme etc.
COMPOUNDFLAGS s[xyz]*e se sxe sxye sxyxe sye syze sze szye szyxe etc.
COMPOUNDRULE [abc]z az bz cz
COMPOUNDRULE [abc]+z az aaz abaz bz baz bcbz cz caz cbaz etc.
COMPOUNDRULE a[xyz]+ ax axx axyz ay ayx ayzz az azy azxy etc.
COMPOUNDRULE sm*e se sme smme smmme etc.
COMPOUNDRULE s[xyz]*e se sxe sxye sxyxe sye syze sze szye szyxe etc.
A specific example: Allow a compound to be made of two words and a dash:
In the .aff file:
COMPOUNDFLAGS sde ~
COMPOUNDRULE sde ~
NEEDAFFIX x ~
COMPOUNDMAX 3 ~
COMPOUNDMIN 1 ~
@ -1237,7 +1260,7 @@ specified with COMPOUNDMAX. Example:
When omitted there is no maximum. It applies to all compound words.
To set a limit for words with specific flags make sure the items in
COMPOUNDFLAGS where they appear don't allow too many words.
COMPOUNDRULE where they appear don't allow too many words.
*spell-COMPOUNDSYLMAX*
The maximum number of syllables that a compound word may contain is specified
@ -1458,14 +1481,20 @@ CIRCUMFIX (Hunspell) *spell-CIRCUMFIX*
COMPLEXPREFIXES (Hunspell) *spell-COMPLEXPREFIXES*
Enables using two prefixes. Not supported.
COMPOUND (Hunspell) *spell-COMPOUND*
This is one line with the count of COMPOUND items, followd by
that many COMPOUND lines with a pattern.
Remove the first line with the count and rename the other
items to COMPOUNDRULE |spell-COMPOUNDRULE|
COMPOUNDBEGIN (Hunspell) *spell-COMPOUNDBEGIN*
Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
COMPOUNDEND (Hunspell) *spell-COMPOUNDEND*
Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
COMPOUNDMIDDLE (Hunspell) *spell-COMPOUNDMIDDLE*
Use COMPOUNDFLAGS instead. |spell-COMPOUNDFLAGS|
Use COMPOUNDRULE instead. |spell-COMPOUNDRULE|
COMPOUNDROOT (Hunspell) *spell-COMPOUNDROOT*
Flag for words in the dictionary that are already a compound.
@ -1481,9 +1510,6 @@ COMPOUNDWORDMAX (Hunspell) *spell-COMPOUNDWORDMAX*
FORBIDDENWORD (Hunspell) *spell-FORBIDDENWORD*
Use BAD instead. |spell-BAD|
HOME (Hunspell) *spell-HOME*
Specifies the website for the language. Not supported.
LANG (Hunspell) *spell-LANG*
This specifies language-specific behavior. This actually
moves part of the language knowledge into the program,
@ -1496,9 +1522,6 @@ LEMMA_PRESENT (Hunspell) *spell-LEMMA_PRESENT*
MAXNGRAMSUGS (Hunspell) *spell-MAXNGRAMSUGS*
Not supported.
NAME (Hunspell) *spell-NAME*
Specifies the name of the language. Not supported.
ONLYINCOMPOUND (Hunspell) *spell-ONLYINCOMPOUND*
Use NEEDCOMPOUND instead. |spell-NEEDCOMPOUND|
@ -1515,9 +1538,6 @@ TRY (Myspell, Hunspell, others) *spell-TRY*
Vim does not use the TRY item, it is ignored. For making
suggestions the actual characters in the words are used.
VERSION (Hunspell) *spell-VERSION*
Specifies the version for the language. Not supported.
WORDCHARS (Hunspell) *spell-WORDCHARS*
Used to recognize words. Vim doesn't need it, because there
is no need to separate words before checking them (using a

View File

@ -1,4 +1,4 @@
*starting.txt* For Vim version 7.0aa. Last change: 2006 Mar 01
*starting.txt* For Vim version 7.0aa. Last change: 2006 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1129,6 +1129,7 @@ you want to make this file your default .vimrc, move it to your home directory
(on Unix), s: (Amiga) or $VIM directory (MS-DOS). You could also use
autocommands |autocommand| and/or modelines |modeline|.
*vimrc-option-example*
If you only want to add a single option setting to your vimrc, you can use
these steps:
1. Edit your vimrc file with Vim.
@ -1138,6 +1139,7 @@ these steps:
'=' to enter the value. E.g., for the 'guifont' option: >
o:set guifont=<C-R>=&guifont<CR><Esc>
< [<C-R> is a CTRL-R, <CR> is a return, <Esc> is the escape key]
You need to escape special characters, esp. spaces.
Note that when you create a .vimrc file, this can influence the 'compatible'
option, which has several side effects. See |'compatible'|.

View File

@ -356,11 +356,13 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
'mat' options.txt /*'mat'*
'matchpairs' options.txt /*'matchpairs'*
'matchtime' options.txt /*'matchtime'*
'maxcombine' options.txt /*'maxcombine'*
'maxfuncdepth' options.txt /*'maxfuncdepth'*
'maxmapdepth' options.txt /*'maxmapdepth'*
'maxmem' options.txt /*'maxmem'*
'maxmempattern' options.txt /*'maxmempattern'*
'maxmemtot' options.txt /*'maxmemtot'*
'mco' options.txt /*'mco'*
'mef' options.txt /*'mef'*
'menuitems' options.txt /*'menuitems'*
'mesg' vi_diff.txt /*'mesg'*
@ -2547,8 +2549,12 @@ $VIMRUNTIME starting.txt /*$VIMRUNTIME*
:spelld spell.txt /*:spelld*
:spelldump spell.txt /*:spelldump*
:spellgood spell.txt /*:spellgood*
:spelli spell.txt /*:spelli*
:spellinfo spell.txt /*:spellinfo*
:spellr spell.txt /*:spellr*
:spellrepall spell.txt /*:spellrepall*
:spellu spell.txt /*:spellu*
:spellundo spell.txt /*:spellundo*
:spellw spell.txt /*:spellw*
:spellwrong spell.txt /*:spellwrong*
:split windows.txt /*:split*
@ -5188,6 +5194,7 @@ ft-ocaml-syntax syntax.txt /*ft-ocaml-syntax*
ft-papp-syntax syntax.txt /*ft-papp-syntax*
ft-pascal-syntax syntax.txt /*ft-pascal-syntax*
ft-perl-syntax syntax.txt /*ft-perl-syntax*
ft-php-omni insert.txt /*ft-php-omni*
ft-php-syntax syntax.txt /*ft-php-syntax*
ft-php3-syntax syntax.txt /*ft-php3-syntax*
ft-phtml-syntax syntax.txt /*ft-phtml-syntax*
@ -5932,6 +5939,8 @@ matchstr() eval.txt /*matchstr()*
max() eval.txt /*max()*
mbyte-IME mbyte.txt /*mbyte-IME*
mbyte-XIM mbyte.txt /*mbyte-XIM*
mbyte-combining mbyte.txt /*mbyte-combining*
mbyte-composing mbyte.txt /*mbyte-composing*
mbyte-conversion mbyte.txt /*mbyte-conversion*
mbyte-encoding mbyte.txt /*mbyte-encoding*
mbyte-first mbyte.txt /*mbyte-first*
@ -6189,6 +6198,7 @@ new-line-continuation version5.txt /*new-line-continuation*
new-location-list version7.txt /*new-location-list*
new-manpage-trans version7.txt /*new-manpage-trans*
new-matchparen version7.txt /*new-matchparen*
new-more-unicode version7.txt /*new-more-unicode*
new-multi-byte version5.txt /*new-multi-byte*
new-multi-lang version6.txt /*new-multi-lang*
new-netrw-explore version7.txt /*new-netrw-explore*
@ -6291,6 +6301,7 @@ pattern-multi-items pattern.txt /*pattern-multi-items*
pattern-overview pattern.txt /*pattern-overview*
pattern-searches pattern.txt /*pattern-searches*
pattern.txt pattern.txt /*pattern.txt*
patterns-composing pattern.txt /*patterns-composing*
pdev-option print.txt /*pdev-option*
penc-option print.txt /*penc-option*
perl if_perl.txt /*perl*
@ -6583,6 +6594,7 @@ scrolling scroll.txt /*scrolling*
scrollstart-variable eval.txt /*scrollstart-variable*
sdl.vim syntax.txt /*sdl.vim*
search() eval.txt /*search()*
search()-sub-match eval.txt /*search()-sub-match*
search-commands pattern.txt /*search-commands*
search-offset pattern.txt /*search-offset*
search-pattern pattern.txt /*search-pattern*
@ -6656,6 +6668,7 @@ special-buffers windows.txt /*special-buffers*
speed-up tips.txt /*speed-up*
spell spell.txt /*spell*
spell-ACCENT spell.txt /*spell-ACCENT*
spell-AUTHOR spell.txt /*spell-AUTHOR*
spell-BAD spell.txt /*spell-BAD*
spell-CHECKCOMPOUNDCASE spell.txt /*spell-CHECKCOMPOUNDCASE*
spell-CHECKCOMPOUNDDUP spell.txt /*spell-CHECKCOMPOUNDDUP*
@ -6665,19 +6678,22 @@ spell-CHECKCOMPOUNDTRIPLE spell.txt /*spell-CHECKCOMPOUNDTRIPLE*
spell-CIRCUMFIX spell.txt /*spell-CIRCUMFIX*
spell-COMMON spell.txt /*spell-COMMON*
spell-COMPLEXPREFIXES spell.txt /*spell-COMPLEXPREFIXES*
spell-COMPOUND spell.txt /*spell-COMPOUND*
spell-COMPOUNDBEGIN spell.txt /*spell-COMPOUNDBEGIN*
spell-COMPOUNDEND spell.txt /*spell-COMPOUNDEND*
spell-COMPOUNDFLAG spell.txt /*spell-COMPOUNDFLAG*
spell-COMPOUNDFLAGS spell.txt /*spell-COMPOUNDFLAGS*
spell-COMPOUNDFORBIDFLAG spell.txt /*spell-COMPOUNDFORBIDFLAG*
spell-COMPOUNDMAX spell.txt /*spell-COMPOUNDMAX*
spell-COMPOUNDMIDDLE spell.txt /*spell-COMPOUNDMIDDLE*
spell-COMPOUNDMIN spell.txt /*spell-COMPOUNDMIN*
spell-COMPOUNDPERMITFLAG spell.txt /*spell-COMPOUNDPERMITFLAG*
spell-COMPOUNDROOT spell.txt /*spell-COMPOUNDROOT*
spell-COMPOUNDRULE spell.txt /*spell-COMPOUNDRULE*
spell-COMPOUNDSYLLABLE spell.txt /*spell-COMPOUNDSYLLABLE*
spell-COMPOUNDSYLMAX spell.txt /*spell-COMPOUNDSYLMAX*
spell-COMPOUNDWORDMAX spell.txt /*spell-COMPOUNDWORDMAX*
spell-COPYRIGHT spell.txt /*spell-COPYRIGHT*
spell-EMAIL spell.txt /*spell-EMAIL*
spell-FLAG spell.txt /*spell-FLAG*
spell-FOL spell.txt /*spell-FOL*
spell-FORBIDDENWORD spell.txt /*spell-FORBIDDENWORD*
@ -6741,6 +6757,7 @@ spell-wordlist-format spell.txt /*spell-wordlist-format*
spell-yiddish spell.txt /*spell-yiddish*
spell.txt spell.txt /*spell.txt*
spellbadword() eval.txt /*spellbadword()*
spellfile-cleanup spell.txt /*spellfile-cleanup*
spellfile.vim spell.txt /*spellfile.vim*
spellsuggest() eval.txt /*spellsuggest()*
split() eval.txt /*split()*
@ -7415,6 +7432,7 @@ viminfo-write starting.txt /*viminfo-write*
vimrc starting.txt /*vimrc*
vimrc-filetype usr_05.txt /*vimrc-filetype*
vimrc-intro usr_05.txt /*vimrc-intro*
vimrc-option-example starting.txt /*vimrc-option-example*
vimrc_example.vim usr_05.txt /*vimrc_example.vim*
vimtutor usr_01.txt /*vimtutor*
virtcol() eval.txt /*virtcol()*
@ -7636,6 +7654,10 @@ zo fold.txt /*zo*
zr fold.txt /*zr*
zs scroll.txt /*zs*
zt scroll.txt /*zt*
zuG spell.txt /*zuG*
zuW spell.txt /*zuW*
zug spell.txt /*zug*
zuw spell.txt /*zuw*
zv fold.txt /*zv*
zw spell.txt /*zw*
zx fold.txt /*zx*

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 04
*todo.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -30,69 +30,10 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Add options to optwin.vim:
tabpagemax
tabline
showtabline
guitablabel
formatexpr
Add options to quickref.txt:
guitablabel
showtabline
tabline
tabpagemax
spelling:
- Rename COMPOUNDFLAGS to COMPOUNDPATTERN or COMPOUNDRULE?
Hunspell now uses COMPOUND with a count.
- Check out Hunspell 1.1.3.
Try to make the newly added features compatible.
what does MAXNGRAMSUGS do?
See announcement (Nemeth, 5 jan)
is COMPLEXPREFIXES necessary now that we have flags for affixes?
- Look into Hungarian dictionary:
http://magyarispell.sourceforge.net/hu_HU-1.0.tar.gz
- When compounding Hunspell doesn't allow affixes inside the compound word,
only before and after it. COMPOUNDPERMITFLAG can be used to allow it.
Check Myspell and Aspell if they also work this way.
Thus a word + suffix needs a flag that it can't be used with a following
compound, and word + prefix can't be after another word in a compound.
- Implement COMPOUNDFORBIDFLAG .
Mac unicode patch (Da Woon Jung):
- Mac: Unicode input and display (Eckehard Berns, 2004 June 27)
Other patch from Da Woon Jung, 2005 Jan 16.
8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
New patch 2004 Jun 16
- configuration option for platform: i386, ppc or both.
Use __LITTLE_ENDIAN__ to test for current platform.
- selecting proportional font breaks display
- UTF-8 text causes display problems. Font replacement causes this.
- Command-key mappings do not work. (Alan Schmitt)
- Add default key mappings for the command key (Alan Schmitt)
use http://macvim.org/OSX/files/gvimrc
- With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
(Alan Schmitt)
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 32 bit Unicode characters?
8 "ga" should show all composing characters, also if there are more than 2.
8 Searching for a composing character by itself should work. Perhaps "."
with a composing char should work too.
Win32: Use the free downloadable compiler 7.1 (2003). Figure out how to do
debugging (with Agide?) and describe it. (George Reilly)
Try out using the free MS compiler and debugger, using Make_mvc.mak.
Also generate the .pdb file that can be used to generate a useful crash report
on MS-Windows. (George Reilly)
Win32: Check that installer puts menu items in "all users" dir when possible,
not administrator dir.
When "= evaluation results in a List, use it as a sequence of lines.
As if join(list, "\n") was used.
When expanding on the command line, recognize shell commands, such as ":!cmd".
Move from ExpandFromContext() to separate function.
Check for file being executable. EW_EXEC
Escape special characters ";&<>(){}". Also in file names. (Adri Verhoef)
Autoload:
- Add a Vim script in $VIMRUNTIME/tools that takes a file with a list of
@ -105,12 +46,23 @@ Autoload:
helpfile doc/myscript.txt
For the "helpfile" item ":helptags" is run.
When expanding on the command line, recognize shell commands, such as ":!cmd".
Complete command names by searching in $PATH. When completing file names
escape special characters ";&<>(){}". (Adri Verhoef)
Win32: Describe how to do debugging and describe it. (George Reilly)
Are there more commands where v:swapcommand can be set to something useful?
Mac unicode patch (Da Woon Jung):
- Mac: Unicode input and display (Eckehard Berns, 2004 June 27)
Other patch from Da Woon Jung, 2005 Jan 16.
8 Add patch from Muraoka Taro (Mar 16) to support input method on Mac?
New patch 2004 Jun 16
- selecting proportional font breaks display
- UTF-8 text causes display problems. Font replacement causes this.
- Command-key mappings do not work. (Alan Schmitt)
- Add default key mappings for the command key (Alan Schmitt)
use http://macvim.org/OSX/files/gvimrc
- With 'nopaste' pasting is wrong, with 'paste' Command-V doesn't work.
(Alan Schmitt)
CONSIDERED FOR VERSION 7.0:
@ -1301,6 +1253,21 @@ Tab pages:
Spell checking:
- Implement COMPOUNDFORBIDFLAG .
- Check out Hunspell 1.1.4.
The manpage doesn't match the source code...
Try to make the newly added features compatible.
what does MAXNGRAMSUGS do?
is COMPLEXPREFIXES necessary when we have flags for affixes?
- Look into Hungarian dictionary: hu_HU-1.0.tar.gz
This one doesn't match with Hunspell 1.1.4.
- Add CHECKCOMPOUNDCASE: when compounding make leading capital lower case.
How is it supposed to work?
- When compounding Hunspell doesn't allow affixes inside the compound word,
only before and after it. COMPOUNDPERMITFLAG can be used to allow it.
Check Myspell and Aspell if they also work this way.
Thus a word + suffix needs a flag that it can't be used with a following
compound, and word + prefix can't be after another word in a compound.
- suggestion for "KG" to "kg" when it's keepcase.
- Support flags on a suffix. Used for second level affixes, rare and
nocomp. The flags may also be used for compounding. Default is an OR

View File

@ -1,4 +1,4 @@
*various.txt* For Vim version 7.0aa. Last change: 2006 Feb 20
*various.txt* For Vim version 7.0aa. Last change: 2006 Mar 05
VIM REFERENCE MANUAL by Bram Moolenaar
@ -55,14 +55,16 @@ ga Print the ascii value of the character under the
The <Nul> character in a file is stored internally as
<NL>, but it will be shown as:
<^@> 0, Hex 00, Octal 000 ~
If the character has composing characters these are
also shown. The value of 'maxcombine' doesn't matter.
Mnemonic: Get Ascii value. {not in Vi}
*g8*
g8 Print the hex values of the bytes used in the
character under the cursor, assuming it is in |UTF-8|
encoding. This also shows composing characters.
Example of a character with three composing
characters:
encoding. This also shows composing characters. The
value of 'maxcombine' doesn't matter.
Example of a character with two composing characters:
e0 b8 81 + e0 b8 b9 + e0 b9 89 ~
{not in Vi}

View File

@ -1,4 +1,4 @@
*version7.txt* For Vim version 7.0aa. Last change: 2006 Mar 04
*version7.txt* For Vim version 7.0aa. Last change: 2006 Mar 06
VIM REFERENCE MANUAL by Bram Moolenaar
@ -23,6 +23,7 @@ Spell checking |new-spell|
Omni completion |new-omni-completion|
MzScheme interface |new-MzScheme|
Printing multi-byte text |new-print-multi-byte|
Extended Unicode support |new-more-unicode|
Highlighting matching parens |new-matchparen|
Translated manual pages |new-manpage-trans|
Internal grep |new-vimgrep|
@ -234,6 +235,23 @@ The 'printmbcharset' and 'printmbfont' options are used for this.
Also see |postscript-cjk-printing|. (Mike Williams)
Extended Unicode support *new-more-unicode*
------------------------
Previously only two combining characters were displayed. The limit is now
raised to 6. This can be set with the 'maxcombine' option. The default is
still 2.
|ga| now shows all combining characters, not just the first two.
Previously only 16 bit Unicode characters were supported for displaying. Now
the full 32 bit character set can be used. Unless manually disabled at
compile time.
For pattern matching it is now possible to search for individual composing
characters. |patterns-composing|
Highlighting matching parens *new-matchparen*
----------------------------
@ -1090,13 +1108,6 @@ Dropped the support for the BeOS and Amiga GUI. They were not maintained and
probably didn't work. If you want to work on this: get the Vim 6.x version
and merge it back in.
Mac: "make" now creates the Vim.app directory and "make install" copies it to
its final destination. (Raf)
Mac: Made it possible to compile with Motif, Athena or GTK without tricks and
still being able to use the MacRoman conversion. Added the os_mac_conv.c
file.
When running the tests and one of them fails to produce "test.out" the
following tests are still executed. This helps when running out of memory.
@ -1114,13 +1125,34 @@ functions.
Moved unix_expandpath() to misc1.c, so that it can also be used by os_mac.c
without copying the code.
Mac: When running "make install" the runtime files are installed as for Unix.
--- Mac ---
"make" now creates the Vim.app directory and "make install" copies it to its
final destination. (Raf)
Made it possible to compile with Motif, Athena or GTK without tricks and still
being able to use the MacRoman conversion. Added the os_mac_conv.c file.
When running "make install" the runtime files are installed as for Unix.
Avoids that too many files are copied. When running "make" a link to the
runtime files is created to avoid a recursive copy that takes much time.
Mac: Configure will attempt to build Vim for both Intel and PowerPC. The
Configure will attempt to build Vim for both Intel and PowerPC. The
--with-mac-arch configure argument can change it.
--- Win32 ---
The Make_mvc.mak file was adjusted to work with the latest MS compilers,
including the free version of Visual Studio 2005. (George Reilly)
INSTALLpc.txt was updated for the recent changes. (George Reilly)
The distributed executable is now produced with the free Visual C++ Toolkit
2003 and other free SDK chunks. msvcsetup.bat was added to support this.
Also generate the .pdb file that can be used to generate a useful crash report
on MS-Windows. (George Reilly)
==============================================================================
BUG FIXES *bug-fixes-7*
@ -1818,4 +1850,16 @@ When using Select mode from Insert mode and typing a key, causing lines to be
deleted and a message displayed, delayed the effect of inserting the key.
Now overwrite the message without delay.
When 'whichwrap' includes "l" then "dl" and "yl" on a single letter line
worked differently. Now recognize all operators when using "l" at the end of
a line.
GTK GUI: when the font selector returned a font name with a comma in it then
it would be handled like two font names. Now put a backslash before the
comma.
MS-DOS, Win32: When 'encoding' defaults to "latin1" then the value for
'iskeyword' was still for CPxxx. And when 'nocompatible' was set 'isprint'
would also be the wrong value.
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: 2006 Mar 01
" Last Change: 2006 Mar 05
" Listen very carefully, I will say this only once
if exists("did_load_filetypes")
@ -1298,7 +1298,7 @@ au BufNewFile,BufRead *.rexx,*.rex setf rexx
au BufNewFile,BufRead *.s,*.S setf r
" R Help file
au BufNewFile,BufRead *.rd,*.Rd setf rd
au BufNewFile,BufRead *.rd,*.Rd setf rhelp
" Rexx, Rebol or R
au BufNewFile,BufRead *.r,*.R call s:FTr()

View File

@ -51,6 +51,11 @@ if exists("loaded_matchit")
endif
" ###
if exists('&ofu')
setlocal ofu=phpcomplete#CompletePHP
endif
setlocal commentstring=/*%s*/
" Undo the stuff we changed.

View File

@ -2,7 +2,7 @@
" Maintainer: Georg Dahn <gorgyd@yahoo.co.uk>
" Originally By: Marcin Dalecki <dalecki@cs.net.pl>
" Johannes Zellner <johannes@zellner.org>
" Last Change: Sun, 17 Apr 2005 18:28:58 CEST
" Last Change: Sun, 5 Mar 2006 07:20:00 CEST
" vim:set foldmethod=marker tabstop=8:
" Quit when menu translations have already been done.
@ -21,6 +21,7 @@ endif
menutrans &File &Datei
menutrans &Open\.\.\.<Tab>:e &Öffnen\.\.\.<Tab>:e
menutrans Sp&lit-Open\.\.\.<Tab>:sp In\ geteiltem\ &Fenster\ Öffnen\.\.\.<Tab>:sp
menutrans Open\ Tab\.\.\.<Tab>:tabnew In\ neuem\ &Tab\ Öffnen\.\.\.<Tab>:tabnew
menutrans &New<Tab>:enew &Neue\ Datei<Tab>:enew
menutrans &Close<Tab>:close S&chließen<Tab>:close
menutrans &Save<Tab>:w &Speichern<Tab>:w
@ -100,6 +101,22 @@ menutrans &Keymap &Tastatur-Belegung
" }}} EDIT / EDITIEREN
" {{{ TOOLS / WERKZEUGE
if has("syntax")
menutrans &Spelling &Rechtschreibung
menutrans &Spell\ Check\ On &Rechtschreibung\ an
menutrans Spell\ Check\ &Off Rechtschreibung\ &aus
menutrans To\ &Next\ error<Tab>]s Zum\ &nächsten\ Fehler<Tab>]s
menutrans To\ &Previous\ error<Tab>[s Zum\ &letzten\ Fehler<Tab>[s
menutrans Suggest\ &Corrections<Tab>z? &Korrekturvorschläge<Tab>z?
menutrans &Repeat\ correction<Tab>:spellrepall &Wiederhole\ Korrektur<Tab>:spellrepall
menutrans Set\ language\ to\ "en" Verwende\ Wörterbuch\ "en"
menutrans Set\ language\ to\ "en_au" Verwende\ Wörterbuch\ "en_au"
menutrans Set\ language\ to\ "en_ca" Verwende\ Wörterbuch\ "en_ca"
menutrans Set\ language\ to\ "en_gb" Verwende\ Wörterbuch\ "en_gb"
menutrans Set\ language\ to\ "en_nz" Verwende\ Wörterbuch\ "en_nz"
menutrans Set\ language\ to\ "en_us" Verwende\ Wörterbuch\ "en_us"
menutrans &Find\ More\ Languages &Suche\ nach\ Wörterbüchern
endif
if has("folding")
menutrans &Folding Fa&ltung
" open close folds
@ -147,7 +164,7 @@ menutrans &Older\ List<Tab>:cold &
menutrans N&ewer\ List<Tab>:cnew &Neuere\ Liste<Tab>:cnew
menutrans Error\ &Window Feh&ler-Fenster
menutrans &Set\ Compiler &Compiler
menutrans Se&T\ Compiler &Compiler
menutrans &Update<Tab>:cwin &Aktualisieren<Tab>:cwin
menutrans &Open<Tab>:copen &Öffnen<Tab>:copen
menutrans &Close<Tab>:cclose &Schließen<Tab>:cclose
@ -184,7 +201,7 @@ menutrans [No\ File] [Keine\ Datei]
menutrans &Window &Ansicht
menutrans &New<Tab>^Wn &Neu<Tab>^Wn
menutrans S&plit<Tab>^Ws Aufs&palten<Tab>^Ws
menutrans Split\ &Vertically<Tab>^Wv &Vertikal\ Aufspalten<Tab>^Ws
menutrans Split\ &Vertically<Tab>^Wv &Vertikal\ Aufspalten<Tab>^Wv
menutrans Split\ File\ E&xplorer Ver&zeichnis
menutrans Sp&lit\ To\ #<Tab>^W^^ Aufspa&lten\ in\ #<Tab>^W^^
menutrans &Close<Tab>^Wc &Schließen<Tab>^Wc
@ -228,6 +245,8 @@ menutrans &Paste &Einf
menutrans &Delete &Löschen
menutrans Select\ Blockwise Auswahl\ Blockartig
menutrans Select\ &Word Auswahl\ des\ &Wortes
menutrans Select\ &Sentence Auswahl\ des\ Sa&tzes
menutrans Select\ Pa&ragraph Auswahl\ des\ Absatzes
menutrans Select\ &Line Auswahl\ der\ &Zeile
menutrans Select\ &Block Auswahl\ des\ &Blocks
menutrans Select\ &All &Alles\ Auswählen

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: 2006 Feb 25
" Last Change: 2006 Mar 05
" 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.
@ -419,7 +419,7 @@ if has("spell")
an 40.335.120 &Tools.&Spelling.Spell\ Check\ &Off :set nospell<CR>
an 40.335.130 &Tools.&Spelling.To\ &Next\ error<Tab>]s ]s
an 40.335.130 &Tools.&Spelling.To\ &Previous\ error<Tab>[s [s
an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z? z?
an 40.335.140 &Tools.&Spelling.Suggest\ &Corrections<Tab>z= z=
an 40.335.150 &Tools.&Spelling.&Repeat\ correction<Tab>:spellrepall :spellrepall<CR>
an 40.335.200 &Tools.&Spelling.-SEP1- <Nop>
an 40.335.210 &Tools.&Spelling.Set\ language\ to\ "en" :set spl=en spell<CR>

View File

@ -1,7 +1,7 @@
" These commands create the option window.
"
" Maintainer: Bram Moolenaar <Bram@vim.org>
" Last Change: 2006 Jan 13
" Last Change: 2006 Mar 05
" If there already is an option window, jump to that one.
if bufwinnr("option-window") > 0
@ -463,6 +463,17 @@ if has("scrollbind")
endif
call <SID>Header("multiple tab pages")
call append("$", "showtabline\t0, 1 or 2; when to use a tab pages line")
call append("$", " \tset stal=" . &stal)
call append("$", "tabpagemax\tmaximum number of tab pages to open for -p and \"tab all\"")
call append("$", " \tset tpm=" . &tpm)
call append("$", "tabline\tcustom tab pages line")
call <SID>OptionG("tal", &tal)
call append("$", "guitablabel\tcustom tab page label for the GUI")
call <SID>OptionG("gtl", &gtl)
call <SID>Header("terminal")
call append("$", "term\tname of the used terminal")
call <SID>OptionG("term", &term)
@ -697,6 +708,11 @@ call <SID>OptionL("fo")
call append("$", "formatlistpat\tpattern to recognize a numbered list")
call append("$", "\t(local to buffer)")
call <SID>OptionL("flp")
if has("eval")
call append("$", "formatexpr\texpression used for \"gq\" to format lines")
call append("$", "\t(local to buffer)")
call <SID>OptionL("fex")
endif
if has("insert_expand")
call append("$", "complete\tspecifies how Insert mode completion works for CTRL-N and CTRL-P")
call append("$", "\t(local to buffer)")

View File

@ -2,7 +2,7 @@
"
" Language: Logtalk
" Maintainer: Paulo Moura <pmoura@logtalk.org>
" Last Change: June 6, 2005
" Last Change: February 24, 2006
" Quit when a syntax file was already loaded:
@ -89,6 +89,14 @@ syn region logtalkDir matchgroup=logtalkDirTag start=":- calls(" matchgroup=lo
syn region logtalkDir matchgroup=logtalkDirTag start=":- uses(" matchgroup=logtalkDirTag end=")\." contains=ALL
" Module directives
syn region logtalkDir matchgroup=logtalkDirTag start=":- module(" matchgroup=logtalkDirTag end=")\." contains=ALL
syn region logtalkDir matchgroup=logtalkDirTag start=":- export(" matchgroup=logtalkDirTag end=")\." contains=ALL
syn region logtalkDir matchgroup=logtalkDirTag start=":- meta_predicate(" matchgroup=logtalkDirTag end=")\." contains=ALL
syn region logtalkDir matchgroup=logtalkDirTag start=":- use_module(" matchgroup=logtalkDirTag end=")\." contains=ALL
" Logtalk built-in predicates
syn match logtalkBuiltIn "\<\(abolish\|c\(reate\|urrent\)\)_\(object\|protocol\|category\)\ze("
@ -129,6 +137,7 @@ syn match logtalkBuiltInMethod "\<before\ze("
syn match logtalkBuiltInMethod "\<after\ze("
syn match logtalkBuiltInMethod "\<expand_term\ze("
syn match logtalkBuiltInMethod "\<term_expansion\ze("
syn match logtalkBuiltInMethod "\<phrase\ze("

View File

@ -1,162 +0,0 @@
" Vim syntax file
" Language: R Help File
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
" Last Change: 2006 Mär 01
" Version: 0.5
" Remarks: - Now includes R syntax highlighting in the appropriate
" sections if an r.vim file is in the same directory or in the
" default debian location.
" - I didn't yet include any special markup for S4 methods.
" - The two versions of \item{}{} markup are not
" distinguished (in the \arguments{} environment, the items to
" be described are R identifiers, but not in the \describe{}
" environment).
" - There is no Latex markup in equations
" Version Clears: {{{1
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case match
" Rd identifiers {{{
syn region rdIdentifier matchgroup=rdSection start="\\name{" end="}"
syn region rdIdentifier matchgroup=rdSection start="\\alias{" end="}"
syn region rdIdentifier matchgroup=rdSection start="\\pkg{" end="}"
syn region rdIdentifier matchgroup=rdSection start="\\item{" end="}" contained
syn region rdIdentifier matchgroup=rdSection start="\\method{" end=/}/ contained
" Highlighting of R code using an existing r.vim syntax file if available {{{1
let s:syntaxdir = expand("<sfile>:p:h") "look in the directory of this file
let s:rsyntax = s:syntaxdir . "/r.vim"
if filereadable(s:rsyntax)
syn include @R <sfile>:p:h/r.vim
elseif filereadable('/usr/share/vim/vim64/syntax/r.vim') "and debian location
syn include @R /usr/share/vim/vimcurrent/syntax/r.vim
else
syn match rdRComment /\#.*/ "if no r.vim is found, do comments
syn cluster R contains=rdRComment
endif
syn region rdRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rdSection
syn region rdRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rdIdentifier
syn region rdRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
syn region rdRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
syn region rdRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
" Strings {{{1
syn region rdString start=/"/ end=/"/
" Special TeX characters ( \$ \& \% \# \{ \} \_) {{{1
syn match rdSpecialChar "\\[$&%#{}_]"
" Special Delimiters {{{1
syn match rdDelimiter "\\cr"
syn match rdDelimiter "\\tab "
" Keywords {{{1
syn match rdKeyword "\\R"
syn match rdKeyword "\\dots"
syn match rdKeyword "\\ldots"
" Links {{{1
syn region rdLink matchgroup=rdSection start="\\link{" end="}" contained keepend
syn region rdLink matchgroup=rdSection start="\\link\[.*\]{" end="}" contained keepend
" Type Styles {{{1
syn match rdType "\\emph\>"
syn match rdType "\\strong\>"
syn match rdType "\\bold\>"
syn match rdType "\\sQuote\>"
syn match rdType "\\dQuote\>"
syn match rdType "\\code\>"
syn match rdType "\\preformatted\>"
syn match rdType "\\kbd\>"
syn match rdType "\\samp\>"
syn match rdType "\\eqn\>"
syn match rdType "\\deqn\>"
syn match rdType "\\file\>"
syn match rdType "\\email\>"
syn match rdType "\\url\>"
syn match rdType "\\var\>"
syn match rdType "\\env\>"
syn match rdType "\\option\>"
syn match rdType "\\command\>"
syn match rdType "\\dfn\>"
syn match rdType "\\cite\>"
syn match rdType "\\acronym\>"
" Rd sections {{{1
syn match rdSection "\\encoding\>"
syn match rdSection "\\title\>"
syn match rdSection "\\description\>"
syn match rdSection "\\concept\>"
syn match rdSection "\\arguments\>"
syn match rdSection "\\details\>"
syn match rdSection "\\value\>"
syn match rdSection "\\references\>"
syn match rdSection "\\note\>"
syn match rdSection "\\author\>"
syn match rdSection "\\seealso\>"
syn match rdSection "\\keyword\>"
syn match rdSection "\\docType\>"
syn match rdSection "\\format\>"
syn match rdSection "\\source\>"
syn match rdSection "\\itemize\>"
syn match rdSection "\\describe\>"
syn match rdSection "\\enumerate\>"
syn match rdSection "\\item "
syn match rdSection "\\item$"
syn match rdSection "\\tabular{[lcr]*}"
syn match rdSection "\\dontrun\>"
syn match rdSection "\\dontshow\>"
syn match rdSection "\\testonly\>"
" Freely named Sections {{{1
syn region rdFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/
" Rd comments {{{1
syn match rdComment /%.*$/ contained
" Error {{{1
syn region rdRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rdError,rdBraceError,rdCurlyError
syn region rdRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rdError,rdBraceError,rdParenError
syn region rdRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rdError,rdCurlyError,rdParenError
syn match rdError /[)\]}]/
syn match rdBraceError /[)}]/ contained
syn match rdCurlyError /[)\]]/ contained
syn match rdParenError /[\]}]/ contained
" Define the default highlighting {{{1
" 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
if version >= 508 || !exists("did_rd_syntax_inits")
if version < 508
let did_rd_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink rdIdentifier Identifier
HiLink rdString String
HiLink rdKeyword Keyword
HiLink rdLink Underlined
HiLink rdType Type
HiLink rdSection PreCondit
HiLink rdError Error
HiLink rdBraceError Error
HiLink rdCurlyError Error
HiLink rdParenError Error
HiLink rdDelimiter Delimiter
HiLink rdComment Comment
HiLink rdRComment Comment
HiLink rdSpecialChar SpecialChar
delcommand HiLink
endif
let b:current_syntax = "rd"
" vim: foldmethod=marker:

161
runtime/syntax/rhelp.vim Normal file
View File

@ -0,0 +1,161 @@
" Vim syntax file
" Language: R Help File
" Maintainer: Johannes Ranke <jranke@uni-bremen.de>
" Last Change: 2006 Mär 06
" Version: 0.5
" Remarks: - Now includes R syntax highlighting in the appropriate
" sections if an r.vim file is in the same directory or in the
" default debian location.
" - I didn't yet include any special markup for S4 methods.
" - The two versions of \item{}{} markup are not
" distinguished (in the \arguments{} environment, the items to
" be described are R identifiers, but not in the \describe{}
" environment).
" - There is no Latex markup in equations
" Version Clears: {{{1
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
if version < 600
syntax clear
elseif exists("b:current_syntax")
finish
endif
syn case match
" Rd identifiers {{{
syn region rhelpIdentifier matchgroup=rhelpSection start="\\name{" end="}"
syn region rhelpIdentifier matchgroup=rhelpSection start="\\alias{" end="}"
syn region rhelpIdentifier matchgroup=rhelpSection start="\\pkg{" end="}"
syn region rhelpIdentifier matchgroup=rhelpSection start="\\item{" end="}" contained
syn region rhelpIdentifier matchgroup=rhelpSection start="\\method{" end=/}/ contained
" Highlighting of R code using an existing r.vim syntax file if available {{{1
let s:syntaxdir = expand("<sfile>:p:h") "look in the directory of this file
let s:rsyntax = s:syntaxdir . "/r.vim"
if filereadable(s:rsyntax)
syn include @R <sfile>:p:h/r.vim
elseif filereadable('/usr/share/vim/vim64/syntax/r.vim') "and debian location
syn include @R /usr/share/vim/vimcurrent/syntax/r.vim
else
syn match rhelpRComment /\#.*/ "if no r.vim is found, do comments
syn cluster R contains=rhelpRComment
endif
syn region rhelpRcode matchgroup=Delimiter start="\\examples{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpSection
syn region rhelpRcode matchgroup=Delimiter start="\\usage{" matchgroup=Delimiter transparent end=/}/ contains=@R,rhelpIdentifier
syn region rhelpRcode matchgroup=Delimiter start="\\synopsis{" matchgroup=Delimiter transparent end=/}/ contains=@R
syn region rhelpRcode matchgroup=Delimiter start="\\special{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
syn region rhelpRcode matchgroup=Delimiter start="\\code{" matchgroup=Delimiter transparent end=/}/ contains=@R contained
" Strings {{{1
syn region rhelpString start=/"/ end=/"/
" Special TeX characters ( \$ \& \% \# \{ \} \_) {{{1
syn match rhelpSpecialChar "\\[$&%#{}_]"
" Special Delimiters {{{1
syn match rhelpDelimiter "\\cr"
syn match rhelpDelimiter "\\tab "
" Keywords {{{1
syn match rhelpKeyword "\\R"
syn match rhelpKeyword "\\dots"
syn match rhelpKeyword "\\ldots"
" Links {{{1
syn region rhelpLink matchgroup=rhelpSection start="\\link{" end="}" contained keepend
syn region rhelpLink matchgroup=rhelpSection start="\\link\[.*\]{" end="}" contained keepend
" Type Styles {{{1
syn match rhelpType "\\emph\>"
syn match rhelpType "\\strong\>"
syn match rhelpType "\\bold\>"
syn match rhelpType "\\sQuote\>"
syn match rhelpType "\\dQuote\>"
syn match rhelpType "\\preformatted\>"
syn match rhelpType "\\kbd\>"
syn match rhelpType "\\samp\>"
syn match rhelpType "\\eqn\>"
syn match rhelpType "\\deqn\>"
syn match rhelpType "\\file\>"
syn match rhelpType "\\email\>"
syn match rhelpType "\\url\>"
syn match rhelpType "\\var\>"
syn match rhelpType "\\env\>"
syn match rhelpType "\\option\>"
syn match rhelpType "\\command\>"
syn match rhelpType "\\dfn\>"
syn match rhelpType "\\cite\>"
syn match rhelpType "\\acronym\>"
" rhelp sections {{{1
syn match rhelpSection "\\encoding\>"
syn match rhelpSection "\\title\>"
syn match rhelpSection "\\description\>"
syn match rhelpSection "\\concept\>"
syn match rhelpSection "\\arguments\>"
syn match rhelpSection "\\details\>"
syn match rhelpSection "\\value\>"
syn match rhelpSection "\\references\>"
syn match rhelpSection "\\note\>"
syn match rhelpSection "\\author\>"
syn match rhelpSection "\\seealso\>"
syn match rhelpSection "\\keyword\>"
syn match rhelpSection "\\docType\>"
syn match rhelpSection "\\format\>"
syn match rhelpSection "\\source\>"
syn match rhelpSection "\\itemize\>"
syn match rhelpSection "\\describe\>"
syn match rhelpSection "\\enumerate\>"
syn match rhelpSection "\\item "
syn match rhelpSection "\\item$"
syn match rhelpSection "\\tabular{[lcr]*}"
syn match rhelpSection "\\dontrun\>"
syn match rhelpSection "\\dontshow\>"
syn match rhelpSection "\\testonly\>"
" Freely named Sections {{{1
syn region rhelpFreesec matchgroup=Delimiter start="\\section{" matchgroup=Delimiter transparent end=/}/
" Rd comments {{{1
syn match rhelpComment /%.*$/ contained
" Error {{{1
syn region rhelpRegion matchgroup=Delimiter start=/(/ matchgroup=Delimiter end=/)/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpCurlyError
syn region rhelpRegion matchgroup=Delimiter start=/{/ matchgroup=Delimiter end=/}/ transparent contains=ALLBUT,rhelpError,rhelpBraceError,rhelpParenError
syn region rhelpRegion matchgroup=Delimiter start=/\[/ matchgroup=Delimiter end=/]/ transparent contains=ALLBUT,rhelpError,rhelpCurlyError,rhelpParenError
syn match rhelpError /[)\]}]/
syn match rhelpBraceError /[)}]/ contained
syn match rhelpCurlyError /[)\]]/ contained
syn match rhelpParenError /[\]}]/ contained
" Define the default highlighting {{{1
" 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
if version >= 508 || !exists("did_rhelp_syntax_inits")
if version < 508
let did_rhelp_syntax_inits = 1
command -nargs=+ HiLink hi link <args>
else
command -nargs=+ HiLink hi def link <args>
endif
HiLink rhelpIdentifier Identifier
HiLink rhelpString String
HiLink rhelpKeyword Keyword
HiLink rhelpLink Underlined
HiLink rhelpType Type
HiLink rhelpSection PreCondit
HiLink rhelpError Error
HiLink rhelpBraceError Error
HiLink rhelpCurlyError Error
HiLink rhelpParenError Error
HiLink rhelpDelimiter Delimiter
HiLink rhelpComment Comment
HiLink rhelpRComment Comment
HiLink rhelpSpecialChar SpecialChar
delcommand HiLink
endif
let b:current_syntax = "rhelp"
" vim: foldmethod=marker:

View File

@ -2,7 +2,7 @@
" This is a GENERATED FILE. Please always refer to source file at the URI below.
" Language: OpenSSH server configuration file (ssh_config)
" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Last Change: 2003-05-06
" Last Change: 2006-03-05
" URL: http://trific.ath.cx/Ftp/vim/syntax/sshconfig.vim
" Setup
@ -30,7 +30,8 @@ syn keyword sshconfigTodo TODO FIXME NOT contained
syn keyword sshconfigYesNo yes no ask
syn keyword sshconfigCipher blowfish des 3des
syn keyword sshconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
syn keyword sshconfigCipher arcfour aes192-cbc aes256-cbc
syn keyword sshconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
syn keyword sshconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
syn keyword sshconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
syn keyword sshconfigMAC hmac-md5-96
syn keyword sshconfigHostKeyAlg ssh-rsa ssh-dss
@ -48,24 +49,29 @@ syn match sshconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}[:/]\d\+\>"
" Keywords
syn keyword sshconfigHostSect Host
syn keyword sshconfigKeyword AFSTokenPassing BatchMode BindAddress
syn keyword sshconfigKeyword AddressFamily BatchMode BindAddress
syn keyword sshconfigKeyword ChallengeResponseAuthentication CheckHostIP
syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings Compression
syn keyword sshconfigKeyword CompressionLevel ConnectionAttempts
syn keyword sshconfigKeyword DynamicForward EscapeChar ForwardAgent ForwardX11
syn keyword sshconfigKeyword GatewayPorts GlobalKnownHostsFile
syn keyword sshconfigKeyword HostbasedAuthentication HostKeyAlgorithms
syn keyword sshconfigKeyword HostKeyAlias HostName IdentityFile KeepAlive
syn keyword sshconfigKeyword KerberosAuthentication KerberosTgtPassing
syn keyword sshconfigKeyword LocalForward LogLevel MACs
syn keyword sshconfigKeyword NoHostAuthenticationForLocalhost
syn keyword sshconfigKeyword Cipher Ciphers ClearAllForwardings
syn keyword sshconfigKeyword Compression CompressionLevel ConnectTimeout
syn keyword sshconfigKeyword ConnectionAttempts ControlMaster
syn keyword sshconfigKeyword ControlPath DynamicForward EnableSSHKeysign
syn keyword sshconfigKeyword EscapeChar ForwardAgent ForwardX11
syn keyword sshconfigKeyword ForwardX11Trusted GSSAPIAuthentication
syn keyword sshconfigKeyword GSSAPIDelegateCredentials GatewayPorts
syn keyword sshconfigKeyword GlobalKnownHostsFile HostKeyAlgorithms
syn keyword sshconfigKeyword HashKnownHosts KbdInteractiveDevices
syn keyword sshconfigKeyword HostKeyAlias HostName HostbasedAuthentication
syn keyword sshconfigKeyword IdentitiesOnly IdentityFile LocalForward
syn keyword sshconfigKeyword LogLevel MACs NoHostAuthenticationForLocalhost
syn keyword sshconfigKeyword NumberOfPasswordPrompts PasswordAuthentication
syn keyword sshconfigKeyword Port PreferredAuthentications Protocol
syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication RemoteForward
syn keyword sshconfigKeyword ProxyCommand PubkeyAuthentication
syn keyword sshconfigKeyword RSAAuthentication RemoteForward
syn keyword sshconfigKeyword RhostsAuthentication RhostsRSAAuthentication
syn keyword sshconfigKeyword RSAAuthentication SmartcardDevice
syn keyword sshconfigKeyword StrictHostKeyChecking UsePrivilegedPort User
syn keyword sshconfigKeyword UserKnownHostsFile XAuthLocation
syn keyword sshconfigKeyword SendEnv ServerAliveCountMax ServerAliveInterval
syn keyword sshconfigKeyword SmartcardDevice StrictHostKeyChecking
syn keyword sshconfigKeyword TCPKeepAlive UsePrivilegedPort User
syn keyword sshconfigKeyword UserKnownHostsFile VerifyHostKeyDNS XAuthLocation
" Define the default highlighting
if version >= 508 || !exists("did_sshconfig_syntax_inits")

View File

@ -2,7 +2,7 @@
" This is a GENERATED FILE. Please always refer to source file at the URI below.
" Language: OpenSSH server configuration file (sshd_config)
" Maintainer: David Ne\v{c}as (Yeti) <yeti@physics.muni.cz>
" Last Change: 2003-05-06
" Last Change: 2006-03-05
" URL: http://trific.ath.cx/Ftp/vim/syntax/sshdconfig.vim
" Setup
@ -29,8 +29,8 @@ syn keyword sshdconfigTodo TODO FIXME NOT contained
" Constants
syn keyword sshdconfigYesNo yes no
syn keyword sshdconfigCipher aes128-cbc 3des-cbc blowfish-cbc cast128-cbc
syn keyword sshdconfigCipher aes192-cbc aes256-cbc
syn keyword sshdconfigCipher arcfour
syn keyword sshdconfigCipher aes192-cbc aes256-cbc aes128-ctr aes256-ctr
syn keyword sshdconfigCipher arcfour arcfour128 arcfour256 cast128-cbc
syn keyword sshdconfigMAC hmac-md5 hmac-sha1 hmac-ripemd160 hmac-sha1-96
syn keyword sshdconfigMAC hmac-md5-96
syn keyword sshdconfigRootLogin without-password forced-commands-only
@ -46,27 +46,33 @@ syn match sshdconfigHostPort "\<\(\x\{,4}:\)\+\x\{,4}:\d\+\>"
syn match sshdconfigTime "\<\(\d\+[sSmMhHdDwW]\)\+\>"
" Keywords
syn keyword sshdconfigKeyword AFSTokenPassing AllowGroups AllowTcpForwarding
syn keyword sshdconfigKeyword AcceptEnv AddressFamily
syn keyword sshdconfigKeyword AllowGroups AllowTcpForwarding
syn keyword sshdconfigKeyword AllowUsers AuthorizedKeysFile Banner
syn keyword sshdconfigKeyword ChallengeResponseAuthentication Ciphers
syn keyword sshdconfigKeyword ClientAliveInterval ClientAliveCountMax
syn keyword sshdconfigKeyword Compression DenyGroups DenyUsers GatewayPorts
syn keyword sshdconfigKeyword HostbasedAuthentication HostKey IgnoreRhosts
syn keyword sshdconfigKeyword IgnoreUserKnownHosts KeepAlive
syn keyword sshdconfigKeyword ChallengeResponseAuthentication
syn keyword sshdconfigKeyword Ciphers ClientAliveCountMax
syn keyword sshdconfigKeyword ClientAliveInterval Compression
syn keyword sshdconfigKeyword DenyGroups DenyUsers GSSAPIAuthentication
syn keyword sshdconfigKeyword GSSAPICleanupCredentials GatewayPorts
syn keyword sshdconfigKeyword HostKey HostbasedAuthentication
syn keyword sshdconfigKeyword IgnoreRhosts IgnoreUserKnownHosts
syn keyword sshdconfigKeyword KerberosAuthentication KerberosOrLocalPasswd
syn keyword sshdconfigKeyword KerberosTgtPassing KerberosTicketCleanup
syn keyword sshdconfigKeyword KerberosGetAFSToken
syn keyword sshdconfigKeyword KeyRegenerationInterval ListenAddress
syn keyword sshdconfigKeyword LoginGraceTime LogLevel MACs MaxStartups
syn keyword sshdconfigKeyword PAMAuthenticationViaKbdInt
syn keyword sshdconfigKeyword PasswordAuthentication PermitEmptyPasswords
syn keyword sshdconfigKeyword PermitRootLogin PermitUserEnvironment PidFile
syn keyword sshdconfigKeyword Port PrintLastLog PrintMotd Protocol
syn keyword sshdconfigKeyword PubkeyAuthentication RhostsAuthentication
syn keyword sshdconfigKeyword RhostsRSAAuthentication RSAAuthentication
syn keyword sshdconfigKeyword LogLevel LoginGraceTime MACs MaxAuthTries
syn keyword sshdconfigKeyword MaxStartups PasswordAuthentication
syn keyword sshdconfigKeyword PermitEmptyPasswords PermitRootLogin
syn keyword sshdconfigKeyword PermitUserEnvironment PidFile Port
syn keyword sshdconfigKeyword PrintLastLog PrintMotd Protocol
syn keyword sshdconfigKeyword PubkeyAuthentication RSAAuthentication
syn keyword sshdconfigKeyword RhostsAuthentication RhostsRSAAuthentication
syn keyword sshdconfigKeyword ServerKeyBits StrictModes Subsystem
syn keyword sshdconfigKeyword SyslogFacility UseLogin UsePrivilegeSeparation
syn keyword sshdconfigKeyword VerifyReverseMapping X11DisplayOffset
syn keyword sshdconfigKeyword X11Forwarding X11UseLocalhost XAuthLocation
syn keyword sshdconfigKeyword ShowPatchLevel
syn keyword sshdconfigKeyword SyslogFacility TCPKeepAlive UseDNS
syn keyword sshdconfigKeyword UseLogin UsePAM UsePrivilegeSeparation
syn keyword sshdconfigKeyword X11DisplayOffset X11Forwarding
syn keyword sshdconfigKeyword X11UseLocalhost XAuthLocation
" Define the default highlighting
if version >= 508 || !exists("did_sshdconfig_syntax_inits")

View File

@ -16,8 +16,9 @@ all: gvimext.dll
gvimext.dll: gvimext.obj \
gvimext.res
$(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib
$(link) $(dlllflags) -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib gvimext.lib comctl32.lib gvimext.exp
# $(implib) /NOLOGO -machine:$(CPU) -def:gvimext.def $** -out:gvimext.lib
# $(link) $(dlllflags) -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib gvimext.lib comctl32.lib gvimext.exp
$(link) $(lflags) -dll -def:gvimext.def -base:0x1C000000 -out:$*.dll $** $(olelibsdll) shell32.lib comctl32.lib
gvimext.obj: gvimext.h

View File

@ -33,6 +33,12 @@
#define INC_OLE2 // WIN32, get ole2 from windows.h
/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
#if _MSC_VER >= 1400
# define _CRT_SECURE_NO_DEPRECATE
# define _CRT_NONSTDC_NO_DEPRECATE
#endif
#include <windows.h>
#include <windowsx.h>
#include <shlobj.h>

View File

@ -8,7 +8,7 @@
// Generated from the TEXTINCLUDE 2 resource.
//
#ifndef __BORLANDC__
# include "afxres.h"
# include "winresrc.h"
#endif
/////////////////////////////////////////////////////////////////////////////

View File

@ -3,35 +3,347 @@ INSTALLpc.txt - Installation of Vim on PC
This file contains instructions for compiling Vim. If you already have an
executable version of Vim, you don't need this.
More information can be found here:
More information can be found here: (Very stale now.)
http://mywebpage.netscape.com/sharppeople/vim/howto/
http://mywebpage.netscape.com/sharppeople/vim/howto/
The file "feature.h" can be edited to match your preferences. You can skip
this, then you will get the default behavior as is documented, which should
be fine for most people.
With the exception of the last two sections (Windows 3.1 and MS-DOS),
this document assumes that you are building Vim for Win32
(Windows NT/2000/XP/2003/Vista and Windows 95/98/Me)
Contents:
1. MS-DOS
2. Win32 (Windows XP/NT and Windows 95/98)
3. Windows NT with OpenNT
4. Windows 3.1
5. Using Mingw
6. Cross compiling for Win32 from a Linux machine
7. Building with Python support
8. Building with MzScheme support
1. Microsoft Visual C++
2. Using MinGW
3. Cygwin
4. Borland
5. Cross compiling for Win32 from a Linux machine
6. Building with Python support
7. Building with MzScheme support
8. Windows 3.1
9. MS-DOS
The currently preferred method is using the free Visual C++ Toolkit 2003.
1. MS-DOS
1. Microsoft Visual C++
=======================
Visual Studio
-------------
Building with Visual Studio (VS 98, VS .NET, VS .NET 2003, and VS .NET 2005)
is straightforward. (These instructions should also work for VS 4 and VS 5.)
To build Vim from the command line with MSVC, use Make_mvc.mak.
Visual Studio installed a batch file called vcvars32.bat, which you must
run to set up paths for nmake and MSVC.
nmake -f Make_mvc.mak console Win32 SDK or Microsoft Visual C++
nmake -f Make_mvc.mak GUI=yes GUI Microsoft Visual C++
nmake -f Make_mvc.mak OLE=yes OLE Microsoft Visual C++
nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc.
Perl, Python, etc.
Make_mvc.mak allows a Vim to be built with various different features and
debug support. Debugging with MS Devstudio is provided by Make_dvc.mak.
For a description of the use of Make_dvc.mak, look in Make_mvc.mak.
For compiling Gvim with IME support on far-east Windows, add IME=yes
to the parameters you pass to Make_mvc.mak.
To build Vim from within the Visual Studio IDE, open the Make_ivc.mak project.
(Note: Make_ivc.mak is not as rich as Make_mvc.mak, which allows for
far more configuration.) Make_ivc.mak can also be built with nmake.
nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim"
GUI Microsoft Visual C++ 4.x or later
nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim OLE"
OLE Microsoft Visual C++ 4.x or later
See the specific files for comments and options.
These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and
Ron Aaron; they have been tested.
Visual C++ Toolkit 2003
-----------------------
You can download the Microsoft Visual C++ Toolkit 2003 from
http://msdn.microsoft.com/visualc/vctoolkit2003/
This contains the command-line tools (compiler, linker, CRT headers,
and libraries) for Visual Studio .NET 2003, but not the Visual Studio IDE.
To compile and debug Vim with the VC2003 Toolkit, you will also need
|ms-platform-sdk|, |dotnet-1.1-redist|, |dotnet-1.1-sdk|,
and |windbg-download|.
It's easier to download Visual C++ 2005 Express Edition, |msvc-2005-express|.
The advantage of the VC 2003 Toolkit is that it will be freely available
long after VC 2005 Express Edition stops being free in November 2006.
The free Code::Blocks IDE works with the VC2003 Toolkit, as described at
http://wiki.codeblocks.org/index.php?title=Integrating_Microsoft_Visual_Toolkit_2003_with_Code::Blocks_IDE
(This site also takes you through configuring a number of other
free C compilers for Win32.)
To compile Vim using the VC2003 Toolkit and Make_mvc.mak, you must first
execute the following commands in a cmd.exe window (the msvcsetup.bat batch
file can be used):
set PATH=%SystemRoot%\Microsoft.NET\Framework\v1.1.4322;%PATH%
call "%VCToolkitInstallDir%vcvars32.bat"
set MSVCVer=7.1
call "%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd"
set LIB=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib;%LIB%
Now you can build Vim with Make_mvc.mak.
Getting the Windows Platform SDK *ms-platform-sdk*
You will also need a copy of the Windows Platform SDK from
http://www.microsoft.com/msdownload/platformsdk/sdkupdate/
Specifically, you need the Windows Core SDK subset of the Platform SDK,
which contains the Windows headers and libraries.
Getting the .NET Framework 1.1 Runtime *dotnet-1.1-redist*
You need the .NET Framework 1.1 Redistributable Package from
http://www.microsoft.com/downloads/details.aspx?familyid=262d25e3-f589-4842-8157-034d1e7cf3a3
or from Windows Update:
http://windowsupdate.microsoft.com/
This is needed to install |dotnet-1.1-sdk|. It also contains cvtres.exe,
which is needed to link Vim.
Getting the .NET Framework 1.1 SDK *dotnet-1.1-sdk*
You need the .NET Framework 1.1 SDK from
http://www.microsoft.com/downloads/details.aspx?familyid=9b3a2ca6-3647-4070-9f41-a333c6b9181d
This contains some additional libraries needed to compile Vim,
such as msvcrt.lib. You must install |dotnet-1.1-redist| before
installing the .NET 1.1 SDK.
Getting the WinDbg debugger *windbg-download*
The Debugging Tools for Windows can be downloaded from
http://www.microsoft.com/whdc/devtools/debugging/default.mspx
This includes the WinDbg debugger, which you will want if you ever need
to debug Vim itself. An earlier version of the Debugging Tools
is also available through the Platform SDK, |ms-platform-sdk|.
Visual C++ 2005 Express Edition
-------------------------------
Visual C++ 2005 Express Edition can be downloaded for free
before November 2006 from
http://msdn.microsoft.com/vstudio/express/visualC/default.aspx
This includes the IDE and the debugger. You will also need
|ms-platform-sdk|. You can build Vim with Make_mvc.mak.
Instructions for integrating the Platform SDK into VC Express:
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/default.aspx
2. MinGW
========
(written by Ron Aaron: <ronaharon@yahoo.com>)
This is about how to produce a Win32 binary of gvim with MinGW.
First, you need to get the 'mingw32' compiler, which is free for the download
at:
http://www.mingw.org/
Once you have downloaded the compiler binaries, unpack them on your hard disk
somewhere, and put them on your PATH. If you are on Win95/98 you can edit
your AUTOEXEC.BAT file with a line like:
set PATH=C:\GCC-2.95.2\BIN;%PATH%
or on NT/2000/XP, go to the Control Panel, (Performance and Maintenance),
System, Advanced, and edit the environment from there.
Test if gcc is on your path. From a CMD (or COMMAND on '95/98) window:
C:\> gcc --version
2.95.2
C:\> make --version
GNU Make version 3.77 (...etc...)
Now you are ready to rock 'n' roll. Unpack the vim sources (look on
www.vim.org for exactly which version of the vim files you need).
Change directory to 'vim\src':
C:\> cd vim\src
C:\VIM\SRC>
and you type:
make -f Make_ming.mak gvim.exe
After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
directory.
You should not need to do *any* editing of any files to get vim compiled this
way. If, for some reason, you want the console-mode-only version of vim (this
is NOT recommended on Win32, especially on '95/'98!!!), you need only change
the 'gvim.exe' to 'vim.exe' in the 'make' commands given above.
If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
(also free!) and compress the file (typical compression is 50%). UPX can be
found at
http://www.upx.org/
ADDITION: NLS support with MinGW
(by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
If you want National Language Support, read the file src/po/README_mingw.txt.
You need to uncomment lines in Make_ming.mak to have NLS defined.
3. Cygwin
=========
Use Make_cyg.mak with Cygwin's GCC. See
http://users.skynet.be/antoine.mechelynck/vim/compile.htm
The Cygnus one many not fully work yet.
With Cygnus gcc you can use the Unix Makefile instead (you need to get the
Unix archive then). Then you get a Cygwin application (feels like Vim is
runnin on Unix), while with Make_cyg.mak you get a Windows application (like
with the other makefiles).
4. Borland
===========
Use Make_bc5.mak with Borland C++ 5.x. See
http://users.skynet.be/antoine.mechelynck/vim/compile.htm
5. Cross compiling for Win32 from a Linux machine
=================================================
[Update of 1) needs to be verified]
If you like, you can compile the 'mingw' Win32 version from the comfort of
your Linux (or other unix) box. To do this, you need to follow a few steps:
1) Install the mingw32 cross-compiler. See
http://www.libsdl.org/extras/win32/cross/README.txt
2) get the *unix* version of the vim sources
3) in 'Make_ming.mak', set 'CROSS' to '1' instead of '0'.
4) make -f Make_ming.mak gvim.exe
Now you have created the Windows binary from your Linux box! Have fun...
6. Building with Python support
===============================
(written by Ron Aaron: <ronaharon@yahoo.com>)
This has been tested with the mingw32 compiler, and the ActiveState
ActivePython:
http://www.ActiveState.com/Products/ActivePython/
After installing the ActivePython, you will have to create a 'mingw32'
'libpython20.a' to link with:
cd $PYTHON/libs
pexports python20.dll > python20.def
dlltool -d python20.def -l libpython20.a
Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to
the root of the Python installation (C:\Python20, for example). If you are
cross-compiling on Linux with the mingw32 setup, you need to also convert all
the 'Include' files to *unix* line-endings. This bash command will do it
easily:
for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
Now just do:
make -f Make_ming.mak gvim.exe
and you will end up with a Python-enabled, Win32 version. Enjoy!
7. Building with MzScheme support
=================================
(written by Sergey Khorev <sergey.khorev@gmail.com>)
Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can
be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and
above (including 299 and 30x series).
The MSVC build is quite straightforward. Simply invoke (in one line)
nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme>
[MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>]
where <MzScheme-version> is the last seven characters from MzScheme dll name
(libmzschXXXXXXX.dll).
If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme
DLL's, but will load them in runtime on demand.
Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into
account that <Path-to-MzScheme> should contain slashes rather than backslashes
(e.g. d:/Develop/MzScheme)
"Static" MzScheme support (Vim executable will depend on MzScheme DLLs
explicitly) on MinGW and Cygwin requires additional step.
libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from
%WINDOWS%\System32 to other location (either build directory, some temporary
dir or even MzScheme home).
Pass that path as MZSCHEME_DLLS parameter for Make. E.g.,
make -f Make_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000
MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no
After a successful build, these dlls can be freely removed, leaving them in
%WINDOWS%\System32 only.
8. Windows 3.1x
===============
make -f Make_w16.mak 16 bit, Borland C++ 5.0
Warning: Be sure to use the right make.exe. It should be Borland make.
You will almost certainly have to change the paths for libs and include files
in the Makefile. Look for "D:\BC5" and "ctl3dv2". You will get a number of
warnings which can be ignored ( _chmod, precompiled header files, and
"possibly incorrect assignment").
The makefile should also work for BC++ 4.0 and 4.5, but may need tweaking to
remove unsupported compiler & liker options.
For making the Win32s version, you need Microsoft Visual C++ 4.1 OR EARLIER.
In MSVC 4.2 support for Win32s was dropped! Use this command:
nmake -f Make_mvc.mak GUI=yes
9. MS-DOS
=========
Summary:
ren Make_bc3.mak Makefile; make 16 bit, Borland C++ and Turbo C++
ren Make_tcc.mak Makefile; make 16 bit, Turbo C
make -f Make_djg.mak 32 bit, DJGPP 2.0
make -f Make_bc5.mak 32 bit, Borland C++ 5.x (edit it to
define DOS)
ren Make_bc3.mak Makefile; make 16 bit, Borland C++ and Turbo C++
ren Make_tcc.mak Makefile; make 16 bit, Turbo C
make -f Make_djg.mak 32 bit, DJGPP 2.0
make -f Make_bc5.mak 32 bit, Borland C++ 5.x (edit it to
define DOS)
Warning: Be sure to use the right make.exe. Microsoft C make doesn't work;
Borland make only works with Make_bc3.mak, Make_bc5.mak and Make_tcc.mak;
@ -64,285 +376,3 @@ will work properly! Esp. handling multi-byte file names.
If you get all kinds of strange error messages when compiling, try adding
changing the file format from "unix" to "dos".
2. Win32 (Windows NT/XP and Windows 95/98)
====================================
Summary:
vcvars32 Setup paths for nmake and MSVC
nmake -f Make_mvc.mak console Win32 SDK or Microsoft Visual C++
nmake -f Make_mvc.mak GUI=yes GUI Microsoft Visual C++
nmake -f Make_mvc.mak OLE=yes OLE Microsoft Visual C++
nmake -f Make_mvc.mak PERL=C:\Perl PYTHON=C:\Python etc.
Perl, Python, etc.
Microsoft Visual C++
make -f Make_bc5.mak GUI Borland C++ 5.x
make -f Make_bc5.mak console Borland C++ 5.x (change the file)
nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim"
GUI Microsoft Visual C++ 4.x or later
nmake -f Make_ivc.mak CFG="Vim - Win32 Release gvim OLE"
OLE Microsoft Visual C++ 4.x or later
make -f Make_cyg.mak various Cygnus gcc
make -f Make_ming.mak various MingW with gcc
See the specific files for comments and options.
These files have been supplied by George V. Reilly, Ben Singer, Ken Scott and
Ron Aaron; they have been tested. The Cygnus one many not fully work yet.
With Cygnus gcc you can use the Unix Makefile instead (you need to get the
Unix archive then). Then you get a Cygwin application (feels like Vim is
runnin on Unix), while with Make_cyg.mak you get a Windows application (like
with the other makefiles).
You can also use the Visual C++ IDE: use File/Open workspace, select the
Make_ivc.mak file, then select Build/Build all. This builds the GUI version
by default.
Vim for Win32 compiles with the Microsoft Visual C++ 2.0 compiler and later,
and with the Borland C++ 4.5 32-bit compiler and later. It compiles on
Windows 95 and all four NT platforms: i386, Alpha, MIPS, and PowerPC. The
NT/i386 and the Windows 95 binaries are identical. Use Make_mvc.mak to
compile with Visual C++ and Make_bc5.mak to compile with Borland C++.
Make_mvc.mak allows a Vim to be built with various different features and
debug support. Debugging with MS Devstudio is provided by Make_dvc.mak.
For a description of the use of Make_dvc.mak, look in Make_mvc.mak.
For compiling Gvim with IME support on far-east Windows, uncomment the
MULTI_BYTE_IME define in the src/feature.h file before compiling.
The Win32 console binary was compiled with Visual C++ version 5.0, using
Make_mvc.mak and Make_bc5.mak (Borland C). Other compilers should also work.
If you get all kinds of strange error messages when compiling (you shouldn't
with the Microsoft or Borland 32-bit compilers), try adding <CR> characters
at the end of each line.
You probably need to run "vcvars32" before using "nmake".
For making the Win32s version, you need Microsoft Visual C++ 4.1 OR EARLIER.
In version 4.2 support for Win32s was dropped! Use this command:
nmake -f Make_mvc.mak GUI=yes
See the respective Makefiles for more comments.
3. Windows NT with OpenNT
=========================
(contributed by Michael A. Benzinger)
Building Vim on OpenNT 2.0 on Windows NT 4.0, with Softway's prerelease gcc:
1. export CONFIG_SHELL=//D/OpenNT/bin/sh
2. Make the following exports for modifying config.mk:
export CFLAGS=-O -Wshadow
export X_PRE_LIBS=-lXmu
2. Run configure as follows:
configure --prefix=/vim --bindir=/bin/opennt --enable-gui=Motif
If you don't have OpenNTif (Motif support), use this:
configure --prefix=/vim --bindir=/bin/opennt --enable-gui=Athena
3. Edit Makefile to perform the following since the Makefile include syntax
differs from that of gmake:
#include config.mk
.include "config.mk"
4. Change all install links to be "ln -f" and not "ln -s".
5. Change to the 'ctags' directory and configure.
6. Edit the Makefile and remove spurious spaces from lines 99 and 114.
7. Change slink to "ln -f" from "ln -s".
8. Return to the src directory.
9. make
4. Windows 3.1x
===============
make -f Make_w16.mak 16 bit, Borland C++ 5.0
Warning: Be sure to use the right make.exe. It should be Borland make.
You will almost certainly have to change the paths for libs and include files
in the Makefile. Look for "D:\BC5" and "ctl3dv2". You will get a number of
warnings which can be ignored ( _chmod, precompiled header files, and
"possibly incorrect assignment").
The makefile should also work for BC++ 4.0 and 4.5, but may need tweaking to
remove unsupported compiler & liker options.
5. Mingw
========
(written by Ron Aaron: <ronaharon@yahoo.com>)
This is about how to produce a Win32 binary of gvim with Mingw.
First, you need to get the 'mingw32' compiler, which is free for the download
at:
http://www.mingw.org/
Once you have downloaded the compiler binaries, unpack them on your hard disk
somewhere, and put them on your PATH. If you are on Win95/98 you can edit
your AUTOEXEC.BAT file with a line like:
set PATH=C:\GCC-2.95.2\BIN;%PATH%
or on NT/2000, go to the Control Panel, System, and edit the environment from
there.
Test if gcc is on your path. From a CMD (or COMMAND on '95/98):
C:\> gcc --version
2.95.2
C:\> make --version
GNU Make version 3.77 (...etc...)
Now you are ready to rock 'n' roll. Unpack the vim sources (look on
www.vim.org for exactly which version of the vim files you need).
Change directory to 'vim\src':
C:\> cd vim\src
C:\VIM\SRC>
and you type:
make -f Make_ming.mak gvim.exe
After churning for a while, you will end up with 'gvim.exe' in the 'vim\src'
directory.
You should not need to do *any* editing of any files to get vim compiled this
way. If, for some reason, you want the console-mode-only version of vim (this
is NOT recommended on Win32, especially on '95/'98!!!), you need only change
the 'gvim.exe' to 'vim.exe' in the 'make' commands given above.
If you are dismayed by how big the EXE is, I strongly recommend you get 'UPX'
(also free!) and compress the file (typical compression is 50%). UPX can be
found at
http://upx.tsx.org/
ADDITION: NLS support with Mingw
(by Eduardo F. Amatria <eferna1@platea.pntic.mec.es>)
If you want National Language Support, read the file src/po/README_mingw.txt.
You need to uncomment lines in Make_ming.mak to have NLS defined.
6. Cross compiling for Win32 from a Linux machine
=================================================
(written by Ron Aaron: <ronaharon@yahoo.com> with help from
Martin Kahlert <martin.kahlert@infineon.com>)
If you like, you can compile the 'mingw' Win32 version from the comfort of
your Linux (or other unix) box. To do this, you need to follow a few steps:
1) Install the mingw32 cross-compiler (if you have it, go to step 2)
1a) from 'ftp://ftp.nanotech.wisc.edu/pub/khan/gnu-win32/mingw32/snapshots/gcc-2.95.2-1',
get:
binutils-19990818-1-src.tar.gz
mingw-msvcrt-20000203.zip
gcc-2.95.2-1-x86-win32.diff.gz
1b) from 'http://gcc.gnu.org/' get:
gcc-2.95.2.tar.gz
1c) create a place to put the compiler source and binaries:
(assuming you are in the home directory)
mkdir gcc-bin
mkdir gcc-src
1d) unpack the sources:
cd gcc-src
tar xzf ../binutils-19990818-1-src.tar.gz
tar xzf ../gcc-2.95.2.tar.gz
unzip ../mingw-msvcrt-20000203
1e) build the different tools:
export PREFIX=~/gcc-bin/
cd gcc-2.95.2
zcat ../gcc-2.95.2-1-x86-win32.diff.gz | patch -p1 -E
cd ../binutils-19990818
./configure --target=i586-pc-mingw32msvc --prefix=$PREFIX
make
make install
cd ../gcc-2.95.2
./configure --target=i586-pc-mingw32msvc \
--with-libs=~/gcc-bin/i386-mingw32msvc/lib \
--with-headers=~/gcc-bin/i386-mingw32msvc/include \
--enable-languages=c++ \
--prefix=$PREFIX
make
make install
1f) Add $PREFIX/bin to your $PATH.
2) get the *unix* version of the vim sources
3) in 'Make_ming.mak', set 'CROSS' to '1' instead of '0'.
4) make -f Make_ming.mak gvim.exe
Now you have created the Windows binary from your Linux box! Have fun...
7. Building with Python support
=================================================
(written by Ron Aaron: <ronaharon@yahoo.com>)
This has been tested with the mingw32 compiler, and the ActiveState
ActivePython:
http://www.ActiveState.com/Products/ActivePython/
After installing the ActivePython, you will have to create a 'mingw32'
'libpython20.a' to link with:
cd $PYTHON/libs
pexports python20.dll > python20.def
dlltool -d python20.def -l libpython20.a
Once that is done, edit the 'Make_ming.mak' so the PYTHON variable points to
the root of the Python installation (C:\Python20, for example). If you are
cross-compiling on Linux with the mingw32 setup, you need to also convert all
the 'Include' files to *unix* line-endings. This bash command will do it
easily:
for fil in *.h ; do vim -e -c 'set ff=unix|w|q' $fil
Now just do:
make -f Make_ming.mak gvim.exe
and you will end up with a Python-enabled, Win32 version. Enjoy!
8. Building with MzScheme support
=================================================
(written by Sergey Khorev <sergey.khorev@gmail.com>)
Vim with MzScheme (http://www.plt-scheme.org/software/mzscheme) support can
be built with either MSVC, or MinGW, or Cygwin. Supported versions are 205 and
above (including 299 and 30x series).
The MSVC build is quite straightforward. Simply invoke (in one line)
nmake -fMake_mvc.mak MZSCHEME=<Path-to-MzScheme>
[MZSCHEME_VER=<MzScheme-version>] [DYNAMIC_MZSCHEME=<yes or no>]
where <MzScheme-version> is the last seven characters from MzScheme dll name
(libmzschXXXXXXX.dll).
If DYNAMIC_MZSCHEME=yes, resulting executable will not depend on MzScheme
DLL's, but will load them in runtime on demand.
Building dynamic MzScheme support on MinGW and Cygwin is similar. Take into
account that <Path-to-MzScheme> should contain slashes rather than backslashes
(e.g. d:/Develop/MzScheme)
"Static" MzScheme support (Vim executable will depend on MzScheme DLLs
explicitly) on MinGW and Cygwin requires additional step.
libmzschXXXXXXX.dll and libmzgcXXXXXXX.dll should be copied from
%WINDOWS%\System32 to other location (either build directory, some temporary
dir or even MzScheme home).
Pass that path as MZSCHEME_DLLS parameter for Make. E.g.,
make -fMake_cyg.mak MZSCHEME=d:/Develop/MzScheme MZSCHEME_VER=209_000
MZSCHEME_DLLS=c:/Temp DYNAMIC_MZSCHEME=no
After successful build these dlls can be freely removed, leaving them in
%WINDOWS%\System32 only.

View File

@ -131,9 +131,9 @@
### See feature.h for a list of optionals.
# If you want to build some optional features without modifying the source,
# you can set DEFINES on the command line, e.g.,
# nmake -f makefile.mvc "DEFINES=-DEMACS_TAGS"
# nmake -f Make_mvc.mvc "DEFINES=-DEMACS_TAGS"
# Build on both Windows NT and Windows 95
# Build on both Windows NT/XP and Windows 9x
TARGETOS = BOTH
@ -167,12 +167,12 @@ OBJDIR = $(OBJDIR)Z
OBJDIR = $(OBJDIR)d
!endif
# ntwin32.mak requires that CPU be set appropriately
# Win32.mak requires that CPU be set appropriately
!ifdef PROCESSOR_ARCHITECTURE
# We're on Windows NT or using VC 6
# We're on Windows NT or using VC 6+
CPU = $(PROCESSOR_ARCHITECTURE)
! if "$(CPU)" == "x86"
! if ("$(CPU)" == "x86") || ("$(CPU)" == "X86")
CPU = i386
! endif
!else # !PROCESSOR_ARCHITECTURE
@ -190,17 +190,12 @@ MAKEFLAGS_GVIMEXT = DEBUG=yes
!endif
# Build a multithreaded version for the Windows 95 dead keys hack
# Commented out because it doesn't work.
# MULTITHREADED = 1
# Get all sorts of useful, standard macros from the SDK. (Note that
# MSVC 2.2 does not install <ntwin32.mak> in the \msvc20\include
# directory, but you can find it in \msvc20\include on the CD-ROM.
# You may also need <win32.mak> from the same place.)
!include <ntwin32.mak>
!include <Win32.mak>
#>>>>> path of the compiler and linker; name of include and lib directories
@ -263,12 +258,14 @@ XPM_INC = -I $(XPM)\include
!endif
!endif
# Set which version of the CRT to use
!if defined(USE_MSVCRT)
CVARS = $(cvarsdll)
!elseif defined(MULTITHREADED)
CVARS = $(cvarsmt)
# !elseif defined(MULTITHREADED)
# CVARS = $(cvarsmt)
!else
CVARS = $(cvars)
# CVARS = $(cvars)
CVARS = $(cvarsmt)
!endif
# need advapi32.lib for GetUserName()
@ -276,7 +273,7 @@ CVARS = $(cvars)
# gdi32.lib and comdlg32.lib for printing support
# ole32.lib and uuid.lib are needed for FEAT_SHORTCUT
CON_LIB = advapi32.lib shell32.lib gdi32.lib comdlg32.lib ole32.lib uuid.lib
!if "$(VC6)" == "yes"
!if "$(DELAYLOAD)" == "yes"
CON_LIB = $(CON_LIB) /DELAYLOAD:comdlg32.dll /DELAYLOAD:ole32.dll DelayImp.lib
!endif
@ -340,10 +337,14 @@ RCFLAGS = $(rcflags) $(rcvars) -DNDEBUG
! ifdef USE_MSVCRT
CFLAGS = $(CFLAGS) -MD
LIBC = msvcrt.lib
! elseif defined(MULTITHREADED)
LIBC = libcmt.lib
# CFLAGS = $(CFLAGS) $(cvarsdll)
# ! elseif defined(MULTITHREADED)
# LIBC = libcmt.lib
# CFLAGS = $(CFLAGS) $(cvarsmt)
! else
LIBC = libc.lib
# LIBC = libc.lib
LIBC = libcmt.lib
# CFLAGS = $(CFLAGS) $(cvars)
! endif
!else # DEBUG
VIM = vimd
@ -358,10 +359,14 @@ LIBC = /fixed:no
! ifdef USE_MSVCRT
CFLAGS = $(CFLAGS) -MDd
LIBC = $(LIBC) msvcrtd.lib
! elseif defined(MULTITHREADED)
LIBC = $(LIBC) libcmtd.lib
# CFLAGS = $(CFLAGS) $(cvarsdll)
# ! elseif defined(MULTITHREADED)
# LIBC = $(LIBC) libcmtd.lib
# CFLAGS = $(CFLAGS) $(cvarsmt)
! else
LIBC = $(LIBC) libcd.lib
# LIBC = $(LIBC) libcd.lib
LIBC = $(LIBC) libcmtd.lib
# CFLAGS = $(CFLAGS) $(cvars)
! endif
!endif # DEBUG
@ -666,7 +671,7 @@ CFLAGS = $(CFLAGS) -DFEAT_$(FEATURES)
# on a crash (doesn't add overhead to the executable).
#
CFLAGS = $(CFLAGS) /Zi /Fd$(OUTDIR)/
LINK_PDB = /PDB:$(OUTDIR)/$(VIM).pdb -debug:full -debugtype:cv,fixup
LINK_PDB = /PDB:$(OUTDIR)/$(VIM).pdb -debug # -debug:full -debugtype:cv,fixup
#
# End extra feature include
@ -1004,4 +1009,8 @@ proto.h: \
proto/window.pro \
$(NETBEANS_PRO)
.cod.c:
$(CC) $(CFLAGS) /FAc $<
# vim: set noet sw=8 ts=8 sts=0 wm=0 tw=0:

View File

@ -9,6 +9,13 @@
/*
* dosinst.h: Common code for dosinst.c and uninstal.c
*/
/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
#if _MSC_VER >= 1400
# define _CRT_SECURE_NO_DEPRECATE
# define _CRT_NONSTDC_NO_DEPRECATE
#endif
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
@ -16,7 +23,7 @@
#include <fcntl.h>
#ifndef UNIX_LINT
# include <io.h>
# include "vimio.h"
# include <ctype.h>
# ifndef __CYGWIN__

View File

@ -7604,7 +7604,7 @@ ins_bs(c, mode, inserted_space_p)
int in_indent;
int oldState;
#ifdef FEAT_MBYTE
int p1, p2;
int cpc[MAX_MCO]; /* composing characters */
#endif
/*
@ -7920,16 +7920,16 @@ ins_bs(c, mode, inserted_space_p)
{
#ifdef FEAT_MBYTE
if (enc_utf8 && p_deco)
(void)utfc_ptr2char(ml_get_cursor(), &p1, &p2);
(void)utfc_ptr2char(ml_get_cursor(), cpc);
#endif
(void)del_char(FALSE);
#ifdef FEAT_MBYTE
/*
* If p1 or p2 is non-zero, there are combining characters we
* need to take account of. Don't back up before the base
* If there are combining characters and 'delcombine' is set
* move the cursor back. Don't back up before the base
* character.
*/
if (enc_utf8 && p_deco && (p1 != NUL || p2 != NUL))
if (enc_utf8 && p_deco && cpc[0] != NUL)
inc_cursor();
#endif
#ifdef FEAT_RIGHTLEFT

View File

@ -11,7 +11,7 @@
* eval.c: Expression evaluation.
*/
#if defined(MSDOS) || defined(MSWIN)
# include <io.h> /* for mch_open(), must be before vim.h */
# include "vimio.h" /* for mch_open(), must be before vim.h */
#endif
#include "vim.h"
@ -718,7 +718,7 @@ static void call_user_func __ARGS((ufunc_T *fp, int argcount, typval_T *argvars,
static void add_nr_var __ARGS((dict_T *dp, dictitem_T *v, char *name, varnumber_T nr));
static win_T *find_win_by_nr __ARGS((typval_T *vp));
static int searchpair_cmn __ARGS((typval_T *argvars, pos_T *match_pos));
static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos));
static int search_cmn __ARGS((typval_T *argvars, pos_T *match_pos, int *flagsp));
/* Character used as separated in autoload function/variable names. */
#define AUTOLOAD_CHAR '#'
@ -1171,18 +1171,28 @@ skip_expr(pp)
* Return pointer to allocated memory, or NULL for failure.
*/
char_u *
eval_to_string(arg, nextcmd)
eval_to_string(arg, nextcmd, dolist)
char_u *arg;
char_u **nextcmd;
int dolist; /* turn List into sequence of lines */
{
typval_T tv;
char_u *retval;
garray_T ga;
if (eval0(arg, &tv, nextcmd, TRUE) == FAIL)
retval = NULL;
else
{
retval = vim_strsave(get_tv_string(&tv));
if (dolist && tv.v_type == VAR_LIST)
{
ga_init2(&ga, (int)sizeof(char), 80);
list_join(&ga, tv.vval.v_list, (char_u *)"\n", TRUE, 0);
ga_append(&ga, NUL);
retval = (char_u *)ga.ga_data;
}
else
retval = vim_strsave(get_tv_string(&tv));
clear_tv(&tv);
}
@ -1206,7 +1216,7 @@ eval_to_string_safe(arg, nextcmd, use_sandbox)
if (use_sandbox)
++sandbox;
++textlock;
retval = eval_to_string(arg, nextcmd);
retval = eval_to_string(arg, nextcmd, FALSE);
if (use_sandbox)
--sandbox;
--textlock;
@ -13273,25 +13283,27 @@ get_search_arg(varp, flagsp)
* Shared by search() and searchpos() functions
*/
static int
search_cmn(argvars, match_pos)
search_cmn(argvars, match_pos, flagsp)
typval_T *argvars;
pos_T *match_pos;
int *flagsp;
{
int flags;
char_u *pat;
pos_T pos;
pos_T save_cursor;
int save_p_ws = p_ws;
int dir;
int flags = 0;
int retval = 0; /* default: FAIL */
long lnum_stop = 0;
int options = SEARCH_KEEP;
int subpatnum;
pat = get_tv_string(&argvars[0]);
dir = get_search_arg(&argvars[1], &flags); /* may set p_ws */
dir = get_search_arg(&argvars[1], flagsp); /* may set p_ws */
if (dir == 0)
goto theend;
flags = *flagsp;
if (flags & SP_START)
options |= SEARCH_START;
if (flags & SP_END)
@ -13359,7 +13371,9 @@ f_search(argvars, rettv)
typval_T *argvars;
typval_T *rettv;
{
rettv->vval.v_number = search_cmn(argvars, NULL);
int flags = 0;
rettv->vval.v_number = search_cmn(argvars, NULL, &flags);
}
/*
@ -13649,13 +13663,16 @@ f_searchpos(argvars, rettv)
pos_T match_pos;
int lnum = 0;
int col = 0;
int n;
int flags = 0;
rettv->vval.v_number = 0;
if (rettv_list_alloc(rettv) == FAIL)
return;
if (search_cmn(argvars, &match_pos) > 0)
n = search_cmn(argvars, &match_pos, &flags);
if (n > 0)
{
lnum = match_pos.lnum;
col = match_pos.col;
@ -13663,7 +13680,8 @@ f_searchpos(argvars, rettv)
list_append_number(rettv->vval.v_list, (varnumber_T)lnum);
list_append_number(rettv->vval.v_list, (varnumber_T)col);
if (flags & SP_SUBPAT)
list_append_number(rettv->vval.v_list, (varnumber_T)n);
}
@ -15675,6 +15693,7 @@ f_winrestview(argvars, rettv)
curwin->w_cursor.coladd = get_dict_number(dict, (char_u *)"coladd");
#endif
curwin->w_curswant = get_dict_number(dict, (char_u *)"curswant");
curwin->w_set_curswant = FALSE;
curwin->w_topline = get_dict_number(dict, (char_u *)"topline");
#ifdef FEAT_DIFF
@ -16208,7 +16227,7 @@ make_expanded_name(in_start, expr_start, expr_end, in_end)
c1 = *in_end;
*in_end = NUL;
temp_result = eval_to_string(expr_start + 1, &nextcmd);
temp_result = eval_to_string(expr_start + 1, &nextcmd, FALSE);
if (temp_result != NULL && nextcmd == NULL)
{
retval = alloc((unsigned)(STRLEN(temp_result) + (expr_start - in_start)

View File

@ -52,12 +52,12 @@ do_ascii(eap)
char buf2[20];
char_u buf3[7];
#ifdef FEAT_MBYTE
int c1 = 0;
int c2 = 0;
int cc[MAX_MCO];
int ci = 0;
int len;
if (enc_utf8)
c = utfc_ptr2char(ml_get_cursor(), &c1, &c2);
c = utfc_ptr2char(ml_get_cursor(), cc);
else
#endif
c = gchar_cursor();
@ -95,9 +95,7 @@ do_ascii(eap)
_("<%s>%s%s %d, Hex %02x, Octal %03o"),
transchar(c), buf1, buf2, c, c, c);
#ifdef FEAT_MBYTE
c = c1;
c1 = c2;
c2 = 0;
c = cc[ci++];
#endif
}
@ -120,9 +118,9 @@ do_ascii(eap)
vim_snprintf((char *)IObuff + len, IOSIZE - len,
c < 0x10000 ? _("> %d, Hex %04x, Octal %o")
: _("> %d, Hex %08x, Octal %o"), c, c, c);
c = c1;
c1 = c2;
c2 = 0;
if (ci == MAX_MCO)
break;
c = cc[ci++];
}
#endif

View File

@ -831,14 +831,16 @@ EX(CMD_split, "split", ex_splitview,
BANG|FILE1|RANGE|NOTADR|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_spellgood, "spellgood", ex_spell,
BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
EX(CMD_spellwrong, "spellwrong", ex_spell,
BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
EX(CMD_spelldump, "spelldump", ex_spelldump,
BANG|TRLBAR),
EX(CMD_spellinfo, "spellinfo", ex_spellinfo,
TRLBAR),
EX(CMD_spellrepall, "spellrepall", ex_spellrepall,
TRLBAR),
EX(CMD_spellundo, "spellundo", ex_spell,
BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
EX(CMD_spellwrong, "spellwrong", ex_spell,
BANG|RANGE|NOTADR|NEEDARG|EXTRA|TRLBAR),
EX(CMD_sprevious, "sprevious", ex_previous,
EXTRA|RANGE|NOTADR|COUNT|BANG|EDITCMD|ARGOPT|TRLBAR),
EX(CMD_srewind, "srewind", ex_rewind,

View File

@ -12,7 +12,7 @@
*/
#if defined(WIN32) && defined(FEAT_CSCOPE)
# include <io.h>
# include "vimio.h"
#endif
#include "vim.h"

View File

@ -240,6 +240,7 @@ static void ex_popup __ARGS((exarg_T *eap));
# define ex_spell ex_ni
# define ex_mkspell ex_ni
# define ex_spelldump ex_ni
# define ex_spellinfo ex_ni
# define ex_spellrepall ex_ni
#endif
#ifndef FEAT_MZSCHEME
@ -3289,10 +3290,17 @@ set_one_cmd_context(xp, buff)
if (bow != NULL && in_quote)
xp->xp_pattern = bow;
xp->xp_context = EXPAND_FILES;
#ifndef BACKSLASH_IN_FILENAME
/* For a shell command more chars need to be escaped. */
if (usefilter || ea.cmdidx == CMD_bang)
{
xp->xp_shell = TRUE;
/* When still after the command name expand executables. */
if (xp->xp_pattern == skipwhite(arg))
xp->xp_context = EXPAND_SHELLCMD;
}
#endif
/* Check for environment variable */
@ -5089,6 +5097,7 @@ static struct
{EXPAND_MAPPINGS, "mapping"},
{EXPAND_MENUS, "menu"},
{EXPAND_SETTINGS, "option"},
{EXPAND_SHELLCMD, "shellcmd"},
{EXPAND_TAGS, "tag"},
{EXPAND_TAGS_LISTFILES, "tag_listfiles"},
{EXPAND_USER_VARS, "var"},

View File

@ -518,7 +518,8 @@ getcmdline(firstc, count, indent)
xpc.xp_context = EXPAND_NOTHING;
}
}
if (xpc.xp_context == EXPAND_FILES && p_wmnu)
if ((xpc.xp_context == EXPAND_FILES
|| xpc.xp_context == EXPAND_SHELLCMD) && p_wmnu)
{
char_u upseg[5];
@ -2466,9 +2467,9 @@ draw_cmdline(start, len)
int pc, pc1;
int prev_c = 0;
int prev_c1 = 0;
int u8c, u8c_c1, u8c_c2;
int u8c;
int u8cc[MAX_MCO];
int nc = 0;
int dummy;
/*
* Do arabic shaping into a temporary buffer. This is very
@ -2495,7 +2496,7 @@ draw_cmdline(start, len)
for (j = start; j < start + len; j += mb_l)
{
p = ccline.cmdbuff + j;
u8c = utfc_ptr2char_len(p, &u8c_c1, &u8c_c2, start + len - j);
u8c = utfc_ptr2char_len(p, u8cc, start + len - j);
mb_l = utfc_ptr2len_len(p, start + len - j);
if (ARABIC_CHAR(u8c))
{
@ -2505,7 +2506,7 @@ draw_cmdline(start, len)
/* displaying from right to left */
pc = prev_c;
pc1 = prev_c1;
prev_c1 = u8c_c1;
prev_c1 = u8cc[0];
if (j + mb_l >= start + len)
nc = NUL;
else
@ -2517,20 +2518,25 @@ draw_cmdline(start, len)
if (j + mb_l >= start + len)
pc = NUL;
else
pc = utfc_ptr2char_len(p + mb_l, &pc1, &dummy,
{
int pcc[MAX_MCO];
pc = utfc_ptr2char_len(p + mb_l, pcc,
start + len - j - mb_l);
pc1 = pcc[0];
}
nc = prev_c;
}
prev_c = u8c;
u8c = arabic_shape(u8c, NULL, &u8c_c1, pc, pc1, nc);
u8c = arabic_shape(u8c, NULL, &u8cc[0], pc, pc1, nc);
newlen += (*mb_char2bytes)(u8c, arshape_buf + newlen);
if (u8c_c1 != 0)
if (u8cc[0] != 0)
{
newlen += (*mb_char2bytes)(u8c_c1, arshape_buf + newlen);
if (u8c_c2 != 0)
newlen += (*mb_char2bytes)(u8c_c2,
newlen += (*mb_char2bytes)(u8cc[0], arshape_buf + newlen);
if (u8cc[1] != 0)
newlen += (*mb_char2bytes)(u8cc[1],
arshape_buf + newlen);
}
}
@ -3353,6 +3359,7 @@ ExpandOne(xp, str, orig, options, mode)
#ifdef CASE_INSENSITIVE_FILENAME
if (xp->xp_context == EXPAND_DIRECTORIES
|| xp->xp_context == EXPAND_FILES
|| xp->xp_context == EXPAND_SHELLCMD
|| xp->xp_context == EXPAND_BUFFERS)
{
if (TOLOWER_LOC(xp->xp_files[i][len]) !=
@ -3454,6 +3461,7 @@ ExpandEscape(xp, str, numfiles, files, options)
if (options & WILD_ESCAPE)
{
if (xp->xp_context == EXPAND_FILES
|| xp->xp_context == EXPAND_SHELLCMD
|| xp->xp_context == EXPAND_BUFFERS
|| xp->xp_context == EXPAND_DIRECTORIES)
{
@ -3648,6 +3656,7 @@ showmatches(xp, wildmenu)
for (i = 0; i < num_files; ++i)
{
if (!showtail && (xp->xp_context == EXPAND_FILES
|| xp->xp_context == EXPAND_SHELLCMD
|| xp->xp_context == EXPAND_BUFFERS))
{
home_replace(NULL, files_found[i], NameBuff, MAXPATHL, TRUE);
@ -3700,6 +3709,7 @@ showmatches(xp, wildmenu)
for (j = maxlen - lastlen; --j >= 0; )
msg_putchar(' ');
if (xp->xp_context == EXPAND_FILES
|| xp->xp_context == EXPAND_SHELLCMD
|| xp->xp_context == EXPAND_BUFFERS)
{
/* highlight directories */
@ -3789,7 +3799,9 @@ expand_showtail(xp)
char_u *end;
/* When not completing file names a "/" may mean something different. */
if (xp->xp_context != EXPAND_FILES && xp->xp_context != EXPAND_DIRECTORIES)
if (xp->xp_context != EXPAND_FILES
&& xp->xp_context != EXPAND_SHELLCMD
&& xp->xp_context != EXPAND_DIRECTORIES)
return FALSE;
end = gettail(xp->xp_pattern);
@ -3826,7 +3838,9 @@ addstar(fname, len, context)
int new_len;
char_u *tail;
if (context != EXPAND_FILES && context != EXPAND_DIRECTORIES)
if (context != EXPAND_FILES
&& context != EXPAND_SHELLCMD
&& context != EXPAND_DIRECTORIES)
{
/*
* Matching will be done internally (on something other than files).
@ -3943,6 +3957,7 @@ addstar(fname, len, context)
* EXPAND_DIRECTORIES In some cases this is used instead of the latter
* when we know only directories are of interest. eg
* :set dir=^I
* EXPAND_SHELLCMD After ":!cmd", ":r !cmd" or ":w !cmd".
* EXPAND_SETTINGS Complete variable names. eg :set d^I
* EXPAND_BOOL_SETTINGS Complete boolean variables only, eg :set no^I
* EXPAND_TAGS Complete tags from the files in p_tags. eg :ta a^I
@ -4165,6 +4180,93 @@ ExpandFromContext(xp, pat, num_file, file, options)
return ret;
}
if (xp->xp_context == EXPAND_SHELLCMD)
{
/*
* Expand shell command.
*/
int i;
char_u *path;
int mustfree = FALSE;
garray_T ga;
char_u *buf = alloc(MAXPATHL);
int l;
char_u *s, *e;
if (buf == NULL)
return FAIL;
/* for ":set path=" and ":set tags=" halve backslashes for escaped
* space */
pat = vim_strsave(pat);
for (i = 0; pat[i]; ++i)
if (pat[i] == '\\' && pat[i + 1] == ' ')
STRCPY(pat + i, pat + i + 1);
flags |= EW_FILE | EW_EXEC;
/* For an absolute name we don't use $PATH. */
if ((pat[0] == '.' && (vim_ispathsep(pat[1])
|| (pat[1] == '.' && vim_ispathsep(pat[2])))))
path = (char_u *)".";
else
path = vim_getenv((char_u *)"PATH", &mustfree);
ga_init2(&ga, (int)sizeof(char *), 10);
for (s = path; *s != NUL; s = e)
{
#if defined(MSDOS) || defined(MSWIN) || defined(OS2)
e = vim_strchr(s, ';');
#else
e = vim_strchr(s, ':');
#endif
if (e == NULL)
e = s + STRLEN(s);
l = e - s;
if (l > MAXPATHL - 5)
break;
vim_strncpy(buf, s, l);
add_pathsep(buf);
l = STRLEN(buf);
vim_strncpy(buf + l, pat, MAXPATHL - 1 - l);
/* Expand matches in one directory of $PATH. */
ret = expand_wildcards(1, &buf, num_file, file, flags);
if (ret == OK)
{
if (ga_grow(&ga, *num_file) == FAIL)
FreeWild(*num_file, *file);
else
{
for (i = 0; i < *num_file; ++i)
{
s = (*file)[i];
if (STRLEN(s) > l)
{
/* Remove the path again. */
mch_memmove(s, s + l, STRLEN(s + l) + 1);
((char_u **)ga.ga_data)[ga.ga_len] = s;
++ga.ga_len;
}
else
vim_free(s);
}
vim_free(*file);
}
}
if (*e != NUL)
++e;
}
*file = ga.ga_data;
*num_file = ga.ga_len;
vim_free(buf);
vim_free(pat);
if (mustfree)
vim_free(path);
return ret;
}
*file = (char_u **)"";
*num_file = 0;
if (xp->xp_context == EXPAND_HELP)

View File

@ -609,6 +609,10 @@
# define FEAT_MBYTE
#endif
/* Define this if you want to use 16 bit Unicode only, reduces memory used for
* the screen structures. */
/* #define UNICODE16 */
/*
* +multi_byte_ime Win32 IME input method. Requires +multi_byte.
* Only for far-east Windows, so IME can be used to input
@ -732,7 +736,7 @@
/*
* GUI tabline
*/
#if defined(FEAT_GUI_GTK) && defined(HAVE_GTK2) && defined(FEAT_WINDOWS)
#if defined(FEAT_GUI_GTK) && defined(FEAT_WINDOWS)
# define FEAT_GUI_TABLINE
#endif

View File

@ -12,11 +12,11 @@
*/
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
# include <io.h> /* for lseek(), must be before vim.h */
# include "vimio.h" /* for lseek(), must be before vim.h */
#endif
#if defined __EMX__
# include <io.h> /* for mktemp(), CJW 1997-12-03 */
# include "vimio.h" /* for mktemp(), CJW 1997-12-03 */
#endif
#include "vim.h"

View File

@ -53,8 +53,9 @@ EXTERN char_u *LineWraps INIT(= NULL); /* line wraps to next line */
* Note: These three are only allocated when enc_utf8 is set!
*/
EXTERN u8char_T *ScreenLinesUC INIT(= NULL); /* decoded UTF-8 characters */
EXTERN u8char_T *ScreenLinesC1 INIT(= NULL); /* first composing char */
EXTERN u8char_T *ScreenLinesC2 INIT(= NULL); /* second composing char */
EXTERN u8char_T *ScreenLinesC[MAX_MCO]; /* composing characters */
EXTERN int Screen_mco INIT(= 0); /* value of p_mco used when
allocating ScreenLinesC[] */
/* Only used for euc-jp: Second byte of a character that starts with 0x8e.
* These are single-width. */

View File

@ -391,6 +391,8 @@ typedef struct Gui
PangoContext *text_context; /* the context used for all text */
PangoFont *ascii_font; /* cached font for ASCII strings */
PangoGlyphString *ascii_glyphs; /* cached code point -> glyph map */
# endif
# ifdef FEAT_GUI_TABLINE
GtkWidget *tabline; /* tab pages line handle */
# endif

View File

@ -61,7 +61,7 @@ general_beval_cb(beval, state)
++textlock;
vim_free(result);
result = eval_to_string(p_bexpr, NULL);
result = eval_to_string(p_bexpr, NULL, TRUE);
if (use_sandbox)
--sandbox;

View File

@ -3187,6 +3187,10 @@ on_select_tab(
}
}
#ifndef HAVE_GTK2
static int showing_tabline = 0;
#endif
/*
* Show or hide the tabline.
*/
@ -3196,11 +3200,19 @@ gui_mch_show_tabline(int showit)
if (gui.tabline == NULL)
return;
#ifdef HAVE_GTK2
/* gtk_notebook_get_show_tabs does not exist in gtk+-1.2.10 */
if (!showit != !gtk_notebook_get_show_tabs(GTK_NOTEBOOK(gui.tabline)))
#else
if (!showit != !showing_tabline)
#endif
{
/* Note: this may cause a resize event */
gtk_notebook_set_show_tabs(GTK_NOTEBOOK(gui.tabline), showit);
update_window_manager_hints();
#ifndef HAVE_GTK2
showing_tabline = showit;
#endif
}
}
@ -3211,7 +3223,13 @@ gui_mch_show_tabline(int showit)
gui_mch_showing_tabline(void)
{
return gui.tabline != NULL
&& gtk_notebook_get_show_tabs(GTK_NOTEBOOK(gui.tabline));
#ifdef HAVE_GTK2
/* gtk_notebook_get_show_tabs does not exist in gtk+-1.2.10 */
&& gtk_notebook_get_show_tabs(GTK_NOTEBOOK(gui.tabline))
#else
&& showing_tabline
#endif
;
}
/*
@ -4456,7 +4474,9 @@ gui_mch_font_dialog(char_u *oldval)
if (gui.fontname != NULL)
{
fontname = vim_strsave(gui.fontname);
/* Apparently some font names include a comma, need to escape that,
* because in 'guifont' it separates names. */
fontname = vim_strsave_escaped(gui.fontname, (char_u *)",");
g_free(gui.fontname);
gui.fontname = NULL;
}
@ -4526,11 +4546,19 @@ gui_mch_font_dialog(char_u *oldval)
GTK_FONT_SELECTION_DIALOG(dialog));
if (name != NULL)
{
if (input_conv.vc_type != CONV_NONE)
fontname = string_convert(&input_conv, (char_u *)name, NULL);
else
fontname = vim_strsave((char_u *)name);
char_u *p;
/* Apparently some font names include a comma, need to escape
* that, because in 'guifont' it separates names. */
p = vim_strsave_escaped((char_u *)name, (char_u *)",");
g_free(name);
if (input_conv.vc_type != CONV_NONE)
{
fontname = string_convert(&input_conv, p, NULL);
vim_free(p);
}
else
fontname = p;
}
}

View File

@ -2025,12 +2025,26 @@ gui_mch_draw_string(
int clen; /* string length up to composing char */
int cells; /* cell width of string up to composing char */
int cw; /* width of current cell */
int c;
int xtra;
cells = 0;
for (clen = 0; i < len; )
{
unicodebuf[clen] = utf_ptr2char(text + i);
cw = utf_char2cells(unicodebuf[clen]);
c = utf_ptr2char(text + i);
if (c >= 0x10000)
{
/* Turn into UTF-16 encoding. */
unicodebuf[clen] = ((c - 0x10000) >> 10) + 0xD800;
unicodebuf[clen + 1] = ((c - 0x10000) & 0x3ff) + 0xDC00;
xtra = 1;
}
else
{
unicodebuf[clen] = c;
xtra = 0;
}
cw = utf_char2cells(c);
if (cw > 2) /* don't use 4 for unprintable char */
cw = 1;
if (unicodepdy != NULL)
@ -2039,10 +2053,12 @@ gui_mch_draw_string(
* when the font uses different widths (e.g., bold character
* is wider). */
unicodepdy[clen] = cw * gui.char_width;
if (xtra == 1)
unicodepdy[clen + 1] = cw * gui.char_width;
}
cells += cw;
i += utfc_ptr2len_len(text + i, len - i);
++clen;
clen += xtra + 1;
}
ExtTextOutW(s_hdc, TEXT_X(col), TEXT_Y(row),
foptions, pcliprect, unicodebuf, clen, unicodepdy);

View File

@ -22,7 +22,7 @@
# include <sys/wait.h>
#else
/* not UNIX, must be WIN32 */
# include <io.h>
# include "vimio.h"
# include <fcntl.h>
# include <process.h>
# define STDIN_FILENO 0

View File

@ -1249,7 +1249,7 @@ vim_eval(void *data, int argc, Scheme_Object **argv)
expr = SCHEME_STR_VAL(GUARANTEE_STRING(prim->name, 0));
str = (char *)eval_to_string((char_u *)expr, NULL);
str = (char *)eval_to_string((char_u *)expr, NULL, TRUE);
if (str == NULL)
raise_vim_exn(_("invalid expression"));

View File

@ -368,7 +368,7 @@ CVim::Eval(BSTR expr, BSTR *result)
/* Evaluate the expression */
++emsg_skip;
str = (char *)eval_to_string((char_u *)buffer, NULL);
str = (char *)eval_to_string((char_u *)buffer, NULL, TRUE);
--emsg_skip;
vim_free(buffer);
if (str == NULL)

View File

@ -427,9 +427,10 @@ msg_split(s, attr)
* work properly.
*/
char_u *
eval_to_string(arg, nextcmd)
eval_to_string(arg, nextcmd, dolist)
char_u *arg;
char_u **nextcmd;
int dolist;
{
return NULL;
}
@ -827,7 +828,7 @@ Eval(str)
PREINIT:
char_u *value;
PPCODE:
value = eval_to_string((char_u *)str, (char_u**)0);
value = eval_to_string((char_u *)str, (char_u **)0, TRUE);
if (value == NULL)
{
XPUSHs(sv_2mortal(newSViv(0)));

View File

@ -519,7 +519,7 @@ static VALUE vim_command(VALUE self, VALUE str)
static VALUE vim_evaluate(VALUE self, VALUE str)
{
#ifdef FEAT_EVAL
char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL);
char_u *value = eval_to_string((char_u *)STR2CSTR(str), NULL, TRUE);
if (value)
{

View File

@ -12,7 +12,7 @@
#ifdef WIN32
# include <stdio.h>
# include <fcntl.h>
# include <io.h>
# include "vimio.h"
# include <process.h>
# include <string.h>
# include <assert.h>

View File

@ -1407,7 +1407,7 @@ tclvimexpr(interp, objc, objv, objn)
#ifdef FEAT_EVAL
expr = Tcl_GetStringFromObj(objv[objn], NULL);
str = (char *)eval_to_string((char_u *)expr, NULL);
str = (char *)eval_to_string((char_u *)expr, NULL, TRUE);
if (str == NULL)
Tcl_SetResult(interp, _("invalid expression"), TCL_STATIC);
else

View File

@ -8,7 +8,7 @@
*/
#if defined(MSDOS) || defined(WIN32) || defined(_WIN64)
# include <io.h> /* for close() and dup() */
# include "vimio.h" /* for close() and dup() */
#endif
#define EXTERN
@ -3602,7 +3602,7 @@ eval_client_expr_to_string(expr)
redir_off = 0;
++emsg_skip;
res = eval_to_string(expr, NULL);
res = eval_to_string(expr, NULL, TRUE);
debug_break_level = save_dbl;
redir_off = save_ro;

View File

@ -1486,55 +1486,59 @@ utf_composinglike(p1, p2)
#endif
/*
* Convert a UTF-8 byte string to a wide chararacter. Also get up to two
* Convert a UTF-8 byte string to a wide chararacter. Also get up to MAX_MCO
* composing characters.
*/
int
utfc_ptr2char(p, p1, p2)
utfc_ptr2char(p, pcc)
char_u *p;
int *p1; /* return: first composing char or 0 */
int *p2; /* return: second composing char or 0 */
int *pcc; /* return: composing chars, last one is 0 */
{
int len;
int c;
int cc;
int i = 0;
c = utf_ptr2char(p);
len = utf_ptr2len(p);
/* Only accept a composing char when the first char isn't illegal. */
if ((len > 1 || *p < 0x80)
&& p[len] >= 0x80
&& UTF_COMPOSINGLIKE(p, p + len))
{
*p1 = utf_ptr2char(p + len);
len += utf_ptr2len(p + len);
if (p[len] >= 0x80 && utf_iscomposing(cc = utf_ptr2char(p + len)))
*p2 = cc;
else
*p2 = 0;
}
else
{
*p1 = 0;
*p2 = 0;
cc = utf_ptr2char(p + len);
for (;;)
{
pcc[i++] = cc;
if (i == MAX_MCO)
break;
len += utf_ptr2len(p + len);
if (p[len] < 0x80 || !utf_iscomposing(cc = utf_ptr2char(p + len)))
break;
}
}
if (i < MAX_MCO) /* last composing char must be 0 */
pcc[i] = 0;
return c;
}
/*
* Convert a UTF-8 byte string to a wide chararacter. Also get up to two
* Convert a UTF-8 byte string to a wide chararacter. Also get up to MAX_MCO
* composing characters. Use no more than p[maxlen].
*/
int
utfc_ptr2char_len(p, p1, p2, maxlen)
utfc_ptr2char_len(p, pcc, maxlen)
char_u *p;
int *p1; /* return: first composing char or 0 */
int *p2; /* return: second composing char or 0 */
int *pcc; /* return: composing chars, last one is 0 */
int maxlen;
{
int len;
int c;
int cc;
int i = 0;
c = utf_ptr2char(p);
len = utf_ptr2len_len(p, maxlen);
@ -1544,20 +1548,23 @@ utfc_ptr2char_len(p, p1, p2, maxlen)
&& p[len] >= 0x80
&& UTF_COMPOSINGLIKE(p, p + len))
{
*p1 = utf_ptr2char(p + len);
len += utf_ptr2len_len(p + len, maxlen - len);
if (len < maxlen
&& p[len] >= 0x80
&& utf_iscomposing(cc = utf_ptr2char(p + len)))
*p2 = cc;
else
*p2 = 0;
}
else
{
*p1 = 0;
*p2 = 0;
cc = utf_ptr2char(p + len);
for (;;)
{
pcc[i++] = cc;
if (i == MAX_MCO)
break;
len += utf_ptr2len_len(p + len, maxlen - len);
if (len >= maxlen
|| p[len] < 0x80
|| !utf_iscomposing(cc = utf_ptr2char(p + len)))
break;
}
}
if (i < MAX_MCO) /* last composing char must be 0 */
pcc[i] = 0;
return c;
}
@ -1573,13 +1580,14 @@ utfc_char2bytes(off, buf)
char_u *buf;
{
int len;
int i;
len = utf_char2bytes(ScreenLinesUC[off], buf);
if (ScreenLinesC1[off] != 0)
for (i = 0; i < Screen_mco; ++i)
{
len += utf_char2bytes(ScreenLinesC1[off], buf + len);
if (ScreenLinesC2[off] != 0)
len += utf_char2bytes(ScreenLinesC2[off], buf + len);
if (ScreenLinesC[i][off] == 0)
break;
len += utf_char2bytes(ScreenLinesC[i][off], buf + len);
}
return len;
}

View File

@ -33,7 +33,7 @@
*/
#if defined MSDOS || defined(WIN32) || defined(_WIN64)
# include <io.h> /* for lseek(), must be before vim.h */
# include "vimio.h" /* for lseek(), must be before vim.h */
#endif
#include "vim.h"

View File

@ -43,7 +43,7 @@
*/
#if defined(MSDOS) || defined(WIN32) || defined(_WIN64)
# include <io.h>
# include "vimio.h"
#endif
#include "vim.h"

View File

@ -293,10 +293,12 @@ trunc_string(s, buf, room)
else if (enc_utf8)
{
/* For UTF-8 we can go backwards easily. */
i = (int)STRLEN(s);
half = i = (int)STRLEN(s);
for (;;)
{
half = i - (*mb_head_off)(s, s + i - 1) - 1;
do
half = half - (*mb_head_off)(s, s + half - 1) - 1;
while (utf_iscomposing(utf_ptr2char(s + half)) && half > 0);
n = ptr2cells(s + half);
if (len + n > room)
break;
@ -1723,7 +1725,7 @@ msg_puts_long_attr(longstr, attr)
char_u *longstr;
int attr;
{
msg_puts_long_len_attr(longstr, (int)strlen((char *)longstr), attr);
msg_puts_long_len_attr(longstr, (int)STRLEN(longstr), attr);
}
void

View File

@ -2177,11 +2177,11 @@ del_bytes(count, fixpos, use_delcombine)
if (p_deco && use_delcombine && enc_utf8
&& utfc_ptr2len(oldp + col) >= count)
{
int c1, c2;
int cc[MAX_MCO];
int n;
(void)utfc_ptr2char(oldp + col, &c1, &c2);
if (c1 != NUL)
(void)utfc_ptr2char(oldp + col, cc);
if (cc[0] != NUL)
{
/* Find the last composing char, there can be several. */
n = col;
@ -8056,6 +8056,7 @@ fast_breakcheck()
/*
* Expand wildcards. Calls gen_expand_wildcards() and removes files matching
* 'wildignore'.
* Returns OK or FAIL.
*/
int
expand_wildcards(num_pat, pat, num_file, file, flags)
@ -8898,7 +8899,7 @@ expand_backtick(gap, pat, flags)
#ifdef FEAT_EVAL
if (*cmd == '=') /* `={expr}`: Expand expression */
buffer = eval_to_string(cmd + 1, &p);
buffer = eval_to_string(cmd + 1, &p, TRUE);
else
#endif
buffer = get_cmd_output(cmd, NULL,

12
src/msvcsetup.bat Normal file
View File

@ -0,0 +1,12 @@
rem To be used on MS-Windows when using the Visual C++ Toolkit 2003
rem See INSTALLpc.txt for information.
set PATH=%SystemRoot%\Microsoft.NET\Framework\v1.1.4322;%PATH%
call "%VCToolkitInstallDir%vcvars32.bat"
set MSVCVer=7.1
rem The platform SDK can be installed elsewhere, adjust the path.
call "%ProgramFiles%\Microsoft Platform SDK\SetEnv.Cmd"
rem call "e:\Microsoft Platform SDK\SetEnv.Cmd"
set LIB=%ProgramFiles%\Microsoft Visual Studio .NET 2003\Vc7\lib;%LIB%

View File

@ -26,7 +26,7 @@
# ifdef DEBUG
# include <tchar.h> /* for _T definition for TRACEn macros */
# endif
# include <io.h>
# include "vimio.h"
/* WinSock API is separated from C API, thus we can't use read(), write(),
* errno... */
# define sock_errno WSAGetLastError()

View File

@ -5691,9 +5691,9 @@ nv_right(cap)
|| (PAST_LINE && *ml_get_cursor() == NUL))
{
/*
* <Space> wraps to next line if 'whichwrap' bit 1 set.
* 'l' wraps to next line if 'whichwrap' bit 2 set.
* CURS_RIGHT wraps to next line if 'whichwrap' bit 3 set
* <Space> wraps to next line if 'whichwrap' has 's'.
* 'l' wraps to next line if 'whichwrap' has 'l'.
* CURS_RIGHT wraps to next line if 'whichwrap' has '>'.
*/
if ( ((cap->cmdchar == ' '
&& vim_strchr(p_ww, 's') != NULL)
@ -5706,8 +5706,7 @@ nv_right(cap)
/* When deleting we also count the NL as a character.
* Set cap->oap->inclusive when last char in the line is
* included, move to next line after that */
if ( (cap->oap->op_type == OP_DELETE
|| cap->oap->op_type == OP_CHANGE)
if ( cap->oap->op_type != OP_NOP
&& !cap->oap->inclusive
&& !lineempty(curwin->w_cursor.lnum))
cap->oap->inclusive = TRUE;

View File

@ -780,7 +780,7 @@ get_expr_line()
if (expr_copy == NULL)
return NULL;
rv = eval_to_string(expr_copy, NULL);
rv = eval_to_string(expr_copy, NULL, TRUE);
vim_free(expr_copy);
return rv;
}

View File

@ -414,6 +414,8 @@ struct vimoption
#define P_NFNAME 0x200000L/* only normal file name chars allowed */
#define P_INSECURE 0x400000L/* option was set from a modeline */
#define ISK_LATIN1 (char_u *)"@,48-57,_,192-255"
/*
* options[] is initialized here.
* The order of the options MUST be alphabetic for ":set all" and findoption().
@ -848,8 +850,7 @@ static struct vimoption
#else
(char_u *)NULL, PV_NONE,
#endif
{(char_u *)FALSE, (char_u *)0L}
},
{(char_u *)FALSE, (char_u *)0L}},
{"dictionary", "dict", P_STRING|P_EXPAND|P_VI_DEF|P_COMMA|P_NODUP,
#ifdef FEAT_INS_EXPAND
(char_u *)&p_dict, PV_DICT,
@ -1423,7 +1424,7 @@ static struct vimoption
# if defined(MSDOS) || defined(MSWIN) || defined(OS2)
(char_u *)"@,48-57,_,128-167,224-235"
# else
(char_u *)"@,48-57,_,192-255"
ISK_LATIN1
# endif
#endif
}},
@ -1602,6 +1603,13 @@ static struct vimoption
{"matchtime", "mat", P_NUM|P_VI_DEF,
(char_u *)&p_mat, PV_NONE,
{(char_u *)5L, (char_u *)0L}},
{"maxcombine", "mco", P_NUM|P_VI_DEF,
#ifdef FEAT_MBYTE
(char_u *)&p_mco, PV_NONE,
#else
(char_u *)NULL, PV_NONE,
#endif
{(char_u *)2, (char_u *)0L}},
{"maxfuncdepth", "mfd", P_NUM|P_VI_DEF,
#ifdef FEAT_EVAL
(char_u *)&p_mfd, PV_NONE,
@ -3198,9 +3206,17 @@ set_init_1()
# endif
)
{
/* Adjust the default for 'isprint' to match latin1. */
/* Adjust the default for 'isprint' and 'iskeyword' to match
* latin1. Also set the defaults for when 'nocompatible' is
* set. */
set_string_option_direct((char_u *)"isp", -1,
(char_u *)"@,161-255", OPT_FREE, SID_NONE);
set_string_option_direct((char_u *)"isk", -1,
ISK_LATIN1, OPT_FREE, SID_NONE);
opt_idx = findoption((char_u *)"isp");
options[opt_idx].def_val[VIM_DEFAULT] = (char_u *)"@,161-255";
opt_idx = findoption((char_u *)"isk");
options[opt_idx].def_val[VIM_DEFAULT] = ISK_LATIN1;
(void)init_chartab();
}
#endif
@ -7564,6 +7580,18 @@ set_num_option(opt_idx, varp, value, errbuf, errbuflen, opt_flags)
}
#endif /* FEAT_FOLDING */
#ifdef FEAT_MBYTE
/* 'maxcombine' */
else if (pp == &p_mco)
{
if (p_mco > MAX_MCO)
p_mco = MAX_MCO;
else if (p_mco < 0)
p_mco = 0;
screenclear(); /* will re-allocate the screen */
}
#endif
else if (pp == &curbuf->b_p_iminsert)
{
if (curbuf->b_p_iminsert < 0 || curbuf->b_p_iminsert > B_IMODE_LAST)

View File

@ -583,6 +583,9 @@ EXTERN char_u *p_mef; /* 'makeef' */
EXTERN char_u *p_mp; /* 'makeprg' */
#endif
EXTERN long p_mat; /* 'matchtime' */
#ifdef FEAT_MBYTE
EXTERN long p_mco; /* 'maxcombine' */
#endif
#ifdef FEAT_EVAL
EXTERN long p_mfd; /* 'maxfuncdepth' */
#endif

View File

@ -21,7 +21,7 @@
* Some functions are also used for Win16 (MS-Windows 3.1).
*/
#include <io.h>
#include "vimio.h"
#include "vim.h"
#include <conio.h>

View File

@ -22,7 +22,7 @@
# endif
#endif
#include <io.h>
#include "vimio.h"
#include "vim.h"
#ifdef HAVE_FCNTL_H

View File

@ -20,7 +20,7 @@
# pragma warn -obs
#endif
#include <io.h>
#include "vimio.h"
#include "vim.h"
#include <fcntl.h>

View File

@ -20,7 +20,7 @@
* Roger Knobbe <rogerk@wonderware.com> did the initial port of Vim 3.0.
*/
#include <io.h>
#include "vimio.h"
#include "vim.h"
#ifdef FEAT_MZSCHEME
@ -1926,6 +1926,7 @@ RestoreConsoleBuffer(
return TRUE;
}
#define FEAT_RESTORE_ORIG_SCREEN
#ifdef FEAT_RESTORE_ORIG_SCREEN
static ConsoleBuffer g_cbOrig = { 0 };
#endif

View File

@ -17,7 +17,7 @@ void eval_patch __ARGS((char_u *origfile, char_u *difffile, char_u *outfile));
int eval_to_bool __ARGS((char_u *arg, int *error, char_u **nextcmd, int skip));
char_u *eval_to_string_skip __ARGS((char_u *arg, char_u **nextcmd, int skip));
int skip_expr __ARGS((char_u **pp));
char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd));
char_u *eval_to_string __ARGS((char_u *arg, char_u **nextcmd, int dolist));
char_u *eval_to_string_safe __ARGS((char_u *arg, char_u **nextcmd, int use_sandbox));
int eval_to_number __ARGS((char_u *expr));
list_T *eval_spell_expr __ARGS((char_u *badword, char_u *expr));

View File

@ -22,8 +22,8 @@ int mb_cptr2char_adv __ARGS((char_u **pp));
int arabic_combine __ARGS((int one, int two));
int arabic_maycombine __ARGS((int two));
int utf_composinglike __ARGS((char_u *p1, char_u *p2));
int utfc_ptr2char __ARGS((char_u *p, int *p1, int *p2));
int utfc_ptr2char_len __ARGS((char_u *p, int *p1, int *p2, int maxlen));
int utfc_ptr2char __ARGS((char_u *p, int *pcc));
int utfc_ptr2char_len __ARGS((char_u *p, int *pcc, int maxlen));
int utfc_char2bytes __ARGS((int off, char_u *buf));
int utf_ptr2len __ARGS((char_u *p));
int utf_byte2len __ARGS((int b));

View File

@ -16,6 +16,7 @@ void spell_suggest __ARGS((int count));
void ex_spellrepall __ARGS((exarg_T *eap));
void spell_suggest_list __ARGS((garray_T *gap, char_u *word, int maxcount, int need_cap, int interactive));
char_u *eval_soundfold __ARGS((char_u *word));
void ex_spellinfo __ARGS((exarg_T *eap));
void ex_spelldump __ARGS((exarg_T *eap));
void spell_dump_compl __ARGS((buf_T *buf, char_u *pat, int ic, int *dir, int dumpflags_arg));
char_u *spell_to_word_end __ARGS((char_u *start, buf_T *buf));

View File

@ -665,6 +665,9 @@ static char_u *regconcat __ARGS((int *flagp));
static char_u *regpiece __ARGS((int *));
static char_u *regatom __ARGS((int *));
static char_u *regnode __ARGS((int));
#ifdef FEAT_MBYTE
static int use_multibytecode __ARGS((int c));
#endif
static int prog_magic_wrong __ARGS((void));
static char_u *regnext __ARGS((char_u *));
static void regc __ARGS((int b));
@ -1662,6 +1665,15 @@ regatom(flagp)
p = vim_strchr(classchars, no_Magic(c));
if (p == NULL)
EMSG_RET_NULL(_("E63: invalid use of \\_"));
#ifdef FEAT_MBYTE
/* When '.' is followed by a composing char ignore the dot, so that
* the composing char is matched here. */
if (enc_utf8 && c == Magic('.') && utf_iscomposing(peekchr()))
{
c = getchr();
goto do_multibyte;
}
#endif
ret = regnode(classcodes[p - classchars] + extra);
*flagp |= HASWIDTH | SIMPLE;
break;
@ -1921,7 +1933,12 @@ regatom(flagp)
EMSG_M_RET_NULL(
_("E678: Invalid character after %s%%[dxouU]"),
reg_magic == MAGIC_ALL);
ret = regnode(EXACTLY);
#ifdef FEAT_MBYTE
if (use_multibytecode(i))
ret = regnode(MULTIBYTECODE);
else
#endif
ret = regnode(EXACTLY);
if (i == 0)
regc(0x0a);
else
@ -2289,10 +2306,10 @@ collection:
#ifdef FEAT_MBYTE
/* A multi-byte character is handled as a separate atom if it's
* before a multi. */
if (has_mbyte && (*mb_char2len)(c) > 1
&& re_multi_type(peekchr()) != NOT_MULTI)
* before a multi and when it's a composing char. */
if (use_multibytecode(c))
{
do_multibyte:
ret = regnode(MULTIBYTECODE);
regmbc(c);
*flagp |= HASWIDTH | SIMPLE;
@ -2323,27 +2340,17 @@ collection:
regmbc(c);
if (enc_utf8)
{
int off;
int l;
/* Need to get composing character too, directly
* access regparse for that, because skipchr() skips
* over composing chars. */
ungetchr();
if (*regparse == '\\' && regparse[1] != NUL)
off = 1;
else
off = 0;
/* Need to get composing character too. */
for (;;)
{
l = utf_ptr2len(regparse + off);
if (!UTF_COMPOSINGLIKE(regparse + off,
regparse + off + l))
l = utf_ptr2len(regparse);
if (!UTF_COMPOSINGLIKE(regparse, regparse + l))
break;
off += l;
regmbc(utf_ptr2char(regparse + off));
regmbc(utf_ptr2char(regparse));
skipchr();
}
skipchr();
}
}
else
@ -2364,6 +2371,21 @@ collection:
return ret;
}
#ifdef FEAT_MBYTE
/*
* Return TRUE if MULTIBYTECODE should be used instead of EXACTLY for
* character "c".
*/
static int
use_multibytecode(c)
int c;
{
return has_mbyte && (*mb_char2len)(c) > 1
&& (re_multi_type(peekchr()) != NOT_MULTI
|| (enc_utf8 && utf_iscomposing(c)));
}
#endif
/*
* emit a node
* Return pointer to generated code.
@ -2747,7 +2769,9 @@ skipchr()
if (regparse[prevchr_len] != NUL)
{
#ifdef FEAT_MBYTE
if (has_mbyte)
if (enc_utf8)
prevchr_len += utf_char2len(mb_ptr2char(regparse + prevchr_len));
else if (has_mbyte)
prevchr_len += (*mb_ptr2len)(regparse + prevchr_len);
else
#endif
@ -4229,6 +4253,7 @@ regmatch(scan)
{
int i, len;
char_u *opnd;
int opndc, inpc;
opnd = OPERAND(scan);
/* Safety check (just in case 'encoding' was changed since
@ -4238,12 +4263,37 @@ regmatch(scan)
status = RA_NOMATCH;
break;
}
for (i = 0; i < len; ++i)
if (opnd[i] != reginput[i])
if (enc_utf8)
opndc = mb_ptr2char(opnd);
if (enc_utf8 && utf_iscomposing(opndc))
{
/* When only a composing char is given match at any
* position where that composing char appears. */
status = RA_NOMATCH;
for (i = 0; reginput[i] != NUL; i += utf_char2len(inpc))
{
status = RA_NOMATCH;
break;
inpc = mb_ptr2char(reginput + i);
if (!utf_iscomposing(inpc))
{
if (i > 0)
break;
}
else if (opndc == inpc)
{
/* Include all following composing chars. */
len = i + mb_ptr2len(reginput + i);
status = RA_MATCH;
break;
}
}
}
else
for (i = 0; i < len; ++i)
if (opnd[i] != reginput[i])
{
status = RA_NOMATCH;
break;
}
reginput += len;
}
else
@ -6745,7 +6795,7 @@ vim_regsub_both(source, dest, copy, magic, backslash)
save_ireg_ic = ireg_ic;
can_f_submatch = TRUE;
eval_result = eval_to_string(source + 2, NULL);
eval_result = eval_to_string(source + 2, NULL, TRUE);
if (eval_result != NULL)
{
for (s = eval_result; *s != NUL; mb_ptr_adv(s))

View File

@ -27,7 +27,7 @@
* ScreenLinesUC[]. ScreenLines[] contains the first byte only. For an ASCII
* character without composing chars ScreenLinesUC[] will be 0. When the
* character occupies two display cells the next byte in ScreenLines[] is 0.
* ScreenLinesC1[] and ScreenLinesC2[] contain up to two composing characters
* ScreenLinesC[][] contain up to 'maxcombine' composing characters
* (drawn on top of the first character). They are 0 when not used.
* ScreenLines2[] is only used for euc-jp to store the second byte if the
* first byte is 0x8e (single-width character).
@ -2187,7 +2187,8 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
if (has_mbyte)
{
int cells;
int u8c, u8c_c1, u8c_c2;
int u8c, u8cc[MAX_MCO];
int i;
int idx;
int c_len;
char_u *p;
@ -2217,8 +2218,8 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
ScreenLines[idx] = *p;
if (enc_utf8)
{
u8c = utfc_ptr2char(p, &u8c_c1, &u8c_c2);
if (*p < 0x80 && u8c_c1 == 0 && u8c_c2 == 0)
u8c = utfc_ptr2char(p, u8cc);
if (*p < 0x80 && u8cc[0] == 0)
{
ScreenLinesUC[idx] = 0;
#ifdef FEAT_ARABIC
@ -2231,7 +2232,8 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
if (p_arshape && !p_tbidi && ARABIC_CHAR(u8c))
{
/* Do Arabic shaping. */
int pc, pc1, nc, dummy;
int pc, pc1, nc;
int pcc[MAX_MCO];
int firstbyte = *p;
/* The idea of what is the previous and next
@ -2241,16 +2243,17 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
pc = prev_c;
pc1 = prev_c1;
nc = utf_ptr2char(p + c_len);
prev_c1 = u8c_c1;
prev_c1 = u8cc[0];
}
else
{
pc = utfc_ptr2char(p + c_len, &pc1, &dummy);
pc = utfc_ptr2char(p + c_len, pcc);
nc = prev_c;
pc1 = pcc[0];
}
prev_c = u8c;
u8c = arabic_shape(u8c, &firstbyte, &u8c_c1,
u8c = arabic_shape(u8c, &firstbyte, &u8cc[0],
pc, pc1, nc);
ScreenLines[idx] = firstbyte;
}
@ -2262,8 +2265,12 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
ScreenLinesUC[idx] = (cells == 2) ? 0xff1f : (int)'?';
else
ScreenLinesUC[idx] = u8c;
ScreenLinesC1[idx] = u8c_c1;
ScreenLinesC2[idx] = u8c_c2;
for (i = 0; i < Screen_mco; ++i)
{
ScreenLinesC[i][idx] = u8cc[i];
if (u8cc[i] == 0)
break;
}
}
if (cells > 1)
ScreenLines[idx + 1] = 0;
@ -2315,8 +2322,7 @@ fold_line(wp, fold_count, foldinfo, lnum, row)
if (fill_fold >= 0x80)
{
ScreenLinesUC[off + col] = fill_fold;
ScreenLinesC1[off + col] = 0;
ScreenLinesC2[off + col] = 0;
ScreenLinesC[0][off + col] = 0;
}
else
ScreenLinesUC[off + col] = 0;
@ -2561,8 +2567,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
int mb_l = 1; /* multi-byte byte length */
int mb_c = 0; /* decoded multi-byte character */
int mb_utf8 = FALSE; /* screen char is UTF-8 char */
int u8c_c1 = 0; /* first composing UTF-8 char */
int u8c_c2 = 0; /* second composing UTF-8 char */
int u8cc[MAX_MCO]; /* composing UTF-8 chars */
#endif
#ifdef FEAT_DIFF
int filler_lines; /* nr of filler lines to be drawn */
@ -2581,6 +2586,8 @@ win_line(wp, lnum, startrow, endrow, nochange)
#endif
#ifdef FEAT_SEARCH_EXTRA
match_T *shl; /* points to search_hl or match_hl */
#endif
#if defined(FEAT_SEARCH_EXTRA) || defined(FEAT_MBYTE)
int i;
#endif
#ifdef FEAT_ARABIC
@ -3433,7 +3440,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (enc_utf8 && (*mb_char2len)(c) > 1)
{
mb_utf8 = TRUE;
u8c_c1 = u8c_c2 = 0;
u8cc[0] = 0;
}
else
mb_utf8 = FALSE;
@ -3456,7 +3463,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
mb_l = 1;
else if (mb_l > 1)
{
mb_c = utfc_ptr2char(p_extra, &u8c_c1, &u8c_c2);
mb_c = utfc_ptr2char(p_extra, u8cc);
mb_utf8 = TRUE;
}
}
@ -3520,7 +3527,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
mb_utf8 = FALSE;
if (mb_l > 1)
{
mb_c = utfc_ptr2char(ptr, &u8c_c1, &u8c_c2);
mb_c = utfc_ptr2char(ptr, u8cc);
/* Overlong encoded ASCII or ASCII with composing char
* is displayed normally, except a NUL. */
if (mb_c < 0x80)
@ -3531,8 +3538,9 @@ win_line(wp, lnum, startrow, endrow, nochange)
* Draw it as a space with a composing char. */
if (utf_iscomposing(mb_c))
{
u8c_c2 = u8c_c1;
u8c_c1 = mb_c;
for (i = Screen_mco - 1; i > 0; --i)
u8cc[i] = u8cc[i - 1];
u8cc[0] = mb_c;
mb_c = ' ';
}
}
@ -3549,10 +3557,10 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (mb_c < 0x10000)
{
transchar_hex(extra, mb_c);
#ifdef FEAT_RIGHTLEFT
# ifdef FEAT_RIGHTLEFT
if (wp->w_p_rl) /* reverse */
rl_mirror(extra);
#endif
# endif
}
else if (utf_char2cells(mb_c) != 2)
STRCPY(extra, "?");
@ -3579,7 +3587,8 @@ win_line(wp, lnum, startrow, endrow, nochange)
else if (p_arshape && !p_tbidi && ARABIC_CHAR(mb_c))
{
/* Do Arabic shaping. */
int pc, pc1, nc, dummy;
int pc, pc1, nc;
int pcc[MAX_MCO];
/* The idea of what is the previous and next
* character depends on 'rightleft'. */
@ -3588,16 +3597,17 @@ win_line(wp, lnum, startrow, endrow, nochange)
pc = prev_c;
pc1 = prev_c1;
nc = utf_ptr2char(ptr + mb_l);
prev_c1 = u8c_c1;
prev_c1 = u8cc[0];
}
else
{
pc = utfc_ptr2char(ptr + mb_l, &pc1, &dummy);
pc = utfc_ptr2char(ptr + mb_l, pcc);
nc = prev_c;
pc1 = pcc[0];
}
prev_c = mb_c;
mb_c = arabic_shape(mb_c, &c, &u8c_c1, pc, pc1, nc);
mb_c = arabic_shape(mb_c, &c, &u8cc[0], pc, pc1, nc);
}
else
prev_c = mb_c;
@ -3704,7 +3714,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (enc_utf8 && (*mb_char2len)(c) > 1)
{
mb_utf8 = TRUE;
u8c_c1 = u8c_c2 = 0;
u8cc[0] = 0;
}
else
mb_utf8 = FALSE;
@ -3866,7 +3876,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (enc_utf8 && (*mb_char2len)(c) > 1)
{
mb_utf8 = TRUE;
u8c_c1 = u8c_c2 = 0;
u8cc[0] = 0;
}
else
mb_utf8 = FALSE;
@ -3904,7 +3914,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (enc_utf8 && (*mb_char2len)(c) > 1)
{
mb_utf8 = TRUE;
u8c_c1 = u8c_c2 = 0;
u8cc[0] = 0;
}
#endif
}
@ -3978,7 +3988,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (enc_utf8 && (*mb_char2len)(c) > 1)
{
mb_utf8 = TRUE;
u8c_c1 = u8c_c2 = 0;
u8cc[0] = 0;
}
else
mb_utf8 = FALSE; /* don't draw as UTF-8 */
@ -4117,7 +4127,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (enc_utf8 && (*mb_char2len)(c) > 1)
{
mb_utf8 = TRUE;
u8c_c1 = u8c_c2 = 0;
u8cc[0] = 0;
}
else
mb_utf8 = FALSE; /* don't draw as UTF-8 */
@ -4247,7 +4257,7 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (enc_utf8 && (*mb_char2len)(c) > 1)
{
mb_utf8 = TRUE;
u8c_c1 = u8c_c2 = 0;
u8cc[0] = 0;
}
else
mb_utf8 = FALSE;
@ -4281,8 +4291,12 @@ win_line(wp, lnum, startrow, endrow, nochange)
if (mb_utf8)
{
ScreenLinesUC[off] = mb_c;
ScreenLinesC1[off] = u8c_c1;
ScreenLinesC2[off] = u8c_c2;
for (i = 0; i < Screen_mco; ++i)
{
ScreenLinesC[i][off] = u8cc[i];
if (u8cc[i] == 0)
break;
}
}
else
ScreenLinesUC[off] = 0;
@ -4512,6 +4526,30 @@ win_line(wp, lnum, startrow, endrow, nochange)
return row;
}
#ifdef FEAT_MBYTE
static int comp_char_differs __ARGS((int, int));
/*
* Return if the composing characters at "off_from" and "off_to" differ.
*/
static int
comp_char_differs(off_from, off_to)
int off_from;
int off_to;
{
int i;
for (i = 0; i < Screen_mco; ++i)
{
if (ScreenLinesC[i][off_from] != ScreenLinesC[i][off_to])
return TRUE;
if (ScreenLinesC[i][off_from] == 0)
break;
}
return FALSE;
}
#endif
/*
* Check whether the given character needs redrawing:
* - the (first byte of the) character is different
@ -4538,10 +4576,7 @@ char_needs_redraw(off_from, off_to, cols)
|| (enc_utf8
&& (ScreenLinesUC[off_from] != ScreenLinesUC[off_to]
|| (ScreenLinesUC[off_from] != 0
&& (ScreenLinesC1[off_from]
!= ScreenLinesC1[off_to]
|| ScreenLinesC2[off_from]
!= ScreenLinesC2[off_to]))))
&& comp_char_differs(off_from, off_to))))
#endif
))
return TRUE;
@ -4753,8 +4788,10 @@ screen_line(row, coloff, endcol, clear_width
ScreenLinesUC[off_to] = ScreenLinesUC[off_from];
if (ScreenLinesUC[off_from] != 0)
{
ScreenLinesC1[off_to] = ScreenLinesC1[off_from];
ScreenLinesC2[off_to] = ScreenLinesC2[off_from];
int i;
for (i = 0; i < Screen_mco; ++i)
ScreenLinesC[i][off_to] = ScreenLinesC[i][off_from];
}
}
if (char_cells == 2)
@ -4892,8 +4929,8 @@ screen_line(row, coloff, endcol, clear_width
c = fillchar_vsep(&hl);
if (ScreenLines[off_to] != c
# ifdef FEAT_MBYTE
|| (enc_utf8
&& ScreenLinesUC[off_to] != (c >= 0x80 ? c : 0))
|| (enc_utf8 && (int)ScreenLinesUC[off_to]
!= (c >= 0x80 ? c : 0))
# endif
|| ScreenAttrs[off_to] != hl)
{
@ -4905,8 +4942,7 @@ screen_line(row, coloff, endcol, clear_width
if (c >= 0x80)
{
ScreenLinesUC[off_to] = c;
ScreenLinesC1[off_to] = 0;
ScreenLinesC2[off_to] = 0;
ScreenLinesC[0][off_to] = 0;
}
else
ScreenLinesUC[off_to] = 0;
@ -5553,7 +5589,7 @@ get_keymap_str(wp, buf, len)
curwin = wp;
STRCPY(buf, "b:keymap_name"); /* must be writable */
++emsg_skip;
s = p = eval_to_string(buf, NULL);
s = p = eval_to_string(buf, NULL, FALSE);
--emsg_skip;
curbuf = old_curbuf;
curwin = old_curwin;
@ -5805,6 +5841,31 @@ screen_getbytes(row, col, bytes, attrp)
}
}
#ifdef FEAT_MBYTE
static int screen_comp_differs __ARGS((int, int*));
/*
* Return TRUE if composing characters for screen posn "off" differs from
* composing characters in "u8cc".
*/
static int
screen_comp_differs(off, u8cc)
int off;
int *u8cc;
{
int i;
for (i = 0; i < Screen_mco; ++i)
{
if (ScreenLinesC[i][off] != (u8char_T)u8cc[i])
return TRUE;
if (u8cc[i] == 0)
break;
}
return FALSE;
}
#endif
/*
* Put string '*text' on the screen at position 'row' and 'col', with
* attributes 'attr', and update ScreenLines[] and ScreenAttrs[].
@ -5840,12 +5901,12 @@ screen_puts_len(text, len, row, col, attr)
int mbyte_blen = 1;
int mbyte_cells = 1;
int u8c = 0;
int u8c_c1 = 0;
int u8c_c2 = 0;
int u8cc[MAX_MCO];
int clear_next_cell = FALSE;
# ifdef FEAT_ARABIC
int prev_c = 0; /* previous Arabic character */
int pc, nc, nc1, dummy;
int pc, nc, nc1;
int pcc[MAX_MCO];
# endif
#endif
@ -5872,10 +5933,10 @@ screen_puts_len(text, len, row, col, attr)
else /* enc_utf8 */
{
if (len >= 0)
u8c = utfc_ptr2char_len(ptr, &u8c_c1, &u8c_c2,
u8c = utfc_ptr2char_len(ptr, u8cc,
(int)((text + len) - ptr));
else
u8c = utfc_ptr2char(ptr, &u8c_c1, &u8c_c2);
u8c = utfc_ptr2char(ptr, u8cc);
mbyte_cells = utf_char2cells(u8c);
/* Non-BMP character: display as ? or fullwidth ?. */
if (u8c >= 0x10000)
@ -5895,10 +5956,13 @@ screen_puts_len(text, len, row, col, attr)
nc1 = NUL;
}
else
nc = utfc_ptr2char(ptr + mbyte_blen, &nc1, &dummy);
{
nc = utfc_ptr2char(ptr + mbyte_blen, pcc);
nc1 = pcc[0];
}
pc = prev_c;
prev_c = u8c;
u8c = arabic_shape(u8c, &c, &u8c_c1, nc, nc1, pc);
u8c = arabic_shape(u8c, &c, &u8cc[0], nc, nc1, pc);
}
else
prev_c = u8c;
@ -5915,10 +5979,8 @@ screen_puts_len(text, len, row, col, attr)
&& c == 0x8e
&& ScreenLines2[off] != ptr[1])
|| (enc_utf8
&& mbyte_blen > 1
&& (ScreenLinesUC[off] != u8c
|| ScreenLinesC1[off] != u8c_c1
|| ScreenLinesC2[off] != u8c_c2))
&& (ScreenLinesUC[off] != (u8char_T)u8c
|| screen_comp_differs(off, u8cc)))
#endif
|| ScreenAttrs[off] != attr
|| exmode_active
@ -5994,13 +6056,19 @@ screen_puts_len(text, len, row, col, attr)
#ifdef FEAT_MBYTE
if (enc_utf8)
{
if (c < 0x80 && u8c_c1 == 0 && u8c_c2 == 0)
if (c < 0x80 && u8cc[0] == 0)
ScreenLinesUC[off] = 0;
else
{
int i;
ScreenLinesUC[off] = u8c;
ScreenLinesC1[off] = u8c_c1;
ScreenLinesC2[off] = u8c_c2;
for (i = 0; i < Screen_mco; ++i)
{
ScreenLinesC[i][off] = u8cc[i];
if (u8cc[i] == 0)
break;
}
}
if (mbyte_cells == 2)
{
@ -6715,7 +6783,8 @@ screen_fill(start_row, end_row, start_col, end_col, c1, c2, attr)
{
if (ScreenLines[off] != c
#ifdef FEAT_MBYTE
|| (enc_utf8 && ScreenLinesUC[off] != (c >= 0x80 ? c : 0))
|| (enc_utf8 && (int)ScreenLinesUC[off]
!= (c >= 0x80 ? c : 0))
#endif
|| ScreenAttrs[off] != attr
#if defined(FEAT_GUI) || defined(UNIX)
@ -6755,8 +6824,7 @@ screen_fill(start_row, end_row, start_col, end_col, c1, c2, attr)
if (c >= 0x80)
{
ScreenLinesUC[off] = c;
ScreenLinesC1[off] = 0;
ScreenLinesC2[off] = 0;
ScreenLinesC[0][off] = 0;
}
else
ScreenLinesUC[off] = 0;
@ -6845,9 +6913,9 @@ screenalloc(clear)
schar_T *new_ScreenLines;
#ifdef FEAT_MBYTE
u8char_T *new_ScreenLinesUC = NULL;
u8char_T *new_ScreenLinesC1 = NULL;
u8char_T *new_ScreenLinesC2 = NULL;
u8char_T *new_ScreenLinesC[MAX_MCO];
schar_T *new_ScreenLines2 = NULL;
int i;
#endif
sattr_T *new_ScreenAttrs;
unsigned *new_LineOffset;
@ -6870,6 +6938,7 @@ screenalloc(clear)
#ifdef FEAT_MBYTE
&& enc_utf8 == (ScreenLinesUC != NULL)
&& (enc_dbcs == DBCS_JPNU) == (ScreenLines2 != NULL)
&& p_mco == Screen_mco
#endif
)
|| Rows == 0
@ -6907,13 +6976,13 @@ screenalloc(clear)
new_ScreenLines = (schar_T *)lalloc((long_u)(
(Rows + 1) * Columns * sizeof(schar_T)), FALSE);
#ifdef FEAT_MBYTE
vim_memset(new_ScreenLinesC, 0, sizeof(u8char_T) * MAX_MCO);
if (enc_utf8)
{
new_ScreenLinesUC = (u8char_T *)lalloc((long_u)(
(Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
new_ScreenLinesC1 = (u8char_T *)lalloc((long_u)(
(Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
new_ScreenLinesC2 = (u8char_T *)lalloc((long_u)(
for (i = 0; i < p_mco; ++i)
new_ScreenLinesC[i] = (u8char_T *)lalloc((long_u)(
(Rows + 1) * Columns * sizeof(u8char_T)), FALSE);
}
if (enc_dbcs == DBCS_JPNU)
@ -6940,10 +7009,14 @@ screenalloc(clear)
}
}
#ifdef FEAT_MBYTE
for (i = 0; i < p_mco; ++i)
if (new_ScreenLinesC[i] == NULL)
break;
#endif
if (new_ScreenLines == NULL
#ifdef FEAT_MBYTE
|| (enc_utf8 && (new_ScreenLinesUC == NULL
|| new_ScreenLinesC1 == NULL || new_ScreenLinesC2 == NULL))
|| (enc_utf8 && (new_ScreenLinesUC == NULL || i != p_mco))
|| (enc_dbcs == DBCS_JPNU && new_ScreenLines2 == NULL)
#endif
|| new_ScreenAttrs == NULL
@ -6968,10 +7041,11 @@ screenalloc(clear)
#ifdef FEAT_MBYTE
vim_free(new_ScreenLinesUC);
new_ScreenLinesUC = NULL;
vim_free(new_ScreenLinesC1);
new_ScreenLinesC1 = NULL;
vim_free(new_ScreenLinesC2);
new_ScreenLinesC2 = NULL;
for (i = 0; i < p_mco; ++i)
{
vim_free(new_ScreenLinesC[i]);
new_ScreenLinesC[i] = NULL;
}
vim_free(new_ScreenLines2);
new_ScreenLines2 = NULL;
#endif
@ -7010,9 +7084,9 @@ screenalloc(clear)
{
(void)vim_memset(new_ScreenLinesUC + new_row * Columns,
0, (size_t)Columns * sizeof(u8char_T));
(void)vim_memset(new_ScreenLinesC1 + new_row * Columns,
0, (size_t)Columns * sizeof(u8char_T));
(void)vim_memset(new_ScreenLinesC2 + new_row * Columns,
for (i = 0; i < p_mco; ++i)
(void)vim_memset(new_ScreenLinesC[i]
+ new_row * Columns,
0, (size_t)Columns * sizeof(u8char_T));
}
if (enc_dbcs == DBCS_JPNU)
@ -7030,23 +7104,24 @@ screenalloc(clear)
len = Columns;
#ifdef FEAT_MBYTE
/* When switching to utf-8 don't copy characters, they
* may be invalid now. */
if (!(enc_utf8 && ScreenLinesUC == NULL))
* may be invalid now. Also when p_mco changes. */
if (!(enc_utf8 && ScreenLinesUC == NULL)
&& p_mco == Screen_mco)
#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)
if (enc_utf8 && ScreenLinesUC != NULL
&& p_mco == Screen_mco)
{
mch_memmove(new_ScreenLinesUC + new_LineOffset[new_row],
ScreenLinesUC + LineOffset[old_row],
(size_t)len * sizeof(u8char_T));
mch_memmove(new_ScreenLinesC1 + new_LineOffset[new_row],
ScreenLinesC1 + LineOffset[old_row],
(size_t)len * sizeof(u8char_T));
mch_memmove(new_ScreenLinesC2 + new_LineOffset[new_row],
ScreenLinesC2 + LineOffset[old_row],
for (i = 0; i < p_mco; ++i)
mch_memmove(new_ScreenLinesC[i]
+ new_LineOffset[new_row],
ScreenLinesC[i] + LineOffset[old_row],
(size_t)len * sizeof(u8char_T));
}
if (enc_dbcs == DBCS_JPNU && ScreenLines2 != NULL)
@ -7069,8 +7144,9 @@ screenalloc(clear)
ScreenLines = new_ScreenLines;
#ifdef FEAT_MBYTE
ScreenLinesUC = new_ScreenLinesUC;
ScreenLinesC1 = new_ScreenLinesC1;
ScreenLinesC2 = new_ScreenLinesC2;
for (i = 0; i < p_mco; ++i)
ScreenLinesC[i] = new_ScreenLinesC[i];
Screen_mco = p_mco;
ScreenLines2 = new_ScreenLines2;
#endif
ScreenAttrs = new_ScreenAttrs;
@ -7118,13 +7194,15 @@ screenalloc(clear)
void
free_screenlines()
{
vim_free(ScreenLines);
#ifdef FEAT_MBYTE
int i;
vim_free(ScreenLinesUC);
vim_free(ScreenLinesC1);
vim_free(ScreenLinesC2);
for (i = 0; i < Screen_mco; ++i)
vim_free(ScreenLinesC[i]);
vim_free(ScreenLines2);
#endif
vim_free(ScreenLines);
vim_free(ScreenAttrs);
vim_free(LineOffset);
vim_free(LineWraps);
@ -7250,12 +7328,13 @@ linecopy(to, from, wp)
# ifdef FEAT_MBYTE
if (enc_utf8)
{
int i;
mch_memmove(ScreenLinesUC + off_to, ScreenLinesUC + off_from,
wp->w_width * sizeof(u8char_T));
mch_memmove(ScreenLinesC1 + off_to, ScreenLinesC1 + off_from,
wp->w_width * sizeof(u8char_T));
mch_memmove(ScreenLinesC2 + off_to, ScreenLinesC2 + off_from,
wp->w_width * sizeof(u8char_T));
for (i = 0; i < p_mco; ++i)
mch_memmove(ScreenLinesC[i] + off_to, ScreenLinesC[i] + off_from,
wp->w_width * sizeof(u8char_T));
}
if (enc_dbcs == DBCS_JPNU)
mch_memmove(ScreenLines2 + off_to, ScreenLines2 + off_from,

View File

@ -117,6 +117,10 @@
* <sectionend> 1 byte SN_END
*
*
* sectionID == SN_INFO: <infotext>
* <infotext> N bytes free format text with spell file info (version,
* website, etc)
*
* sectionID == SN_REGION: <regionname> ...
* <regionname> 2 bytes Up to 8 region names: ca, au, etc. Lower case.
* First <regionname> is region 1.
@ -185,7 +189,7 @@
* <compmax> 1 byte Maximum nr of words in compound word.
* <compminlen> 1 byte Minimal word length for compounding.
* <compsylmax> 1 byte Maximum nr of syllables in compound word.
* <compflags> N bytes Flags from COMPOUNDFLAGS items, separated by
* <compflags> N bytes Flags from COMPOUNDRULE items, separated by
* slashes.
*
* sectionID == SN_NOBREAK: (empty, its presence is enough)
@ -290,7 +294,7 @@
*/
#if defined(MSDOS) || defined(WIN16) || defined(WIN32) || defined(_WIN64)
# include <io.h> /* for lseek(), must be before vim.h */
# include "vimio.h" /* for lseek(), must be before vim.h */
#endif
#include "vim.h"
@ -431,6 +435,8 @@ struct slang_S
char_u *sl_pbyts; /* prefix tree word bytes */
idx_T *sl_pidxs; /* prefix tree word indexes */
char_u *sl_info; /* infotext string or NULL */
char_u sl_regions[17]; /* table with up to 8 region names plus NUL */
char_u *sl_midword; /* MIDWORD string or NULL */
@ -440,7 +446,7 @@ struct slang_S
int sl_compmax; /* COMPOUNDMAX (default: MAXWLEN) */
int sl_compminlen; /* COMPOUNDMIN (default: 0) */
int sl_compsylmax; /* COMPOUNDSYLMAX (default: MAXWLEN) */
regprog_T *sl_compprog; /* COMPOUNDFLAGS turned into a regexp progrm
regprog_T *sl_compprog; /* COMPOUNDRULE turned into a regexp progrm
* (NULL when no compounding) */
char_u *sl_compstartflags; /* flags for first compound word */
char_u *sl_compallflags; /* all flags for compound words */
@ -534,6 +540,7 @@ typedef struct langp_S
#define SN_REPSAL 12 /* REPSAL items section */
#define SN_WORDS 13 /* common words */
#define SN_NOSPLITSUGS 14 /* don't split word for suggestions */
#define SN_INFO 15 /* info section */
#define SN_END 255 /* end of sections */
#define SNF_REQUIRED 1 /* <sectionflags>: required section */
@ -1520,7 +1527,7 @@ find_word(mip, mode)
}
/* If the word ends the sequence of compound flags of the
* words must match with one of the COMPOUNDFLAGS items and
* words must match with one of the COMPOUNDRULE items and
* the number of syllables must not be too large. */
mip->mi_compflags[mip->mi_complen] = ((unsigned)flags >> 24);
mip->mi_compflags[mip->mi_complen + 1] = NUL;
@ -2284,6 +2291,9 @@ spell_load_lang(lang)
break;
#endif
}
#ifdef FEAT_AUTOCMD
break;
#endif
}
if (r == FAIL)
@ -2434,6 +2444,9 @@ slang_clear(lp)
vim_free(lp->sl_prefprog);
lp->sl_prefprog = NULL;
vim_free(lp->sl_info);
lp->sl_info = NULL;
vim_free(lp->sl_midword);
lp->sl_midword = NULL;
@ -2620,6 +2633,12 @@ spell_load_file(fname, lang, old_lp, silent)
res = 0;
switch (n)
{
case SN_INFO:
lp->sl_info = read_string(fd, len); /* <infotext> */
if (lp->sl_info == NULL)
goto endFAIL;
break;
case SN_REGION:
res = read_region_section(fd, lp, len);
break;
@ -3386,7 +3405,7 @@ read_compound(fd, slang, len)
c = MAXWLEN;
slang->sl_compsylmax = c;
/* Turn the COMPOUNDFLAGS items into a regexp pattern:
/* Turn the COMPOUNDRULE items into a regexp pattern:
* "a[bc]/a*b+" -> "^\(a[bc]\|a*b\+\)$".
* Inserting backslashes may double the length, "^\(\)$<Nul>" is 7 bytes.
* Conversion to utf-8 may double the size. */
@ -4711,6 +4730,7 @@ typedef struct spellinfo_S
int si_memtot; /* runtime memory used */
int si_verbose; /* verbose messages */
int si_msg_count; /* number of words added since last message */
char_u *si_info; /* info text chars or NULL */
int si_region_count; /* number of regions supported (1 when there
are no regions) */
char_u si_region_name[16]; /* region names; used only if
@ -4743,6 +4763,7 @@ typedef struct spellinfo_S
} spellinfo_T;
static afffile_T *spell_read_aff __ARGS((spellinfo_T *spin, char_u *fname));
static int spell_info_item __ARGS((char_u *s));
static unsigned affitem2flag __ARGS((int flagtype, char_u *item, char_u *fname, int lnum));
static unsigned get_affitem __ARGS((int flagtype, char_u **pp));
static void process_compflags __ARGS((spellinfo_T *spin, afffile_T *aff, char_u *compflags));
@ -4936,7 +4957,7 @@ spell_read_aff(spin, fname)
int compminlen = 0; /* COMPOUNDMIN value */
int compsylmax = 0; /* COMPOUNDSYLMAX value */
int compmax = 0; /* COMPOUNDMAX value */
char_u *compflags = NULL; /* COMPOUNDFLAG and COMPOUNDFLAGS
char_u *compflags = NULL; /* COMPOUNDFLAG and COMPOUNDRULE
concatenated */
char_u *midword = NULL; /* MIDWORD value */
char_u *syllable = NULL; /* SYLLABLE value */
@ -5023,8 +5044,13 @@ spell_read_aff(spin, fname)
if (itemcnt == MAXITEMCNT) /* too many items */
break;
items[itemcnt++] = p;
while (*p > ' ') /* skip until white space or CR/NL */
++p;
/* A few items have arbitrary text argument, don't split them. */
if (itemcnt == 2 && spell_info_item(items[0]))
while (*p >= ' ' || *p == TAB) /* skip until CR/NL */
++p;
else
while (*p > ' ') /* skip until white space or CR/NL */
++p;
if (*p == NUL)
break;
*p++ = NUL;
@ -5073,6 +5099,25 @@ spell_read_aff(spin, fname)
smsg((char_u *)_("FLAG after using flags in %s line %d: %s"),
fname, lnum, items[1]);
}
else if (spell_info_item(items[0]))
{
p = (char_u *)getroom(spin,
(spin->si_info == NULL ? 0 : STRLEN(spin->si_info))
+ STRLEN(items[0])
+ STRLEN(items[1]) + 3, FALSE);
if (p != NULL)
{
if (spin->si_info != NULL)
{
STRCPY(p, spin->si_info);
STRCAT(p, "\n");
}
STRCAT(p, items[0]);
STRCAT(p, " ");
STRCAT(p, items[1]);
spin->si_info = p;
}
}
else if (STRCMP(items[0], "MIDWORD") == 0 && itemcnt == 2
&& midword == NULL)
{
@ -5125,7 +5170,7 @@ spell_read_aff(spin, fname)
else if (STRCMP(items[0], "COMPOUNDFLAG") == 0 && itemcnt == 2
&& compflags == NULL)
{
/* Turn flag "c" into COMPOUNDFLAGS compatible string "c+",
/* Turn flag "c" into COMPOUNDRULE compatible string "c+",
* "Na" into "Na+", "1234" into "1234+". */
p = getroom(spin, STRLEN(items[1]) + 2, FALSE);
if (p != NULL)
@ -5135,7 +5180,7 @@ spell_read_aff(spin, fname)
compflags = p;
}
}
else if (STRCMP(items[0], "COMPOUNDFLAGS") == 0 && itemcnt == 2)
else if (STRCMP(items[0], "COMPOUNDRULE") == 0 && itemcnt == 2)
{
/* Concatenate this string to previously defined ones, using a
* slash to separate them. */
@ -5725,6 +5770,21 @@ spell_read_aff(spin, fname)
return aff;
}
/*
* Return TRUE if "s" is the name of an info item in the affix file.
*/
static int
spell_info_item(s)
char_u *s;
{
return STRCMP(s, "NAME") == 0
|| STRCMP(s, "HOME") == 0
|| STRCMP(s, "VERSION") == 0
|| STRCMP(s, "AUTHOR") == 0
|| STRCMP(s, "EMAIL") == 0
|| STRCMP(s, "COPYRIGHT") == 0;
}
/*
* Turn an affix flag name into a number, according to the FLAG type.
* returns zero for failure.
@ -7366,6 +7426,14 @@ put_bytes(fd, nr, len)
putc((int)(nr >> (i * 8)), fd);
}
#ifdef _MSC_VER
# if (_MSC_VER <= 1200)
/* This line is required for VC6 without the service pack. Also see the
* matching #pragma below. */
/* # pragma optimize("", off) */
# endif
#endif
/*
* Write spin->si_sugtime to file "fd".
*/
@ -7390,6 +7458,12 @@ put_sugtime(spin, fd)
}
}
#ifdef _MSC_VER
# if (_MSC_VER <= 1200)
/* # pragma optimize("", on) */
# endif
#endif
static int
#ifdef __BORLANDC__
_RTLENTRYF
@ -7455,6 +7529,17 @@ write_vim_spell(spin, fname)
* <SECTIONS>: <section> ... <sectionend>
*/
/* SN_INFO: <infotext> */
if (spin->si_info != NULL)
{
putc(SN_INFO, fd); /* <sectionID> */
putc(0, fd); /* <sectionflags> */
i = STRLEN(spin->si_info);
put_bytes(fd, (long_u)i, 4); /* <sectionlen> */
fwrite(spin->si_info, (size_t)i, (size_t)1, fd); /* <infotext> */
}
/* SN_REGION: <regionname> ...
* Write the region names only if there is more than one. */
if (spin->si_region_count > 1)
@ -14823,6 +14908,38 @@ pop:
}
#endif
/*
* ":spellinfo"
*/
/*ARGSUSED*/
void
ex_spellinfo(eap)
exarg_T *eap;
{
int lpi;
langp_T *lp;
char_u *p;
if (no_spell_checking(curwin))
return;
msg_start();
for (lpi = 0; lpi < curbuf->b_langp.ga_len && !got_int; ++lpi)
{
lp = LANGP_ENTRY(curbuf->b_langp, lpi);
msg_puts((char_u *)"file: ");
msg_puts(lp->lp_slang->sl_fname);
msg_putchar('\n');
p = lp->lp_slang->sl_info;
if (p != NULL)
{
msg_puts(p);
msg_putchar('\n');
}
}
msg_end();
}
#define DUMPFLAG_KEEPCASE 1 /* round 2: keep-case tree */
#define DUMPFLAG_COUNT 2 /* include word count */
#define DUMPFLAG_ICASE 4 /* ignore case when finding matches */
@ -14902,9 +15019,9 @@ spell_dump_compl(buf, pat, ic, dir, dumpflags_arg)
dumpflags |= DUMPFLAG_ONECAP;
else if (n == WF_ALLCAP
#ifdef FEAT_MBYTE
&& STRLEN(pat) > mb_ptr2len(pat)
&& (int)STRLEN(pat) > mb_ptr2len(pat)
#else
&& STRLEN(pat) > 1
&& (int)STRLEN(pat) > 1
#endif
)
dumpflags |= DUMPFLAG_ALLCAP;

View File

@ -12,7 +12,7 @@
*/
#if defined MSDOS || defined WIN32 || defined(_WIN64)
# include <io.h> /* for lseek(), must be before vim.h */
# include "vimio.h" /* for lseek(), must be before vim.h */
#endif
#include "vim.h"

View File

@ -390,7 +390,7 @@ Test rules for compounding.
SET ISO8859-1
COMPOUNDMIN 3
COMPOUNDFLAGS m*
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
@ -416,9 +416,9 @@ FOL
LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
COMPOUNDFLAGS m+
COMPOUNDFLAGS sm*e
COMPOUNDFLAGS sm+
COMPOUNDRULE m+
COMPOUNDRULE sm*e
COMPOUNDRULE sm+
COMPOUNDMIN 3
COMPOUNDMAX 3
@ -483,7 +483,7 @@ FLAG long
NEEDAFFIX !!
COMPOUNDFLAGS ssmm*ee
COMPOUNDRULE ssmm*ee
NEEDCOMPOUND xx
@ -522,7 +522,7 @@ FLAG caplong
NEEDAFFIX A!
COMPOUNDFLAGS sMm*Ee
COMPOUNDRULE sMm*Ee
NEEDCOMPOUND Xx
@ -561,7 +561,7 @@ FLAG num
NEEDAFFIX 9999
COMPOUNDFLAGS 2,77*123
COMPOUNDRULE 2,77*123
NEEDCOMPOUND 1

View File

@ -394,7 +394,7 @@ Test rules for compounding.
SET ISO8859-1
COMPOUNDMIN 3
COMPOUNDFLAGS m*
COMPOUNDRULE m*
NEEDCOMPOUND x
3affend
@ -420,9 +420,9 @@ FOL
LOW àáâãäåæçèéêëìíîïðñòóôõöøùúûüýþßÿ
UPP ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝÞßÿ
COMPOUNDFLAGS m+
COMPOUNDFLAGS sm*e
COMPOUNDFLAGS sm+
COMPOUNDRULE m+
COMPOUNDRULE sm*e
COMPOUNDRULE sm+
COMPOUNDMIN 3
COMPOUNDMAX 3
@ -490,7 +490,7 @@ FLAG long
NEEDAFFIX !!
COMPOUNDFLAGS ssmm*ee
COMPOUNDRULE ssmm*ee
NEEDCOMPOUND xx
@ -529,7 +529,7 @@ FLAG caplong
NEEDAFFIX A!
COMPOUNDFLAGS sMm*Ee
COMPOUNDRULE sMm*Ee
NEEDCOMPOUND Xx
@ -572,7 +572,7 @@ FLAG num
NEEDAFFIX 9999
COMPOUNDFLAGS 2,77*123
COMPOUNDRULE 2,77*123
NEEDCOMPOUND 1

View File

@ -1173,7 +1173,7 @@ clip_copy_modeless_selection(both)
if (enc_dbcs != 0)
len *= 2; /* max. 2 bytes per display cell */
else if (enc_utf8)
len *= 9; /* max. 3 bytes per display cell + 2 composing chars */
len *= MB_MAXBYTES;
#endif
buffer = lalloc((long_u)len, TRUE);
if (buffer == NULL) /* out of memory */
@ -1234,6 +1234,7 @@ clip_copy_modeless_selection(both)
else if (enc_utf8)
{
int off;
int i;
off = LineOffset[row];
for (i = start_col; i < end_col; ++i)
@ -1245,14 +1246,13 @@ clip_copy_modeless_selection(both)
else
{
bufp += utf_char2bytes(ScreenLinesUC[off + i], bufp);
if (ScreenLinesC1[off + i] != 0)
for (i = 0; i < Screen_mco; ++i)
{
/* Add one or two composing characters. */
bufp += utf_char2bytes(ScreenLinesC1[off + i],
/* Add a composing character. */
if (ScreenLinesC[i][off + i] == 0)
break;
bufp += utf_char2bytes(ScreenLinesC[i][off + i],
bufp);
if (ScreenLinesC2[off + i] != 0)
bufp += utf_char2bytes(ScreenLinesC2[off + i],
bufp);
}
}
/* Skip right halve of double-wide character. */

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 (2006 Mar 4)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 4, compiled "
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 6)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2006 Mar 6, compiled "

View File

@ -93,6 +93,12 @@
# endif
#endif
/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
#if _MSC_VER >= 1400
# define _CRT_SECURE_NO_DEPRECATE
# define _CRT_NONSTDC_NO_DEPRECATE
#endif
#if defined(FEAT_GUI_W32) || defined(FEAT_GUI_W16)
# define FEAT_GUI_MSWIN
#endif
@ -358,12 +364,20 @@ typedef unsigned char sattr_T;
/*
* The u8char_T can hold one decoded UTF-8 character.
* Vim always use an int (32 bits) for characters most places, so that we can
* handle 32 bit characters in the file. u8char_T is only used for
* displaying. That should be enough, because there is no font for > 16 bits.
* We normally use 32 bits now, since some Asian characters don't fit in 16
* bits. u8char_T is only used for displaying, it could be 16 bits to save
* memory.
*/
#ifdef FEAT_MBYTE
typedef unsigned short u8char_T;
# ifdef UNICODE16
typedef unsigned short u8char_T; /* short should be 16 bits */
# else
# if SIZEOF_INT >= 4
typedef unsigned int u8char_T; /* int is 32 bits */
# else
typedef unsigned long u8char_T; /* long should be 32 bits or more */
# endif
# endif
#endif
#ifndef UNIX /* For Unix this is included in os_unix.h */
@ -652,6 +666,7 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
#define EXPAND_COMPILER 29
#define EXPAND_USER_DEFINED 30
#define EXPAND_USER_LIST 31
#define EXPAND_SHELLCMD 32
/* Values for exmode_active (0 is no exmode) */
#define EXMODE_NORMAL 1
@ -676,12 +691,13 @@ extern char *(*dyn_libintl_textdomain)(const char *domainname);
#define WILD_ESCAPE 128
/* Flags for expand_wildcards() */
#define EW_DIR 1 /* include directory names */
#define EW_FILE 2 /* include file names */
#define EW_NOTFOUND 4 /* include not found names */
#define EW_ADDSLASH 8 /* append slash to directory name */
#define EW_KEEPALL 16 /* keep all matches */
#define EW_SILENT 32 /* don't print "1 returned" from shell */
#define EW_DIR 0x01 /* include directory names */
#define EW_FILE 0x02 /* include file names */
#define EW_NOTFOUND 0x04 /* include not found names */
#define EW_ADDSLASH 0x08 /* append slash to directory name */
#define EW_KEEPALL 0x10 /* keep all matches */
#define EW_SILENT 0x20 /* don't print "1 returned" from shell */
#define EW_EXEC 0x40 /* executable files */
/* Note: mostly EW_NOTFOUND and EW_SILENT are mutually exclusive: EW_NOTFOUND
* is used when executing commands and EW_SILENT for interactive expanding. */
@ -1480,6 +1496,15 @@ int vim_memcmp __ARGS((void *, void *, size_t));
# endif
#endif
#ifdef FEAT_MBYTE
# define MAX_MCO 6 /* maximum value for 'maxcombine' */
/* Maximum number of bytes in a multi-byte character. It can be one 32-bit
* character of up to 6 bytes, or one 16-bit character of up to three bytes
* plus six following composing characters of three bytes each. */
# define MB_MAXBYTES 21
#endif
/* Include option.h before structs.h, because the number of window-local and
* buffer-local options is used there. */
#include "option.h" /* options and default values */
@ -1783,11 +1808,6 @@ typedef int proftime_T; /* dummy for function prototypes */
#endif
#ifdef FEAT_MBYTE
/* Maximum number of bytes in a multi-byte character. It can be one 32-bit
* character of up to 6 bytes, or one 16-bit character of up to three bytes
* plus two following composing characters of three bytes each. */
# define MB_MAXBYTES 9
/*
* Return byte length of character that starts with byte "b".
* Returns 1 for a single-byte character.

View File

@ -12,11 +12,11 @@
#include <winver.h>
#include "version.h"
#include "gui_w32_rc.h"
#if defined(__BORLANDC__) || defined(__CYGWIN32__) || defined(__MINGW32__)
// #if defined(__BORLANDC__) || defined(__CYGWIN32__) || defined(__MINGW32__)
# include <winresrc.h>
#else
# include <winres.h>
#endif
// #else
// # include <winres.h>
// #endif
//
// Icons

16
src/vimio.h Normal file
View File

@ -0,0 +1,16 @@
/* vi:set ts=8 sts=4 sw=4:
*
* VIM - Vi IMproved by Bram Moolenaar
*
* Do ":help uganda" in Vim to read copying and usage conditions.
* Do ":help credits" in Vim to see a list of people who contributed.
* See README.txt for an overview of the Vim source code.
*/
/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
#if _MSC_VER >= 1400
# define _CRT_SECURE_NO_DEPRECATE
# define _CRT_NONSTDC_NO_DEPRECATE
#endif
#include <io.h>

View File

@ -4,7 +4,10 @@
xxd: xxd.exe
xxd.exe: xxd.c
cl /nologo -DWIN32 xxd.c /link setargv.obj
cl /nologo -DWIN32 xxd.c
# This was for an older compiler
# cl /nologo -DWIN32 xxd.c /link setargv.obj
clean:
- if exist xxd.obj del xxd.obj

View File

@ -58,6 +58,13 @@
* make money and share with me,
* lose money and don't ask me.
*/
/* Visual Studio 2005 has 'deprecated' many of the standard CRT functions */
#if _MSC_VER >= 1400
# define _CRT_SECURE_NO_DEPRECATE
# define _CRT_NONSTDC_NO_DEPRECATE
#endif
#include <stdio.h>
#ifdef VAXC
# include <file.h>