1
0
forked from aniani/vim

updated for version 7.0148

This commit is contained in:
Bram Moolenaar 2005-09-16 21:55:43 +00:00
parent 6b730e111c
commit 60a795aad6
18 changed files with 1383 additions and 82 deletions

226
runtime/autoload/zip.vim Normal file
View File

@ -0,0 +1,226 @@
" zip.vim: Handles browsing zipfiles
" AUTOLOAD PORTION
" Date: Sep 16, 2005
" Version: 2
" Maintainer: Charles E Campbell, Jr <drchipNOSPAM at campbellfamily dot biz>
" License: Vim License (see vim's :help license)
" Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
" notice is copied with it. Like anything else that's free,
" zipPlugin.vim is provided *as is* and comes with no warranty
" of any kind, either expressed or implied. By using this
" plugin, you agree that in no event will the copyright
" holder be liable for any damages resulting from the use
" of this software.
" ---------------------------------------------------------------------
" Initialization: {{{1
let s:keepcpo= &cpo
set cpo&vim
if exists("g:loaded_zip")
finish
endif
let g:loaded_zip= "v2"
" ----------------
" Functions: {{{1
" ----------------
" ---------------------------------------------------------------------
" zip#Browse: {{{2
fun! zip#Browse(zipfile)
" call Dfunc("zip#Browse(zipfile<".a:zipfile.">)")
" sanity checks
if !executable("unzip")
echohl Error | echo "***error*** (zip#Browse) unzip not available on your system"
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("zip#Browse")
return
endif
if !filereadable(a:zipfile)
echohl Error | echo "***error*** (zip#Browse) File not readable<".a:zipfile.">" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("zip#Browse")
return
endif
if &ma != 1
set ma
endif
let w:zipfile= a:zipfile
setlocal noswapfile
setlocal buftype=nofile
setlocal bufhidden=hide
setlocal nobuflisted
setlocal nowrap
set ft=tar
" give header
exe "$put ='".'\"'." zip.vim version ".g:loaded_zip."'"
exe "$put ='".'\"'." Browsing zipfile ".a:zipfile."'"
exe "$put ='".'\"'." Select a file with cursor and press ENTER"."'"
$put =''
0d
$
exe "silent r! unzip -l ".a:zipfile
$d
silent 4,$v/^\s\+\d\+\s\{0,5}\d/d
silent 4,$s/^\%(.*\)\s\+\(\S\)/\1/
setlocal noma nomod ro
noremap <silent> <buffer> <cr> :call <SID>ZipBrowseSelect()<cr>
" call Dret("zip#Browse")
endfun
" ---------------------------------------------------------------------
" ZipBrowseSelect: {{{2
fun! s:ZipBrowseSelect()
" call Dfunc("ZipBrowseSelect() zipfile<".w:zipfile.">")
let fname= getline(".")
" sanity check
if fname =~ '^"'
" call Dret("ZipBrowseSelect")
return
endif
if fname =~ '/$'
echohl Error | echo "***error*** (zip#Browse) Please specify a file, not a directory" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("ZipBrowseSelect")
return
endif
" call Decho("fname<".fname.">")
" get zipfile to the new-window
let zipfile= substitute(w:zipfile,'.zip$','','e')
new
wincmd _
exe "e zipfile:".zipfile.':'.fname
filetype detect
" call Dret("ZipBrowseSelect")
endfun
" ---------------------------------------------------------------------
" zip#Read: {{{2
fun! zip#Read(fname,mode)
" call Dfunc("zip#Read(fname<".a:fname.">,mode=".a:mode.")")
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
let fname = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
" call Decho("zipfile<".zipfile."> fname<".fname.">")
exe "r! unzip -p ".zipfile." ".fname
" cleanup
0d
set nomod
" call Dret("zip#Read")
endfun
" ---------------------------------------------------------------------
" zip#Write: {{{2
fun! zip#Write(fname)
" call Dfunc("zip#Write(fname<".a:fname.")")
" sanity checks
if !executable("zip")
echohl Error | echo "***error*** (zip#Write) sorry, your system doesn't appear to have the zip pgm" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("zip#Write")
return
endif
if !exists("*mkdir")
echohl Error | echo "***error*** (zip#Write) sorry, mkdir() doesn't work on your system" | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("zip#Write")
return
endif
let curdir= getcwd()
let tmpdir= tempname()
" call Decho("orig tempname<".tmpdir.">")
if tmpdir =~ '\.'
let tmpdir= substitute(tmpdir,'\.[^.]*$','','e')
endif
" call Decho("tmpdir<".tmpdir.">")
call mkdir(tmpdir,"p")
" attempt to change to the indicated directory
try
exe "cd ".escape(tmpdir,' \')
catch /^Vim\%((\a\+)\)\=:E344/
echohl Error | echo "***error*** (zip#Write) cannot cd to temporary directory" | Echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
" call Dret("zip#Write")
return
endtry
" call Decho("current directory now: ".getcwd())
" place temporary files under .../_ZIPVIM_/
if isdirectory("_ZIPVIM_")
call s:Rmdir("_ZIPVIM_")
endif
call mkdir("_ZIPVIM_")
cd _ZIPVIM_
" call Decho("current directory now: ".getcwd())
let zipfile = substitute(a:fname,'zipfile:\(.\{-}\):.*$','\1','')
let fname = substitute(a:fname,'zipfile:.\{-}:\(.*\)$','\1','')
let dirpath = substitute(fname,'/[^/]\+$','','e')
if zipfile !~ '/'
let zipfile= curdir.'/'.zipfile
endif
" call Decho("zipfile<".zipfile."> fname<".fname.">")
call mkdir(dirpath,"p")
exe "w! ".fname
if executable("cygpath")
let dirpath = substitute(system("cygpath ".dirpath),'\n','','e')
let zipfile = substitute(system("cygpath ".zipfile),'\n','','e')
endif
" call Decho("zip -u ".zipfile.".zip ".fname)
call system("zip -u ".zipfile.".zip ".fname)
if v:shell_error != 0
echohl Error | echo "***error*** (zip#Write) sorry, unable to update ".zipfile." with ".fname | echohl None
call inputsave()|call input("Press <cr> to continue")|call inputrestore()
endif
" cleanup and restore current directory
cd ..
call s:Rmdir("_ZIPVIM_")
exe "cd ".escape(curdir,' \')
setlocal nomod
" call Dret("zip#Write")
endfun
" ---------------------------------------------------------------------
" Rmdir: {{{2
fun! s:Rmdir(fname)
" call Dfunc("Rmdir(fname<".a:fname.">)")
if has("unix")
call system("/bin/rm -rf ".a:fname)
elseif has("win32") || has("win95") || has("win64") || has("win16")
if &shell =~? "sh$"
call system("/bin/rm -rf ".a:fname)
else
call system("del /S ".a:fname)
endif
endif
" call Dret("Rmdir")
endfun
" ------------------------------------------------------------------------
" Modelines And Restoration: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim:ts=8 fdm=marker

View File

@ -0,0 +1,38 @@
" Vim compiler file
" Language: eRuby
" Maintainer: Doug Kearns <djkea2 at gus.gscit.monash.edu.au>
" Info: $Id$
" URL: http://vim-ruby.sourceforge.net
" Anon CVS: See above site
" Licence: GPL (http://www.gnu.org)
" Disclaimer:
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
" ----------------------------------------------------------------------------
if exists("current_compiler")
finish
endif
let current_compiler = "eruby"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
let s:cpo_save = &cpo
set cpo-=C
CompilerSet makeprg=eruby
CompilerSet errorformat=eruby:\ %f:%l:%m,
\%E%f:%l:\ %m,
\%-Z%p^,
\%C%m,
\%-G%.%#
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

View File

@ -1,4 +1,4 @@
*eval.txt* For Vim version 7.0aa. Last change: 2005 Sep 12
*eval.txt* For Vim version 7.0aa. Last change: 2005 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -4972,7 +4972,7 @@ then define the function like this: >
echo "Done!"
endfunction
The file name and the name used before the colon in the function must match
The file name and the name used before the # in the function must match
exactly, and the defined function must have the name exactly as it will be
called.
@ -4983,9 +4983,6 @@ a path separator. Thus when calling a function: >
Vim will look for the file "autoload/foo/bar.vim" in 'runtimepath'.
The name before the first colon must be at least two characters long,
otherwise it looks like a scope, such as "s:".
This also works when reading a variable that has not been set yet: >
:let l = foo#bar#lvar

View File

@ -1,4 +1,4 @@
*filetype.txt* For Vim version 7.0aa. Last change: 2005 Aug 30
*filetype.txt* For Vim version 7.0aa. Last change: 2005 Sep 16
VIM REFERENCE MANUAL by Bram Moolenaar
@ -184,7 +184,8 @@ A. If you want to overrule all default file type checks.
< 3. To use the new filetype detection you must restart Vim.
The files in the "ftdetect" directory are used after all the default
checks, thus they can overrule a previously detected file type.
checks, thus they can overrule a previously detected file type. But you
can also use |:setfiletype| to keep a previously detected filetype.
B. If you want to detect your file after the default file type checks.

View File

@ -5294,7 +5294,6 @@ hebrew hebrew.txt /*hebrew*
hebrew.txt hebrew.txt /*hebrew.txt*
help various.txt /*help*
help-context help.txt /*help-context*
help-tags tags 1
help-translated various.txt /*help-translated*
help-xterm-window various.txt /*help-xterm-window*
help.txt help.txt /*help.txt*

View File

@ -1,4 +1,4 @@
*todo.txt* For Vim version 7.0aa. Last change: 2005 Sep 14
*todo.txt* For Vim version 7.0aa. Last change: 2005 Sep 16
VIM REFERENCE MANUAL by Bram Moolenaar
@ -30,6 +30,8 @@ be worked on, but only if you sponsor Vim development. See |sponsor|.
*known-bugs*
-------------------- Known bugs and current work -----------------------
Test11 fails sometimes. (athena, huge features)
ccomplete:
- How to use a popup menu?
- When a typedef or struct is local to a file only use it in that file?

View File

@ -1,4 +1,4 @@
*version7.txt* For Vim version 7.0aa. Last change: 2005 Sep 13
*version7.txt* For Vim version 7.0aa. Last change: 2005 Sep 15
VIM REFERENCE MANUAL by Bram Moolenaar
@ -1361,4 +1361,7 @@ searching for "qa" instead of quitting all windows.
GUI: When scrolling with the scrollbar and there is a line that doesn't fit
redrawing may fail. Make sure w_skipcol is valid before redrawing.
"dFxd;" deleted the character under the cursor, "d;" didn't remember the
exclusiveness of the motion.
vim:tw=78:ts=8:ft=help:norl:

31
runtime/doc/zip.txt Normal file
View File

@ -0,0 +1,31 @@
*zip.txt* Zip File Interface Sep 16, 2005
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: Copyright (C) 2005 Charles E. Campbell, Jr. {{{1 *zip-copyright*
Permission is hereby granted to use and distribute this code,
with or without modifications, provided that this copyright
notice is copied with it. Like anything else that's free,
zip.vim and zipPlugin.vim are provided *as is* and comes with no
warranty of any kind, either expressed or implied. By using this
plugin, you agree that in no event will the copyright holder be
liable for any damages resulting from the use of this software.
==============================================================================
1. Contents *zip* *zip-contents*
1. Contents..................................................|zip-contents|
2. Usage.....................................................|zip-usage|
3. History...................................................|zip-history|
==============================================================================
2. Usage *zip-usage* *zip-manual*
==============================================================================
3. History *zip-history*
v2 Sep 16, 2005 * silenced some commands (avoiding hit-enter prompt)
* began testing under Windows; works thus far
* filetype detection fixed
v1 Sep 15, 2005 * Initial release, had browsin, reading, and writing
==============================================================================
vim:tw=78:ts=8:ft=help

View File

@ -1,14 +1,125 @@
" Vim filetype plugin
" Language: Ruby
" Maintainer: Gavin Sinclair <gsinclair@soyabean.com.au>
" Last Change: 2002/08/12
" URL: www.soyabean.com.au/gavin/vim/index.html
" Language: Ruby
" Maintainer: Gavin Sinclair <gsinclair at soyabean.com.au>
" Info: $Id$
" URL: http://vim-ruby.sourceforge.net
" Anon CVS: See above site
" Licence: GPL (http://www.gnu.org)
" Disclaimer:
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
" ----------------------------------------------------------------------------
"
" Original matchit support thanks to Ned Konz. See his ftplugin/ruby.vim at
" http://bike-nomad.com/vim/ruby.vim.
" ----------------------------------------------------------------------------
" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
finish
finish
endif
let b:did_ftplugin = 1
" There are no known setting particularly appropriate for Ruby. Please
" contact the maintainer if you think of some.
let s:cpo_save = &cpo
set cpo&vim
" Matchit support
if exists("loaded_matchit") && !exists("b:match_words")
let b:match_ignorecase = 0
" TODO: improve optional do loops
let b:match_words =
\ '\%(' .
\ '\%(\%(\.\|\:\:\)\s*\)\@<!\<\%(class\|module\|begin\|def\|case\|for\|do\)\>' .
\ '\|' .
\ '\%(\%(^\|\.\.\.\=\|[\,;=([<>~\*/%!&^|+-]\)\s*\)\@<=\%(if\|unless\|until\|while\)\>' .
\ '\)' .
\ ':' .
\ '\%(' .
\ '\%(\%(\.\|\:\:\)\s*\)\@<!\<\%(else\|elsif\|ensure\|when\)\>' .
\ '\|' .
\ '\%(\%(^\|;\)\s*\)\@<=\<rescue\>' .
\ '\)' .
\ ':' .
\ '\%(\%(\.\|\:\:\)\s*\)\@<!\<end\>'
let b:match_skip =
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Interpolation\\|" .
\ "NoInterpolation\\|Escape\\|Comment\\|Documentation\\)\\>'"
endif
setlocal formatoptions-=t formatoptions+=croql
setlocal include=^\\s*\\<\\(load\\\|\w*require\\)\\>
setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
setlocal suffixesadd=.rb
" TODO:
"setlocal define=^\\s*def
setlocal comments=:#
setlocal commentstring=#\ %s
if !exists("s:rubypath")
if executable("ruby")
if &shellxquote == "'"
let s:rubypath = system('ruby -e "puts (begin; require %q{rubygems}; Gem.all_load_paths; rescue LoadError; []; end + $:).join(%q{,})"')
else
let s:rubypath = system("ruby -e 'puts (begin; require %q{rubygems}; Gem.all_load_paths; rescue LoadError; []; end + $:).join(%q{,})'")
endif
let s:rubypath = substitute(s:rubypath,',.$',',,','')
else
" If we can't call ruby to get its path, just default to using the
" current directory and the directory of the current file.
let s:rubypath = ".,,"
endif
endif
let &l:path = s:rubypath
if has("gui_win32") && !exists("b:browsefilter")
let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" .
\ "All Files (*.*)\t*.*\n"
endif
let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< "
\ "| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip"
let &cpo = s:cpo_save
unlet s:cpo_save
"
" Instructions for enabling "matchit" support:
"
" 1. Look for the latest "matchit" plugin at
"
" http://www.vim.org/scripts/script.php?script_id=39
"
" It is also packaged with Vim, in the $VIMRUNTIME/macros directory.
"
" 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc).
"
" 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin).
"
" 4. Ensure this file (ftplugin/ruby.vim) is installed.
"
" 5. Ensure you have this line in your $HOME/.vimrc:
" filetype plugin on
"
" 6. Restart Vim and create the matchit documentation:
"
" :helptags ~/.vim/doc
"
" Now you can do ":help matchit", and you should be able to use "%" on Ruby
" keywords. Try ":echo b:match_words" to be sure.
"
" Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the
" locations of plugin directories, etc., as there are several options, and it
" differs on Windows. Email gsinclair@soyabean.com.au if you need help.
"
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

