summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--runtime/doc/hebrew.txt9
-rw-r--r--runtime/doc/repeat.txt11
-rw-r--r--runtime/doc/starting.txt8
-rw-r--r--runtime/doc/usr_23.txt2
-rw-r--r--runtime/ftplugin/javascript.vim4
-rw-r--r--runtime/ftplugin/man.vim19
-rw-r--r--runtime/macros/matchit.vim58
-rw-r--r--runtime/plugin/rrhelper.vim9
-rw-r--r--runtime/syntax/dosbatch.vim22
-rw-r--r--runtime/syntax/gitconfig.vim38
-rw-r--r--runtime/syntax/haste.vim150
-rw-r--r--runtime/tutor/runtime/indent.vim31
-rw-r--r--runtime/tutor/runtime/vim16x16.pngbin0 -> 226 bytes
-rw-r--r--runtime/tutor/tutor.eo.utf-8967
-rw-r--r--src/po/pl.po21
-rw-r--r--src/po/zh_CN.po2
-rw-r--r--src/term.c27
17 files changed, 1286 insertions, 92 deletions
diff --git a/runtime/doc/hebrew.txt b/runtime/doc/hebrew.txt
index 966befef08..600f277188 100644
--- a/runtime/doc/hebrew.txt
+++ b/runtime/doc/hebrew.txt
@@ -1,4 +1,4 @@
-*hebrew.txt* For Vim version 7.1. Last change: 2003 May 11
+*hebrew.txt* For Vim version 7.2a. Last change: 2007 Jun 14
VIM REFERENCE MANUAL by Ron Aaron (and Avner Lottem)
@@ -7,11 +7,8 @@
Hebrew Language support (options & mapping) for Vim *hebrew*
The supporting 'rightleft' functionality was originally created by Avner
-Lottem:
- E-mail: alottem@iil.intel.com
- Phone: +972-4-8307322
-
-Ron Aaron <ron@ronware.org> is currently helping support these features.
+Lottem. <alottem at gmail dot com> Ron Aaron <ron at ronware dot org> is
+currently helping support these features.
{Vi does not have any of these commands}
diff --git a/runtime/doc/repeat.txt b/runtime/doc/repeat.txt
index 2361ddcb19..38a485753d 100644
--- a/runtime/doc/repeat.txt
+++ b/runtime/doc/repeat.txt
@@ -1,4 +1,4 @@
-*repeat.txt* For Vim version 7.1. Last change: 2007 Jan 07
+*repeat.txt* For Vim version 7.2a. Last change: 2007 Aug 12
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -89,10 +89,11 @@ This replaces all occurrences of "pat" with "PAT". The same can be done with:
:%s/pat/PAT/g
Which is two characters shorter!
-A special case is using ":visual" as a command. This will move to a matching
-line, go to Normal mode to let you execute commands there until you use |Q| to
-return to Ex mode. This will be repeated for each matching line. While doing
-this you cannot use ":global".
+When using "global" in Ex mode, a special case is using ":visual" as a
+command. This will move to a matching line, go to Normal mode to let you
+execute commands there until you use |Q| to return to Ex mode. This will be
+repeated for each matching line. While doing this you cannot use ":global".
+To abort this type CTRL-C twice.
==============================================================================
3. Complex repeats *complex-repeat*
diff --git a/runtime/doc/starting.txt b/runtime/doc/starting.txt
index b58dade4ae..c017fb4b79 100644
--- a/runtime/doc/starting.txt
+++ b/runtime/doc/starting.txt
@@ -1,4 +1,4 @@
-*starting.txt* For Vim version 7.1. Last change: 2007 Aug 14
+*starting.txt* For Vim version 7.2a. Last change: 2008 Jun 21
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -1386,10 +1386,14 @@ using this command: >
vim -c "normal '0"
-In a shell you could make an alias for it: >
+In a csh compatible shell you could make an alias for it: >
alias lvim vim -c '"'normal "'"0'"'
+For a bash-like shell: >
+
+ alias lvim='vim -c "normal '\''0"'
+
Use the "r" flag in 'viminfo' to specify for which files no marks should be
remembered.
diff --git a/runtime/doc/usr_23.txt b/runtime/doc/usr_23.txt
index 59c5c529f0..e0aa05dcb0 100644
--- a/runtime/doc/usr_23.txt
+++ b/runtime/doc/usr_23.txt
@@ -1,4 +1,4 @@
-*usr_23.txt* For Vim version 7.1. Last change: 2006 Apr 24
+*usr_23.txt* For Vim version 7.2a. Last change: 2006 Apr 24
VIM USER MANUAL - by Bram Moolenaar
diff --git a/runtime/ftplugin/javascript.vim b/runtime/ftplugin/javascript.vim
index 1ba440041d..af5e4a920c 100644
--- a/runtime/ftplugin/javascript.vim
+++ b/runtime/ftplugin/javascript.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: Javascript
" Maintainer: Doug Kearns <dougkearns@gmail.com>
-" Last Change: 2007 Feb 21
+" Last Change: 2008 Jun 15
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/ftplugin/javascript.vim
if exists("b:did_ftplugin")
@@ -28,7 +28,7 @@ setlocal commentstring=//%s
" Change the :browse e filter to primarily show Java-related files.
if has("gui_win32")
- let b:browsefilter="Javascript Files (*.js)\t*.js\n"
+ let b:browsefilter="Javascript Files (*.js)\t*.js\n" .
\ "All Files (*.*)\t*.*\n"
endif
diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim
index 88d7bca25c..a58d2977a9 100644
--- a/runtime/ftplugin/man.vim
+++ b/runtime/ftplugin/man.vim
@@ -1,7 +1,7 @@
" Vim filetype plugin file
" Language: man
" Maintainer: Nam SungHyun <namsh@kldp.org>
-" Last Change: 2006 Dec 04
+" Last Change: 2007 Nov 30
" To make the ":Man" command available before editing a manual page, source
" this script from your startup vimrc file.
@@ -41,13 +41,16 @@ if !exists("s:man_tag_depth")
let s:man_tag_depth = 0
-if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5"
- let s:man_sect_arg = "-s"
- let s:man_find_arg = "-l"
-else
- let s:man_sect_arg = ""
- let s:man_find_arg = "-w"
-endif
+let s:man_sect_arg = ""
+let s:man_find_arg = "-w"
+try
+ if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5"
+ let s:man_sect_arg = "-s"
+ let s:man_find_arg = "-l"
+ endif
+catch /E145:/
+ " Ignore the error in restricted mode
+endtry
func <SID>PreGetPage(cnt)
if a:cnt == 0
diff --git a/runtime/macros/matchit.vim b/runtime/macros/matchit.vim
index 7fcc53e803..e41cda9e17 100644
--- a/runtime/macros/matchit.vim
+++ b/runtime/macros/matchit.vim
@@ -1,7 +1,7 @@
" matchit.vim: (global plugin) Extended "%" matching
-" Last Change: Mon May 15 10:00 PM 2006 EDT
+" Last Change: Fri Jan 25 10:00 AM 2008 EST
" Maintainer: Benji Fisher PhD <benji@member.AMS.org>
-" Version: 1.11, for Vim 6.3+
+" Version: 1.13.2, for Vim 6.3+
" URL: http://www.vim.org/script.php?script_id=39
" Documentation:
@@ -42,7 +42,7 @@ if exists("loaded_matchit") || &cp
endif
let loaded_matchit = 1
let s:last_mps = ""
-let s:last_words = ""
+let s:last_words = ":"
let s:save_cpo = &cpo
set cpo&vim
@@ -100,13 +100,10 @@ function! s:Match_wrapper(word, forward, mode) range
" In s:CleanUp(), we may need to check whether the cursor moved forward.
let startline = line(".")
let startcol = col(".")
- " Use default behavior if called with a count or if no patterns are defined.
+ " Use default behavior if called with a count.
if v:count
exe "normal! " . v:count . "%"
return s:CleanUp(restore_options, a:mode, startline, startcol)
- elseif !exists("b:match_words") || b:match_words == ""
- silent! normal! %
- return s:CleanUp(restore_options, a:mode, startline, startcol)
end
" First step: if not already done, set the script variables
@@ -114,8 +111,10 @@ function! s:Match_wrapper(word, forward, mode) range
" s:pat parsed version of b:match_words
" s:all regexp based on s:pat and the default groups
"
- " Allow b:match_words = "GetVimMatchWords()" .
- if b:match_words =~ ":"
+ if !exists("b:match_words") || b:match_words == ""
+ let match_words = ""
+ " Allow b:match_words = "GetVimMatchWords()" .
+ elseif b:match_words =~ ":"
let match_words = b:match_words
else
execute "let match_words =" b:match_words
@@ -125,13 +124,6 @@ function! s:Match_wrapper(word, forward, mode) range
\ exists("b:match_debug")
let s:last_words = match_words
let s:last_mps = &mps
- if match_words !~ s:notslash . '\\\d'
- let s:do_BR = 0
- let s:pat = match_words
- else
- let s:do_BR = 1
- let s:pat = s:ParseWords(match_words)
- endif
" The next several lines were here before
" BF started messing with this script.
" quote the special chars in 'matchpairs', replace [,:] with \| and then
@@ -141,8 +133,15 @@ function! s:Match_wrapper(word, forward, mode) range
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
\ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>'
" s:all = pattern with all the keywords
- let s:all = s:pat . (strlen(s:pat) ? "," : "") . default
- let s:all = substitute(s:all, s:notslash . '\zs[,:]\+', '\\|', 'g')
+ let match_words = match_words . (strlen(match_words) ? "," : "") . default
+ if match_words !~ s:notslash . '\\\d'
+ let s:do_BR = 0
+ let s:pat = match_words
+ else
+ let s:do_BR = 1
+ let s:pat = s:ParseWords(match_words)
+ endif
+ let s:all = substitute(s:pat, s:notslash . '\zs[,:]\+', '\\|', 'g')
let s:all = '\%(' . s:all . '\)'
" let s:all = '\%(' . substitute(s:all, '\\\ze[,:]', '', 'g') . '\)'
if exists("b:match_debug")
@@ -172,16 +171,14 @@ function! s:Match_wrapper(word, forward, mode) range
else " Find the match that ends on or after the cursor and set curcol.
let regexp = s:Wholematch(matchline, s:all, startcol-1)
let curcol = match(matchline, regexp)
+ " If there is no match, give up.
+ if curcol == -1
+ return s:CleanUp(restore_options, a:mode, startline, startcol)
+ endif
let endcol = matchend(matchline, regexp)
let suf = strlen(matchline) - endcol
let prefix = (curcol ? '^.*\%' . (curcol + 1) . 'c\%(' : '^\%(')
let suffix = (suf ? '\)\%' . (endcol + 1) . 'c.*$' : '\)$')
- " If the match comes from the defaults, bail out.
- if matchline !~ prefix .
- \ substitute(s:pat, s:notslash.'\zs[,:]\+', '\\|', 'g') . suffix
- silent! norm! %
- return s:CleanUp(restore_options, a:mode, startline, startcol)
- endif
endif
if exists("b:match_debug")
let b:match_match = matchstr(matchline, regexp)
@@ -401,6 +398,7 @@ fun! s:ParseWords(groups)
endwhile " Now, tail has been used up.
let parsed = parsed . ","
endwhile " groups =~ '[^,:]'
+ let parsed = substitute(parsed, ',$', '', '')
return parsed
endfun
@@ -651,7 +649,7 @@ fun! s:MultiMatch(spflag, mode)
" s:all regexp based on s:pat and the default groups
" This part is copied and slightly modified from s:Match_wrapper().
let default = escape(&mps, '[$^.*~\\/?]') . (strlen(&mps) ? "," : "") .
- \ '\/\*:\*\/,#if\%(def\)\=:$else\>:#elif\>:#endif\>'
+ \ '\/\*:\*\/,#if\%(def\)\=:#else\>:#elif\>:#endif\>'
" Allow b:match_words = "GetVimMatchWords()" .
if b:match_words =~ ":"
let match_words = b:match_words
@@ -682,10 +680,12 @@ fun! s:MultiMatch(spflag, mode)
" - maybe even more functionality should be split off
" - into separate functions!
let cdefault = (s:pat =~ '[^,]$' ? "," : "") . default
- let open = substitute(s:pat . cdefault, ':[^,]*,', '\\),\\(', 'g')
- let open = '\(' . substitute(open, ':[^,]*$', '\\)', '')
- let close = substitute(s:pat . cdefault, ',[^,]*:', '\\),\\(', 'g')
- let close = substitute(close, '[^,]*:', '\\(', '') . '\)'
+ let open = substitute(s:pat . cdefault,
+ \ s:notslash . '\zs:.\{-}' . s:notslash . ',', '\\),\\(', 'g')
+ let open = '\(' . substitute(open, s:notslash . '\zs:.*$', '\\)', '')
+ let close = substitute(s:pat . cdefault,
+ \ s:notslash . '\zs,.\{-}' . s:notslash . ':', '\\),\\(', 'g')
+ let close = substitute(close, '^.\{-}' . s:notslash . ':', '\\(', '') . '\)'
if exists("b:match_skip")
let skip = b:match_skip
elseif exists("b:match_comment") " backwards compatibility and testing!
diff --git a/runtime/plugin/rrhelper.vim b/runtime/plugin/rrhelper.vim
index 05090b59ca..302177cb2d 100644
--- a/runtime/plugin/rrhelper.vim
+++ b/runtime/plugin/rrhelper.vim
@@ -1,6 +1,6 @@
" Vim plugin with helper function(s) for --remote-wait
" Maintainer: Flemming Madsen <fma@cci.dk>
-" Last Change: 2004 May 30
+" Last Change: 2008 May 29
" Has this already been loaded?
if exists("loaded_rrhelper")
@@ -27,7 +27,12 @@ if has("clientserver")
" Path separators are always forward slashes for the autocommand pattern.
" Escape special characters with a backslash.
- let f = escape(substitute(argv(cnt), '\\', '/', "g"), ' *,?[{')
+ let f = substitute(argv(cnt), '\\', '/', "g")
+ if exists('*fnameescape')
+ let f = fnameescape(f)
+ else
+ let f = escape(f, " \t\n*?[{`$\\%#'\"|!<")
+ endif
execute "augroup ".uniqueGroup
execute "autocmd ".uniqueGroup." BufUnload ". f ." call DoRemoteReply('".id."', '".cnt."', '".uniqueGroup."', '". f ."')"
let cnt = cnt + 1
diff --git a/runtime/syntax/dosbatch.vim b/runtime/syntax/dosbatch.vim
index e27310cc91..8c01299334 100644
--- a/runtime/syntax/dosbatch.vim
+++ b/runtime/syntax/dosbatch.vim
@@ -2,7 +2,7 @@
" Language: MSDOS batch file (with NT command extensions)
" Maintainer: Mike Williams <mrw@eandem.co.uk>
" Filenames: *.bat
-" Last Change: 16th March 2004
+" Last Change: 10th May 2008
" Web Page: http://www.eandem.co.uk/mrw/vim
"
" Options Flags:
@@ -43,8 +43,8 @@ syn match dosbatchOperator "\s\(&\||\|^\|<<\|>>\)=\=\s"
syn match dosbatchIfOperator "if\s\+\(\(not\)\=\s\+\)\=\(exist\|defined\|errorlevel\|cmdextversion\)\="lc=2
" String - using "'s is a convenience rather than a requirement outside of FOR
-syn match dosbatchString "\"[^"]*\"" contains=dosbatchVariable,dosBatchArgument,@dosbatchNumber
-syn match dosbatchString "\<echo[^)>|]*"lc=4 contains=dosbatchVariable,dosbatchArgument,@dosbatchNumber
+syn match dosbatchString "\"[^"]*\"" contains=dosbatchVariable,dosBatchArgument,dosbatchSpecialChar,@dosbatchNumber,@Spell
+syn match dosbatchString "\<echo\([^)>|]\|\^\@<=[)>|]\)*"lc=4 contains=dosbatchVariable,dosbatchArgument,dosbatchSpecialChar,@dosbatchNumber,@Spell
syn match dosbatchEchoOperator "\<echo\s\+\(on\|off\)\s*$"lc=4
" For embedded commands
@@ -91,12 +91,12 @@ syn match dosbatchLabel "\<goto\s\+\h\w*\>"lc=4
syn match dosbatchLabel ":\h\w*\>"
" Comments - usual rem but also two colons as first non-space is an idiom
-syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
-syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
-syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
+syn match dosbatchComment "^rem\($\|\s.*$\)"lc=3 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+syn match dosbatchComment "\srem\($\|\s.*$\)"lc=4 contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
+syn match dosbatchComment "\s*:\s*:.*$" contains=dosbatchTodo,dosbatchSpecialChar,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
" Comments in ()'s - still to handle spaces before rem
-syn match dosbatchComment "(rem[^)]*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument
+syn match dosbatchComment "(rem\([^)]\|\^\@<=)\)*"lc=4 contains=dosbatchTodo,@dosbatchNumber,dosbatchVariable,dosbatchArgument,@Spell
syn keyword dosbatchImplicit append assoc at attrib break cacls cd chcp chdir
syn keyword dosbatchImplicit chkdsk chkntfs cls cmd color comp compact convert copy
@@ -127,12 +127,12 @@ if version >= 508 || !exists("did_dosbatch_syntax_inits")
HiLink dosbatchConditional Conditional
HiLink dosbatchRepeat Repeat
- HiLink dosbatchOperator Operator
- HiLink dosbatchEchoOperator dosbatchOperator
- HiLink dosbatchIfOperator dosbatchOperator
+ HiLink dosbatchOperator Operator
+ HiLink dosbatchEchoOperator dosbatchOperator
+ HiLink dosbatchIfOperator dosbatchOperator
HiLink dosbatchArgument Identifier
- HiLink dosbatchIdentifier Identifier
+ HiLink dosbatchIdentifier Identifier
HiLink dosbatchVariable dosbatchIdentifier
HiLink dosbatchSpecialChar SpecialChar
diff --git a/runtime/syntax/gitconfig.vim b/runtime/syntax/gitconfig.vim
new file mode 100644
index 0000000000..f44ce2b579
--- /dev/null
+++ b/runtime/syntax/gitconfig.vim
@@ -0,0 +1,38 @@
+" Vim syntax file
+" Language: git config file
+" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
+" Filenames: gitconfig, .gitconfig, *.git/config
+" Last Change: 2008 Jun 04
+
+if exists("b:current_syntax")
+ finish
+endif
+
+setlocal iskeyword+=-
+setlocal iskeyword-=_
+syn case ignore
+syn sync minlines=10
+
+syn match gitconfigComment "[#;].*"
+syn match gitconfigSection "\%(^\s*\)\@<=\[[a-z0-9.-]\+\]"
+syn match gitconfigSection '\%(^\s*\)\@<=\[[a-z0-9.-]\+ \+\"\%([^\\"]\|\\.\)*"\]'
+syn match gitconfigVariable "\%(^\s*\)\@<=\a\k*\%(\s*\%([=#;]\|$\)\)\@=" nextgroup=gitconfigAssignment skipwhite
+syn region gitconfigAssignment matchgroup=gitconfigNone start=+=\s*+ skip=+\\+ end=+\s*$+ contained contains=gitconfigBoolean,gitconfigNumber,gitConfigString,gitConfigEscape,gitConfigError,gitconfigComment keepend
+syn keyword gitconfigBoolean true false yes no contained
+syn match gitconfigNumber "\d\+" contained
+syn region gitconfigString matchgroup=gitconfigDelim start=+"+ skip=+\\+ end=+"+ matchgroup=gitconfigError end=+[^\\"]\%#\@!$+ contained contains=gitconfigEscape,gitconfigEscapeError
+syn match gitconfigError +\\.+ contained
+syn match gitconfigEscape +\\[\\"ntb]+ contained
+syn match gitconfigEscape +\\$+ contained
+
+hi def link gitconfigComment Comment
+hi def link gitconfigSection Keyword
+hi def link gitconfigVariable Identifier
+hi def link gitconfigBoolean Boolean
+hi def link gitconfigNumber Number
+hi def link gitconfigString String
+hi def link gitconfigDelim Delimiter
+hi def link gitconfigEscape Delimiter
+hi def link gitconfigError Error
+
+let b:current_syntax = "gitconfig"
diff --git a/runtime/syntax/haste.vim b/runtime/syntax/haste.vim
new file mode 100644
index 0000000000..cf943f1085
--- /dev/null
+++ b/runtime/syntax/haste.vim
@@ -0,0 +1,150 @@
+" Vim syntax file
+" Language: HASTE
+" Maintainer: M. Tranchero - maurizio.tranchero?gmail.com
+" Credits: some parts have been taken from vhdl, verilog, and C syntax
+" files
+" version: 0.5
+
+" HASTE
+if exists("b:current_syntax")
+ finish
+endif
+" 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
+
+" case is significant
+syn case match
+
+" HASTE keywords
+syn keyword hasteStatement act alias arb array begin bitvec
+syn keyword hasteStatement bitwidth boolvec broad case
+syn keyword hasteStatement cast chan const dataprobe do edge
+syn keyword hasteStatement else end export false ff fi file
+syn keyword hasteStatement fit for forever func if import
+syn keyword hasteStatement inprobe is les main narb narrow
+syn keyword hasteStatement negedge od of or outprobe pas
+syn keyword hasteStatement posedge probe proc ram ramreg
+syn keyword hasteStatement repeat rom romreg sample sel si
+syn keyword hasteStatement sign sizeof skip stop then true
+syn keyword hasteStatement type until var wait wire
+syn keyword hasteFutureExt Z ffe partial
+syn keyword hasteVerilog buf reg while
+
+" Special match for "if", "or", and "else" since "else if"
+" and other "else+if" combination shouldn't be highlighted.
+" The right keyword is "or"
+syn match hasteStatement "\<\(if\|then\|else\|fi\)\>"
+syn match hasteNone "\<else\s\+if\>$"
+syn match hasteNone "\<else\s\+if\>\s"
+syn match hasteNone "\<elseif\>\s"
+syn match hasteNone "\<elsif\>\s"
+syn match hasteStatement "\<\(case\|is\|si\)\>"
+syn match hasteStatement "\<\(repeat\|until\)\>"
+syn match hasteStatement "\<\(forever\|do\|od\)\>"
+syn match hasteStatement "\<\(for\|do\|od\)\>"
+syn match hasteStatement "\<\(do\|or\|od\)\>"
+syn match hasteStatement "\<\(sel\|les\)\>"
+syn match hasteError "\<\d\+[_a-zA-Z]\+\>"
+
+" Predifined Haste types
+syn keyword hasteType bool
+
+" Values for standard Haste types
+" syn match hasteVector "\'[0L1HXWZU\-\?]\'"
+
+syn match hasteVector "0b\"[01_]\+\""
+syn match hasteVector "0x\"[0-9a-f_]\+\""
+syn match hasteCharacter "'.'"
+syn region hasteString start=+"+ end=+"+
+" C pre-processor directives
+"syn region hasteIncluded display contained start=+"+ skip=+\\\\\|\\"+ end=+"+
+syn match hasteIncluded display contained "<[^>]*>"
+syn match hasteIncluded display contained "<[^"]*>"
+syn match hasteInclude display "^\s*#include\>\s*["<]" contains=hasteIncluded
+syn region hasteDefine start="^\s*\(%:\|#\)\s*\(define\|undef\)\>" skip="\\$" end="$" end="//"me=s-1 contains=ALLBUT,@hastePreProcGroup,@Spell
+syn region hasteDefine start="^\s*\(%:\|#\)\s*\(ifndef\|ifdef\|endif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=@Spell
+syn region hastePreCondit start="^\s*\(%:\|#\)\s*\(if\|ifdef\|ifndef\|elif\)\>" skip="\\$" end="$" end="//"me=s-1 contains=hasteComment,hasteCppString,hasteCharacter,hasteCppParen,hasteParenError,hasteNumbers,hasteCommentError,hasteSpaceError
+syn region hastePreProc start="^\s*\(%:\|#\)\s*\(pragma\>\|line\>\|warning\>\|warn\>\|error\>\)" skip="\\$" end="$" keepend contains=ALLBUT,@hastePreProcGroup,@Spell
+syn cluster hastePreProcGroup contains=hasteIncluded,hasteInclude,hasteDefine
+syn region hasteCppSkip contained start="^\s*\(%:\|#\)\s*\(if\>\|ifdef\>\|ifndef\>\)" skip="\\$" end="^\s*\(%:\|#\)\s*endif\>" contains=hasteSpaceError,hasteCppSkip
+
+" floating numbers
+syn match hasteNumber "-\=\<\d\+\.\d\+\(E[+\-]\=\d\+\)\>"
+syn match hasteNumber "-\=\<\d\+\.\d\+\>"
+syn match hasteNumber "0*2#[01_]\+\.[01_]\+#\(E[+\-]\=\d\+\)\="
+syn match hasteNumber "0*16#[0-9a-f_]\+\.[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
+" integer numbers
+syn match hasteNumber "-\=\<\d\+\(E[+\-]\=\d\+\)\>"
+syn match hasteNumber "-\=\<\d\+\>"
+syn match hasteNumber "0*2#[01_]\+#\(E[+\-]\=\d\+\)\="
+syn match hasteNumber "0*16#[0-9a-f_]\+#\(E[+\-]\=\d\+\)\="
+" operators
+syn keyword hasteSeparators & , . \| :
+syn keyword hasteExecution \|\| ; @
+syn keyword hasteOperator := ? !
+syn keyword hasteTypeConstr "[" << >> .. "]" ~
+syn keyword hasteExprOp < <= >= > = # <> + - * == ##
+syn keyword hasteMisc ( ) 0x 0b
+"
+syn match hasteSeparators "[&:\|,.]"
+syn match hasteOperator ":="
+syn match hasteOperator "?"
+syn match hasteOperator "!"
+syn match hasteExecution "||"
+syn match hasteExecution ";"
+syn match hasteExecution "@"
+syn match hasteType "\[\["
+syn match hasteType "\]\]"
+syn match hasteType "<<"
+syn match hasteType ">>"
+syn match hasteExprOp "<"
+syn match hasteExprOp "<="
+syn match hasteExprOp ">="
+syn match hasteExprOp ">"
+syn match hasteExprOp "<>"
+syn match hasteExprOp "="
+syn match hasteExprOp "=="
+syn match hasteExprOp "##"
+syn match hasteExprOp "#"
+syn match hasteExprOp "*"
+syn match hasteExprOp "+"
+
+syn region hasteComment start="/\*" end="\*/" contains=@Spell
+syn region hasteComment start="{" end="}" contains=@Spell
+syn match hasteComment "//.*" contains=@Spell
+
+" Define the default highlighting.
+" Only when an item doesn't have highlighting yet
+hi def link hasteSpecial Special
+hi def link hasteStatement Statement
+hi def link hasteCharacter String
+hi def link hasteString String
+hi def link hasteVector String
+hi def link hasteBoolean String
+hi def link hasteComment Comment
+hi def link hasteNumber String
+hi def link hasteTime String
+hi def link hasteType Type
+hi def link hasteGlobal Error
+hi def link hasteError Error
+hi def link hasteAttribute Type
+hi def link hasteSeparators Special
+hi def link hasteExecution Special
+hi def link hasteTypeConstr Special
+hi def link hasteOperator Type
+hi def link hasteExprOp Type
+hi def link hasteMisc String
+hi def link hasteFutureExt Error
+hi def link hasteVerilog Error
+hi def link hasteDefine Macro
+hi def link hasteInclude Include
+hi def link hastePreProc PreProc
+
+let b:current_syntax = "haste"
+
+" vim: ts=8
diff --git a/runtime/tutor/runtime/indent.vim b/runtime/tutor/runtime/indent.vim
new file mode 100644
index 0000000000..12f03648ca
--- /dev/null
+++ b/runtime/tutor/runtime/indent.vim
@@ -0,0 +1,31 @@
+" Vim support file to switch on loading indent files for file types
+"
+" Maintainer: Bram Moolenaar <Bram@vim.org>
+" Last Change: 2008 Feb 22
+
+if exists("did_indent_on")
+ finish
+endif
+let did_indent_on = 1
+
+augroup filetypeindent
+ au FileType * call s:LoadIndent()
+ func! s:LoadIndent()
+ if exists("b:undo_indent")
+ exe b:undo_indent
+ unlet! b:undo_indent b:did_indent
+ endif
+ let s = expand("<amatch>")
+ if s != ""
+ if exists("b:did_indent")
+ unlet b:did_indent
+ endif
+
+ " When there is a dot it is used to separate filetype names. Thus for
+ " "aaa.bbb" load "indent/aaa.vim" and then "indent/bbb.vim".
+ for name in split(s, '\.')
+ exe 'runtime! indent/' . name . '.vim'
+ endfor
+ endif
+ endfunc
+augroup END
diff --git a/runtime/tutor/runtime/vim16x16.png b/runtime/tutor/runtime/vim16x16.png
new file mode 100644
index 0000000000..fb45d22a05
--- /dev/null
+++ b/runtime/tutor/runtime/vim16x16.png
Binary files differ
diff --git a/runtime/tutor/tutor.eo.utf-8 b/runtime/tutor/tutor.eo.utf-8
new file mode 100644
index 0000000000..8f67b207b0
--- /dev/null
+++ b/runtime/tutor/tutor.eo.utf-8
@@ -0,0 +1,967 @@
+==============================================================================
+= B o n v e n o n al la I n s t r u i l o de V I M - Versio 1.0.eo =
+==============================================================================
+
+ Vim estas tre potenca redaktilo, kiu havas multajn komandojn, tro da ili
+ por ĉion klarigi en instruilo kiel ĉi tiu. Ĉi tiu instruilo estas
+ fasonita por priskribi sufiĉajn komandojn, por ke vi kapablu uzi Vim
+ kun sufiĉa facileco.
+
+ La tempo bezonata por plenumi la kurson estas 25-30 minutoj, kaj dependas
+ de kiom da tempo estas uzata por eksperimenti.
+
+ ATENTU:
+ La komandoj en la lecionoj ŝanĝos la tekston. Kopiu tiun ĉi dosieron
+ por ekzerci vin (se vi lanĉis "vimtutor", tiam estas jam kopio).
+
+ Gravas memori, ke ĉi tiu instruilo estas organizata por instrui per
+ la uzo. Tio signifas, ke vi devas plenumi la komandojn por bone lerni
+ ilin. Se vi nur legas la tekston, vi forgesos la komandojn!
+
+ Nun, certigu, ke la majuskla baskulo NE estas en reĝimo majuskla,
+ kaj premu la klavon j sufiĉe da fojoj por movi la kursoron, kaj por
+ ke la leciono 1.1 plenigu la ekranon.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.1: MOVI LA KURSORON
+
+
+ ** Por movi la kursoron, premu la h,j,k,l klavojn kiel montrite. **
+ ^
+ k Konsilo: La klavo h estas la plej liva kaj movas liven.
+ < h l > La klavo l estas la plej dekstra kaj movas dekstren.
+ j La klavo j aspektas kiel malsuprena sago.
+ v
+ 1. Movu la kursoron sur la ekrano ĝis kiam vi sentas vin komforta.
+
+ 2. Premu la klavon (j) ĝis kiam ĝi ripetas.
+ Vi nun scias, kiel moviĝi al la sekvanta leciono
+
+ 3. Uzante la malsuprenan klavon, moviĝu al la leciono 1.2.
+
+RIMARKO: Se vi dubas pri tio, kion vi premis, premu <ESK> por reiri al
+ la normala reĝimo. Tiam repremu la deziratan komandon.
+
+RIMARKO: La klavoj de la kursoro devus ankaŭ funkcii. Sed uzante hjkl,
+ vi kapablos moviĝi pli rapide post kiam vi kutimiĝos.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.2: ELIRI EL VIM
+
+
+ !! RIMARKO: Antaŭ ol plenumi iujn subajn paŝojn ajn, legu la tutan lecionon!!
+
+ 1. Premu la klavon <ESK> (por certigi, ke vi estas en normala reĝimo).
+
+ 2. Tajpu: :q! <Enenklavo>.
+ Tio eliras el la rekdaktilo, SEN konservi la ŝanĝojn, kion vi faris.
+
+ 3. Kiam vi vidas la ŝelinviton, tajpu la komandon kiun vi uzis por eniri
+ en ĉi tiu instruilo. Tio estus: vimtutor <Enenklavo>
+
+ 4. Se vi memoris tiujn paŝojn kaj sentas vin memfida, plenumu la paŝojn
+ 1 ĝis 3 por eliri kaj reeniri la redaktilon.
+
+RIMARKO: :q! <Enenklavo> eliras sen konservi la ŝanĝojn kion vi faris.
+ Post kelkaj lecionoj, vi lernos kiel konservi la ŝanĝojn al dosiero.
+
+ 5. Movu la kursoron suben ĝis la leciono 1.3.
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.3: REDAKTO DE TEKSTO - FORVIŜO
+
+
+ ** Premu x por forviŝi la signon sub la kursoro. **
+
+ 1. Movu la kursoron al la suba linio markita per --->.
+
+ 2. Por korekti la erarojn, movu la kursoron ĝis kiam ĝi estas sur la
+ forviŝenda signo.
+
+ 3. Premu la klavon x por forviŝi la nedeziratan signon.
+
+ 4. Ripetu paŝojn 2 ĝis 4 ĝis kiam la frazo estas ĝusta.
+
+
+---> La boovinno saaltiss ssur laa luuno.
+
+ 5. Post kiam la linio estas ĝusta, iru al la leciono 1.4
+
+RIMARKO: Trairante la instruilon, ne provu memori, lernu per la uzo.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.4: REDAKTO DE TEKSTO - ENMETO
+
+
+ ** Premu i por enmeti tekston. **
+
+ 1. Movu la kursoron al la unua suba linio markita per --->.
+
+ 2. Por igi la unuan linion sama ol la dua, movu la kursoron sur la unuan
+ signon post kie la teksto estas enmetenda.
+
+ 3. Premu i kaj tajpu la bezonatajn aldonojn.
+
+ 4. Premu <ESK> kiam la eraroj estas korektitaj por reiri al la normala
+ reĝimo. Ripetu la paŝojn 2 ĝis 4 por korekti la frazon.
+
+---> Mank en ĉi linio.
+---> Mankas tekston en ĉi tiu linio.
+
+ 5. Kiam vi sentas vin komforta pri enmeto de teksto, moviĝu al la
+ leciono 1.5.
+
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.5: REDAKTO DE TEKSTO - POSTALDONO
+
+
+ ** Premu A por postaldoni tekston. **
+
+ 1. Movu la kursoron al la unua suba linio markita per --->.
+ Ne gravas sur kiu signo estas la kursoro.
+
+ 2. Premu A kaj tajpu la bezonatajn aldonojn.
+
+ 3. Post kiam la teksto estas aldonita, premu <ESK> por reiri al la normala
+ reĝimo.
+
+ 4. Movu la kursoron al la dua linio markita per ---> kaj ripetu la
+ paŝojn 2 kaj 3 por korekti la frazon.
+
+---> Mankas teksto el ti
+ Mankas teksto el tiu linio.
+---> Mankas ankaŭ teks
+ Mankas ankaŭ teksto ĉi tie.
+
+ 5 Kiam vi sentas vin komforta pri postaldono de teksto, moviĝu al la
+ leciono 1.6
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1.6: REDAKTI DOSIERON
+
+ ** Uzu :wq por konservi dosieron kaj eliri. **
+
+ !! RIMARKO: Antaŭ ol plenumi iun suban paŝon ajn, legu la tutan lecionon!!
+
+ 1. Eliru el la instruilo kiel vi faris en la leciono 1.2: :q!
+
+ 2. Ĉe la ŝelinvito, tajpu ĉi tiun komandon: vim tutor <Enenklavo>
+ 'vim' estas la komando por lanĉi la redaktilon Vim, 'tutor' estas la
+ dosiernomo de la dosiero, kiun vi volas redakti. Uzu dosieron, kiu
+ ŝanĝeblas.
+
+ 3. Enmetu kaj forviŝu tekston, kiel vi lernis en la antaŭaj lecionoj.
+
+ 4. Konservu la dosieron kun ŝanĝoj kaj eliru el Vim per: :qw <Enenklavo>
+
+ 5. Relanĉu la instruilon vimtutor kaj moviĝu suben al la sekvanta resumo.
+
+ 6. Post kiam vi legis la suprajn paŝojn, kaj komprenis ilin: faru ilin.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 1 RESUMO
+
+ 1. La kursoro moviĝas aŭ per la sagoklavoj, aŭ per la klavoj hjkl.
+ h (liven) j (suben) k (supren) l (dekstren)
+
+ 2. Por lanĉi Vim el la ŝelinvito, tajpu: vim DOSIERNOMO <Enenklavo>
+
+ 3. Por eliri el Vim, tajpu: <ESK> :q! <Enenklavo> por rezigni la ŝanĝojn
+
+ 4. Por forviŝi la signojn ĉe la pozicio de la kursoro, tajpu: x
+
+ 5. Por enmeti aŭ postaldoni tekston, tajpu:
+ i tajpu enmetendan tekston <ESK>
+ enmetas tekston antaŭ la kursoro
+
+ A tajpu la postaldonendan tekston <ESK>
+ postaldonas post la kursoro
+
+RIMARKO: Premo de <ESK> iras al la normala reĝimo, aŭ rezignas la
+ nedeziratan aŭ parte plenumita komando.
+
+Nun daŭrigu al la leciono 2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.1: KOMANDOJ DE FORVIŜO
+
+
+ ** Tajpu dw por forviŝi vorton. **
+
+ 1. Premu <ESK> por certigi, ke vi estas en normala reĝimo.
+
+ 2. Movu la kursoron al la linio markita per --->.
+
+ 3. Movu la kursoron al la komenco de vorto, kiu forviŝendas.
+
+ 4. Tajpu dw por forviŝi la vorton.
+
+ RIMARKO: La litero d aperos en la lasta linio sur la ekrano kiam vi
+ tajpas ĝin. Vim atendas ĝis kiam vi tajpas w . Se vi vidas
+ alian signon ol d vi tajpis ion mise; premu <ESK> kaj
+ rekomencu.
+
+---> Estas iuj vortoj kiuj Zamenhof ne devus esti akuzativo en ĉi tiu frazo.
+
+ 5. Ripetu paŝojn 3 kaj 4 ĝis kiam la frazo estas ĝusta kaj moviĝu al la
+ leciono 2.2.
+
+
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ Leciono 2.2: PLIAJ KOMANDOJ DE FORVIŜO
+
+ ** Tajpu d$ por forviŝi la finon de la linio. **
+
+ 1. Premu <ESK> por certigi, ke vi estas en normala reĝimo.
+
+ 2. Movu la kursoron sur la suban linion markita per --->.
+
+ 3. Movu la kursoron ĉe la fino de la ĝusta linio (POST la unu