View File

@ -1,11 +1,20 @@
" Vim indent file
" Language: Ruby
" Maintainer: Gavin Sinclair <gsinclair@soyabean.com.au>
" Last Change: 2003 May 11
" URL: www.soyabean.com.au/gavin/vim/index.html
" Changes: (since vim 6.1)
" - indentation after a line ending in comma, etc, (even in a comment) was
" broken, now fixed (2002/08/14)
" Language: Ruby
" Maintainer: Gavin Sinclair <gsinclair at soyabean.com.au>
" Developer: Nikolai Weibull <source at pcppopper.org>
" Info: $Id$
" URL: http://vim-ruby.rubyforge.org/
" Anon CVS: See above site
" Licence: GPL (http://www.gnu.org)
" Disclaimer:
" This program is distributed in the hope that it will be useful,
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
" ----------------------------------------------------------------------------
" 0. Initialization {{{1
" =================
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
@ -13,55 +22,363 @@ if exists("b:did_indent")
endif
let b:did_indent = 1
" Now, set up our indentation expression and keys that trigger it.
setlocal indentexpr=GetRubyIndent()
setlocal nolisp
setlocal nosmartindent
setlocal autoindent
setlocal indentkeys+==end,=else,=elsif,=when,=ensure,=rescue
setlocal indentkeys=0{,0},0),0],!^F,o,O,e
setlocal indentkeys+==end,=elsif,=when,=ensure,=rescue,==begin,==end
" Only define the function once.
if exists("*GetRubyIndent")
finish
endif
let s:cpo_save = &cpo
set cpo&vim
" 1. Variables {{{1
" ============
" Regex of syntax group names that are or delimit string or are comments.
let s:syng_strcom = '\<ruby\%(String\|StringDelimiter\|ASCIICode' .
\ '\|Interpolation\|NoInterpolation\|Escape\|Comment\|Documentation\)\>'
" Regex of syntax group names that are strings or comments.
let s:syng_strcom2 = '\<ruby\%(String' .
\ '\|Interpolation\|NoInterpolation\|Escape\|Comment\|Documentation\)\>'
" Regex of syntax group names that are strings.
let s:syng_string =
\ '\<ruby\%(String\|Interpolation\|NoInterpolation\|Escape\)\>'
" Regex of syntax group names that are strings or documentation.
let s:syng_stringdoc =
\'\<ruby\%(String\|Interpolation\|NoInterpolation\|Escape\|Documentation\)\>'
" Expression used to check whether we should skip a match with searchpair().
let s:skip_expr =
\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '".s:syng_strcom."'"
" Regex used for words that, at the start of a line, add a level of indent.
let s:ruby_indent_keywords = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
\ '\|while\|until\|else\|elsif\|case\|when\|unless\|begin\|ensure' .
\ '\|rescue\)\>' .
\ '\|\%([*+/,=:-]\|<<\|>>\)\s*\zs' .
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\)\>'
" Regex used for words that, at the start of a line, remove a level of indent.
let s:ruby_deindent_keywords =
\ '^\s*\zs\<\%(ensure\|else\|rescue\|elsif\|when\|end\)\>'
" Regex that defines the start-match for the 'end' keyword.
"let s:end_start_regex = '\%(^\|[^.]\)\<\%(module\|class\|def\|if\|for\|while\|until\|case\|unless\|begin\|do\)\>'
" TODO: the do here should be restricted somewhat (only at end of line)?
let s:end_start_regex = '^\s*\zs\<\%(module\|class\|def\|if\|for' .
\ '\|while\|until\|case\|unless\|begin\)\>' .
\ '\|\%([*+/,=:-]\|<<\|>>\)\s*\zs' .
\ '\<\%(if\|for\|while\|until\|case\|unless\|begin\)\>' .
\ '\|\<do\>'
" Regex that defines the middle-match for the 'end' keyword.
let s:end_middle_regex = '\<\%(ensure\|else\|\%(\%(^\|;\)\s*\)\@<=\<rescue\>\|when\|elsif\)\>'
" Regex that defines the end-match for the 'end' keyword.
let s:end_end_regex = '\%(^\|[^.]\)\@<=\<end\>'
" Expression used for searchpair() call for finding match for 'end' keyword.
let s:end_skip_expr = s:skip_expr .
\ ' || (expand("<cword>") == "do"' .
\ ' && getline(".") =~ "^\\s*\\<while\\|until\\|for\\>")'
" Regex that defines continuation lines, not including (, {, or [.
let s:continuation_regex = '\%([\\*+/.,=:-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
" Regex that defines continuation lines.
" TODO: this needs to deal with if ...: and so on
let s:continuation_regex2 =
\ '\%([\\*+/.,=:({[-]\|\W[|&?]\|||\|&&\)\s*\%(#.*\)\=$'
" Regex that defines blocks.
let s:block_regex =
\ '\%(\<do\>\|{\)\s*\%(|\%([*@]\=\h\w*,\=\s*\)\%(,\s*[*@]\=\h\w*\)*|\)\=\s*\%(#.*\)\=$'
" 2. Auxiliary Functions {{{1
" ======================
" Check if the character at lnum:col is inside a string, comment, or is ascii.
function s:IsInStringOrComment(lnum, col)
return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_strcom
endfunction
" Check if the character at lnum:col is inside a string or comment.
function s:IsInStringOrComment2(lnum, col)
return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_strcom2
endfunction
" Check if the character at lnum:col is inside a string.
function s:IsInString(lnum, col)
return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_string
endfunction
" Check if the character at lnum:col is inside a string or documentation.
function s:IsInStringOrDocumentation(lnum, col)
return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_stringdoc
endfunction
" Find line above 'lnum' that isn't empty, in a comment, or in a string.
function s:PrevNonBlankNonString(lnum)
let in_block = 0
let lnum = prevnonblank(a:lnum)
while lnum > 0
" Go in and out of blocks comments as necessary.
" If the line isn't empty (with opt. comment) or in a string, end search.
let line = getline(lnum)
if line =~ '^=begin$'
if in_block
let in_block = 0
else
break
endif
elseif !in_block && line =~ '^=end$'
let in_block = 1
elseif !in_block && line !~ '^\s*#.*$' && !(s:IsInStringOrComment(lnum, 1)
\ && s:IsInStringOrComment(lnum, strlen(line)))
break
endif
let lnum = prevnonblank(lnum - 1)
endwhile
return lnum
endfunction
" Find line above 'lnum' that started the continuation 'lnum' may be part of.
function s:GetMSL(lnum)
" Start on the line we're at and use its indent.
let msl = a:lnum
let lnum = s:PrevNonBlankNonString(a:lnum - 1)
while lnum > 0
" If we have a continuation line, or we're in a string, use line as MSL.
" Otherwise, terminate search as we have found our MSL already.
let line = getline(lnum)
let col = match(line, s:continuation_regex2) + 1
if (col > 0 && !s:IsInStringOrComment(lnum, col))
\ || s:IsInString(lnum, strlen(line))
let msl = lnum
else
break
endif
let lnum = s:PrevNonBlankNonString(lnum - 1)
endwhile
return msl
endfunction
" Check if line 'lnum' has more opening brackets than closing ones.
function s:LineHasOpeningBrackets(lnum)
let open_0 = 0
let open_2 = 0
let open_4 = 0
let line = getline(a:lnum)
let pos = match(line, '[][(){}]', 0)
while pos != -1
if !s:IsInStringOrComment(a:lnum, pos + 1)
let idx = stridx('(){}[]', line[pos])
if idx % 2 == 0
let open_{idx} = open_{idx} + 1
else
let open_{idx - 1} = open_{idx - 1} - 1
endif
endif
let pos = match(line, '[][(){}]', pos + 1)
endwhile
return (open_0 > 0) . (open_2 > 0) . (open_4 > 0)
endfunction
function s:Match(lnum, regex)
let col = match(getline(a:lnum), a:regex) + 1
return col > 0 && !s:IsInStringOrComment(a:lnum, col) ? col : 0
endfunction
function s:MatchLast(lnum, regex)
let line = getline(a:lnum)
let col = match(line, '.*\zs' . a:regex)
while col != -1 && s:IsInStringOrComment(a:lnum, col)
let line = strpart(line, 0, col)
let col = match(line, '.*' . a:regex)
endwhile
return col + 1
endfunction
" 3. GetRubyIndent Function {{{1
" =========================
function GetRubyIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" 3.1. Setup {{{2
" ----------
" Set up variables for restoring position in file. Could use v:lnum here.
let vcol = col('.')
" 3.2. Work on the current line {{{2
" -----------------------------
" Get the current line.
let line = getline(v:lnum)
let ind = -1
" If we got a closing bracket on an empty line, find its match and indent
" according to it. For parentheses we indent to its column - 1, for the
" others we indent to the containing line's MSL's level. Return -1 if fail.
let col = matchend(line, '^\s*[]})]')
if col > 0 && !s:IsInStringOrComment(v:lnum, col)
call cursor(v:lnum, col)
let bs = strpart('(){}[]', stridx(')}]', line[col - 1]) * 2, 2)
if searchpair(escape(bs[0], '\['), '', bs[1], 'bW', s:skip_expr) > 0
let ind = line[col-1]==')' ? virtcol('.')-1 : indent(s:GetMSL(line('.')))
endif
return ind
endif
" If we have a =begin or =end set indent to first column.
if match(line, '^\s*\%(=begin\|=end\)$') != -1
return 0
endif
" If we have a deindenting keyword, find its match and indent to its level.
" TODO: this is messy
if s:Match(v:lnum, s:ruby_deindent_keywords)
" let lnum = s:PrevNonBlankNonString(v:lnum - 1)
"
" if lnum == 0
" return 0
" endif
"
" return indent(v:lnum) - &sw
call cursor(v:lnum, 1)
if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW',
\ s:end_skip_expr) > 0
if strpart(getline('.'), 0, col('.') - 1) =~ '=\s*'
let ind = virtcol('.') - 1
else
let ind = indent('.')
endif
endif
return ind
endif
" If we are in a multi-line string or line-comment, don't do anything to it.
if s:IsInStringOrDocumentation(v:lnum, matchend(line, '^\s*') + 1)
return indent('.')
endif
" 3.3. Work on the previous line. {{{2
" -------------------------------
" Find a non-blank, non-multi-line string line above the current line.
let lnum = s:PrevNonBlankNonString(v:lnum - 1)
" At the start of the file use zero indent.
if lnum == 0
return 0
endif
" If the line trailed with [*+,.(] - but not in a comment - trust the user
if getline(lnum) =~ '\(\[^#\].*\)?\(\*\|\.\|+\|,\|(\)\(\s*#.*\)\=$'
return -1
endif
" Add a 'shiftwidth' after lines beginning with:
" module, class, dev, if, for, while, until, else, elsif, case, when, {
" Set up variables for current line.
let line = getline(lnum)
let ind = indent(lnum)
let flag = 0
if getline(lnum) =~ '^\s*\(module\>\|class\>\|def\>\|if\>\|for\>\|while\>\|until\>\|else\>\|elsif\>\|case\>\|when\>\|unless\|begin\|ensure\>\|rescue\>\)'
\ || getline(lnum) =~ '{\s*$'
\ || getline(lnum) =~ '\({\|\<do\>\).*|.*|\s*$'
\ || getline(lnum) =~ '\<do\>\(\s*#.*\)\=$'
let ind = ind + &sw
let flag = 1
" If the previous line ended with a block opening, add a level of indent.
if s:Match(lnum, s:block_regex)
return indent(s:GetMSL(lnum)) + &sw
endif
" Subtract a 'shiftwidth' after lines ending with
" "end" when they begin with while, if, for, until
if flag == 1 && getline(lnum) =~ '\<end\>\(\s*#.*\)\=$'
let ind = ind - &sw
" If the previous line contained an opening bracket, and we are still in it,
" add indent depending on the bracket type.
if line =~ '[[({]'
let counts = s:LineHasOpeningBrackets(lnum)
if counts[0] == '1' && searchpair('(', '', ')', 'bW', s:skip_expr) > 0
return virtcol('.')
elseif counts[1] == '1' || counts[2] == '1'
return ind + &sw
else
call cursor(v:lnum, vcol)
end
endif
" Subtract a 'shiftwidth' on end, else and, elsif, when and }
if getline(v:lnum) =~ '^\s*\(end\>\|else\>\|elsif\>\|when\>\|ensure\>\|rescue\>\|}\)'
let ind = ind - &sw
" If the previous line ended with an "end", match that "end"s beginning's
" indent.
let col = s:Match(lnum, '\%(^\|[^.]\)\<end\>\s*\%(#.*\)\=$')
if col > 0
call cursor(lnum, col)
if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW',
\ s:end_skip_expr) > 0
let n = line('.')
let ind = indent('.')
let msl = s:GetMSL(n)
if msl != n
let ind = indent(msl)
end
return ind
endif
end
let col = s:Match(lnum, s:ruby_indent_keywords)
if col > 0
call cursor(lnum, col)
let ind = virtcol('.') - 1 + &sw
" let ind = indent(lnum) + &sw
" TODO: make this better (we need to count them) (or, if a searchpair
" fails, we know that something is lacking an end and thus we indent a
" level
if s:Match(lnum, s:end_end_regex)
let ind = indent('.')
endif
return ind
endif
" 3.4. Work on the MSL line. {{{2
" --------------------------
" Set up variables to use and search for MSL to the previous line.
let p_lnum = lnum
let lnum = s:GetMSL(lnum)
" If the previous line wasn't a MSL and is continuation return its indent.
" TODO: the || s:IsInString() thing worries me a bit.
if p_lnum != lnum
if s:Match(p_lnum,s:continuation_regex)||s:IsInString(p_lnum,strlen(line))
return ind
endif
endif
" Set up more variables, now that we know we wasn't continuation bound.
let line = getline(lnum)
let msl_ind = indent(lnum)
" If the MSL line had an indenting keyword in it, add a level of indent.
" TODO: this does not take into account contrived things such as
" module Foo; class Bar; end
if s:Match(lnum, s:ruby_indent_keywords)
let ind = msl_ind + &sw
if s:Match(lnum, s:end_end_regex)
let ind = ind - &sw
endif
return ind
endif
" If the previous line ended with [*+/.-=], indent one extra level.
if s:Match(lnum, s:continuation_regex)
if lnum == p_lnum
let ind = msl_ind + &sw
else
let ind = msl_ind
endif
endif
" }}}2
return ind
endfunction
" vim:sw=2
" }}}1
let &cpo = s:cpo_save
unlet s:cpo_save
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

View File

@ -0,0 +1,572 @@
" Keymap file for the editing Tamil language files in TSCII encoding.
"
" Maintainer: Yegappan Lakshmanan (yegappan AT yahoo DOT com)
" Last updated: August 4, 2005
"
" You will need a fixed width TSCII font to use this encoding. The
" Avarangal TSCII fixed width font (TSC_AvarangalFxd) is used to test
" this keymap.
"
" Visit http://www.tscii.org for more information about the TSCII
" encoding.
"
let b:keymap_name = "tamil_tscii"
loadkeymap
" Uyir (Vowels) letters
a <char-171>
aa <char-172>
A <char-172>
i <char-173>
ii <char-174>
I <char-174>
u <char-175>
uu <char-176>
U <char-176>
e <char-177>
ee <char-178>
E <char-178>
ai <char-179>
o <char-180>
oo <char-181>
O <char-181>
au <char-182>
q <char-183>
" mey (Consonants) letters
k <char-236>
ka <char-184>
kaa <char-184><char-161>
kA <char-184><char-161>
ki <char-184><char-162>
kii <char-184><char-163>
kI <char-184><char-163>
ku <char-204>
kuu <char-220>
kU <char-220>
ke <char-166><char-184>
kee <char-167><char-184>
kE <char-167><char-184>
kai <char-168><char-184>
ko <char-166><char-184><char-161>
koo <char-167><char-184><char-161>
kO <char-167><char-184><char-161>
kau <char-166><char-184><char-199>
g <char-236>
ga <char-184>
gaa <char-184><char-161>
gA <char-184><char-161>
gi <char-184><char-162>
gii <char-184><char-163>
gI <char-184><char-163>
gu <char-204>
guu <char-220>
gU <char-220>
ge <char-166><char-184>
gee <char-167><char-184>
gE <char-167><char-184>
gai <char-168><char-184>
go <char-166><char-184><char-161>
goo <char-167><char-184><char-161>
gO <char-167><char-184><char-161>
gau <char-166><char-184><char-199>
ng <char-237>
nga <char-185>
ngaa <char-185><char-161>
ngA <char-185><char-161>
ngi <char-185><char-162>
ngii <char-185><char-163>
ngI <char-185><char-163>
ngu <char-153>
nguu <char-155>
ngU <char-155>
nge <char-166><char-185>
ngee <char-167><char-185>
ngE <char-167><char-185>
ngai <char-168><char-185>
ngo <char-166><char-185><char-161>
ngoo <char-167><char-185><char-161>
ngO <char-167><char-185><char-161>
ngau <char-166><char-185><char-199>
ch <char-238>
cha <char-186>
chaa <char-186><char-161>
chA <char-186><char-161>
chi <char-186><char-162>
chii <char-186><char-163>
chI <char-186><char-163>
chu <char-204>
chuu <char-221>
chU <char-221>
che <char-166><char-186>
chee <char-167><char-186>
chE <char-167><char-186>
chai <char-168><char-186>
cho <char-166><char-186><char-161>
choo <char-167><char-186><char-161>
chO <char-167><char-186><char-161>
chau <char-166><char-186><char-199>
s <char-238>
sa <char-186>
saa <char-186><char-161>
sA <char-186><char-161>
si <char-186><char-162>
sii <char-186><char-163>
sI <char-186><char-163>
su <char-204>
suu <char-221>
sU <char-221>
se <char-166><char-186>
see <char-167><char-186>
sE <char-167><char-186>
sai <char-168><char-186>
so <char-166><char-186><char-161>
soo <char-167><char-186><char-161>
sO <char-167><char-186><char-161>
sau <char-166><char-186><char-199>
nj <char-239>
nja <char-187>
njaa <char-187><char-161>
njA <char-187><char-161>
nji <char-187><char-162>
njii <char-187><char-163>
njI <char-187><char-163>
nju <char-154>
njuu <char-156>
njU <char-156>
nje <char-166><char-187>
njee <char-167><char-187>
njE <char-167><char-187>
njai <char-168><char-187>
njo <char-166><char-187><char-161>
njoo <char-167><char-187><char-161>
njO <char-167><char-187><char-161>
njau <char-166><char-187><char-199>
t <char-240>
ta <char-188>
taa <char-188><char-161>
tA <char-188><char-161>
ti <char-202>
tii <char-203>
tI <char-203>
tu <char-206>
tuu <char-222>
tU <char-222>
te <char-166><char-188>
tee <char-167><char-188>
tE <char-167><char-188>
tai <char-168><char-188>
to <char-166><char-188><char-161>
too <char-167><char-188><char-161>
tO <char-167><char-188><char-161>
tau <char-166><char-188><char-199>
d <char-240>
da <char-188>
daa <char-188><char-161>
dA <char-188><char-161>
di <char-202>
dii <char-203>
dI <char-203>
du <char-206>
duu <char-222>
dU <char-222>
de <char-166><char-188>
dee <char-167><char-188>
dE <char-167><char-188>
dai <char-168><char-188>
do <char-166><char-188><char-161>
doo <char-167><char-188><char-161>
dO <char-167><char-188><char-161>
dau <char-166><char-188><char-199>
N <char-241>
Na <char-189>
Naa <char-189><char-161>
NA <char-189><char-161>
Ni <char-189><char-162>
Nii <char-189><char-163>
NI <char-189><char-163>
Nu <char-207>
Nuu <char-223>
NU <char-223>
Ne <char-166><char-189>
Nee <char-167><char-189>
NE <char-167><char-189>
Nai <char-168><char-189>
No <char-166><char-189><char-161>
Noo <char-167><char-189><char-161>
NO <char-167><char-189><char-161>
Nau <char-166><char-189><char-199>
th <char-242>
tha <char-190>
thaa <char-190><char-161>
thA <char-190><char-161>
thi <char-190><char-162>
thii <char-190><char-163>
thI <char-190><char-163>
thu <char-208>
thuu <char-224>
thU <char-224>
the <char-166><char-190>
thee <char-167><char-190>
thE <char-167><char-190>
thai <char-168><char-190>
tho <char-166><char-190><char-161>
thoo <char-167><char-190><char-161>
thO <char-167><char-190><char-161>
thau <char-166><char-190><char-199>
w <char-243>
wa <char-191>
waa <char-191><char-161>
wA <char-191><char-161>
wi <char-191><char-162>
wii <char-191><char-163>
wI <char-191><char-163>
wu <char-209>
wuu <char-225>
wU <char-225>
we <char-166><char-191>
wee <char-167><char-191>
wE <char-167><char-191>
wai <char-168><char-191>
wo <char-166><char-191><char-161>
woo <char-167><char-191><char-161>
wO <char-167><char-191><char-161>
wau <char-166><char-191><char-199>
n- <char-243>
n-a <char-191>
n-aa <char-191><char-161>
n-A <char-191><char-161>
n-i <char-191><char-162>
n-ii <char-191><char-163>
n-I <char-191><char-163>
n-u <char-209>
n-uu <char-225>
n-U <char-225>
n-e <char-166><char-191>
n-ee <char-167><char-191>
n-E <char-167><char-191>
n-ai <char-168><char-191>
n-o <char-166><char-191><char-161>
n-oo <char-167><char-191><char-161>
n-O <char-167><char-191><char-161>
n-au <char-166><char-191><char-199>
p <char-244>
pa <char-192>
paa <char-192><char-161>
pA <char-192><char-161>
pi <char-192><char-162>
pii <char-192><char-163>
pI <char-192><char-163>
pu <char-210>
puu <char-226>
pU <char-226>
pe <char-166><char-192>
pee <char-167><char-192>
pE <char-167><char-192>
pai <char-168><char-192>
po <char-166><char-192><char-161>
poo <char-167><char-192><char-161>
pO <char-167><char-192><char-161>
pau <char-166><char-192><char-199>
b <char-244>
ba <char-192>
baa <char-192><char-161>
bA <char-192><char-161>
bi <char-192><char-162>
bii <char-192><char-163>
bI <char-192><char-163>
bu <char-210>
buu <char-226>
bU <char-226>
be <char-166><char-192>
bee <char-167><char-192>
bE <char-167><char-192>
bai <char-168><char-192>
bo <char-166><char-192><char-161>
boo <char-167><char-192><char-161>
bO <char-167><char-192><char-161>
bau <char-166><char-192><char-199>
m <char-245>
ma <char-193>
maa <char-193><char-161>
mA <char-193><char-161>
mi <char-193><char-162>
mii <char-193><char-163>
mI <char-193><char-163>
mu <char-211>
muu <char-227>
mU <char-227>
me <char-166><char-193>
mee <char-167><char-193>
mE <char-167><char-193>
mai <char-168><char-193>
mo <char-166><char-193><char-161>
moo <char-167><char-193><char-161>
mO <char-167><char-193><char-161>
mau <char-166><char-193><char-199>
y <char-246>
ya <char-194>
yaa <char-194><char-161>
yA <char-194><char-161>
yi <char-194><char-162>
yii <char-194><char-163>
yI <char-194><char-163>
yu <char-212>
yuu <char-228>
yU <char-228>
ye <char-166><char-194>
yee <char-167><char-194>
yE <char-167><char-194>
yai <char-168><char-194>
yo <char-166><char-194><char-161>
yoo <char-167><char-194><char-161>
yO <char-167><char-194><char-161>
yau <char-166><char-194><char-199>
r <char-247>
ra <char-195>
raa <char-195><char-161>
rA <char-195><char-161>
ri <char-195><char-162>
rii <char-195><char-163>
rI <char-195><char-163>
ru <char-213>
ruu <char-229>
rU <char-229>
re <char-166><char-195>
ree <char-167><char-195>
rE <char-167><char-195>
rai <char-168><char-195>
ro <char-166><char-195><char-161>
roo <char-167><char-195><char-161>
rO <char-167><char-195><char-161>
rau <char-166><char-195><char-199>
l <char-248>
la <char-196>
laa <char-196><char-161>
lA <char-196><char-161>
li <char-196><char-162>
lii <char-196><char-163>
lI <char-196><char-163>
lu <char-214>
luu <char-230>
lU <char-230>
le <char-166><char-196>
lee <char-167><char-196>
lE <char-167><char-196>
lai <char-168><char-196>
lo <char-166><char-196><char-161>
loo <char-167><char-196><char-161>
lO <char-167><char-196><char-161>
lau <char-166><char-196><char-199>
v <char-249>
va <char-197>
vaa <char-197><char-161>
vA <char-197><char-161>
vi <char-197><char-162>
vii <char-197><char-163>
vI <char-197><char-163>
vu <char-215>
vuu <char-231>
vU <char-231>
ve <char-166><char-197>
vee <char-167><char-197>
vE <char-167><char-197>
vai <char-168><char-197>
vo <char-166><char-197><char-161>
voo <char-167><char-197><char-161>
vO <char-167><char-197><char-161>
vau <char-166><char-197><char-199>
z <char-250>
za <char-198>
zaa <char-198><char-161>
zA <char-198><char-161>
zi <char-198><char-162>
zii <char-198><char-163>
zI <char-198><char-163>
zu <char-216>
zuu <char-232>
zU <char-232>
ze <char-166><char-198>
zee <char-167><char-198>
zE <char-167><char-198>
zai <char-168><char-198>
zo <char-166><char-198><char-161>
zoo <char-167><char-198><char-161>
zO <char-167><char-198><char-161>
zau <char-166><char-198><char-199>
L <char-251>
La <char-199>
Laa <char-199><char-161>
LA <char-199><char-161>
Li <char-199><char-162>
Lii <char-199><char-163>
LI <char-199><char-163>
Lu <char-217>
Luu <char-233>
LU <char-233>
Le <char-166><char-199>
Lee <char-167><char-199>
LE <char-167><char-199>
Lai <char-168><char-199>
Lo <char-166><char-199><char-161>
Loo <char-167><char-199><char-161>
LO <char-167><char-199><char-161>
Lau <char-166><char-199><char-199>
R <char-252>
Ra <char-200>
Raa <char-200><char-161>
RA <char-200><char-161>
Ri <char-200><char-162>
Rii <char-200><char-163>
RI <char-200><char-163>
Ru <char-218>
Ruu <char-234>
RU <char-234>
Re <char-166><char-200>
Ree <char-167><char-200>
RE <char-167><char-200>
Rai <char-168><char-200>
Ro <char-166><char-200><char-161>
Roo <char-167><char-200><char-161>
RO <char-167><char-200><char-161>
Rau <char-166><char-200><char-199>
n <char-253>
na <char-201>
naa <char-201><char-161>
nA <char-201><char-161>
ni <char-201><char-162>
nii <char-201><char-163>
nI <char-201><char-163>
nu <char-219>
nuu <char-235>
nU <char-235>
ne <char-166><char-201>
nee <char-167><char-201>
nE <char-167><char-201>
nai <char-168><char-201>
no <char-166><char-201><char-161>
noo <char-167><char-201><char-161>
nO <char-167><char-201><char-161>
nau <char-166><char-201><char-199>
" Grantha letters
j <char-136>
ja <char-131>
jaa <char-131><char-161>
jA <char-131><char-161>
ji <char-131><char-162>
jii <char-131><char-163>
jI <char-131><char-163>
ju <char-131><char-164>
juu <char-131><char-164>
jU <char-131><char-165>
je <char-166><char-131>
jee <char-167><char-131>
jE <char-167><char-131>
jai <char-168><char-131>
jo <char-166><char-131><char-161>
joo <char-167><char-131><char-161>
jO <char-167><char-131><char-161>
jau <char-166><char-131><char-199>
sh <char-137>
sha <char-132>
shaa <char-132><char-161>
shA <char-132><char-161>
shi <char-132><char-162>
shii <char-132><char-163>
shI <char-132><char-163>
shu <char-131><char-164>
shuu <char-131><char-164>
shU <char-131><char-165>
she <char-166><char-132>
shee <char-167><char-132>
shE <char-167><char-132>
shai <char-168><char-132>
sho <char-166><char-132><char-161>
shoo <char-167><char-132><char-161>
shO <char-167><char-132><char-161>
shau <char-166><char-132><char-199>
S <char-138>
Sa <char-133>
Saa <char-133><char-161>
SA <char-133><char-161>
Si <char-133><char-162>
Sii <char-133><char-163>
SI <char-133><char-163>
Su <char-133><char-164>
Suu <char-133><char-165>
SU <char-133><char-165>
Se <char-166><char-133>
See <char-167><char-133>
SE <char-167><char-133>
Sai <char-168><char-133>
So <char-166><char-133><char-161>
Soo <char-167><char-133><char-161>
SO <char-167><char-133><char-161>
Sau <char-166><char-133><char-199>
h <char-139>
ha <char-134>
haa <char-134><char-161>
hA <char-134><char-161>
hi <char-134><char-162>
hii <char-134><char-163>
hI <char-134><char-163>
hu <char-134><char-164>
huu <char-134><char-165>
hU <char-134><char-165>
he <char-166><char-134>
hee <char-167><char-134>
hE <char-167><char-134>
hai <char-168><char-134>
ho <char-166><char-134><char-161>
hoo <char-167><char-134><char-161>
hO <char-167><char-134><char-161>
hau <char-166><char-134><char-199>
x <char-140>
xa <char-135>
xaa <char-135><char-161>
xA <char-135><char-161>
xi <char-135><char-162>
xii <char-135><char-163>
xI <char-135><char-163>
xu <char-135><char-164>
xuu <char-135><char-165>
xU <char-135><char-165>
xe <char-166><char-135>
xee <char-167><char-135>
xE <char-167><char-135>
xai <char-168><char-135>
xo <char-166><char-135><char-161>
xoo <char-167><char-135><char-161>
xO <char-167><char-135><char-161>
xau <char-166><char-135><char-199>
sri <char-130>

View File

@ -10,7 +10,6 @@
" but WITHOUT ANY WARRANTY; without even the implied warranty of
" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
" GNU General Public License for more details.
" ----------------------------------------------------------------------------
" For version 5.x: Clear all syntax items
" For version 6.x: Quit when a syntax file was already loaded
@ -33,9 +32,12 @@ else
syn include @rubyTop syntax/ruby.vim
endif
syn region erubyOneLiner matchgroup=erubyDelimiter start="^\s*\zs%" end="$" contains=@rubyTop,erubyDelimiter keepend
syn region erubyBlock matchgroup=erubyDelimiter start="<%=\=" end="%>" contains=@rubyTop containedin=ALLBUT,erubyComment keepend
syn region erubyComment matchgroup=erubyDelimiter start="<%#" end="%>" keepend
syn cluster erubyRegions contains=erubyOneLiner,erubyBlock,erubyExpression,erubyComment
syn region erubyOneLiner matchgroup=erubyDelimiter start="^%%\@!" end="$" contains=@rubyTop containedin=ALLBUT,@erubyRegions keepend oneline
syn region erubyBlock matchgroup=erubyDelimiter start="<%%\@!" end="%>" contains=@rubyTop containedin=ALLBUT,@erubyRegions
syn region erubyExpression matchgroup=erubyDelimiter start="<%=" end="%>" contains=@rubyTop containedin=ALLBUT,@erubyRegions
syn region erubyComment matchgroup=erubyDelimiter start="<%#" end="%>" contains=rubyTodo,@Spell containedin=ALLBUT,@erubyRegions keepend
" Define the default highlighting.
" For version 5.7 and earlier: only when not done already
@ -59,4 +61,4 @@ if main_syntax == 'eruby'
unlet main_syntax
endif
" vim: sw=2 sts=2 ts=8 ff=unix nowrap:
" vim: nowrap sw=2 sts=2 ts=8 ff=unix:

View File

@ -2140,8 +2140,8 @@ op_tilde(oap)
pos_T pos;
#ifdef FEAT_VISUAL
struct block_def bd;
#endif
int todo;
#endif
int did_change = 0;
if (u_save((linenr_T)(oap->start.lnum - 1),
@ -2158,10 +2158,10 @@ op_tilde(oap)
pos.col = bd.textcol;
for (todo = bd.textlen; todo > 0; --todo)
{
#ifdef FEAT_MBYTE
# ifdef FEAT_MBYTE
if (has_mbyte)
todo -= (*mb_ptr2len)(ml_get_pos(&pos)) - 1;
#endif
# endif
did_change |= swapchar(oap->op_type, &pos);
if (inc(&pos) == -1) /* at end of file */
break;
@ -2195,16 +2195,13 @@ op_tilde(oap)
else if (!oap->inclusive)
dec(&(oap->end));
for (todo = oap->end.col - pos.col + 1; todo > 0; --todo)
while (ltoreq(pos, oap->end))
{
#ifdef FEAT_MBYTE
if (has_mbyte)
todo -= (*mb_ptr2len)(ml_get_pos(&pos)) - 1;
#endif
did_change |= swapchar(oap->op_type, &pos);
if (inc(&pos) == -1) /* at end of file */
break;
}
if (did_change)
{
changed_lines(oap->start.lnum, oap->start.col, oap->end.lnum + 1,

View File

@ -2931,7 +2931,7 @@ win_line(wp, lnum, startrow, endrow)
wp->w_cursor.lnum = lnum;
wp->w_cursor.col = ptr - line;
len = spell_move_to(wp, FORWARD, TRUE, TRUE, &spell_attr);
if (len == 0 || wp->w_cursor.col > ptr - line)
if (len == 0 || (int)wp->w_cursor.col > ptr - line)
{
/* no bad word found at line start, don't check until end of a
* word */

View File

@ -1440,6 +1440,11 @@ searchc(cap, t_cmd)
/* For multi-byte re-use last bytes[] and bytelen. */
}
if (dir == BACKWARD)
cap->oap->inclusive = FALSE;
else
cap->oap->inclusive = TRUE;
p = ml_get_curline();
col = curwin->w_cursor.col;
len = (int)STRLEN(p);

View File

@ -34,7 +34,7 @@ test
déôl
['deol', 'déôr', 'test']
end
['put', 'test', 'uk']
['put', 'OK', 'test']
the
['put', 'uk', 'test']
gebletegek
@ -75,7 +75,7 @@ wrong
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'put']
['input', 'puts', 'outputs']
comment
['Comment']
ok
@ -143,7 +143,7 @@ wordutilize
pro
['bork', 'end', 'word']
borkborkborkborkborkbork
['borkbork borkborkborkbork', 'borkborkbork borkborkbork', 'borkborkborkborkbork bork']
['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
tomatotomatotomato
['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
endstart
@ -153,13 +153,13 @@ endend
startstart
['start start']
wordend
['word end', 'wordword', 'word']
['word end', 'word', 'wordword']
wordstart
['word start', 'bork start']
startwordwordwordwordend
['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
borkpreborkpreborkbork
['borkpreborkprebork bork', 'borkprebork preborkbork', 'bork preborkpreborkbork']
['bork preborkpreborkbork', 'borkprebork preborkbork', 'borkpreborkprebork bork']
test 5-5
# file: Xtest.latin1.spl
@ -211,7 +211,7 @@ mee
meea2
['meea1', 'meeaé', 'lead']
prabar
['prebar', 'leadbar', 'bar']
['prebar', 'bar', 'leadbar']
probarbirk
['prebarbork']
middle
@ -243,7 +243,7 @@ mee
meea2
['meea1', 'meeaé', 'lead']
prabar
['prebar', 'leadbar', 'bar']
['prebar', 'bar', 'leadbar']
probarmaat
['prebarmeat']
middle

View File

@ -34,7 +34,7 @@ test
déôl
['deol', 'déôr', 'test']
end
['put', 'test', 'uk']
['put', 'OK', 'test']
the
['put', 'uk', 'test']
gebletegek
@ -75,7 +75,7 @@ wrong
bad
['put', 'uk', 'OK']
inputs
['input', 'puts', 'put']
['input', 'puts', 'outputs']
comment
['Comment']
ok
@ -143,7 +143,7 @@ wordutilize
pro
['bork', 'end', 'word']
borkborkborkborkborkbork
['borkbork borkborkborkbork', 'borkborkbork borkborkbork', 'borkborkborkborkbork bork']
['bork borkborkborkborkbork', 'borkbork borkborkborkbork', 'borkborkbork borkborkbork']
tomatotomatotomato
['tomato tomatotomato', 'tomatotomato tomato', 'tomato tomato tomato']
endstart
@ -153,13 +153,13 @@ endend
startstart
['start start']
wordend
['word end', 'wordword', 'word']
['word end', 'word', 'wordword']
wordstart
['word start', 'bork start']
startwordwordwordwordend
['startwordwordwordword end', 'startwordwordwordword', 'start wordwordwordword end']
borkpreborkpreborkbork
['borkpreborkprebork bork', 'borkprebork preborkbork', 'bork preborkpreborkbork']
['bork preborkpreborkbork', 'borkprebork preborkbork', 'borkpreborkprebork bork']
test 5-5
# file: Xtest.utf-8.spl
@ -211,7 +211,7 @@ mee
meea2
['meea1', 'meeaé', 'lead']
prabar
['prebar', 'leadbar', 'bar']
['prebar', 'bar', 'leadbar']
probarbirk
['prebarbork']
middle
@ -243,7 +243,7 @@ mee
meea2
['meea1', 'meeaé', 'lead']
prabar
['prebar', 'leadbar', 'bar']
['prebar', 'bar', 'leadbar']
probarmaat
['prebarmeat']
middle

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 (2005 Sep 14)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 14, compiled "
#define VIM_VERSION_LONG "VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 16)"
#define VIM_VERSION_LONG_DATE "VIM - Vi IMproved 7.0aa ALPHA (2005 Sep 16, compiled "