2012-10-26 02:30:01

wayland
nkoehring 12 years ago
commit 28b93a3d65

@ -0,0 +1,31 @@
use_xft yes
xftfont 123:size=8
xftalpha 0.1
update_interval 2
total_run_times 0
own_window no
double_buffer yes
maximum_width 600
draw_shades no
draw_outline no
draw_borders no
draw_graph_borders no
default_color white
color1 FFA300
default_shade_color red
default_outline_color green
alignment bottom_right
gap_x 0
gap_y 100
no_buffers yes
uppercase no
cpu_avg_samples 2
net_avg_samples 1
override_utf8_locale yes
use_spacer right
TEXT
${voffset 20}${color EAEAEA}${font Philosopher:pixelsize=120}${time %H:%M}${font}${voffset -77}${offset 10}${color1}${font Philosopher:pixelsize=42}${time %d} ${voffset -15}${color EAEAEA}${font Philosopher:pixelsize=22}${time %B} ${time %Y}${font}${voffset 27}${font Philosopher:pixelsize=58}${offset -173}${time %A}${font}
${voffset 3}${offset 10}${font Ubuntu:pixelsize=13}${color1}ROOT $color${fs_used_perc /}%${offset 12}${color1}HOME $color${fs_used_perc /home}%${offset 12}${color1}RAM $color$memperc%${offset 12}${color1}LOAD $color${loadavg 1}${offset 12}${color1}BAT $color${smapi_bat_perc 0}% ${smapi bat 0 state} ${offset 12}${color1}TMP $color${acpitemp}°C
${voffset 3}${offset 10}${mpd_smart}

@ -0,0 +1,95 @@
#
# Example of a user's .screenrc file
#
# This is how one can set a reattach password:
# password ODSJQf.4IJN7E # "1234"
# no annoying audible bell, please
vbell on
# detach on hangup
autodetach on
# don't display the copyright page
startup_message off
# emulate .logout message
pow_detach_msg "Screen session of \$LOGNAME \$:cr:\$:nl:ended."
# advertise hardstatus support to $TERMCAP
termcapinfo * '' 'hs:ts=\E_:fs=\E\\:ds=\E_\E\\'
# make the shell in every window a login shell
#shell -$SHELL
# autoaka testing
# shellaka '> |tcsh'
# shellaka '$ |sh'
# set every new windows hardstatus line to somenthing descriptive
# defhstatus "screen: ^En (^Et)"
defscrollback 1000
# don't kill window after the process died
# zombie "^["
# enable support for the "alternate screen" capability in all windows
# altscreen on
#utf rulezz
defutf8 on
utf8 on
term screen-256color
#termcap *rxvt* :am:bw:eo:hs:km:mi:ms:xn:xo::co#256:it#8:li#24:lm#0::AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@::K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD::RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=\E(B:al=\E[L::as=\E(0:bl=^G:cd=\E[J:ce=\E[K:cl=\E[H\E[2J::cm=\E[%i%d;%dH:cr=^M:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P::dl=\E[M:do=^J:ds=\E]2;\007:ec=\E[%dX:ei=\E[4l:fs=^G::ho=\E[H:i1=\E[?47l\E=\E[?1l:ic=\E[@:im=\E[4h::is=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l::k1=\E[11~:k2=\E[12~:k3=\E[13~:k4=\E[14~:k5=\E[15~::k6=\E[17~:k7=\E[18~:k8=\E[19~:k9=\E[20~:kD=\E[3~::kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:kd=\E[B:ke=\E>::kh=\E[7~:kl=\E[D:kr=\E[C:ks=\E=:ku=\E[A:le=^H:mb=\E[5m::md=\E[1m:me=\E[m\017:mr=\E[7m:nd=\E[C:rc=\E8:sc=\E7::se=\E[27m:sf=^J:so=\E[7m:sr=\EM:st=\EH:ta=^I::te=\E[r\E[?1049l:ti=\E[?1049h:ts=\E]2;:ue=\E[24m::up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:ve=\E[?25h:vi=\E[?25l::vs=\E[?25h:
################
#
# keybindings
#
#remove some stupid / dangerous key bindings
bind k
bind ^k
bind .
bind ^\
bind \\
bind ^h
bind h
#make them better
bind 'K' kill
bind 'I' login on
bind 'O' login off
bind '}' history
# Yet another hack:
# Prepend/append register [/] to the paste if ^a^] is pressed.
# This lets me have autoindent mode in vi.
register [ "\033:se noai\015a"
register ] "\033:se ai\015a"
bind ^] paste [.]
################
#
# default windows
#
#screen -t local 0
# caption always "%3n %t%? @%u%?%? [%h]%?%=%c"
# hardstatus alwaysignore
#hardstatus alwayslastline "%Lw"
caption always "%{=b kw} %=(( %?%-Lw%?%{kg})%n %t(%{kw}%?%+Lw%? ))%= "
# bind = resize =
# bind + resize +1
# bind - resize -1
# bind _ resize max
#
defnonblock 1
# blankerprg rain -d 100
# idle 30 blanker

@ -0,0 +1,4 @@
twitvim-0.4.1.vba: call delete('/home/psy/.vim/plugin/twitvim.vim')|call delete('/home/psy/.vim/doc/twitvim.txt')
conque_term_1.0.vba: call delete('/home/psy/.vim/autoload/conque_term.vim')|call delete('/home/psy/.vim/doc/conque_term.txt')|call delete('/home/psy/.vim/plugin/conque_term.vim')|call delete('/home/psy/.vim/syntax/conque_term.vim')
RltvNmbr.vba: call delete('/home/psy/.vim/plugin/RltvNmbr.vim')|call delete('/home/psy/.vim/plugin/RltvNmbrPlugin.vim')|call delete('/home/psy/.vim/doc/RltvNmbr.txt')|call delete('/home/psy/.vim/autoload/RltvNmbr.vim')
csv-0.24.vmb: call delete('/home/nk/.vim/ftplugin/csv.vim')|call delete('/home/nk/.vim/doc/ft-csv.txt')|call delete('/home/nk/.vim/syntax/csv.vim')|call delete('/home/nk/.vim/ftdetect/csv.vim')|call delete('/home/nk/.vim/plugin/csv.vim')

@ -0,0 +1,8 @@
let g:netrw_dirhistmax =10
let g:netrw_dirhist_cnt =6
let g:netrw_dirhist_1='/home/nk/.gem/ruby/1.9.1/gems/liquid-2.3.0/lib'
let g:netrw_dirhist_2='/home/nk/.gem/ruby/1.9.1/gems/liquid-2.3.0/lib/extras'
let g:netrw_dirhist_3='/home/nk/.gem/ruby/1.9.1/gems/liquid-2.3.0/lib'
let g:netrw_dirhist_4='/home/nk/devel/projects/SWS-Log'
let g:netrw_dirhist_5='/home/nk/devel/homepage/portfolio'
let g:netrw_dirhist_6='/home/nk/devel/homepage/portfolio/_layouts'

@ -0,0 +1,35 @@
" These are the mappings for snipMate.vim. Putting it here ensures that it
" will be mapped after other plugins such as supertab.vim.
if !exists('loaded_snips') || exists('s:did_snips_mappings')
finish
endif
let s:did_snips_mappings = 1
ino <silent> <tab> <c-r>=TriggerSnippet()<cr>
snor <silent> <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>
ino <silent> <s-tab> <c-r>=BackwardsSnippet()<cr>
snor <silent> <s-tab> <esc>i<right><c-r>=BackwardsSnippet()<cr>
ino <silent> <c-r><tab> <c-r>=ShowAvailableSnips()<cr>
" The default mappings for these are annoying & sometimes break snipMate.
" You can change them back if you want, I've put them here for convenience.
snor <bs> b<bs>
snor <right> <esc>a
snor <left> <esc>bi
snor ' b<bs>'
snor ` b<bs>`
snor % b<bs>%
snor U b<bs>U
snor ^ b<bs>^
snor \ b<bs>\
snor <c-x> b<bs><c-x>
" By default load snippets in snippets_dir
if empty(snippets_dir)
finish
endif
call GetSnippets(snippets_dir, '_') " Get global snippets
au FileType * if &ft != 'help' | call GetSnippets(snippets_dir, &ft) | endif
" vim:noet:sw=4:ts=4:ft=vim

@ -0,0 +1,263 @@
" RltvNmbr.vim
" Author: Charles E. Campbell, Jr.
" Date: Nov 21, 2008
" Version: 3
" GetLatestVimScripts: 2351 1 :AutoInstall: RltvNmbr.vim
" Phillippians 1:27 : Only let your manner of life be worthy of the gospel of
" Christ, that, whether I come and see you or am absent, I may hear of
" your state, that you stand firm in one spirit, with one soul striving
" for the faith of the gospel
" ---------------------------------------------------------------------
" Load Once: {{{1
if &cp || exists("g:loaded_RltvNmbr")
finish
endif
let g:loaded_RltvNmbr = "v3"
if v:version < 700
echohl WarningMsg
echo "***warning*** this version of RltvNmbr needs vim 7.0"
echohl Normal
finish
endif
if !has("signs")
echoerr 'Sorry, your vim is missing +signs; use "configure --with-features=huge" , recompile, and install'
finish
endif
if !has("syntax")
echoerr 'Sorry, your vim is missing +syntax; use "configure --with-features=huge" , recompile, and install'
finish
endif
let s:keepcpo= &cpo
set cpo&vim
"DechoTabOn
" ---------------------------------------------------------------------
" Parameters: {{{1
let s:RLTVNMBR= 2683
if !exists("g:DrChipTopLvlMenu")
let g:DrChipTopLvlMenu= "DrChip."
endif
" =====================================================================
" Functions: {{{1
" ---------------------------------------------------------------------
" RltvNmbr: {{{2
fun! s:RltvNmbr(mode,...)
" call Dfunc("s:RltvNmbr(mode=".a:mode.((a:0 > 0)? " ".a:1.")" : ")"))
if a:mode == 1
" initial placement of signs
" call Decho("mode ".a:mode.": initial sign placement")
let wt = line("w0")
let wc = line(".")
let wb = line("w$")
" call Decho("initial placement of signs: wt=".wt." wc=".wc." wb=".wb)
let w = wt
let s:rltvnmbr_topline_{bufnr("%")} = wt
let s:rltvnmbr_curline_{bufnr("%")} = wc
let s:rltvnmbr_botline_{bufnr("%")} = wb
while w <= wb
if w == wc
let w= w + 1
continue
endif
let wmwc = w - wc
if foldclosed(w) != -1
" call Decho("skipping w=".w." wmwc=".wmwc." foldclosed=".foldclosed(w))
let w= foldclosedend(w)+1
continue
endif
if wmwc <= -100
let w= wc - 99
continue
endif
if wmwc >= 100
break
endif
if wmwc < 0
let name = "RLTVN_M".(-wmwc)
exe "sign place ".(s:RLTVNMBR + wmwc)." line=".w." name=".name." buffer=".bufnr("%")
else
let name = "RLTVN_P".wmwc
exe "sign place ".(s:RLTVNMBR + wmwc)." line=".w." name=".name." buffer=".bufnr("%")
endif
let w= w + 1
endwhile
elseif a:mode == 2
" call Decho("mode ".a:mode.": consider removing and placing signs")
if exists("s:rltvnmbr_curline_{bufnr('%')}")
" remove and place signs
if line(".") != s:rltvnmbr_curline_{bufnr("%")} || line("w0") != s:rltvnmbr_topline_{bufnr("%")} || line("w$") != s:rltvnmbr_botline_{bufnr("%")}
" call Decho("do remove&place signs : (".line(".").",".line("w0").") =?= (".s:rltvnmbr_curline_{bufnr("%")}.",".s:rltvnmbr_topline_{bufnr("%")}.")")
exe "sign place ".s:RLTVNMBR." line=".s:rltvnmbr_curline_{bufnr("%")}." name=RLTVCURID buffer=".bufnr("%")
let lzkeep= &lz
set lz
call s:RltvNmbr(3) " remove signs
call s:RltvNmbr(1) " place signs
exe "sign unplace ".s:RLTVNMBR." buffer=".bufnr("%")
let &lz= lzkeep
endif
endif
elseif a:mode == 3
" removal of signs
" call Decho("mode ".a:mode.": removal of signs")
let wt = s:rltvnmbr_topline_{bufnr("%")}
let wc = s:rltvnmbr_curline_{bufnr("%")}
let wb = s:rltvnmbr_botline_{bufnr("%")}
" call Decho("using s:wt=".wt." s:wc=".wc." s:wb=".wb)
let w = wt
while w <= wb
if w == wc
let w= w + 1
continue
endif
let wmwc = w - wc
if foldclosed(w) != -1
" call Decho("skipping w=".w." wmwc=".wmwc." foldclosed=".foldclosed(w))
let w= foldclosedend(w)+1
continue
endif
if wmwc <= -100
let w= wc - 99
continue
endif
if wmwc >= 100
break
endif
if wmwc < 0
let name= "RLTVN_M".(-wmwc)
else
let name= "RLTVN_P".wmwc
endif
exe "sign unplace ".(s:RLTVNMBR + wmwc)." buffer=".bufnr("%")
let w= w + 1
endwhile
else
echoerr "mode=".a:mode." unsupported"
endif
" call Dret("s:RltvNmbr")
endfun
" ---------------------------------------------------------------------
" RltvNmbr#RltvNmbrCtrl: {{{2
fun! RltvNmbr#RltvNmbrCtrl(start)
" call Dfunc("RltvNmbr#RltvNmbrCtrl(start=".a:start.")")
if a:start && !exists("s:rltvnmbr_{bufnr('%')}")
let s:rltvnmbr_{bufnr("%")}= 1
let b:rltvnmbrmode = 1
if !exists("s:rltvnmbr_signs")
let s:rltvnmbr_signs= 1
hi default HL_RltvNmbr_Minus gui=none,italic ctermfg=red ctermbg=black guifg=red guibg=black
hi default HL_RltvNmbr_Positive gui=none,italic ctermfg=green ctermbg=black guifg=green guibg=black
silent call s:AvoidOtherSigns()
let L= 1
while L <= 99
exe "sign define RLTVN_M".L.' text='.string(L).' texthl=HL_RltvNmbr_Minus'
exe "sign define RLTVN_P".L.' text='.string(L).' texthl=HL_RltvNmbr_Positive'
let L= L+1
endwhile
endif
sign define RLTVCURID text=-- texthl=Ignore
exe "menu ".g:DrChipTopLvlMenu."RltvNmbr.Stop<tab>:RltvNmbr! :RltvNmbr!<cr>"
exe 'silent! unmenu '.g:DrChipTopLvlMenu.'RltvNmbr.Start'
call s:RltvNmbr(1)
augroup RltvNmbrAutoCmd
au!
au CursorHold * call <SID>RltvNmbr(2,"cursorhold")
au CursorMoved * call <SID>RltvNmbr(2,"cursormoved")
au FileChangedShellPost * call <SID>RltvNmbr(2,"filechangedshellpost")
au FocusGained * call <SID>RltvNmbr(2,"focusgained")
au FocusLost * call <SID>RltvNmbr(2,"focuslost")
au ShellCmdPost * call <SID>RltvNmbr(2,"shellcmdpost")
au ShellFilterPost * call <SID>RltvNmbr(2,"shellfilterpost")
au TabEnter * call <SID>RltvNmbr(2,"tabenter")
au VimResized * call <SID>RltvNmbr(2,"vimresized")
au WinEnter * call <SID>RltvNmbr(2,"winenter")
au ColorScheme * call <SID>ColorschemeLoaded()
augroup END
elseif !a:start && exists("s:rltvnmbr_{bufnr('%')}")
let b:rltvnmbrmode = 0
unlet s:rltvnmbr_{bufnr("%")}
augroup RltvNmbrAutoCmd
au!
augroup END
augroup! RltvNmbrAutoCmd
call s:RltvNmbr(3)
exe "sign unplace ".s:RLTVNMBR." buffer=".bufnr("%")
exe "menu ".g:DrChipTopLvlMenu."RltvNmbr.Start<tab>:RltvNmbr :RltvNmbr<cr>"
exe 'silent! unmenu '.g:DrChipTopLvlMenu.'RltvNmbr.Stop'
else
echo "RltvNmbr is already ".((a:start)? "enabled" : "off")
endif
" call Dret("RltvNmbr#RltvNmbrCtrl")
endfun
" ---------------------------------------------------------------------
" RltvNmbr#RltvNmbrToggle: supports the :RN command for quick relative-number-mode toggling {{{2
" If the :RN command is already available, then it will not be overridden.
fun! RltvNmbr#RltvNmbrToggle()
" call Dfunc("RltvNmbr#RltvNmbrToggle()")
if !exists("b:rltvnmbrmode")
let b:rltvnmbrmode= 0
endif
if b:rltvnmbrmode == 0
RltvNmbr
else
RltvNmbr!
endif
" call Dret("RltvNmbr#RltvNmbrToggle")
endfun
" ---------------------------------------------------------------------
" s:ColorschemeLoaded: {{{2
fun! s:ColorschemeLoaded()
" call Dfunc("s:ColorschemeLoaded()")
hi HL_RltvNmbr_Minus ctermfg=red ctermbg=black guifg=red guibg=black
hi HL_RltvNmbr_Positive ctermfg=green ctermbg=black guifg=green guibg=black
" call Dret("s:ColorschemeLoaded")
endfun
" ---------------------------------------------------------------------
" s:AvoidOtherSigns: {{{2
fun! s:AvoidOtherSigns()
" call Dfunc("s:AvoidOtherSigns()")
if !exists("s:othersigns")
" only do this one time
redir => s:othersigns
sign place
redir END
" determine the max id being used and use one more than that as the beginning of RltvNmbr ids
let signlist= split(s:othersigns,'\n')
let idlist = map(signlist,"substitute(v:val,'^.\\{-}\\<id=\\(\\d\\+\\)\\s.*$','\\1','')")
if len(idlist) > 2
let idlist = remove(idlist,2,-1)
let idlist = map(idlist,"str2nr(v:val)")
let idmax = max(idlist)
if idmax > s:RLTVNMBR
let s:RLTVNMBR = idmax + 1
" call Decho("s:RLTVNMBR=".s:RLTVNMBR)
endif
endif
unlet s:othersigns
let s:othersigns= 1
endif
" call Dret("s:AvoidOtherSigns : s:RLTVNMBR=".s:RLTVNMBR)
endfun
" ---------------------------------------------------------------------
" Restore: {{{1
let &cpo= s:keepcpo
unlet s:keepcpo
" vim: ts=4 fdm=marker

File diff suppressed because it is too large Load Diff

@ -0,0 +1,139 @@
" pathogen.vim - path option manipulation
" Maintainer: Tim Pope <vimNOSPAM@tpope.org>
" Version: 1.2
" Install in ~/.vim/autoload (or ~\vimfiles\autoload).
"
" API is documented below.
if exists("g:loaded_pathogen") || &cp
finish
endif
let g:loaded_pathogen = 1
" Split a path into a list.
function! pathogen#split(path) abort " {{{1
if type(a:path) == type([]) | return a:path | endif
let split = split(a:path,'\\\@<!\%(\\\\\)*\zs,')
return map(split,'substitute(v:val,''\\\([\\,]\)'',''\1'',"g")')
endfunction " }}}1
" Convert a list to a path.
function! pathogen#join(...) abort " {{{1
if type(a:1) == type(1) && a:1
let i = 1
let space = ' '
else
let i = 0
let space = ''
endif
let path = ""
while i < a:0
if type(a:000[i]) == type([])
let list = a:000[i]
let j = 0
while j < len(list)
let escaped = substitute(list[j],'[,'.space.']\|\\[\,'.space.']\@=','\\&','g')
let path .= ',' . escaped
let j += 1
endwhile
else
let path .= "," . a:000[i]
endif
let i += 1
endwhile
return substitute(path,'^,','','')
endfunction " }}}1
" Convert a list to a path with escaped spaces for 'path', 'tag', etc.
function! pathogen#legacyjoin(...) abort " {{{1
return call('pathogen#join',[1] + a:000)
endfunction " }}}1
" Remove duplicates from a list.
function! pathogen#uniq(list) abort " {{{1
let i = 0
let seen = {}
while i < len(a:list)
if has_key(seen,a:list[i])
call remove(a:list,i)
else
let seen[a:list[i]] = 1
let i += 1
endif
endwhile
return a:list
endfunction " }}}1
" Returns a hash indicating which filetype features are enabled.
function! pathogen#filetype() abort " {{{1
redir => output
silent filetype
redir END
let result = {}
let result.detection = match(output,'detection:ON') >= 0
let result.indent = match(output,'indent:ON') >= 0
let result.plugin = match(output,'plugin:ON') >= 0
return result
endfunction " }}}1
" \ on Windows unless shellslash is set, / everywhere else.
function! pathogen#separator() abort " {{{1
return !exists("+shellslash") || &shellslash ? '/' : '\'
endfunction " }}}1
" Convenience wrapper around glob() which returns a list.
function! pathogen#glob(pattern) abort " {{{1
let files = split(glob(a:pattern),"\n")
return map(files,'substitute(v:val,"[".pathogen#separator()."/]$","","")')
endfunction "}}}1
" Like pathogen#glob(), only limit the results to directories.
function! pathogen#glob_directories(pattern) abort " {{{1
return filter(pathogen#glob(a:pattern),'isdirectory(v:val)')
endfunction "}}}1
" Prepend all subdirectories of path to the rtp, and append all after
" directories in those subdirectories.
function! pathogen#runtime_prepend_subdirectories(path) " {{{1
let sep = pathogen#separator()
let before = pathogen#glob_directories(a:path.sep."*[^~]")
let after = pathogen#glob_directories(a:path.sep."*[^~]".sep."after")
let rtp = pathogen#split(&rtp)
let path = expand(a:path)
call filter(rtp,'v:val[0:strlen(path)-1] !=# path')
let &rtp = pathogen#join(pathogen#uniq(before + rtp + after))
return &rtp
endfunction " }}}1
" For each directory in rtp, check for a subdirectory named dir. If it
" exists, add all subdirectories of that subdirectory to the rtp, immediately
" after the original directory. If no argument is given, 'bundle' is used.
" Repeated calls with the same arguments are ignored.
function! pathogen#runtime_append_all_bundles(...) " {{{1
let sep = pathogen#separator()
let name = a:0 ? a:1 : 'bundle'
let list = []
for dir in pathogen#split(&rtp)
if dir =~# '\<after$'
let list += pathogen#glob_directories(substitute(dir,'after$',name.sep.'*[^~]'.sep.'after','')) + [dir]
else
let list += [dir] + pathogen#glob_directories(dir.sep.name.sep.'*[^~]')
endif
endfor
let &rtp = pathogen#join(pathogen#uniq(list))
return 1
endfunction
" }}}1
" Invoke :helptags on all non-$VIM doc directories in runtimepath.
function! pathogen#helptags() " {{{1
for dir in pathogen#split(&rtp)
if dir[0 : strlen($VIM)-1] !=# $VIM && isdirectory(dir.'/doc') && (!filereadable(dir.'/doc/tags') || filewritable(dir.'/doc/tags'))
helptags `=dir.'/doc'`
endif
endfor
endfunction " }}}1
" vim:set ft=vim ts=8 sw=2 sts=2:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,433 @@
fun! Filename(...)
let filename = expand('%:t:r')
if filename == '' | return a:0 == 2 ? a:2 : '' | endif
return !a:0 || a:1 == '' ? filename : substitute(a:1, '$1', filename, 'g')
endf
fun s:RemoveSnippet()
unl! g:snipPos s:curPos s:snipLen s:endCol s:endLine s:prevLen
\ s:lastBuf s:oldWord
if exists('s:update')
unl s:startCol s:origWordLen s:update
if exists('s:oldVars') | unl s:oldVars s:oldEndCol | endif
endif
aug! snipMateAutocmds
endf
fun snipMate#expandSnip(snip, col)
let lnum = line('.') | let col = a:col
let snippet = s:ProcessSnippet(a:snip)
" Avoid error if eval evaluates to nothing
if snippet == '' | return '' | endif
" Expand snippet onto current position with the tab stops removed
let snipLines = split(substitute(snippet, '$\d\+\|${\d\+.\{-}}', '', 'g'), "\n", 1)
let line = getline(lnum)
let afterCursor = strpart(line, col - 1)
" Keep text after the cursor
if afterCursor != "\t" && afterCursor != ' '
let line = strpart(line, 0, col - 1)
let snipLines[-1] .= afterCursor
else
let afterCursor = ''
" For some reason the cursor needs to move one right after this
if line != '' && col == 1 && &ve != 'all' && &ve != 'onemore'
let col += 1
endif
endif
call setline(lnum, line.snipLines[0])
" Autoindent snippet according to previous indentation
let indent = matchend(line, '^.\{-}\ze\(\S\|$\)') + 1
call append(lnum, map(snipLines[1:], "'".strpart(line, 0, indent - 1)."'.v:val"))
" Open any folds snippet expands into
if &fen | sil! exe lnum.','.(lnum + len(snipLines) - 1).'foldopen' | endif
let [g:snipPos, s:snipLen] = s:BuildTabStops(snippet, lnum, col - indent, indent)
if s:snipLen
aug snipMateAutocmds
au CursorMovedI * call s:UpdateChangedSnip(0)
au InsertEnter * call s:UpdateChangedSnip(1)
aug END
let s:lastBuf = bufnr(0) " Only expand snippet while in current buffer
let s:curPos = 0
let s:endCol = g:snipPos[s:curPos][1]
let s:endLine = g:snipPos[s:curPos][0]
call cursor(g:snipPos[s:curPos][0], g:snipPos[s:curPos][1])
let s:prevLen = [line('$'), col('$')]
if g:snipPos[s:curPos][2] != -1 | return s:SelectWord() | endif
else
unl g:snipPos s:snipLen
" Place cursor at end of snippet if no tab stop is given
let newlines = len(snipLines) - 1
call cursor(lnum + newlines, indent + len(snipLines[-1]) - len(afterCursor)
\ + (newlines ? 0: col - 1))
endif
return ''
endf
" Prepare snippet to be processed by s:BuildTabStops
fun s:ProcessSnippet(snip)
let snippet = a:snip
" Evaluate eval (`...`) expressions.
" Using a loop here instead of a regex fixes a bug with nested "\=".
if stridx(snippet, '`') != -1
while match(snippet, '`.\{-}`') != -1
let snippet = substitute(snippet, '`.\{-}`',
\ substitute(eval(matchstr(snippet, '`\zs.\{-}\ze`')),
\ "\n\\%$", '', ''), '')
endw
let snippet = substitute(snippet, "\r", "\n", 'g')
endif
" Place all text after a colon in a tab stop after the tab stop
" (e.g. "${#:foo}" becomes "${:foo}foo").
" This helps tell the position of the tab stops later.
let snippet = substitute(snippet, '${\d\+:\(.\{-}\)}', '&\1', 'g')
" Update the a:snip so that all the $# become the text after
" the colon in their associated ${#}.
" (e.g. "${1:foo}" turns all "$1"'s into "foo")
let i = 1
while stridx(snippet, '${'.i) != -1
let s = matchstr(snippet, '${'.i.':\zs.\{-}\ze}')
if s != ''
let snippet = substitute(snippet, '$'.i, s.'&', 'g')
endif
let i += 1
endw
if &et " Expand tabs to spaces if 'expandtab' is set.
return substitute(snippet, '\t', repeat(' ', &sts ? &sts : &sw), 'g')
endif
return snippet
endf
" Counts occurences of haystack in needle
fun s:Count(haystack, needle)
let counter = 0
let index = stridx(a:haystack, a:needle)
while index != -1
let index = stridx(a:haystack, a:needle, index+1)
let counter += 1
endw
return counter
endf
" Builds a list of a list of each tab stop in the snippet containing:
" 1.) The tab stop's line number.
" 2.) The tab stop's column number
" (by getting the length of the string between the last "\n" and the
" tab stop).
" 3.) The length of the text after the colon for the current tab stop
" (e.g. "${1:foo}" would return 3). If there is no text, -1 is returned.
" 4.) If the "${#:}" construct is given, another list containing all
" the matches of "$#", to be replaced with the placeholder. This list is
" composed the same way as the parent; the first item is the line number,
" and the second is the column.
fun s:BuildTabStops(snip, lnum, col, indent)
let snipPos = []
let i = 1
let withoutVars = substitute(a:snip, '$\d\+', '', 'g')
while stridx(a:snip, '${'.i) != -1
let beforeTabStop = matchstr(withoutVars, '^.*\ze${'.i.'\D')
let withoutOthers = substitute(withoutVars, '${\('.i.'\D\)\@!\d\+.\{-}}', '', 'g')
let j = i - 1
call add(snipPos, [0, 0, -1])
let snipPos[j][0] = a:lnum + s:Count(beforeTabStop, "\n")
let snipPos[j][1] = a:indent + len(matchstr(withoutOthers, '.*\(\n\|^\)\zs.*\ze${'.i.'\D'))
if snipPos[j][0] == a:lnum | let snipPos[j][1] += a:col | endif
" Get all $# matches in another list, if ${#:name} is given
if stridx(withoutVars, '${'.i.':') != -1
let snipPos[j][2] = len(matchstr(withoutVars, '${'.i.':\zs.\{-}\ze}'))
let dots = repeat('.', snipPos[j][2])
call add(snipPos[j], [])
let withoutOthers = substitute(a:snip, '${\d\+.\{-}}\|$'.i.'\@!\d\+', '', 'g')
while match(withoutOthers, '$'.i.'\(\D\|$\)') != -1
let beforeMark = matchstr(withoutOthers, '^.\{-}\ze'.dots.'$'.i.'\(\D\|$\)')
call add(snipPos[j][3], [0, 0])
let snipPos[j][3][-1][0] = a:lnum + s:Count(beforeMark, "\n")
let snipPos[j][3][-1][1] = a:indent + (snipPos[j][3][-1][0] > a:lnum
\ ? len(matchstr(beforeMark, '.*\n\zs.*'))
\ : a:col + len(beforeMark))
let withoutOthers = substitute(withoutOthers, '$'.i.'\ze\(\D\|$\)', '', '')
endw
endif
let i += 1
endw
return [snipPos, i - 1]
endf
fun snipMate#jumpTabStop(backwards)
let leftPlaceholder = exists('s:origWordLen')
\ && s:origWordLen != g:snipPos[s:curPos][2]
if leftPlaceholder && exists('s:oldEndCol')
let startPlaceholder = s:oldEndCol + 1
endif
if exists('s:update')
call s:UpdatePlaceholderTabStops()
else
call s:UpdateTabStops()
endif
" Don't reselect placeholder if it has been modified
if leftPlaceholder && g:snipPos[s:curPos][2] != -1
if exists('startPlaceholder')
let g:snipPos[s:curPos][1] = startPlaceholder
else
let g:snipPos[s:curPos][1] = col('.')
let g:snipPos[s:curPos][2] = 0
endif
endif
let s:curPos += a:backwards ? -1 : 1
" Loop over the snippet when going backwards from the beginning
if s:curPos < 0 | let s:curPos = s:snipLen - 1 | endif
if s:curPos == s:snipLen
let sMode = s:endCol == g:snipPos[s:curPos-1][1]+g:snipPos[s:curPos-1][2]
call s:RemoveSnippet()
return sMode ? "\<tab>" : TriggerSnippet()
endif
call cursor(g:snipPos[s:curPos][0], g:snipPos[s:curPos][1])
let s:endLine = g:snipPos[s:curPos][0]
let s:endCol = g:snipPos[s:curPos][1]
let s:prevLen = [line('$'), col('$')]
return g:snipPos[s:curPos][2] == -1 ? '' : s:SelectWord()
endf
fun s:UpdatePlaceholderTabStops()
let changeLen = s:origWordLen - g:snipPos[s:curPos][2]
unl s:startCol s:origWordLen s:update
if !exists('s:oldVars') | return | endif
" Update tab stops in snippet if text has been added via "$#"
" (e.g., in "${1:foo}bar$1${2}").
if changeLen != 0
let curLine = line('.')
for pos in g:snipPos
if pos == g:snipPos[s:curPos] | continue | endif
let changed = pos[0] == curLine && pos[1] > s:oldEndCol
let changedVars = 0
let endPlaceholder = pos[2] - 1 + pos[1]
" Subtract changeLen from each tab stop that was after any of
" the current tab stop's placeholders.
for [lnum, col] in s:oldVars
if lnum > pos[0] | break | endif
if pos[0] == lnum
if pos[1] > col || (pos[2] == -1 && pos[1] == col)
let changed += 1
elseif col < endPlaceholder
let changedVars += 1
endif
endif
endfor
let pos[1] -= changeLen * changed
let pos[2] -= changeLen * changedVars " Parse variables within placeholders
" e.g., "${1:foo} ${2:$1bar}"
if pos[2] == -1 | continue | endif
" Do the same to any placeholders in the other tab stops.
for nPos in pos[3]
let changed = nPos[0] == curLine && nPos[1] > s:oldEndCol
for [lnum, col] in s:oldVars
if lnum > nPos[0] | break | endif
if nPos[0] == lnum && nPos[1] > col
let changed += 1
endif
endfor
let nPos[1] -= changeLen * changed
endfor
endfor
endif
unl s:endCol s:oldVars s:oldEndCol
endf
fun s:UpdateTabStops()
let changeLine = s:endLine - g:snipPos[s:curPos][0]
let changeCol = s:endCol - g:snipPos[s:curPos][1]
if exists('s:origWordLen')
let changeCol -= s:origWordLen
unl s:origWordLen
endif
let lnum = g:snipPos[s:curPos][0]
let col = g:snipPos[s:curPos][1]
" Update the line number of all proceeding tab stops if <cr> has
" been inserted.
if changeLine != 0
let changeLine -= 1
for pos in g:snipPos
if pos[0] >= lnum
if pos[0] == lnum | let pos[1] += changeCol | endif
let pos[0] += changeLine
endif
if pos[2] == -1 | continue | endif
for nPos in pos[3]
if nPos[0] >= lnum
if nPos[0] == lnum | let nPos[1] += changeCol | endif
let nPos[0] += changeLine
endif
endfor
endfor
elseif changeCol != 0
" Update the column of all proceeding tab stops if text has
" been inserted/deleted in the current line.
for pos in g:snipPos
if pos[1] >= col && pos[0] == lnum
let pos[1] += changeCol
endif
if pos[2] == -1 | continue | endif
for nPos in pos[3]
if nPos[0] > lnum | break | endif
if nPos[0] == lnum && nPos[1] >= col
let nPos[1] += changeCol
endif
endfor
endfor
endif
endf
fun s:SelectWord()
let s:origWordLen = g:snipPos[s:curPos][2]
let s:oldWord = strpart(getline('.'), g:snipPos[s:curPos][1] - 1,
\ s:origWordLen)
let s:prevLen[1] -= s:origWordLen
if !empty(g:snipPos[s:curPos][3])
let s:update = 1
let s:endCol = -1
let s:startCol = g:snipPos[s:curPos][1] - 1
endif
if !s:origWordLen | return '' | endif
let l = col('.') != 1 ? 'l' : ''
if &sel == 'exclusive'
return "\<esc>".l.'v'.s:origWordLen."l\<c-g>"
endif
return s:origWordLen == 1 ? "\<esc>".l.'gh'
\ : "\<esc>".l.'v'.(s:origWordLen - 1)."l\<c-g>"
endf
" This updates the snippet as you type when text needs to be inserted
" into multiple places (e.g. in "${1:default text}foo$1bar$1",
" "default text" would be highlighted, and if the user types something,
" UpdateChangedSnip() would be called so that the text after "foo" & "bar"
" are updated accordingly)
"
" It also automatically quits the snippet if the cursor is moved out of it
" while in insert mode.
fun s:UpdateChangedSnip(entering)
if exists('g:snipPos') && bufnr(0) != s:lastBuf
call s:RemoveSnippet()
elseif exists('s:update') " If modifying a placeholder
if !exists('s:oldVars') && s:curPos + 1 < s:snipLen
" Save the old snippet & word length before it's updated
" s:startCol must be saved too, in case text is added
" before the snippet (e.g. in "foo$1${2}bar${1:foo}").
let s:oldEndCol = s:startCol
let s:oldVars = deepcopy(g:snipPos[s:curPos][3])
endif
let col = col('.') - 1
if s:endCol != -1
let changeLen = col('$') - s:prevLen[1]
let s:endCol += changeLen
else " When being updated the first time, after leaving select mode
if a:entering | return | endif
let s:endCol = col - 1
endif
" If the cursor moves outside the snippet, quit it
if line('.') != g:snipPos[s:curPos][0] || col < s:startCol ||
\ col - 1 > s:endCol
unl! s:startCol s:origWordLen s:oldVars s:update
return s:RemoveSnippet()
endif
call s:UpdateVars()
let s:prevLen[1] = col('$')
elseif exists('g:snipPos')
if !a:entering && g:snipPos[s:curPos][2] != -1
let g:snipPos[s:curPos][2] = -2
endif
let col = col('.')
let lnum = line('.')
let changeLine = line('$') - s:prevLen[0]
if lnum == s:endLine
let s:endCol += col('$') - s:prevLen[1]
let s:prevLen = [line('$'), col('$')]
endif
if changeLine != 0
let s:endLine += changeLine
let s:endCol = col
endif
" Delete snippet if cursor moves out of it in insert mode
if (lnum == s:endLine && (col > s:endCol || col < g:snipPos[s:curPos][1]))
\ || lnum > s:endLine || lnum < g:snipPos[s:curPos][0]
call s:RemoveSnippet()
endif
endif
endf
" This updates the variables in a snippet when a placeholder has been edited.
" (e.g., each "$1" in "${1:foo} $1bar $1bar")
fun s:UpdateVars()
let newWordLen = s:endCol - s:startCol + 1
let newWord = strpart(getline('.'), s:startCol, newWordLen)
if newWord == s:oldWord || empty(g:snipPos[s:curPos][3])
return
endif
let changeLen = g:snipPos[s:curPos][2] - newWordLen
let curLine = line('.')
let startCol = col('.')
let oldStartSnip = s:startCol
let updateTabStops = changeLen != 0
let i = 0
for [lnum, col] in g:snipPos[s:curPos][3]
if updateTabStops
let start = s:startCol
if lnum == curLine && col <= start
let s:startCol -= changeLen
let s:endCol -= changeLen
endif
for nPos in g:snipPos[s:curPos][3][(i):]
" This list is in ascending order, so quit if we've gone too far.
if nPos[0] > lnum | break | endif
if nPos[0] == lnum && nPos[1] > col
let nPos[1] -= changeLen
endif
endfor
if lnum == curLine && col > start
let col -= changeLen
let g:snipPos[s:curPos][3][i][1] = col
endif
let i += 1
endif
" "Very nomagic" is used here to allow special characters.
call setline(lnum, substitute(getline(lnum), '\%'.col.'c\V'.
\ escape(s:oldWord, '\'), escape(newWord, '\&'), ''))
endfor
if oldStartSnip != s:startCol
call cursor(0, startCol + s:startCol - oldStartSnip)
endif
let s:oldWord = newWord
let g:snipPos[s:curPos][2] = newWordLen
endf
" vim:noet:sw=4:ts=4:ft=vim

File diff suppressed because it is too large Load Diff

@ -0,0 +1,281 @@
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79
" Vimwiki autoload plugin file
" Desc: Handle diary notes
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" Load only once {{{
if exists("g:loaded_vimwiki_diary_auto") || &cp
finish
endif
let g:loaded_vimwiki_diary_auto = 1
"}}}
function! s:prefix_zero(num) "{{{
if a:num < 10
return '0'.a:num
endif
return a:num
endfunction "}}}
function! s:desc(d1, d2) "{{{
return a:d1 == a:d2 ? 0 : a:d1 < a:d2 ? 1 : -1
endfunction "}}}
function! s:get_date_link(fmt) "{{{
return strftime(a:fmt)
endfunction "}}}
function! s:link_exists(lines, link) "{{{
let link_exists = 0
for line in a:lines
if line =~ escape(a:link, '[]\')
let link_exists = 1
break
endif
endfor
return link_exists
endfunction "}}}
function! s:diary_path() "{{{
return VimwikiGet('path').VimwikiGet('diary_rel_path')
endfunction "}}}
function! s:diary_index() "{{{
return s:diary_path().VimwikiGet('diary_index').VimwikiGet('ext')
endfunction "}}}
function! s:get_diary_range(lines, header) "{{{
let rx = '\[\[\d\{4}-\d\d-\d\d\]\]'
let idx = 0
let ln_start = -1
let ln_end = -1
for line in a:lines
if ln_start != -1
if line =~ '^\s*\(=\)\+.*\1\s*$' || (line !~ rx && line !~ '^\s*$')
break
endif
endif
if line =~ '^\s*\(=\)\+\s*'.a:header.'\s*\1\s*$'
let ln_start = idx + 1
endif
let idx += 1
endfor
let ln_end = idx
return [ln_start, ln_end]
endfunction "}}}
function! s:diary_date_link() "{{{
return s:get_date_link(VimwikiGet('diary_link_fmt'))
endfunction "}}}
function! s:get_file_contents(file_name) "{{{
let lines = []
let bufnr = bufnr(expand(a:file_name))
if bufnr != -1
let lines = getbufline(bufnr, 1, '$')
else
try
let lines = readfile(expand(a:file_name))
catch
endtry
endif
return [lines, bufnr]
endfunction "}}}
function! s:get_links() "{{{
let rx = '\d\{4}-\d\d-\d\d'
let s_links = glob(VimwikiGet('path').VimwikiGet('diary_rel_path').
\ '*'.VimwikiGet('ext'))
let s_links = substitute(s_links, '\'.VimwikiGet('ext'), "", "g")
let links = split(s_links, '\n')
" remove backup files (.wiki~)
call filter(links, 'v:val !~ ''.*\~$''')
" remove paths
call map(links, 'fnamemodify(v:val, ":t")')
call filter(links, 'v:val =~ "'.escape(rx, '\').'"')
return links
endfunction "}}}
function! s:get_position_links(link) "{{{
let idx = -1
let links = []
if a:link =~ '\d\{4}-\d\d-\d\d'
let links = s:get_links()
" include 'today' into links
if index(links, s:diary_date_link()) == -1
call add(links, s:diary_date_link())
endif
call sort(links)
let idx = index(links, a:link)
endif
return [idx, links]
endfunction "}}}
function! s:format_links(links) "{{{
let lines = []
let line = '| '
let idx = 0
let trigger = 0
while idx < len(a:links)
if idx/VimwikiGet('diary_link_count') > trigger
let trigger = idx/VimwikiGet('diary_link_count')
call add(lines, substitute(line, '\s\+$', '', ''))
let line = '| '
endif
let line .= a:links[idx].' | '
let idx += 1
endwhile
call add(lines, substitute(line, '\s\+$', '', ''))
call extend(lines, [''])
return lines
endfunction "}}}
function! s:add_link(page, header, link) "{{{
let [lines, bufnr] = s:get_file_contents(a:page)
let [ln_start, ln_end] = s:get_diary_range(lines, a:header)
let link = '[['.a:link.']]'
let link_exists = s:link_exists(lines[ln_start : ln_end], link)
if !link_exists
if ln_start == -1
call insert(lines, '= '.a:header.' =')
let ln_start = 1
let ln_end = 1
endif
" removing 'old' links
let idx = ln_end - ln_start
while idx > 0
call remove(lines, ln_start)
let idx -= 1
endwhile
" get all diary links from filesystem
let links = s:get_links()
call map(links, '"[[".v:val."]]"')
" add current link
if index(links, link) == -1
call add(links, link)
endif
let links = sort(links, 's:desc')
call extend(lines, s:format_links(links), ln_start)
if bufnr != -1
exe 'buffer '.bufnr
if !&readonly
1,$delete _
call append(1, lines)
1,1delete _
endif
else
call writefile(lines, expand(a:page))
endif
endif
endfunction "}}}
function! s:make_date_link(...) "{{{
if a:0
let link = a:1
else
let link = s:diary_date_link()
endif
let header = VimwikiGet('diary_header')
call s:add_link(s:diary_index(), header, link)
return VimwikiGet('diary_rel_path').link
endfunction "}}}
function! vimwiki_diary#make_note(index, ...) "{{{
call vimwiki#select(a:index)
call vimwiki#mkdir(VimwikiGet('path').VimwikiGet('diary_rel_path'))
if a:0
let link = s:make_date_link(a:1)
else
let link = s:make_date_link()
endif
call vimwiki#open_link(':e ', link, s:diary_index())
endfunction "}}}
" Calendar.vim callback function.
function! vimwiki_diary#calendar_action(day, month, year, week, dir) "{{{
let day = s:prefix_zero(a:day)
let month = s:prefix_zero(a:month)
let link = a:year.'-'.month.'-'.day
if winnr('#') == 0
if a:dir == 'V'
vsplit
else
split
endif
else
wincmd p
if !&hidden && &modified
new
endif
endif
" Create diary note for a selected date in default wiki.
call vimwiki_diary#make_note(1, link)
endfunction "}}}
" Calendar.vim sign function.
function vimwiki_diary#calendar_sign(day, month, year) "{{{
let day = s:prefix_zero(a:day)
let month = s:prefix_zero(a:month)
let sfile = VimwikiGet('path').VimwikiGet('diary_rel_path').
\ a:year.'-'.month.'-'.day.VimwikiGet('ext')
return filereadable(expand(sfile))
endfunction "}}}
function! vimwiki_diary#goto_next_day() "{{{
let link = ''
let [idx, links] = s:get_position_links(expand('%:t:r'))
if idx == (len(links) - 1)
return
endif
if idx != -1 && idx < len(links) - 1
let link = VimwikiGet('diary_rel_path').links[idx+1]
else
" goto today
let link = VimwikiGet('diary_rel_path').s:diary_date_link()
endif
if len(link)
call vimwiki#open_link(':e ', link)
endif
endfunction "}}}
function! vimwiki_diary#goto_prev_day() "{{{
let link = ''
let [idx, links] = s:get_position_links(expand('%:t:r'))
if idx == 0
return
endif
if idx > 0
let link = VimwikiGet('diary_rel_path').links[idx-1]
else
" goto today
let link = VimwikiGet('diary_rel_path').s:diary_date_link()
endif
if len(link)
call vimwiki#open_link(':e ', link)
endif
endfunction "}}}

File diff suppressed because it is too large Load Diff

@ -0,0 +1,359 @@
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79
" Vimwiki autoload plugin file
" Todo lists related stuff here.
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
if exists("g:loaded_vimwiki_list_auto") || &cp
finish
endif
let g:loaded_vimwiki_lst_auto = 1
" Script variables {{{
let s:rx_li_box = '\[.\?\]'
" }}}
" Script functions {{{
" Get checkbox regexp
function! s:rx_li_symbol(rate) "{{{
let result = ''
if a:rate == 100
let result = g:vimwiki_listsyms[4]
elseif a:rate == 0
let result = g:vimwiki_listsyms[0]
elseif a:rate >= 67
let result = g:vimwiki_listsyms[3]
elseif a:rate >= 34
let result = g:vimwiki_listsyms[2]
else
let result = g:vimwiki_listsyms[1]
endif
return '\['.result.'\]'
endfunction "}}}
" Get regexp of the list item.
function! s:rx_list_item() "{{{
return '\('.g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.'\)'
endfunction "}}}
" Get regexp of the list item with checkbox.
function! s:rx_cb_list_item() "{{{
return s:rx_list_item().'\s*\zs\[.\?\]'
endfunction "}}}
" Get level of the list item.
function! s:get_level(lnum) "{{{
if VimwikiGet('syntax') == 'media'
let level = vimwiki#count_first_sym(getline(a:lnum))
else
let level = indent(a:lnum)
endif
return level
endfunction "}}}
" Get previous list item.
" Returns: line number or 0.
function! s:prev_list_item(lnum) "{{{
let c_lnum = a:lnum - 1
while c_lnum >= 1
let line = getline(c_lnum)
if line =~ s:rx_list_item()
return c_lnum
endif
if line =~ '^\s*$'
return 0
endif
let c_lnum -= 1
endwhile
return 0
endfunction "}}}
" Get next list item in the list.
" Returns: line number or 0.
function! s:next_list_item(lnum) "{{{
let c_lnum = a:lnum + 1
while c_lnum <= line('$')
let line = getline(c_lnum)
if line =~ s:rx_list_item()
return c_lnum
endif
if line =~ '^\s*$'
return 0
endif
let c_lnum += 1
endwhile
return 0
endfunction "}}}
" Find next list item in the buffer.
" Returns: line number or 0.
function! s:find_next_list_item(lnum) "{{{
let c_lnum = a:lnum + 1
while c_lnum <= line('$')
let line = getline(c_lnum)
if line =~ s:rx_list_item()
return c_lnum
endif
let c_lnum += 1
endwhile
return 0
endfunction "}}}
" Set state of the list item on line number "lnum" to [ ] or [x]
function! s:set_state(lnum, rate) "{{{
let line = getline(a:lnum)
let state = s:rx_li_symbol(a:rate)
let line = substitute(line, s:rx_li_box, state, '')
call setline(a:lnum, line)
endfunction "}}}
" Get state of the list item on line number "lnum"
function! s:get_state(lnum) "{{{
let state = 0
let line = getline(a:lnum)
let opt = matchstr(line, s:rx_cb_list_item())
if opt =~ s:rx_li_symbol(100)
let state = 100
elseif opt =~ s:rx_li_symbol(0)
let state = 0
elseif opt =~ s:rx_li_symbol(25)
let state = 25
elseif opt =~ s:rx_li_symbol(50)
let state = 50
elseif opt =~ s:rx_li_symbol(75)
let state = 75
endif
return state
endfunction "}}}
" Returns 1 if there is checkbox on a list item, 0 otherwise.
function! s:is_cb_list_item(lnum) "{{{
return getline(a:lnum) =~ s:rx_cb_list_item()
endfunction "}}}
" Returns start line number of list item, 0 if it is not a list.
function! s:is_list_item(lnum) "{{{
let c_lnum = a:lnum
while c_lnum >= 1
let line = getline(c_lnum)
if line =~ s:rx_list_item()
return c_lnum
endif
if line =~ '^\s*$'
return 0
endif
if indent(c_lnum) > indent(a:lnum)
return 0
endif
let c_lnum -= 1
endwhile
return 0
endfunction "}}}
" Returns char column of checkbox. Used in parent/child checks.
function! s:get_li_pos(lnum) "{{{
return stridx(getline(a:lnum), '[')
endfunction "}}}
" Returns list of line numbers of parent and all its child items.
function! s:get_child_items(lnum) "{{{
let result = []
let lnum = a:lnum
let p_pos = s:get_level(lnum)
" add parent
call add(result, lnum)
let lnum = s:next_list_item(lnum)
while lnum != 0 && s:is_list_item(lnum) && s:get_level(lnum) > p_pos
call add(result, lnum)
let lnum = s:next_list_item(lnum)
endwhile
return result
endfunction "}}}
" Returns list of line numbers of all items of the same level.
function! s:get_sibling_items(lnum) "{{{
let result = []
let lnum = a:lnum
let ind = s:get_level(lnum)
while lnum != 0 && s:get_level(lnum) >= ind
if s:get_level(lnum) == ind && s:is_cb_list_item(lnum)
call add(result, lnum)
endif
let lnum = s:next_list_item(lnum)
endwhile
let lnum = s:prev_list_item(a:lnum)
while lnum != 0 && s:get_level(lnum) >= ind
if s:get_level(lnum) == ind && s:is_cb_list_item(lnum)
call add(result, lnum)
endif
let lnum = s:prev_list_item(lnum)
endwhile
return result
endfunction "}}}
" Returns line number of the parent of lnum item
function! s:get_parent_item(lnum) "{{{
let lnum = a:lnum
let ind = s:get_level(lnum)
let lnum = s:prev_list_item(lnum)
while lnum != 0 && s:is_list_item(lnum) && s:get_level(lnum) >= ind
let lnum = s:prev_list_item(lnum)
endwhile
if s:is_cb_list_item(lnum)
return lnum
else
return a:lnum
endif
endfunction "}}}
" Creates checkbox in a list item.
function! s:create_cb_list_item(lnum) "{{{
let line = getline(a:lnum)
let m = matchstr(line, s:rx_list_item())
if m != ''
let li_content = substitute(strpart(line, len(m)), '^\s*', '', '')
let line = substitute(m, '\s*$', ' ', '').'[ ] '.li_content
call setline(a:lnum, line)
endif
endfunction "}}}
" Tells if all of the sibling list items are checked or not.
function! s:all_siblings_checked(lnum) "{{{
let result = 0
let cnt = 0
let siblings = s:get_sibling_items(a:lnum)
for lnum in siblings
let cnt += s:get_state(lnum)
endfor
let result = cnt/len(siblings)
return result
endfunction "}}}
" Creates checkbox on a list item if there is no one.
function! s:TLI_create_checkbox(lnum) "{{{
if a:lnum && !s:is_cb_list_item(a:lnum)
if g:vimwiki_auto_checkbox
call s:create_cb_list_item(a:lnum)
endif
return 1
endif
return 0
endfunction "}}}
" Switch state of the child list items.
function! s:TLI_switch_child_state(lnum) "{{{
let current_state = s:get_state(a:lnum)
if current_state == 100
let new_state = 0
else
let new_state = 100
endif
for lnum in s:get_child_items(a:lnum)
call s:set_state(lnum, new_state)
endfor
endfunction "}}}
" Switch state of the parent list items.
function! s:TLI_switch_parent_state(lnum) "{{{
let c_lnum = a:lnum
while s:is_cb_list_item(c_lnum)
let parent_lnum = s:get_parent_item(c_lnum)
if parent_lnum == c_lnum
break
endif
call s:set_state(parent_lnum, s:all_siblings_checked(c_lnum))
let c_lnum = parent_lnum
endwhile
endfunction "}}}
function! s:TLI_toggle(lnum) "{{{
if !s:TLI_create_checkbox(a:lnum)
call s:TLI_switch_child_state(a:lnum)
endif
call s:TLI_switch_parent_state(a:lnum)
endfunction "}}}
" Script functions }}}
" Toggle list item between [ ] and [X]
function! vimwiki_lst#ToggleListItem(line1, line2) "{{{
let line1 = a:line1
let line2 = a:line2
if line1 != line2 && !s:is_list_item(line1)
let line1 = s:find_next_list_item(line1)
endif
let c_lnum = line1
while c_lnum != 0 && c_lnum <= line2
let li_lnum = s:is_list_item(c_lnum)
if li_lnum
let li_level = s:get_level(li_lnum)
if c_lnum == line1
let start_li_level = li_level
endif
if li_level <= start_li_level
call s:TLI_toggle(li_lnum)
let start_li_level = li_level
endif
endif
let c_lnum = s:find_next_list_item(c_lnum)
endwhile
endfunction "}}}
function! vimwiki_lst#kbd_cr() "{{{
" This function is heavily relies on proper 'set comments' option.
let cr = "\<CR>"
if getline('.') =~ s:rx_cb_list_item()
let cr .= '[ ] '
endif
return cr
endfunction "}}}
function! vimwiki_lst#kbd_oO(cmd) "{{{
" cmd should be 'o' or 'O'
let beg_lnum = foldclosed('.')
let end_lnum = foldclosedend('.')
if end_lnum != -1 && a:cmd ==# 'o'
let lnum = end_lnum
let line = getline(beg_lnum)
else
let line = getline('.')
let lnum = line('.')
endif
" let line = substitute(m, '\s*$', ' ', '').'[ ] '.li_content
let m = matchstr(line, s:rx_list_item())
let res = ''
if line =~ s:rx_cb_list_item()
let res = substitute(m, '\s*$', ' ', '').'[ ] '
elseif line =~ s:rx_list_item()
let res = substitute(m, '\s*$', ' ', '')
elseif &autoindent || &smartindent
let res = matchstr(line, '^\s*')
endif
if a:cmd ==# 'o'
call append(lnum, res)
call cursor(lnum + 1, col('$'))
else
call append(lnum - 1, res)
call cursor(lnum, col('$'))
endif
endfunction "}}}

@ -0,0 +1,510 @@
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79
" Vimwiki autoload plugin file
" Desc: Tables
" | Easily | manageable | text | tables | ! |
" |--------+------------+-------+--------+---------|
" | Have | fun! | Drink | tea | Period. |
"
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
" Load only once {{{
if exists("g:loaded_vimwiki_tbl_auto") || &cp
finish
endif
let g:loaded_vimwiki_tbl_auto = 1
"}}}
let s:textwidth = &tw
" Misc functions {{{
function! s:wide_len(str) "{{{
" vim73 has new function that gives correct string width.
if exists("*strdisplaywidth")
return strdisplaywidth(a:str)
endif
" get str display width in vim ver < 7.2
if !g:vimwiki_CJK_length
let ret = strlen(substitute(a:str, '.', 'x', 'g'))
else
let savemodified = &modified
let save_cursor = getpos('.')
exe "norm! o\<esc>"
call setline(line("."), a:str)
let ret = virtcol("$") - 1
d
call setpos('.', save_cursor)
let &modified = savemodified
endif
return ret
endfunction "}}}
function! s:is_table(line) "{{{
return a:line =~ '^\s*\%(|[^|]\+\)\+|\s*$' || s:is_separator(a:line)
endfunction "}}}
function! s:is_separator(line) "{{{
return a:line =~ '^\s*[|+]\s*--[-|+]\+'
endfunction "}}}
function! s:is_last_column(lnum, cnum) "{{{
return strpart(getline(a:lnum), a:cnum - 1) =~ '^[^|]*|\s*$'
endfunction "}}}
function! s:is_first_column(lnum, cnum) "{{{
let line = strpart(getline(a:lnum), 0, a:cnum - 1)
return line =~ '^\s*|[^|]*$' || line =~ '^\s*$'
endfunction "}}}
function! s:count_separators_up(lnum) "{{{
let lnum = a:lnum - 1
while lnum > 1
if !s:is_separator(getline(lnum))
break
endif
let lnum -= 1
endwhile
return (a:lnum-lnum)
endfunction "}}}
function! s:count_separators_down(lnum) "{{{
let lnum = a:lnum + 1
while lnum < line('$')
if !s:is_separator(getline(lnum))
break
endif
let lnum += 1
endwhile
return (lnum-a:lnum)
endfunction "}}}
function! s:create_empty_row(cols) "{{{
let first_cell = "| |"
let cell = " |"
let row = first_cell
for c in range(a:cols - 1)
let row .= cell
endfor
return row
endfunction "}}}
function! s:create_row_sep(cols) "{{{
let first_cell = "|---+"
let cell = "---+"
let last_cell = "---|"
if a:cols < 2
return "|---|"
endif
let row = first_cell
for c in range(a:cols - 2)
let row .= cell
endfor
let row .= last_cell
return row
endfunction "}}}
function! s:get_values(line) "{{{
return split(a:line, '\s*|\s*', 1)[1:-2]
endfunction "}}}
function! s:col_count(lnum) "{{{
let line = getline(a:lnum)
if !s:is_separator(line)
return len(split(line, '\s*|\s*', 1)[1:-2])
else
return len(split(line, '-+-', 1))
endif
endfunction "}}}
function! s:get_indent(lnum) "{{{
if !s:is_table(getline(a:lnum))
return
endif
let indent = 0
let lnum = a:lnum - 1
while lnum > 1
let line = getline(lnum)
if !s:is_table(line)
let indent = indent(lnum+1)
break
endif
let lnum -= 1
endwhile
return indent
endfunction " }}}
function! s:get_rows(lnum) "{{{
if !s:is_table(getline(a:lnum))
return
endif
let upper_rows = []
let lower_rows = []
let lnum = a:lnum - 1
while lnum > 1
let line = getline(lnum)
if s:is_table(line)
call add(upper_rows, [lnum, line])
else
break
endif
let lnum -= 1
endwhile
call reverse(upper_rows)
let lnum = a:lnum
while lnum <= line('$')
let line = getline(lnum)
if s:is_table(line)
call add(lower_rows, [lnum, line])
else
break
endif
let lnum += 1
endwhile
return upper_rows + lower_rows
endfunction "}}}
function! s:get_cell_max_lens(lnum) "{{{
let max_lens = {}
for [lnum, row] in s:get_rows(a:lnum)
if s:is_separator(row)
continue
endif
let cells = s:get_values(row)
for idx in range(len(cells))
let value = cells[idx]
if has_key(max_lens, idx)
let max_lens[idx] = max([s:wide_len(value), max_lens[idx]])
else
let max_lens[idx] = s:wide_len(value)
endif
endfor
endfor
return max_lens
endfunction "}}}
function! s:get_aligned_rows(lnum, col1, col2) "{{{
let max_lens = s:get_cell_max_lens(a:lnum)
let rows = []
for [lnum, row] in s:get_rows(a:lnum)
if s:is_separator(row)
let new_row = s:fmt_sep(max_lens, a:col1, a:col2)
else
let new_row = s:fmt_row(row, max_lens, a:col1, a:col2)
endif
call add(rows, [lnum, new_row])
endfor
return rows
endfunction "}}}
" Number of the current column. Starts from 0.
function! s:cur_column() "{{{
let line = getline('.')
if !s:is_table(line)
return -1
endif
if s:is_separator(line)
let sep = '[+|]'
else
let sep = '|'
endif
let curs_pos = col('.')
let mpos = match(line, '|', 0)
let col = -1
while mpos < curs_pos && mpos != -1
let mpos = match(line, sep, mpos+1)
if mpos != -1
let col += 1
endif
endwhile
return col
endfunction "}}}
" }}}
" Format functions {{{
function! s:fmt_cell(cell, max_len) "{{{
let cell = ' '.a:cell.' '
let diff = a:max_len - s:wide_len(a:cell)
if diff == 0 && empty(a:cell)
let diff = 1
endif
let cell .= repeat(' ', diff)
return cell
endfunction "}}}
function! s:fmt_row(line, max_lens, col1, col2) "{{{
let new_line = '|'
let cells = s:get_values(a:line)
for idx in range(len(cells))
if idx == a:col1
let idx = a:col2
elseif idx == a:col2
let idx = a:col1
endif
let value = cells[idx]
let new_line .= s:fmt_cell(value, a:max_lens[idx]).'|'
endfor
let idx = len(cells)
while idx < len(a:max_lens)
let new_line .= s:fmt_cell('', a:max_lens[idx]).'|'
let idx += 1
endwhile
return new_line
endfunction "}}}
function! s:fmt_cell_sep(max_len) "{{{
if a:max_len == 0
return repeat('-', 3)
else
return repeat('-', a:max_len+2)
endif
endfunction "}}}
function! s:fmt_sep(max_lens, col1, col2) "{{{
let sep = '|'
for idx in range(len(a:max_lens))
if idx == a:col1
let idx = a:col2
elseif idx == a:col2
let idx = a:col1
endif
let sep .= s:fmt_cell_sep(a:max_lens[idx]).'+'
endfor
let sep = substitute(sep, '+$', '|', '')
return sep
endfunction "}}}
"}}}
" Keyboard functions "{{{
function! s:kbd_create_new_row(cols, goto_first) "{{{
let cmd = "\<ESC>o".s:create_empty_row(a:cols)
let cmd .= "\<ESC>:call vimwiki_tbl#format(line('.'))\<CR>"
if a:goto_first
let cmd .= "\<ESC>0:call search('|', 'c', line('.'))\<CR>la"
else
let cmd .= "0".(col('.')-1)."lT|a"
endif
return cmd
endfunction "}}}
function! s:kbd_goto_next_row() "{{{
let cmd = "\<ESC>jt|T|a"
return cmd
endfunction "}}}
function! s:kbd_goto_prev_row() "{{{
let cmd = "\<ESC>jt|T|a"
return cmd
endfunction "}}}
function! s:kbd_goto_next_col(last) "{{{
if a:last
let seps = s:count_separators_down(line('.'))
let cmd = "\<ESC>".seps."j0:call search('|', 'c', line('.'))\<CR>la"
else
let cmd = "\<ESC>:call search('|', 'c', line('.'))\<CR>la"
endif
return cmd
endfunction "}}}
function! s:kbd_goto_prev_col(first) "{{{
if a:first
let seps = s:count_separators_up(line('.'))
let cmd = "\<ESC>".seps."k$:call search('|', 'b', line('.'))\<CR>la"
else
let cmd = "\<ESC>2F|la"
endif
return cmd
endfunction "}}}
"}}}
" Global functions {{{
function! vimwiki_tbl#kbd_cr() "{{{
let lnum = line('.')
if !s:is_table(getline(lnum))
return "\<CR>"
endif
if s:is_separator(getline(lnum+1)) || !s:is_table(getline(lnum+1))
let cols = len(s:get_values(getline(lnum)))
return s:kbd_create_new_row(cols, 0)
else
return s:kbd_goto_next_row()
endif
endfunction "}}}
function! vimwiki_tbl#kbd_tab() "{{{
let lnum = line('.')
if !s:is_table(getline(lnum))
return "\<Tab>"
endif
let last = s:is_last_column(lnum, col('.'))
if last && !s:is_table(getline(lnum+1))
let cols = len(s:get_values(getline(lnum)))
return s:kbd_create_new_row(cols, 1)
endif
return s:kbd_goto_next_col(last)
endfunction "}}}
function! vimwiki_tbl#kbd_shift_tab() "{{{
let lnum = line('.')
if !s:is_table(getline(lnum))
return "\<S-Tab>"
endif
let first = s:is_first_column(lnum, col('.'))
if first && !s:is_table(getline(lnum-1))
return ""
endif
return s:kbd_goto_prev_col(first)
endfunction "}}}
function! vimwiki_tbl#format(lnum, ...) "{{{
let line = getline(a:lnum)
if !s:is_table(line)
return
endif
if a:0 == 2
let col1 = a:1
let col2 = a:2
else
let col1 = 0
let col2 = 0
endif
let indent = s:get_indent(a:lnum)
for [lnum, row] in s:get_aligned_rows(a:lnum, col1, col2)
let row = repeat(' ', indent).row
call setline(lnum, row)
endfor
let &tw = s:textwidth
endfunction "}}}
function! vimwiki_tbl#create(...) "{{{
if a:0 > 1
let cols = a:1
let rows = a:2
elseif a:0 == 1
let cols = a:1
let rows = 2
elseif a:0 == 0
let cols = 5
let rows = 2
endif
if cols < 1
let cols = 5
endif
if rows < 1
let rows = 2
endif
let lines = []
let row = s:create_empty_row(cols)
call add(lines, row)
if rows > 1
call add(lines, s:create_row_sep(cols))
endif
for r in range(rows - 1)
call add(lines, row)
endfor
call append(line('.'), lines)
endfunction "}}}
function! vimwiki_tbl#align_or_cmd(cmd) "{{{
if s:is_table(getline('.'))
call vimwiki_tbl#format(line('.'))
else
exe 'normal! '.a:cmd
endif
endfunction "}}}
function! vimwiki_tbl#reset_tw(lnum) "{{{
let line = getline(a:lnum)
if !s:is_table(line)
return
endif
let s:textwidth = &tw
let &tw = 0
endfunction "}}}
" TODO: move_column_left and move_column_right are good candidates to be
" refactored.
function! vimwiki_tbl#move_column_left() "{{{
if !s:is_table(getline('.'))
return
endif
let cur_col = s:cur_column()
if cur_col == -1
return
endif
if cur_col > 0
call vimwiki_tbl#format(line('.'), cur_col-1, cur_col)
call cursor(line('.'), 1)
if !s:is_separator(getline('.'))
call search('\%(|[^|]\+\)\{'.(cur_col-1).'}| .', 'eW')
else
call search('|\%([^+]\++\)\{'.(cur_col-1).'}--', 'eW')
endif
endif
endfunction "}}}
function! vimwiki_tbl#move_column_right() "{{{
if !s:is_table(getline('.'))
return
endif
let cur_col = s:cur_column()
if cur_col == -1
return
endif
if cur_col < s:col_count(line('.'))-1
call vimwiki_tbl#format(line('.'), cur_col, cur_col+1)
call cursor(line('.'), 1)
if !s:is_separator(getline('.'))
call search('\%(|[^|]\+\)\{'.(cur_col+1).'}| .', 'eW')
else
call search('|\%([^+]\++\)\{'.(cur_col+1).'}--', 'eW')
endif
endif
endfunction "}}}
function! vimwiki_tbl#get_rows(lnum) "{{{
return s:get_rows(a:lnum)
endfunction "}}}
"}}}

@ -0,0 +1,126 @@
let g:xmldata_jsf_c= {
\ 'param': [
\ [],
\ { 'name' : [],'value' : [],'id' : [],'binding' : []}
\ ],
\ 'selectItem': [
\ [],
\ { 'itemDescription' : [],'itemDisabled' : [],'itemLabel' : [],'itemValue' : [],'value' : [],'id' : [],'binding' : []}
\ ],
\ 'selectItems': [
\ [],
\ { 'value' : [],'id' : [],'binding' : []}
\ ],
\ 'view': [
\ [],
\ { 'locale' : []}
\ ],
\ 'convertDateTime': [
\ [],
\ { 'dateStyle' : [],'locale' : [],'pattern' : [],'timeStyle' : [],'timeZone' : [],'type' : []}
\ ],
\ 'convertNumber': [
\ [],
\ { 'currencyCode' : [],'currencySymbol' : [],'groupingUsed' : [],'integerOnly' : [],'locale' : [],'maxFractionDigits' : [],'maxIntegerDigits' : [],'minFractionDigits' : [],'minIntegerDigits' : [],'pattern' : [],'type' : []}
\ ],
\ 'validateDoubleRange': [
\ [],
\ { 'maximum' : [],'minimum' : []}
\ ],
\ 'validateLength': [
\ [],
\ { 'maximum' : [],'minimum' : []}
\ ],
\ 'validateLongRange': [
\ [],
\ { 'maximum' : [],'minimum' : []}
\ ],
\ 'attribute': [
\ [],
\ { 'name' : [],'value' : []}
\ ],
\ 'converter': [
\ [],
\ { 'converterId' : []}
\ ],
\ 'facet': [
\ [],
\ { 'name' : []}
\ ],
\ 'validator': [
\ [],
\ { 'validatorId' : []}
\ ],
\ 'actionListener': [
\ [],
\ { 'type' : []}
\ ],
\ 'loadBundle': [
\ [],
\ { 'basename' : [],'var' : []}
\ ],
\ 'subview': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : []}
\ ],
\ 'valueChangeListener': [
\ [],
\ { 'type' : []}
\ ],
\ 'verbatim': [
\ [],
\ { 'escape' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'param' : [ ' ', 'This tag associates a parameter name-value pair with the nearest parent UIComponent. <p> A UIComponent is created to represent this name-value pair, and stored as a child of the parent component; what effect this has depends upon the renderer of that parent component. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectItem' : [ ' ', 'A component representing a single option that the user can choose. <p> The option attributes can either be defined directly on this component (via the itemValue, itemLabel, itemDescription properties) or the value property can reference a SelectItem object (directly or via an EL expression). <p> The value expression (if defined) is read-only; the parent select component will have a value attribute specifying where the value for the chosen selection will be stored. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectItems' : [ ' ', 'This tag associates a set of selection list items with the nearest parent UIComponent. The set of SelectItem objects is retrieved via a value-binding. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'view' : [ ' ', 'Creates a JSF View, which is a container that holds all of the components that are part of the view. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'convertDateTime' : [ ' ', 'This tag associates a date time converter with the nearest parent UIComponent. Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'convertNumber' : [ ' ', 'This tag creates a number formatting converter and associates it with the nearest parent UIComponent. Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'validateDoubleRange' : [ ' ', 'Creates a validator and associateds it with the nearest parent UIComponent. When invoked, the validator ensures that values are valid doubles that lie within the minimum and maximum values specified. Commonly associated with a h:inputText entity. Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'validateLength' : [ ' ', 'Creates a validator and associateds it with the nearest parent UIComponent. When invoked, the validator ensures that values are valid strings with a length that lies within the minimum and maximum values specified. Commonly associated with a h:inputText entity. Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'validateLongRange' : [ ' ', 'Creates a validator and associateds it with the nearest parent UIComponent. When invoked, the validator ensures that values are valid longs that lie within the minimum and maximum values specified. Commonly associated with a h:inputText entity. Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'attribute' : [ ' ', 'This tag associates an attribute with the nearest parent UIComponent. <p> When the value is not an EL expression, this tag has the same effect as calling component.getAttributes.put(name, value). When the attribute name specified matches a standard property of the component, that property is set. However it is also valid to assign attributes to components using any arbitrary name; the component itself won"t make any use of these but other objects such as custom renderers, validators or action listeners can later retrieve the attribute from the component by name. <p> When the value is an EL expression, this tag has the same effect as calling component.setValueBinding. A call to method component.getAttributes().get(name) will then cause that expression to be evaluated and the result of the expression is returned, not the original EL expression string. <p> See the javadoc for UIComponent.getAttributes for more details. <p> Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'converter' : [ ' ', 'This tag creates an instance of the specified Converter, and associates it with the nearest parent UIComponent. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'facet' : [ ' ', 'This tag adds its child as a facet of the nearest parent UIComponent. A child consisting of multiple elements should be nested within a container component (i.e., within an h:panelGroup for HTML library components). Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'validator' : [ ' ', 'Creates a validator and associates it with the nearest parent UIComponent. During the validation phase (or the apply-request-values phase for immediate components), if the associated component has any submitted value and the conversion of that value to the required type has succeeded then the specified validator type is invoked to test the validity of the converted value. <p> Commonly associated with an h:inputText entity, but may be applied to any input component. <p> Some validators may allow the component to use attributes to define component-specific validation constraints; see the f:attribute tag. See also the "validator" attribute of all input components, which allows a component to specify an arbitrary validation <i>method</i> (rather than a registered validation type, as this tag does). <p> Unless otherwise specified, all attributes accept static values or EL expressions. see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'actionListener' : [ ' ', 'This tag creates an instance of the specified ActionListener, and associates it with the nearest parent UIComponent. Unless otherwise specified, all attributes accept static values or EL expressions.'],
\ 'loadBundle' : [ ' ', 'Loads a resource bundle and saves it as a variable in the request scope. Unless otherwise specified, all attributes accept static values or EL expressions.'],
\ 'subview' : [ ' ', 'This tag associates a set of UIComponents with the nearest parent UIComponent. It acts as a naming container to make the IDs of its component elements unique. Unless otherwise specified, all attributes accept static values or EL expressions.'],
\ 'valueChangeListener' : [ ' ', 'Adds the specified ValueChangeListener to the nearest parent UIComponent (which is expected to be a UIInput component). Whenever the form containing the parent UIComponent is submitted, an instance of the specified type is created. If the submitted value from the component is different from the component"s current value then a ValueChangeEvent is queued. When the ValueChangeEvent is processed (at end of the validate phase for non-immediate components, or at end of the apply-request-values phase for immediate components) the object"s processValueChange method is invoked. <p> Unless otherwise specified, all attributes accept static values or EL expressions.'],
\ 'verbatim' : [ ' ', 'Outputs its body as verbatim text. No JSP tags within the verbatim tag (including JSF tags) are evaluated; the content is treated simply as literal text to be copied to the response. <p> Unless otherwise specified, all attributes accept static values or EL expressions.']
\ },
\ 'vimxmlattrinfo': {
\ 'name' : [ ' ', 'A String containing the name of the parameter.'],
\ 'value' : [ ' ', 'The value of this parameter.'],
\ 'id' : [ ' ', 'An identifier for this particular component instance within a component view. <p> The id must be unique within the scope of the tag"s enclosing NamingContainer (eg h:form or f:subview). The id is not necessarily unique across all components in the current view </p> <p> This value must be a static value, ie not change over the lifetime of a component. It cannot be defined via an EL expression; only a string is permitted. </p>'],
\ 'binding' : [ ' ', 'Identifies a backing bean property (of type UIComponent or appropriate subclass) to bind to this component instance. This value must be an EL expression.'],
\ 'itemDescription' : [ ' ', 'An optional description for this item. For use in development tools.'],
\ 'itemDisabled' : [ ' ', 'Determine whether this item can be chosen by the user.'],
\ 'itemLabel' : [ ' ', 'Get the string which will be presented to the user for this option.'],
\ 'itemValue' : [ ' ', 'The value of this item, of the same type as the parent component"s value.'],
\ 'locale' : [ ' ', 'The locale of this view. Default: the default locale from the configuration file.'],
\ 'dateStyle' : [ ' ', 'The style of the date. Values include: default, short, medium, long, and full.'],
\ 'pattern' : [ ' ', 'A custom Date formatting pattern, in the format used by java.text.SimpleDateFormat.'],
\ 'timeStyle' : [ ' ', 'The style of the time. Values include: default, short, medium, long, and full.'],
\ 'timeZone' : [ ' ', 'The time zone to use instead of GMT (the default timezone). When this value is a value-binding to a TimeZone instance, that timezone is used. Otherwise this value is treated as a String containing a timezone id, ie as the ID parameter of method java.util.TimeZone.getTimeZone(String).'],
\ 'type' : [ ' ', 'Specifies whether the date, time, or both should be parsed/formatted. Values include: date, time, and both. Default based on setting of timeStyle and dateStyle.'],
\ 'currencyCode' : [ ' ', 'ISO 4217 currency code'],
\ 'currencySymbol' : [ ' ', 'The currency symbol used to format a currency value. Defaults to the currency symbol for locale.'],
\ 'groupingUsed' : [ ' ', 'Specifies whether output will contain grouping separators. Default: true.'],
\ 'integerOnly' : [ ' ', 'Specifies whether only the integer part of the input will be parsed. Default: false.'],
\ 'maxFractionDigits' : [ ' ', 'The maximum number of digits in the fractional portion of the number.'],
\ 'maxIntegerDigits' : [ ' ', 'The maximum number of digits in the integer portion of the number.'],
\ 'minFractionDigits' : [ ' ', 'The minimum number of digits in the fractional portion of the number.'],
\ 'minIntegerDigits' : [ ' ', 'The minimum number of digits in the integer portion of the number.'],
\ 'maximum' : [ ' ', 'The largest value that should be considered valid.'],
\ 'minimum' : [ ' ', 'The smallest value that should be considered valid.'],
\ 'converterId' : [ ' ', 'The converter"s registered ID.'],
\ 'validatorId' : [ ' ', 'The registered ID of the desired Validator.'],
\ 'basename' : [ ' ', 'The base name of the resource bundle.'],
\ 'var' : [ ' ', 'The name of the variable in request scope that the resources are saved to. This must be a static value.'],
\ 'rendered' : [ ' ', 'A boolean value that indicates whether this component should be rendered.'],
\ 'escape' : [ ' ', 'If true, generated markup is escaped. Default: false.']
\ },
\}

@ -0,0 +1,222 @@
let g:xmldata_jsf_h= {
\ 'column': [
\ [],
\ { 'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'inputHidden': [
\ [],
\ { 'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'commandButton': [
\ [],
\ { 'image' : [],'type' : [],'style' : [],'styleClass' : [],'alt' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onchange' : [],'onselect' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'action' : [],'actionListener' : [],'immediate' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'commandLink': [
\ [],
\ { 'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'charset' : [],'coords' : [],'hreflang' : [],'rel' : [],'rev' : [],'shape' : [],'target' : [],'type' : [],'action' : [],'actionListener' : [],'immediate' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'dataTable': [
\ [],
\ { 'bgcolor' : [],'border' : [],'cellpadding' : [],'cellspacing' : [],'columnClasses' : [],'footerClass' : [],'frame' : [],'headerClass' : [],'rowClasses' : [],'rules' : [],'summary' : [],'width' : [],'style' : [],'styleClass' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'var' : [],'first' : [],'rows' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'form': [
\ [],
\ { 'accept' : [],'acceptcharset' : [],'enctype' : [],'onreset' : [],'onsubmit' : [],'target' : [],'style' : [],'styleClass' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'graphicImage': [
\ [],
\ { 'height' : [],'ismap' : [],'longdesc' : [],'usemap' : [],'width' : [],'style' : [],'styleClass' : [],'alt' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'url' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'inputSecret': [
\ [],
\ { 'maxlength' : [],'redisplay' : [],'size' : [],'style' : [],'styleClass' : [],'alt' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onchange' : [],'onselect' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'inputText': [
\ [],
\ { 'maxlength' : [],'size' : [],'style' : [],'styleClass' : [],'alt' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'inputTextarea': [
\ [],
\ { 'cols' : [],'rows' : [],'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'message': [
\ [],
\ { 'style' : [],'styleClass' : [],'errorClass' : [],'errorStyle' : [],'fatalClass' : [],'fatalStyle' : [],'infoClass' : [],'infoStyle' : [],'title' : [],'tooltip' : [],'warnClass' : [],'warnStyle' : [],'for' : [],'showDetail' : [],'showSummary' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'messages': [
\ [],
\ { 'layout' : [],'style' : [],'styleClass' : [],'errorClass' : [],'errorStyle' : [],'fatalClass' : [],'fatalStyle' : [],'infoClass' : [],'infoStyle' : [],'title' : [],'tooltip' : [],'warnClass' : [],'warnStyle' : [],'globalOnly' : [],'showDetail' : [],'showSummary' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'outputFormat': [
\ [],
\ { 'style' : [],'styleClass' : [],'title' : [],'escape' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'outputLabel': [
\ [],
\ { 'for' : [],'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'outputLink': [
\ [],
\ { 'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'charset' : [],'coords' : [],'hreflang' : [],'rel' : [],'rev' : [],'shape' : [],'target' : [],'type' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'outputText': [
\ [],
\ { 'style' : [],'styleClass' : [],'title' : [],'escape' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'panelGrid': [
\ [],
\ { 'bgcolor' : [],'border' : [],'cellpadding' : [],'cellspacing' : [],'columnClasses' : [],'columns' : [],'footerClass' : [],'frame' : [],'headerClass' : [],'rowClasses' : [],'rules' : [],'summary' : [],'width' : [],'style' : [],'styleClass' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'dir' : [],'lang' : [],'title' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'panelGroup': [
\ [],
\ { 'style' : [],'styleClass' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'selectBooleanCheckbox': [
\ [],
\ { 'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'value' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'selectManyCheckbox': [
\ [],
\ { 'border' : [],'layout' : [],'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'disabledClass' : [],'enabledClass' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'selectManyListbox': [
\ [],
\ { 'size' : [],'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'disabledClass' : [],'enabledClass' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'selectManyMenu': [
\ [],
\ { 'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'disabledClass' : [],'enabledClass' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'selectOneListbox': [
\ [],
\ { 'size' : [],'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'disabledClass' : [],'enabledClass' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'selectOneMenu': [
\ [],
\ { 'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'disabledClass' : [],'enabledClass' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'selectOneRadio': [
\ [],
\ { 'border' : [],'layout' : [],'style' : [],'styleClass' : [],'tabindex' : [],'onblur' : [],'onfocus' : [],'disabledClass' : [],'enabledClass' : [],'accesskey' : [],'onclick' : [],'ondblclick' : [],'onkeydown' : [],'onkeypress' : [],'onkeyup' : [],'onmousedown' : [],'onmousemove' : [],'onmouseout' : [],'onmouseover' : [],'onmouseup' : [],'onchange' : [],'onselect' : [],'dir' : [],'lang' : [],'title' : [],'disabled' : [],'readonly' : [],'validator' : [],'valueChangeListener' : [],'immediate' : [],'required' : [],'converter' : [],'value' : [],'id' : [],'rendered' : [],'binding' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'column' : [ ' ', 'This tag is commonly used as a child of the dataTable tag, to represent a column of data. <p> It can be decorated with "header" and "footer" facets to drive the output of header and footer rows. Row values are specified via its children. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'inputHidden' : [ ' ', 'Renders as an HTML input tag with its type set to "hidden". <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'commandButton' : [ ' ', 'This tag renders as an HTML input element. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'commandLink' : [ ' ', 'This tag renders as an HTML a element. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'dataTable' : [ ' ', 'This component renders as an HTML table element. It has as its children h:column entities, which describe the columns of the table. It can be decorated with facets named "header" and "footer" to specify header and footer rows. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> Extend standard UIData component to add support for html-specific features such as CSS style attributes and event handler scripts. <p> see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a> </p>'],
\ 'form' : [ ' ', 'Renders an HTML form element. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'graphicImage' : [ ' ', 'Renders an HTML img element. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> see Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'inputSecret' : [ ' ', 'Renders as an HTML input tag with its type set to "password". <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'inputText' : [ ' ', 'Renders a HTML input element. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'inputTextarea' : [ ' ', 'Renders a HTML textarea element. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'message' : [ ' ', 'Renders the first FacesMessage that is assigned to the component referenced by the "for" attribute. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'messages' : [ ' ', 'Renders all or some FacesMessages depending on the "for" and "globalOnly" attributes. <p> The behaviour of this component is: <ul> <li>If globalOnly = true, only global messages, that have no associated clientId, will be displayed. <li>else if there is a "for" attribute, only messages that are assigned to the component referenced by the "for" attribute are displayed. <li>else all messages are displayed. </ul> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'outputFormat' : [ ' ', 'Renders as text, applying the child f:param values to the value attribute as a MessageFormat string. If this element has an ID or CSS style properties, the text is wrapped in a span element. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'outputLabel' : [ ' ', 'Renders a HTML label element. <p> In addition to the JSF specification, MyFaces allows it to directly give an output text via the "value" attribute. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'outputLink' : [ ' ', 'Renders a HTML a element. Child f:param elements are added to the href attribute as query parameters. Other children are rendered as the link text or image. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'outputText' : [ ' ', 'Renders the value of the associated UIOutput component. If this element has an ID or CSS style properties, the text is wrapped in a span element. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'panelGrid' : [ ' ', 'This element renders as an HTML table with specified number of columns. Children of this element are rendered as cells in the table, filling rows from left to right. Facets named "header" and "footer" are optional and specify the content of the thead and tfoot rows, respectively. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'panelGroup' : [ ' ', 'This element is used to group other components where the specification requires one child element. If any of the HTML or CSS attributes are set, its content is rendered within a span element. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectBooleanCheckbox' : [ ' ', 'Allow the user to choose a "true" or "false" value, presented as a checkbox. <p> Renders as an HTML input tag with its type set to "checkbox", and its name attribute set to the id. The "checked" attribute is rendered if the value of this component is true. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectManyCheckbox' : [ ' ', 'Allow the user to select zero or more items from a set of available options. <p> This is presented as a table with one cell per available option; each cell contains a checkbox and the option"s label. The "layout" attribute determines whether the checkboxes are laid out horizontally or vertically. <p> The set of available options is defined by adding child f:selectItem or f:selectItems components to this component. <p> The value attribute must be a value-binding expression to a property of type List, Object array or primitive array. That "collection" is expected to contain objects of the same type as SelectItem.getValue() returns for the child SelectItem objects. On rendering, any child whose value is in the list will be selected initially. During the update phase, the property setter is called to replace the original collection with a completely new collection object of the appropriate type. The new collection object contains the value of each child SelectItem object that is currently selected. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectManyListbox' : [ ' ', 'Allow the user to select zero or more items from a set of available options. This is presented as a listbox which allows multiple rows in the list to be selected simultaneously. <p> The set of available options is defined by adding child f:selectItem or f:selectItems components to this component. <p> The list is rendered as an HTML select element. The "multiple" attribute is set on the element and the size attribute is set to the provided value, defaulting to the number of items in the list if no value is provided. If the size is set to 1, then a "drop-down" list (aka "combo-box") is presented, though if this is the intention then a selectManyMenu should be used instead. <p> The value attribute must be a value-binding expression to a property of type List, Object array or primitive array. That "collection" is expected to contain objects of the same type as SelectItem.getValue() returns for the child SelectItem objects. On rendering, any child whose value is in the list will be selected initially. During the update phase, the property is set to contain a "collection" of values for those child SelectItem objects that are currently selected. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectManyMenu' : [ ' ', 'Allow the user to select zero or more items from a set of available options. This is presented as a drop-down "combo-box" which allows multiple rows in the list to be selected simultaneously. <p> The set of available options is defined by adding child f:selectItem or f:selectItems components to this component. <p> Renders as an HTML select element, with the choices made up of child f:selectItem or f:selectItems elements. The multiple attribute is set and the size attribute is set to 1. <p> The value attribute must be a value-binding expression to a property of type List, Object array or primitive array. That "collection" is expected to contain objects of the same type as SelectItem.getValue() returns for the child SelectItem objects. On rendering, any child whose value is in the list will be selected initially. During the update phase, the property is set to contain a "collection" of values for those child SelectItem objects that are currently selected. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectOneListbox' : [ ' ', 'Allow the user to choose one option from a set of options. <p> Rendered as a listbox with the MULTIPLE attribute set to false. <p> The available choices are defined via child f:selectItem or f:selectItems elements. The size of the listbox defaults to the number of available choices; if size is explicitly set to a smaller value, then scrollbars will be rendered. If size is set to 1 then a "drop-down menu" (aka "combo-box") is rendered, though if this is the intent then selectOneMenu should be used instead. <p> The value attribute of this component is read to determine which of the available options is initially selected; its value should match the "value" property of one of the child SelectItem objects. <p> On submit of the enclosing form, the value attribute"s bound property is updated to contain the "value" property from the chosen SelectItem. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectOneMenu' : [ ' ', 'Allow the user to choose one option from a set of options. <p> Renders a drop-down menu (aka "combo-box") containing a set of choices, of which only one can be chosen at a time. The available choices are defined via child f:selectItem or f:selectItems elements. <p> The value attribute of this component is read to determine which of the available options is initially selected; its value should match the "value" property of one of the child SelectItem objects. <p> On submit of the enclosing form, the value attribute"s bound property is updated to contain the "value" property from the chosen SelectItem. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>'],
\ 'selectOneRadio' : [ ' ', 'Allow the user to choose one option from a set of options. <p> Renders as an HTML table element, containing an input element for each child f:selectItem or f:selectItems elements. The input elements are rendered as type radio. <p> The value attribute of this component is read to determine which of the available options is initially selected; its value should match the "value" property of one of the child SelectItem objects. <p> On submit of the enclosing form, the value attribute"s bound property is updated to contain the "value" property from the chosen SelectItem. <p> Unless otherwise specified, all attributes accept static values or EL expressions. <p> See Javadoc of <a href="http://java.sun.com/j2ee/javaserverfaces/1.1_01/docs/api/index.html">JSF Specification</a>']
\ },
\ 'vimxmlattrinfo': {
\ 'id' : [ ' ', 'An identifier for this particular component instance within a component view. <p> The id must be unique within the scope of the tag"s enclosing NamingContainer (eg h:form or f:subview). The id is not necessarily unique across all components in the current view </p> <p> This value must be a static value, ie not change over the lifetime of a component. It cannot be defined via an EL expression; only a string is permitted. </p>'],
\ 'rendered' : [ ' ', 'A boolean value that indicates whether this component should be rendered. Default value: true.'],
\ 'binding' : [ ' ', 'Identifies a backing bean property (of type UIComponent or appropriate subclass) to bind to this component instance. This value must be an EL expression.'],
\ 'validator' : [ ' ', 'A method binding EL expression, accepting FacesContext, UIComponent, and Object parameters, and returning void, that validates the component"s local value.'],
\ 'valueChangeListener' : [ ' ', 'A method binding EL expression, accepting a ValueChangeEvent parameter and returning void. The specified method is invoked if this component is modified. The phase that this handler is fired in can be controlled via the immediate attribute.'],
\ 'immediate' : [ ' ', 'A boolean value that identifies the phase during which value change events should fire. During normal event processing, value change events are fired during the "process validations" phase of request processing. If this attribute is set to "true", these methods are fired instead at the end of the "apply request values" phase.'],
\ 'required' : [ ' ', 'A boolean value that indicates whether an input value is required. If this value is true, and no input value is provided, the error message javax.faces.component.UIInput.REQUIRED is posted.'],
\ 'converter' : [ ' ', 'The value can either be a static value (ID) or an EL expression. When a static id is specified, an instance of the converter type registered with that id is used. When this is an EL expression, the result of evaluating the expression must be an object that implements the Converter interface.'],
\ 'value' : [ ' ', 'The initial value of this component. This value is generally set as a value-binding in the form #{myBean.myProperty}, where myProperty can be any data-type of Java (also user-defined data-types), if a converter for this data-type exists. Special cases: 1) f:selectItems - value needs to bind to a list (or an array) of javax.faces.model.SelectItem-instances 2) components implementing UISelectMany (e.g. h:selectManyCheckbox) - value needs to bind to a list (or an array) of values, where the values need to be of the same data-type as the choices of the associated f:selectItems-component 3) components implementing UIData (e.g. h:dataTable) - value needs to bind to a list (or an array) of values, which will be iterated over when the data-table is processed'],
\ 'image' : [ ' ', 'HTML: The URL of an image that renders in place of the button.'],
\ 'type' : [ ' ', 'HTML: A hint to the user agent about the content type of the linked resource.'],
\ 'style' : [ ' ', 'HTML: CSS styling instructions.'],
\ 'styleClass' : [ ' ', 'The CSS class for this element. Corresponds to the HTML "class" attribute.'],
\ 'alt' : [ ' ', 'HTML: Specifies alternative text that can be used by a browser that can"t show this element.'],
\ 'tabindex' : [ ' ', 'HTML: Specifies the position of this element within the tab order of the document.'],
\ 'onblur' : [ ' ', 'HTML: Specifies a script to be invoked when the element loses focus.'],
\ 'onfocus' : [ ' ', 'HTML: Specifies a script to be invoked when the element receives focus.'],
\ 'accesskey' : [ ' ', 'HTML: Sets the access key for this element.'],
\ 'onchange' : [ ' ', 'HTML: Specifies a script to be invoked when the element is modified.'],
\ 'onselect' : [ ' ', 'HTML: Specifies a script to be invoked when the element is selected.'],
\ 'onclick' : [ ' ', 'HTML: Script to be invoked when the element is clicked.'],
\ 'ondblclick' : [ ' ', 'HTML: Script to be invoked when the element is double-clicked.'],
\ 'onkeydown' : [ ' ', 'HTML: Script to be invoked when a key is pressed down over this element.'],
\ 'onkeypress' : [ ' ', 'HTML: Script to be invoked when a key is pressed over this element.'],
\ 'onkeyup' : [ ' ', 'HTML: Script to be invoked when a key is released over this element.'],
\ 'onmousedown' : [ ' ', 'HTML: Script to be invoked when the pointing device is pressed over this element.'],
\ 'onmousemove' : [ ' ', 'HTML: Script to be invoked when the pointing device is moved while it is in this element.'],
\ 'onmouseout' : [ ' ', 'HTML: Script to be invoked when the pointing device is moves out of this element.'],
\ 'onmouseover' : [ ' ', 'HTML: Script to be invoked when the pointing device is moved into this element.'],
\ 'onmouseup' : [ ' ', 'HTML: Script to be invoked when the pointing device is released over this element.'],
\ 'dir' : [ ' ', 'HTML: The direction of text display, either "ltr" (left-to-right) or "rtl" (right-to-left).'],
\ 'lang' : [ ' ', 'HTML: The base language of this document.'],
\ 'title' : [ ' ', 'HTML: An advisory title for this element. Often used by the user agent as a tooltip.'],
\ 'disabled' : [ ' ', 'HTML: When true, this element cannot receive focus.'],
\ 'readonly' : [ ' ', 'HTML: When true, indicates that this component cannot be modified by the user. The element may receive focus unless it has also been disabled.'],
\ 'action' : [ ' ', 'Specifies the action to take when this command is invoked. If the value is an expression, it is expected to be a method binding EL expression that identifies an action method. An action method accepts no parameters and has a String return value, called the action outcome, that identifies the next view displayed. The phase that this event is fired in can be controlled via the immediate attribute. If the value is a string literal, it is treated as a navigation outcome for the current view. This is functionally equivalent to a reference to an action method that returns the string literal.'],
\ 'actionListener' : [ ' ', 'A method binding EL expression that identifies an action listener method to be invoked if this component is activated by the user. An action listener method accepts a parameter of type javax.faces.event.ActionEvent and returns void. The phase that this event is fired in can be controlled via the immediate attribute.'],
\ 'charset' : [ ' ', 'HTML: Specifies the character encoding of the linked resource.'],
\ 'coords' : [ ' ', 'HTML: The coordinates of regions within a client side image map.'],
\ 'hreflang' : [ ' ', 'HTML: The language of the linked resource.'],
\ 'rel' : [ ' ', 'HTML: The relationship between the current document and the linked resource.'],
\ 'rev' : [ ' ', 'HTML: The type(s) describing the reverse link for the linked resource.'],
\ 'shape' : [ ' ', 'HTML: The shape of a region in a client side image map.'],
\ 'target' : [ ' ', 'HTML: Names the frame that should display content generated by invoking this action.'],
\ 'bgcolor' : [ ' ', 'HTML: The background color of this element.'],
\ 'border' : [ ' ', 'HTML: Specifies the width of the border of this element, in pixels. Deprecated in HTML 4.01.'],
\ 'cellpadding' : [ ' ', 'HTML: Specifies the amount of empty space between the cell border and its contents. It can be either a pixel length or a percentage.'],
\ 'cellspacing' : [ ' ', 'HTML: Specifies the amount of space between the cells of the table. It can be either a pixel length or a percentage of available space.'],
\ 'columnClasses' : [ ' ', 'A comma separated list of CSS class names to apply to td elements in each column.'],
\ 'footerClass' : [ ' ', 'The CSS class to be applied to footer cells.'],
\ 'frame' : [ ' ', 'HTML: Controls what part of the frame that surrounds a table is visible. Values include: void, above, below, hsides, lhs, rhs, vsides, box, and border.'],
\ 'headerClass' : [ ' ', 'The CSS class to be applied to header cells.'],
\ 'rowClasses' : [ ' ', 'A comma separated list of CSS class names to apply to td elements in each row.'],
\ 'rules' : [ ' ', 'HTML: Controls how rules are rendered between cells. Values include: none, groups, rows, cols, and all.'],
\ 'summary' : [ ' ', 'HTML: Provides a summary of the contents of the table, for accessibility purposes.'],
\ 'width' : [ ' ', 'HTML: Specifies the desired width of the table, as a pixel length or a percentage of available space.'],
\ 'var' : [ ' ', 'Defines the name of the request-scope variable that will hold the current row during iteration. This value must be a static value.'],
\ 'first' : [ ' ', 'The index of the first row to be displayed, where 0 is the first row.'],
\ 'rows' : [ ' ', 'The number of rows to be displayed. Specify zero for all remaining rows in the table.'],
\ 'accept' : [ ' ', 'HTML: Provides a comma-separated list of content types that the server processing this form can handle.'],
\ 'acceptcharset' : [ ' ', 'HTML: The list of character encodings accepted by the server for this form.'],
\ 'enctype' : [ ' ', 'HTML: The content type used to submit this form to the server.'],
\ 'onreset' : [ ' ', 'HTML: Script to be invoked when this form is reset.'],
\ 'onsubmit' : [ ' ', 'HTML: Script to be invoked when this form is submitted.'],
\ 'height' : [ ' ', 'HTML: Overrides the natural height of this image, by specifying height in pixels.'],
\ 'ismap' : [ ' ', 'HTML: Specifies server-side image map handling for this image.'],
\ 'longdesc' : [ ' ', 'HTML: A link to a long description of the image.'],
\ 'usemap' : [ ' ', 'HTML: Specifies an image map to use with this image.'],
\ 'url' : [ ' ', 'An alias for the "value" attribute.'],
\ 'maxlength' : [ ' ', 'HTML: The maximum number of characters allowed to be entered.'],
\ 'redisplay' : [ ' ', 'If true, the value will be re-sent (in plaintext) when the form is rerendered (see JSF.7.4.4). Default is false.'],
\ 'size' : [ ' ', 'HTML: The initial width of this control, in characters.'],
\ 'cols' : [ ' ', 'HTML: The width of this element, in characters.'],
\ 'errorClass' : [ ' ', 'CSS class to be used for messages with severity "ERROR".'],
\ 'errorStyle' : [ ' ', 'CSS style to be used for messages with severity "ERROR".'],
\ 'fatalClass' : [ ' ', 'CSS class to be used for messages with severity "FATAL".'],
\ 'fatalStyle' : [ ' ', 'CSS style to be used for messages with severity "FATAL".'],
\ 'infoClass' : [ ' ', 'CSS class to be used for messages with severity "INFO".'],
\ 'infoStyle' : [ ' ', 'CSS style to be used for messages with severity "INFO".'],
\ 'tooltip' : [ ' ', 'If true, the message summary will be rendered as a tooltip (i.e. HTML title attribute).'],
\ 'warnClass' : [ ' ', 'CSS class to be used for messages with severity "WARN".'],
\ 'warnStyle' : [ ' ', 'CSS style to be used for messages with severity "WARN".'],
\ 'for' : [ ' ', 'An EL expression, returning a String, with the unique ID of the component for which messages should be displayed. This string has the same format as that accepted by the UIComponent.findComponent() method.'],
\ 'showDetail' : [ ' ', 'An EL expression, returning a boolean, that controls whether the detail text of the associated messages is displayed. Default: false.'],
\ 'showSummary' : [ ' ', 'An EL expression, returning a boolean, that controls whether the summary text of the associated messages is displayed. Default: true.'],
\ 'layout' : [ ' ', 'The layout: "table" or "list". Default: list'],
\ 'globalOnly' : [ ' ', 'A boolean value that controls whether global messages (those without IDs) should be displayed. Default: false.'],
\ 'escape' : [ ' ', 'Indicates whether rendered markup should be escaped. Default: true'],
\ 'columns' : [ ' ', 'Specifies the number of columns in the grid.'],
\ 'disabledClass' : [ ' ', 'The CSS class assigned to the label element for enabled choices.'],
\ 'enabledClass' : [ ' ', 'The CSS class assigned to the label element for enabled choices.']
\ },
\}

@ -0,0 +1,95 @@
let g:xmldata_stl_c= {
\ 'catch': [
\ [],
\ { 'var' : []}
\ ],
\ 'choose': [
\ [],
\ { }
\ ],
\ 'if': [
\ [],
\ { 'test' : [],'var' : [],'scope' : []}
\ ],
\ 'import': [
\ [],
\ { 'url' : [],'var' : [],'scope' : [],'varReader' : [],'context' : [],'charEncoding' : []}
\ ],
\ 'forEach': [
\ [],
\ { 'items' : [],'begin' : [],'end' : [],'step' : [],'var' : [],'varStatus' : []}
\ ],
\ 'forTokens': [
\ [],
\ { 'items' : [],'delims' : [],'begin' : [],'end' : [],'step' : [],'var' : [],'varStatus' : []}
\ ],
\ 'out': [
\ [],
\ { 'value' : [],'default' : [],'escapeXml' : []}
\ ],
\ 'otherwise': [
\ [],
\ { }
\ ],
\ 'param': [
\ [],
\ { 'name' : [],'value' : []}
\ ],
\ 'redirect': [
\ [],
\ { 'url' : [],'context' : []}
\ ],
\ 'remove': [
\ [],
\ { 'var' : [],'scope' : []}
\ ],
\ 'set': [
\ [],
\ { 'var' : [],'value' : [],'target' : [],'property' : [],'scope' : []}
\ ],
\ 'url': [
\ [],
\ { 'var' : [],'scope' : [],'value' : [],'context' : []}
\ ],
\ 'when': [
\ [],
\ { 'test' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'catch' : [ ' ', ' Catches any Throwable that occurs in its body and optionally exposes it. '],
\ 'choose' : [ ' ', ' Simple conditional tag that establishes a context for mutually exclusive conditional operations, marked by &lt;when&gt; and &lt;otherwise&gt; '],
\ 'if' : [ ' ', ' Simple conditional tag, which evalutes its body if the supplied condition is true and optionally exposes a Boolean scripting variable representing the evaluation of this condition '],
\ 'import' : [ ' ', ' Retrieves an absolute or relative URL and exposes its contents to either the page, a String in "var", or a Reader in "varReader". '],
\ 'forEach' : [ ' ', ' The basic iteration tag, accepting many different collection types and supporting subsetting and other functionality '],
\ 'forTokens' : [ ' ', ' Iterates over tokens, separated by the supplied delimeters '],
\ 'out' : [ ' ', ' Like &lt;%= ... &gt;, but for expressions. '],
\ 'otherwise' : [ ' ', ' Subtag of &lt;choose&gt; that follows &lt;when&gt; tags and runs only if all of the prior conditions evaluated to "false" '],
\ 'param' : [ ' ', ' Adds a parameter to a containing "import" tag"s URL. '],
\ 'redirect' : [ ' ', ' Redirects to a new URL. '],
\ 'remove' : [ ' ', ' Removes a scoped variable (from a particular scope, if specified). '],
\ 'set' : [ ' ', ' Sets the result of an expression evaluation in a "scope" '],
\ 'url' : [ ' ', ' Creates a URL with optional query parameters. '],
\ 'when' : [ ' ', ' Subtag of &lt;choose&gt; that includes its body if its condition evalutes to "true" ']
\ },
\ 'vimxmlattrinfo': {
\ 'var' : [ ' ', ' Name of the exported scoped variable for the exception thrown from a nested action. The type of the scoped variable is the type of the exception thrown. '],
\ 'test' : [ ' ', ' The test condition that determines whether or not the body content should be processed. '],
\ 'scope' : [ ' ', ' Scope for var. '],
\ 'url' : [ ' ', ' The URL of the resource to import. '],
\ 'varReader' : [ ' ', ' Name of the exported scoped variable for the resource"s content. The type of the scoped variable is Reader. '],
\ 'context' : [ ' ', ' Name of the context when accessing a relative URL resource that belongs to a foreign context. '],
\ 'charEncoding' : [ ' ', ' Character encoding of the content at the input resource. '],
\ 'items' : [ ' ', ' Collection of items to iterate over. '],
\ 'begin' : [ ' ', ' If items specified: Iteration begins at the item located at the specified index. First item of the collection has index 0. If items not specified: Iteration begins with index set at the value specified. '],
\ 'end' : [ ' ', ' If items specified: Iteration ends at the item located at the specified index (inclusive). If items not specified: Iteration ends when index reaches the value specified. '],
\ 'step' : [ ' ', ' Iteration will only process every step items of the collection, starting with the first one. '],
\ 'varStatus' : [ ' ', ' Name of the exported scoped variable for the status of the iteration. Object exported is of type javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested visibility. '],
\ 'delims' : [ ' ', ' The set of delimiters (the characters that separate the tokens in the string). '],
\ 'value' : [ ' ', ' Expression to be evaluated. '],
\ 'default' : [ ' ', ' Default value if the resulting value is null. '],
\ 'escapeXml' : [ ' ', ' Determines whether characters &lt;,&gt;,&amp;,"," in the resulting string should be converted to their corresponding character entity codes. Default value is true. '],
\ 'name' : [ ' ', ' Name of the query string parameter. '],
\ 'target' : [ ' ', ' Target object whose property will be set. Must evaluate to a JavaBeans object with setter property property, or to a java.util.Map object. '],
\ 'property' : [ ' ', ' Name of the property to be set in the target object. ']
\ },
\}

@ -0,0 +1,88 @@
let g:xmldata_stl_fmt= {
\ 'requestEncoding': [
\ [],
\ { 'value' : []}
\ ],
\ 'setLocale': [
\ [],
\ { 'value' : [],'variant' : [],'scope' : []}
\ ],
\ 'timeZone': [
\ [],
\ { 'value' : []}
\ ],
\ 'setTimeZone': [
\ [],
\ { 'value' : [],'var' : [],'scope' : []}
\ ],
\ 'bundle': [
\ [],
\ { 'basename' : [],'prefix' : []}
\ ],
\ 'setBundle': [
\ [],
\ { 'basename' : [],'var' : [],'scope' : []}
\ ],
\ 'message': [
\ [],
\ { 'key' : [],'bundle' : [],'var' : [],'scope' : []}
\ ],
\ 'param': [
\ [],
\ { 'value' : []}
\ ],
\ 'formatNumber': [
\ [],
\ { 'value' : [],'type' : [],'pattern' : [],'currencyCode' : [],'currencySymbol' : [],'groupingUsed' : [],'maxIntegerDigits' : [],'minIntegerDigits' : [],'maxFractionDigits' : [],'minFractionDigits' : [],'var' : [],'scope' : []}
\ ],
\ 'parseNumber': [
\ [],
\ { 'value' : [],'type' : [],'pattern' : [],'parseLocale' : [],'integerOnly' : [],'var' : [],'scope' : []}
\ ],
\ 'formatDate': [
\ [],
\ { 'value' : [],'type' : [],'dateStyle' : [],'timeStyle' : [],'pattern' : [],'timeZone' : [],'var' : [],'scope' : []}
\ ],
\ 'parseDate': [
\ [],
\ { 'value' : [],'type' : [],'dateStyle' : [],'timeStyle' : [],'pattern' : [],'timeZone' : [],'parseLocale' : [],'var' : [],'scope' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'requestEncoding' : [ ' ', ' Sets the request character encoding '],
\ 'setLocale' : [ ' ', ' Stores the given locale in the locale configuration variable '],
\ 'timeZone' : [ ' ', ' Specifies the time zone for any time formatting or parsing actions nested in its body '],
\ 'setTimeZone' : [ ' ', ' Stores the given time zone in the time zone configuration variable '],
\ 'bundle' : [ ' ', ' Loads a resource bundle to be used by its tag body '],
\ 'setBundle' : [ ' ', ' Loads a resource bundle and stores it in the named scoped variable or the bundle configuration variable '],
\ 'message' : [ ' ', ' Maps key to localized message and performs parametric replacement '],
\ 'param' : [ ' ', ' Supplies an argument for parametric replacement to a containing &lt;message&gt; tag '],
\ 'formatNumber' : [ ' ', ' Formats a numeric value as a number, currency, or percentage '],
\ 'parseNumber' : [ ' ', ' Parses the string representation of a number, currency, or percentage '],
\ 'formatDate' : [ ' ', ' Formats a date and/or time using the supplied styles and pattern '],
\ 'parseDate' : [ ' ', ' Parses the string representation of a date and/or time ']
\ },
\ 'vimxmlattrinfo': {
\ 'value' : [ ' ', ' Name of character encoding to be applied when decoding request parameters. '],
\ 'variant' : [ ' ', ' Vendor- or browser-specific variant. See the java.util.Locale javadocs for more information on variants. '],
\ 'scope' : [ ' ', ' Scope of the locale configuration variable. '],
\ 'var' : [ ' ', ' Name of the exported scoped variable which stores the time zone of type java.util.TimeZone. '],
\ 'basename' : [ ' ', ' Resource bundle base name. This is the bundle"s fully-qualified resource name, which has the same form as a fully-qualified class name, that is, it uses "." as the package component separator and does not have any file type (such as ".class" or ".properties") suffix. '],
\ 'prefix' : [ ' ', ' Prefix to be prepended to the value of the message key of any nested &lt;fmt:message&gt; action. '],
\ 'key' : [ ' ', ' Message key to be looked up. '],
\ 'bundle' : [ ' ', ' Localization context in whose resource bundle the message key is looked up. '],
\ 'type' : [ ' ', ' Specifies whether the value is to be formatted as number, currency, or percentage. '],
\ 'pattern' : [ ' ', ' Custom formatting pattern. '],
\ 'currencyCode' : [ ' ', ' ISO 4217 currency code. Applied only when formatting currencies (i.e. if type is equal to "currency"); ignored otherwise. '],
\ 'currencySymbol' : [ ' ', ' Currency symbol. Applied only when formatting currencies (i.e. if type is equal to "currency"); ignored otherwise. '],
\ 'groupingUsed' : [ ' ', ' Specifies whether the formatted output will contain any grouping separators. '],
\ 'maxIntegerDigits' : [ ' ', ' Maximum number of digits in the integer portion of the formatted output. '],
\ 'minIntegerDigits' : [ ' ', ' Minimum number of digits in the integer portion of the formatted output. '],
\ 'maxFractionDigits' : [ ' ', ' Maximum number of digits in the fractional portion of the formatted output. '],
\ 'minFractionDigits' : [ ' ', ' Minimum number of digits in the fractional portion of the formatted output. '],
\ 'parseLocale' : [ ' ', ' Locale whose default formatting pattern (for numbers, currencies, or percentages, respectively) is to be used during the parse operation, or to which the pattern specified via the pattern attribute (if present) is applied. '],
\ 'integerOnly' : [ ' ', ' Specifies whether just the integer portion of the given value should be parsed. '],
\ 'dateStyle' : [ ' ', ' Predefined formatting style for dates. Follows the semantics defined in class java.text.DateFormat. Applied only when formatting a date or both a date and time (i.e. if type is missing or is equal to "date" or "both"); ignored otherwise. '],
\ 'timeStyle' : [ ' ', ' Predefined formatting style for times. Follows the semantics defined in class java.text.DateFormat. Applied only when formatting a time or both a date and time (i.e. if type is equal to "time" or "both"); ignored otherwise. '],
\ 'timeZone' : [ ' ', ' Time zone in which to represent the formatted time. ']
\ },
\}

@ -0,0 +1,49 @@
let g:xmldata_stl_sql= {
\ 'transaction': [
\ [],
\ { 'dataSource' : [],'isolation' : []}
\ ],
\ 'query': [
\ [],
\ { 'var' : [],'scope' : [],'sql' : [],'dataSource' : [],'startRow' : [],'maxRows' : []}
\ ],
\ 'update': [
\ [],
\ { 'var' : [],'scope' : [],'sql' : [],'dataSource' : []}
\ ],
\ 'param': [
\ [],
\ { 'value' : []}
\ ],
\ 'dateParam': [
\ [],
\ { 'value' : [],'type' : []}
\ ],
\ 'setDataSource': [
\ [],
\ { 'var' : [],'scope' : [],'dataSource' : [],'driver' : [],'url' : [],'user' : [],'password' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'transaction' : [ ' ', ' Provides nested database action elements with a shared Connection, set up to execute all statements as one transaction. '],
\ 'query' : [ ' ', ' Executes the SQL query defined in its body or through the sql attribute. '],
\ 'update' : [ ' ', ' Executes the SQL update defined in its body or through the sql attribute. '],
\ 'param' : [ ' ', ' Sets a parameter in an SQL statement to the specified value. '],
\ 'dateParam' : [ ' ', ' Sets a parameter in an SQL statement to the specified java.util.Date value. '],
\ 'setDataSource' : [ ' ', ' Creates a simple DataSource suitable only for prototyping. ']
\ },
\ 'vimxmlattrinfo': {
\ 'dataSource' : [ ' ', ' DataSource associated with the database to access. A String value represents a relative path to a JNDI resource or the parameters for the JDBC DriverManager facility. '],
\ 'isolation' : [ ' ', ' Transaction isolation level. If not specified, it is the isolation level the DataSource has been configured with. '],
\ 'var' : [ ' ', ' Name of the exported scoped variable for the query result. The type of the scoped variable is javax.servlet.jsp.jstl.sql. Result (see Chapter 16 "Java APIs"). '],
\ 'scope' : [ ' ', ' Scope of var. '],
\ 'sql' : [ ' ', ' SQL query statement. '],
\ 'startRow' : [ ' ', ' The returned Result object includes the rows starting at the specified index. The first row of the original query result set is at index 0. If not specified, rows are included starting from the first row at index 0. '],
\ 'maxRows' : [ ' ', ' The maximum number of rows to be included in the query result. If not specified, or set to -1, no limit on the maximum number of rows is enforced. '],
\ 'value' : [ ' ', ' Parameter value. '],
\ 'type' : [ ' ', ' One of "date", "time" or "timestamp". '],
\ 'driver' : [ ' ', ' JDBC parameter: driver class name. '],
\ 'url' : [ ' ', ' JDBC parameter: URL associated with the database. '],
\ 'user' : [ ' ', ' JDBC parameter: database user on whose behalf the connection to the database is being made. '],
\ 'password' : [ ' ', ' JDBC parameter: user password ']
\ },
\}

@ -0,0 +1,77 @@
let g:xmldata_stl_x= {
\ 'choose': [
\ [],
\ { }
\ ],
\ 'out': [
\ [],
\ { 'select' : [],'escapeXml' : []}
\ ],
\ 'if': [
\ [],
\ { 'select' : [],'var' : [],'scope' : []}
\ ],
\ 'forEach': [
\ [],
\ { 'var' : [],'select' : [],'begin' : [],'end' : [],'step' : [],'varStatus' : []}
\ ],
\ 'otherwise': [
\ [],
\ { }
\ ],
\ 'param': [
\ [],
\ { 'name' : [],'value' : []}
\ ],
\ 'parse': [
\ [],
\ { 'var' : [],'varDom' : [],'scope' : [],'scopeDom' : [],'xml' : [],'doc' : [],'systemId' : [],'filter' : []}
\ ],
\ 'set': [
\ [],
\ { 'var' : [],'select' : [],'scope' : []}
\ ],
\ 'transform': [
\ [],
\ { 'var' : [],'scope' : [],'result' : [],'xml' : [],'doc' : [],'xmlSystemId' : [],'docSystemId' : [],'xslt' : [],'xsltSystemId' : []}
\ ],
\ 'when': [
\ [],
\ { 'select' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'choose' : [ ' ', ' Simple conditional tag that establishes a context for mutually exclusive conditional operations, marked by &lt;when&gt; and &lt;otherwise&gt; '],
\ 'out' : [ ' ', ' Like &lt;%= ... &gt;, but for XPath expressions. '],
\ 'if' : [ ' ', ' XML conditional tag, which evalutes its body if the supplied XPath expression evalutes to "true" as a boolean '],
\ 'forEach' : [ ' ', ' XML iteration tag. '],
\ 'otherwise' : [ ' ', ' Subtag of &lt;choose&gt; that follows &lt;when&gt; tags and runs only if all of the prior conditions evaluated to "false" '],
\ 'param' : [ ' ', ' Adds a parameter to a containing "transform" tag"s Transformer '],
\ 'parse' : [ ' ', ' Parses XML content from "source" attribute or "body" '],
\ 'set' : [ ' ', ' Saves the result of an XPath expression evaluation in a "scope" '],
\ 'transform' : [ ' ', ' Conducts a transformation given a source XML document and an XSLT stylesheet '],
\ 'when' : [ ' ', ' Subtag of &lt;choose&gt; that includes its body if its expression evalutes to "true" ']
\ },
\ 'vimxmlattrinfo': {
\ 'select' : [ ' ', ' XPath expression to be evaluated. '],
\ 'escapeXml' : [ ' ', ' Determines whether characters &lt;,&gt;,&amp;,"," in the resulting string should be converted to their corresponding character entity codes. Default value is true. '],
\ 'var' : [ ' ', ' Name of the exported scoped variable for the resulting value of the test condition. The type of the scoped variable is Boolean. '],
\ 'scope' : [ ' ', ' Scope for var. '],
\ 'begin' : [ ' ', ' Iteration begins at the item located at the specified index. First item of the collection has index 0. '],
\ 'end' : [ ' ', ' Iteration ends at the item located at the specified index (inclusive). '],
\ 'step' : [ ' ', ' Iteration will only process every step items of the collection, starting with the first one. '],
\ 'varStatus' : [ ' ', ' Name of the exported scoped variable for the status of the iteration. Object exported is of type javax.servlet.jsp.jstl.core.LoopTagStatus. This scoped variable has nested visibility. '],
\ 'name' : [ ' ', ' Name of the transformation parameter. '],
\ 'value' : [ ' ', ' Value of the parameter. '],
\ 'varDom' : [ ' ', ' Name of the exported scoped variable for the parsed XML document. The type of the scoped variable is org.w3c.dom.Document. '],
\ 'scopeDom' : [ ' ', ' Scope for varDom. '],
\ 'xml' : [ ' ', ' Deprecated. Use attribute "doc" instead. '],
\ 'doc' : [ ' ', ' Source XML document to be parsed. '],
\ 'systemId' : [ ' ', ' The system identifier (URI) for parsing the XML document. '],
\ 'filter' : [ ' ', ' Filter to be applied to the source document. '],
\ 'result' : [ ' ', ' Result Object that captures or processes the transformation result. '],
\ 'xmlSystemId' : [ ' ', ' Deprecated. Use attribute "docSystemId" instead. '],
\ 'docSystemId' : [ ' ', ' The system identifier (URI) for parsing the XML document. '],
\ 'xslt' : [ ' ', ' javax.xml.transform.Source Transformation stylesheet as a String, Reader, or Source object. '],
\ 'xsltSystemId' : [ ' ', ' The system identifier (URI) for parsing the XSLT stylesheet. ']
\ },
\}

@ -0,0 +1,463 @@
let g:xmldata_tc= {
\ 'script': [
\ [],
\ { 'onexit' : [],'file' : [],'onsubmit' : [],'onunload' : [],'onload' : []}
\ ],
\ 'tabChangeListener': [
\ [],
\ { 'listener' : [],'type' : [],'binding' : []}
\ ],
\ 'include': [
\ [],
\ { 'id' : [],'value' : []}
\ ],
\ 'validateSubmittedValueLength': [
\ [],
\ { 'minimum' : [],'maximum' : []}
\ ],
\ 'attribute': [
\ [],
\ { 'value' : [],'name' : []}
\ ],
\ 'converter': [
\ [],
\ { 'binding' : [],'converterId' : []}
\ ],
\ 'style': [
\ [],
\ { 'style' : [],'id' : []}
\ ],
\ 'popupReference': [
\ [],
\ { 'for' : []}
\ ],
\ 'forEach': [
\ [],
\ { 'begin' : [],'step' : [],'items' : [],'end' : [],'var' : []}
\ ],
\ 'loadBundle': [
\ [],
\ { 'var' : [],'basename' : []}
\ ],
\ 'validateFileItem': [
\ [],
\ { 'maxSize' : [],'contentType' : []}
\ ],
\ 'treeListbox': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'value' : [],'state' : [],'idReference' : [],'nameReference' : [],'required' : [],'tipReference' : [],'selectable' : []}
\ ],
\ 'link': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'disabled' : [],'inline' : [],'type' : [],'target' : [],'tip' : [],'image' : [],'markup' : [],'tabIndex' : []}
\ ],
\ 'hidden': [
\ [],
\ { 'id' : [],'binding' : [],'value' : [],'converter' : [],'validator' : []}
\ ],
\ 'toolBarCheck': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'type' : [],'image' : [],'disabled' : [],'value' : [],'tip' : []}
\ ],
\ 'progress': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'tip' : [],'markup' : [],'value' : []}
\ ],
\ 'object': [
\ [],
\ { 'id' : [],'src' : []}
\ ],
\ 'popup': [
\ [],
\ { 'id' : [],'rendered' : [],'width' : [],'height' : [],'modal' : [],'left' : [],'top' : []}
\ ],
\ 'menuItem': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'disabled' : [],'type' : [],'image' : [],'target' : []}
\ ],
\ 'sheet': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'columns' : [],'pagingLength' : [],'showPageRange' : [],'directLinkCount' : [],'state' : [],'rows' : [],'selectable' : [],'showDirectLinks' : [],'sortActionListener' : [],'forceVerticalScrollbar' : [],'var' : [],'value' : [],'stateChangeListener' : [],'pagingStart' : [],'showHeader' : [],'first' : [],'showRowRange' : []}
\ ],
\ 'datePicker': [
\ [],
\ { 'for' : [],'tabIndex' : []}
\ ],
\ 'panel': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'width' : [],'height' : [],'markup' : []}
\ ],
\ 'textarea': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'id' : [],'binding' : [],'rendered' : [],'converter' : [],'readonly' : [],'disabled' : [],'width' : [],'height' : [],'focus' : [],'required' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'tip' : [],'rows' : [],'markup' : []}
\ ],
\ 'cell': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'scrollbars' : [],'spanY' : [],'spanX' : []}
\ ],
\ 'menuCheckbox': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'disabled' : [],'type' : [],'value' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : []}
\ ],
\ 'command': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : []}
\ ],
\ 'message': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'for' : [],'showDetail' : [],'showSummary' : []}
\ ],
\ 'reload': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'immediate' : [],'frequency' : [],'update' : []}
\ ],
\ 'selectOneRadio': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'markup' : [],'disabled' : [],'id' : [],'inline' : [],'renderRange' : [],'rendered' : [],'binding' : [],'converter' : [],'readonly' : [],'required' : []}
\ ],
\ 'toolBarCommand': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'image' : [],'disabled' : [],'type' : [],'tip' : [],'target' : []}
\ ],
\ 'toolBar': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'width' : [],'height' : [],'markup' : [],'iconSize' : [],'orientation' : [],'labelPosition' : []}
\ ],
\ 'selectOneChoice': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'markup' : [],'id' : [],'disabled' : [],'readonly' : [],'inline' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'rendered' : [],'converter' : [],'binding' : [],'tip' : [],'required' : []}
\ ],
\ 'date': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'id' : [],'binding' : [],'rendered' : [],'readonly' : [],'disabled' : [],'converter' : [],'inline' : [],'focus' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'tip' : [],'required' : [],'markup' : []}
\ ],
\ 'columnEvent': [
\ [],
\ { 'id' : [],'binding' : [],'event' : []}
\ ],
\ 'selectReference': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'for' : [],'renderRange' : []}
\ ],
\ 'box': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'width' : [],'height' : [],'label' : [],'markup' : []}
\ ],
\ 'selectManyCheckbox': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'markup' : [],'disabled' : [],'id' : [],'inline' : [],'renderRange' : [],'rendered' : [],'required' : [],'binding' : [],'readonly' : [],'converter' : []}
\ ],
\ 'selectOneListbox': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'markup' : [],'id' : [],'disabled' : [],'readonly' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'rendered' : [],'binding' : [],'height' : [],'tip' : [],'required' : []}
\ ],
\ 'out': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'converter' : [],'inline' : [],'tip' : [],'value' : [],'escape' : [],'markup' : []}
\ ],
\ 'selectItem': [
\ [],
\ { 'binding' : [],'id' : [],'markup' : [],'itemLabel' : [],'value' : [],'itemValue' : [],'itemImage' : [],'itemDisabled' : [],'itemDescription' : []}
\ ],
\ 'in': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'id' : [],'binding' : [],'rendered' : [],'converter' : [],'readonly' : [],'disabled' : [],'width' : [],'inline' : [],'focus' : [],'required' : [],'tip' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'password' : [],'suggestMethod' : [],'markup' : []}
\ ],
\ 'tree': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'value' : [],'state' : [],'idReference' : [],'actionListener' : [],'nameReference' : [],'required' : [],'tabIndex' : [],'showJunctions' : [],'disabledReference' : [],'tipReference' : [],'showIcons' : [],'showRoot' : [],'mutable' : [],'showRootJunction' : [],'mode' : [],'selectable' : []}
\ ],
\ 'menucheck': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'disabled' : [],'type' : [],'value' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : []}
\ ],
\ 'menuSeparator': [
\ [],
\ { 'rendered' : [],'binding' : []}
\ ],
\ 'label': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'accessKey' : [],'labelWithAccessKey' : [],'for' : [],'inline' : [],'width' : [],'tip' : [],'markup' : [],'value' : []}
\ ],
\ 'form': [
\ [],
\ { 'binding' : [],'id' : []}
\ ],
\ 'selectManyListbox': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'markup' : [],'id' : [],'disabled' : [],'height' : [],'inline' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'rendered' : [],'binding' : [],'tip' : [],'readonly' : [],'required' : []}
\ ],
\ 'menuBar': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'width' : []}
\ ],
\ 'button': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'image' : [],'disabled' : [],'type' : [],'defaultCommand' : [],'width' : [],'tip' : [],'inline' : [],'target' : [],'markup' : [],'tabIndex' : []}
\ ],
\ 'selectItems': [
\ [],
\ { 'id' : [],'binding' : [],'value' : []}
\ ],
\ 'separator': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : []}
\ ],
\ 'tabGroup': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'width' : [],'height' : [],'immediate' : [],'showNavigationBar' : [],'selectedIndex' : [],'serverside' : [],'switchType' : [],'state' : []}
\ ],
\ 'menuradio': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'disabled' : [],'type' : [],'value' : []}
\ ],
\ 'calendar': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'value' : []}
\ ],
\ 'image': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'border' : [],'width' : [],'height' : [],'tip' : [],'alt' : [],'value' : []}
\ ],
\ 'toolBarSelectOne': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'disabled' : [],'type' : [],'value' : []}
\ ],
\ 'file': [
\ [],
\ { 'validator' : [],'onchange' : [],'valueChangeListener' : [],'id' : [],'binding' : [],'rendered' : [],'disabled' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'tip' : [],'readonly' : [],'required' : [],'tabIndex' : [],'value' : []}
\ ],
\ 'gridLayout': [
\ [],
\ { 'id' : [],'border' : [],'cellspacing' : [],'margin' : [],'marginRight' : [],'marginBottom' : [],'marginTop' : [],'marginLeft' : [],'columns' : [],'rows' : [],'binding' : []}
\ ],
\ 'menuRadio': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'disabled' : [],'type' : [],'value' : []}
\ ],
\ 'columnSelector': [
\ [],
\ { 'disabled' : [],'rendered' : [],'binding' : []}
\ ],
\ 'messages': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'for' : [],'maxNumber' : [],'orderBy' : [],'minSeverity' : [],'maxSeverity' : [],'showDetail' : [],'globalOnly' : [],'showSummary' : []}
\ ],
\ 'time': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'id' : [],'binding' : [],'rendered' : [],'readonly' : [],'disabled' : [],'inline' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'tip' : [],'required' : []}
\ ],
\ 'page': [
\ [],
\ { 'label' : [],'id' : [],'width' : [],'height' : [],'binding' : [],'state' : [],'focusId' : [],'applicationIcon' : [],'doctype' : []}
\ ],
\ 'selectBooleanCheckbox': [
\ [],
\ { 'validator' : [],'onchange' : [],'valueChangeListener' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'value' : [],'disabled' : [],'inline' : [],'tip' : [],'readonly' : [],'markup' : [],'tabIndex' : []}
\ ],
\ 'menu': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'disabled' : [],'image' : []}
\ ],
\ 'tab': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'label' : [],'accessKey' : [],'labelWithAccessKey' : [],'tip' : [],'markup' : [],'disabled' : []}
\ ],
\ 'column': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'label' : [],'tip' : [],'width' : [],'align' : [],'markup' : [],'sortable' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'script' : [ ' ', 'This tag add client side script to the rendered page.'],
\ 'tabChangeListener' : [ ' ', 'Register an TabChangedListener instance on the UIComponent associated with the closest parent UIComponent custom action.'],
\ 'include' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>'],
\ 'validateSubmittedValueLength' : [ ' ', 'Register an SubmittedValueLengthValidator instance on the UIComponent associated with the closest parent UIComponent custom action.'],
\ 'attribute' : [ ' ', 'Add an attribute on the UIComponent associated with the closest parent UIComponent custom action.'],
\ 'converter' : [ ' ', 'Register an Converter instance on the UIComponent associated with the closest parent UIComponent.'],
\ 'style' : [ ' ', 'Add a style tag. Collected bodyContent is rendered as content into a style tag.'],
\ 'popupReference' : [ ' ', 'Register an PopupActionListener instance on the UIComponent associated with the closest parent UIComponent.'],
\ 'forEach' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Replacement for the JSTL &lt;c:foreach> tag. <br /> This tags iterates over the body content without setting up an exported scope variable, but replaces all occurrence"s of <code>var</code> in <code>TobagoTag"s ValueBinding</code> attributes.<br /> All non TobagoTags are treated as they are, no replacement is done, and so no ability to use the <code>var</code> in el.'],
\ 'loadBundle' : [ ' ', 'Load a resource bundle localized for the Locale of the current view from the tobago resource path, and expose it (as a Map) in the request attributes of the current request.'],
\ 'validateFileItem' : [ ' ', 'Register an FileItemValidator instance on the UIComponent associated with the closest parent UIComponent custom action.'],
\ 'treeListbox' : [ ' ', '<p>**** Preliminary. Maybe subject to changed in a future version: Implement a var attribute for the tree like in the sheet (http://issues.apache.org/jira/browse/TOBAGO-18) **** </p>Renders a listbox view of a tree.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UITreeListbox</p><p><b>RendererType: </b>TreeListbox</p>'],
\ 'link' : [ ' ', 'Renders a link element.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UILinkCommand</p><p><b>RendererType: </b>Link</p><p><b>Supported facets:</b></p><dl><dt><b>confirmation</b></dt><dd>Contains a UIOutput instance with the confirmation message.</dd></dl>'],
\ 'hidden' : [ ' ', 'Renders a "hidden" input element.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIHiddenInput</p><p><b>RendererType: </b>Hidden</p>'],
\ 'toolBarCheck' : [ ' ', 'Renders a selectable command button within a toolbar.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectBooleanCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'progress' : [ ' ', 'Renders a progressbar.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIProgress</p><p><b>RendererType: </b>Progress</p><p><b>Supported facets:</b></p><dl><dt><b>complete</b></dt><dd>Contains an instance of UICommand (tc:command). The action is invoked if the full progress has reached</dd></dl>'],
\ 'object' : [ ' ', '<p><b>UIComponentClass: </b>javax.faces.component.UIOutput</p><p><b>RendererType: </b>Object</p>'],
\ 'popup' : [ ' ', 'Renders a popup panel.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIPopup</p><p><b>RendererType: </b>Popup</p>'],
\ 'menuItem' : [ ' ', 'Renders a menu item.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIMenuCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'sheet' : [ ' ', 'Render a sheet element.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIData</p><p><b>RendererType: </b>Sheet</p><p><b>Supported facets:</b></p><dl><dt><b>reload</b></dt><dd>Contains an instance of UIReload</dd></dl>'],
\ 'datePicker' : [ ' ', 'Renders a date picker. The component needs a DateFormat Pattern from a converter. The converter should be an instance of DateTimeConverter and return a valid pattern from the method getPattern()<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIDatePicker</p><p><b>RendererType: </b>DatePicker</p>'],
\ 'panel' : [ ' ', 'Intended for use in situations when only one UIComponent child can be nested, such as in the case of facets.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIPanel</p><p><b>RendererType: </b>Panel</p><p><b>Supported facets:</b></p><dl><dt><b>reload</b></dt><dd>Contains an instance of UIReload</dd><dt><b>layout</b></dt><dd>Contains an instance of UILayout</dd></dl>'],
\ 'textarea' : [ ' ', 'Renders a multiline text input control.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIInput</p><p><b>RendererType: </b>TextArea</p>'],
\ 'cell' : [ ' ', 'Renders a layout cell. A panel with ability to span over more than one layout cells.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UICell</p><p><b>RendererType: </b>Panel</p>'],
\ 'menuCheckbox' : [ ' ', 'Renders a checkable menuitem.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectBooleanCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'command' : [ ' ', 'Use this tag only as a facet for click, change in selectOneRadio, selectBooleanCheckbox, selectManyCheckbox and selectOneChoice<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UICommand</p><p><b>RendererType: </b>Command</p>'],
\ 'message' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Renders error/validation message.<p><b>UIComponentClass: </b>javax.faces.component.UIMessage</p><p><b>RendererType: </b>Message</p>'],
\ 'reload' : [ ' ', 'Update the parent component<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIReload</p><p><b>RendererType: </b></p>'],
\ 'selectOneRadio' : [ ' ', 'Render a set of radiobuttons.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOne</p><p><b>RendererType: </b>SelectOneRadio</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>'],
\ 'toolBarCommand' : [ ' ', 'Renders a command button within a toolbar.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UICommand</p><p><b>RendererType: </b>Button</p>'],
\ 'toolBar' : [ ' ', '<p/> Renders a toolbar.<p /> Allowed subcomponents are subtypes of UICommand i.e. <code>"button"</code> and <code>"link"</code> tags. These are rendered by ToolbarRenderer, so the result has no difference.<p /> To add an dropdown menu to a button add a facet <code>"menupopup"</code> containing a <a href="menu.html"><code>&lt;tc:menu></code></a> tag to the button. Label"s and Image"s on those menu tag"s are ignored and replaced by the renderer. <pre> &lt;tc:button onclick="alert("test 0")" label="Alert 0" &gt; &lt;f:facet name="menupopup"&gt; &lt;tc:menu&gt; &lt;tc:menuItem onclick="alert("test 1")" label="Alert 1"/&gt; &lt;tc:menuItem onclick="alert("test 2")" label="Alert 2"/&gt; &lt;tc:menuItem onclick="alert("test 3")" label="Alert 3"/&gt; &lt;/tc:menu&gt; &lt;/f:facet&gt; &lt;/tc:button&gt; </pre><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIToolBar</p><p><b>RendererType: </b>ToolBar</p>'],
\ 'selectOneChoice' : [ ' ', 'Render a single selection dropdown list.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOne</p><p><b>RendererType: </b>SelectOneChoice</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>'],
\ 'date' : [ ' ', 'Renders a date input field.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIDateInput</p><p><b>RendererType: </b>Date</p>'],
\ 'columnEvent' : [ ' ', '<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIColumnEvent</p><p><b>RendererType: </b></p>'],
\ 'selectReference' : [ ' ', 'Renders a set of option related to and same type as the <strong>for</strong> component.<p><b>UIComponentClass: </b>javax.faces.component.UIOutput</p><p><b>RendererType: </b>SelectReference</p>'],
\ 'box' : [ ' ', 'Renders a panel with border and title.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIBox</p><p><b>RendererType: </b>Box</p><p><b>Supported facets:</b></p><dl><dt><b>toolBar</b></dt><dd>Contains an instance of UIToolBar</dd><dt><b>layout</b></dt><dd>Contains an instance of UILayout</dd></dl>'],
\ 'selectManyCheckbox' : [ ' ', 'Render a group of checkboxes.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectMany</p><p><b>RendererType: </b>SelectManyCheckbox</p>'],
\ 'selectOneListbox' : [ ' ', 'Render a single selection option listbox.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOne</p><p><b>RendererType: </b>SelectOneListbox</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>'],
\ 'out' : [ ' ', 'Renders a text<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIOutput</p><p><b>RendererType: </b>Out</p>'],
\ 'selectItem' : [ ' ', 'Add a child UISelectItem component to the UIComponent associated with the closed parent UIComponent custom action.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectItem</p><p><b>RendererType: </b></p>'],
\ 'in' : [ ' ', 'Renders a text input field.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIInput</p><p><b>RendererType: </b>In</p>'],
\ 'tree' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Renders a tree view.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UITreeOld</p><p><b>RendererType: </b>TreeOld</p>'],
\ 'menucheck' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Renders a checkable menuitem.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectBooleanCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'menuSeparator' : [ ' ', 'Renders a separator.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIMenuSeparator</p><p><b>RendererType: </b></p>'],
\ 'label' : [ ' ', 'Renders a label component.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UILabel</p><p><b>RendererType: </b>Label</p>'],
\ 'form' : [ ' ', '<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIForm</p><p><b>RendererType: </b>Form</p>'],
\ 'selectManyListbox' : [ ' ', 'Render a multi selection option listbox.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectMany</p><p><b>RendererType: </b>SelectManyListbox</p>'],
\ 'menuBar' : [ ' ', 'Renders a menu bar.<br /> Add menu bar as facet name="menuBar" to page tag or use it anywhere on page.<br /><p><b>UIComponentClass: </b>javax.faces.component.UIPanel</p><p><b>RendererType: </b>MenuBar</p>'],
\ 'button' : [ ' ', 'Renders a button element.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIButtonCommand</p><p><b>RendererType: </b>Button</p><p><b>Supported facets:</b></p><dl><dt><b>confirmation</b></dt><dd>Contains a UIOutput instance with the confirmation message.</dd><dt><b>popup</b></dt><dd>Contains a UIPopup instance.</dd></dl>'],
\ 'selectItems' : [ ' ', 'Add a child UISelectItems component to the UIComponent associated with the closed parent UIComponent custom action.<p><b>UIComponentClass: </b>javax.faces.component.UISelectItems</p><p><b>RendererType: </b></p>'],
\ 'separator' : [ ' ', 'Renders a separator.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISeparator</p><p><b>RendererType: </b>Separator</p><p><b>Supported facets:</b></p><dl><dt><b>label</b></dt><dd>This facet contains a UILabel</dd></dl>'],
\ 'tabGroup' : [ ' ', 'Renders a tabpanel.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UITabGroup</p><p><b>RendererType: </b>TabGroup</p>'],
\ 'menuradio' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Renders a submenu with select one items.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOneCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'calendar' : [ ' ', 'Renders a calendar.<p><b>UIComponentClass: </b>javax.faces.component.UIOutput</p><p><b>RendererType: </b>Calendar</p>'],
\ 'image' : [ ' ', 'Renders a Image.<p><b>UIComponentClass: </b>javax.faces.component.UIGraphic</p><p><b>RendererType: </b>Image</p>'],
\ 'toolBarSelectOne' : [ ' ', 'Renders a set of radio command button"s within a toolbar.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOneCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'file' : [ ' ', 'Renders a file input field. You need to define an org.apache.myfaces.tobago.webapp.TobagoMultipartFormdataFilter in your web.xml or add the tobago-fileupload.jar to your project. The tobago-fileupload.jar contains a FacesContextFactory that wraps the multipart-formdata request inside the facesContext.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIFileInput</p><p><b>RendererType: </b>File</p>'],
\ 'gridLayout' : [ ' ', 'Renders a GridLayout. <pre> columns/rows ::= LAYOUT LAYOUT ::= TOKEN [";" TOKEN]+ TOKEN ::= FIXED | PIXEL | PROPORTIONAL FIXED ::= "fixed" PIXEL ::= NUMBER "px" PROPORTIONAL ::= [NUMBER] "*" </pre> <p/> <table border="1"> <tr> <th>Parent</th> <th>Child</th> <th>Okay?</th> <th>Remarks</th> </tr> <tr> <td>FIXED</td> <td>any combination of FIXED or PIXEL but no PROPORTIONAL</td> <td>okay</td> <td>-</td> </tr> <tr> <td>FIXED</td> <td>any combination with at least one PROPORTIONAL</td> <td>wrong</td> <td>LayoutManager cannot compute the fixed value.</td> </tr> <tr> <td>PIXEL</td> <td>any combination of FIXED or PIXEL but no PROPORTIONAL</td> <td>potentially wrong</td> <td>The values depend on each other, the programmer has to keep consistency manually.</td> </tr> <tr> <td>PIXEL</td> <td>any combination with at least one PROPORTIONAL</td> <td>okay</td> <td>-</td> </tr> <tr> <td>PROPORTIONAL</td> <td>any combination of FIXED or PIXEL but no PROPORTIONAL</td> <td>potentially wrong</td> <td>No automatical matching:<ul><li>too little space: scrollbar</li> <li>too much space: elements will be spreaded.</li></ul></td> </tr> <tr> <td>PROPORTIONAL</td> <td>any combination with at least one PROPORTIONAL</td> <td>okay</td> <td>-</td> </tr> </table><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIGridLayout</p><p><b>RendererType: </b>GridLayout</p>'],
\ 'menuRadio' : [ ' ', 'Renders a submenu with select one items (like a radio button).<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOneCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'columnSelector' : [ ' ', 'Renders a column with checkboxes to mark selected rows.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIColumnSelector</p><p><b>RendererType: </b>ColumnSelector</p>'],
\ 'messages' : [ ' ', 'Renders error/validation messages.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIMessages</p><p><b>RendererType: </b>Messages</p>'],
\ 'time' : [ ' ', 'Renders a time input field.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UITimeInput</p><p><b>RendererType: </b>Time</p>'],
\ 'page' : [ ' ', 'TODO description of page tag<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIPage</p><p><b>RendererType: </b>Page</p><p><b>Supported facets:</b></p><dl><dt><b>action</b></dt><dd>Contains an instance of UICommand (tc:command) for an auto-action</dd><dt><b>menuBar</b></dt><dd>Menubar</dd><dt><b>layout</b></dt><dd>Contains an instance of UILayout</dd></dl>'],
\ 'selectBooleanCheckbox' : [ ' ', 'Renders a checkbox.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectBoolean</p><p><b>RendererType: </b>SelectBooleanCheckbox</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>'],
\ 'menu' : [ ' ', 'Container component to hold submenus and items.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIMenu</p><p><b>RendererType: </b></p>'],
\ 'tab' : [ ' ', 'Renders a tab within a tabgroup.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UITab</p><p><b>RendererType: </b>Tab</p>'],
\ 'column' : [ ' ', 'Renders a UIComponent that represents a single column of data within a parent UIData component.<p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIColumn</p><p><b>RendererType: </b></p>']
\ },
\ 'vimxmlattrinfo': {
\ 'onexit' : [ ' ', 'A script function which is invoked during onUnload Handler on the client, when the unload is invoked to a non Tobago page. E.g. close-button, back-button, entering new url, etc.'],
\ 'file' : [ ' ', 'Absolute url to script file or script name to lookup in tobago resource path'],
\ 'onsubmit' : [ ' ', 'A script function which is invoked on client just before submitting the action. This should be a single function call. If the result is typeof "boolean" and false the further processing is canceled and the page is not submitted.'],
\ 'onunload' : [ ' ', 'A script function which is invoked during onUnload Handler on the client, if the action is a normal submit inside of Tobago.'],
\ 'onload' : [ ' ', 'A script function which is invoked during onLoad Handler on the client.'],
\ 'listener' : [ ' ', 'A method binding expression to a processTabChange(TabChangeEvent tabChangeEvent) method.'],
\ 'type' : [ ' ', 'Fully qualified Java class name of a TabChangeListener to be created and registered.'],
\ 'binding' : [ ' ', 'The value binding expression to a TabChangeListener.'],
\ 'id' : [ ' ', 'The component identifier for this component. This value must be unique within the closest parent component that is a naming container.'],
\ 'value' : [ ' ', 'The current value of this component.'],
\ 'minimum' : [ ' ', ''],
\ 'maximum' : [ ' ', ''],
\ 'name' : [ ' ', 'The name of a attribute.'],
\ 'converterId' : [ ' ', 'The converterId of a registered converter.'],
\ 'style' : [ ' ', 'Name of the stylsheet file to add to page.'],
\ 'for' : [ ' ', 'The id of a Popup.'],
\ 'begin' : [ ' ', 'Index at which the iteration begins.'],
\ 'step' : [ ' ', 'Index increments every iteration by this value.'],
\ 'items' : [ ' ', '<strong>ValueBindingExpression</strong> pointing to a <code>java.util.List</code>, <code>java.util.Map</code> or <code>Object[]</code> of items to iterate over.'],
\ 'end' : [ ' ', 'Index at which the iteration stops. Defaults to <code>items.length()</code>.'],
\ 'var' : [ ' ', 'Name of a request-scope attribute under which the model data for for each subobject is accessible.'],
\ 'basename' : [ ' ', 'Base name of the resource bundle to be loaded.'],
\ 'maxSize' : [ ' ', ''],
\ 'contentType' : [ ' ', ''],
\ 'rendered' : [ ' ', 'Flag indicating whether or not this component should be rendered (during Render Response Phase), or processed on any subsequent form submit.'],
\ 'state' : [ ' ', '<strong>ValueBindingExpression</strong> pointing to a object to save the component"s state.'],
\ 'idReference' : [ ' ', 'Bean property reference to fetch the id for the treeNode"s.<br /> Example:<br /> a idReference="userObject.id" try"s to invoke <code>&lt;UITreeNode>.getUserObject().getId()</code> to fetch the id.'],
\ 'nameReference' : [ ' ', 'Bean property reference to fetch the label for the treeNode"s.<br /> Example:<br /> a idReference="userObject.name" try"s to invoke <code>&lt;UITreeNode>.getUserObject().getName()</code> to fetch the label.'],
\ 'required' : [ ' ', 'Flag indicating that a value is required. If the value is an empty string a ValidationError occurs and a Error Message is rendered.'],
\ 'tipReference' : [ ' ', 'reference to tip value.'],
\ 'selectable' : [ ' ', 'Flag indicating whether or not this component should be render selectable items. Possible values are: <ul> <li><strong>single</strong> : a singleselection tree is rendered</li> <li><strong>singleLeafOnly</strong> : a singleselection tree is rendered, only Leaf"s are selectable</li> <li><strong>siblingLeafOnly</strong> : a multiselection tree is rendered, where only sibling Leaf"s are selectable</li> </ul>'],
\ 'action' : [ ' ', 'Action to invoke when clicked. This must be a MethodBinding or a String representing the application action to invoke when this component is activated by the user. The MethodBinding must evaluate to a public method that takes no parameters, and returns a String (the logical outcome) which is passed to the NavigationHandler for this application. The String is directly passed to the Navigationhandler.'],
\ 'actionListener' : [ ' ', 'MethodBinding representing an action listener method that will be notified when this component is activated by the user. The expression must evaluate to a public method that takes an ActionEvent parameter, with a return type of void.'],
\ 'immediate' : [ ' ', 'Flag indicating that, if this component is activated by the user, notifications should be delivered to interested listeners and actions immediately (that is, during Apply Request Values phase) rather than waiting until Invoke Application phase.'],
\ 'onclick' : [ ' ', 'Script to be invoked when clicked'],
\ 'link' : [ ' ', 'Link to an arbitrary URL'],
\ 'transition' : [ ' ', 'Specify, if the command calls an JSF-Action. Useful to switch off the Double-Submit-Check and Waiting-Behavior.'],
\ 'label' : [ ' ', 'Text value to display as label. If text contains an underscore the next character is used as accesskey.'],
\ 'accessKey' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Deprecated! Has not longer any function.'],
\ 'labelWithAccessKey' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Deprecated! Use "label" instead. Text value to display as label. If text contains an underscore the next character overwrites "accesskey".'],
\ 'disabled' : [ ' ', 'Flag indicating that this element is disabled.'],
\ 'inline' : [ ' ', 'Flag indicating this component should rendered as an inline element.'],
\ 'target' : [ ' ', 'Name of a frame where the resource retrieved via this hyperlink is to be displayed.'],
\ 'tip' : [ ' ', 'Text value to display as tooltip.'],
\ 'image' : [ ' ', 'Url to an image to display.'],
\ 'markup' : [ ' ', 'Indicate markup of this component. Possible value is "none". But this can be overridden in the theme.'],
\ 'tabIndex' : [ ' ', ''],
\ 'converter' : [ ' ', 'An expression that specifies the Converter for this component. If the value binding expression is a String, the String is used as an ID to look up a Converter. If the value binding expression is a Converter, uses that instance as the converter. The value can either be a static value (ID case only) or an EL expression.'],
\ 'validator' : [ ' ', 'A method binding EL expression, accepting FacesContext, UIComponent, and Object parameters, and returning void, that validates the component"s local value.'],
\ 'src' : [ ' ', 'URI to object source'],
\ 'width' : [ ' ', 'The width for this component. This value is used in the gridLayouts columns attribute. See gridLayout tag for valid values.'],
\ 'height' : [ ' ', 'The height for this component.'],
\ 'modal' : [ ' ', ''],
\ 'left' : [ ' ', ''],
\ 'top' : [ ' ', ''],
\ 'columns' : [ ' ', 'LayoutConstraints for column layout. Semicolon separated list of layout tokens ("&lt;x>*", "&lt;x>px" or "&lt;x>%").'],
\ 'pagingLength' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Please use "rows" instead. The number of rows to display, starting with the one identified by the "pageingStart" property.'],
\ 'showPageRange' : [ ' ', 'Flag indicating whether and where the range pages should rendered in the sheet"s footer. Rendering this range also offers the capability to enter the index displayed page directly.<br /> Valid values are <strong>left</strong>, <strong>center</strong>, <strong>right</strong> and <strong>none</strong>. The <strong>default</strong> is <code>none</code>.'],
\ 'directLinkCount' : [ ' ', 'The count of rendered direct paging links in the sheet"s footer.<br /> The <strong>default</strong> is 9.'],
\ 'rows' : [ ' ', 'The number of rows to display, starting with the one identified by the "pageingStart/first" property.'],
\ 'showDirectLinks' : [ ' ', 'Flag indicating whether or not a range of direct paging links should be rendered in the sheet"s footer.<br /> Valid values are <strong>left</strong>, <strong>center</strong>, <strong>right</strong> and <strong>none</strong>. The <strong>default</strong> is <code>none</code>.'],
\ 'sortActionListener' : [ ' ', 'Method binding representing an actionListener method that will be invoked when sorting was requested by the user. Use this if your application needs special handling for sorting columns. If this is not set and the sortable attribute column is set to true the sheet implementation will use a default sort method. The expression must evaluate to a public method which takes an ActionEvent as parameter and with a return type of void. The method will receive a {@link org.apache.myfaces.tobago.event.SortActionEvent}. The method should sort according to the sortColumnId and direction getting from the sheet"s {@link org.apache.myfaces.tobago.model.SheetState} object.'],
\ 'forceVerticalScrollbar' : [ ' ', 'Flag indicating whether or not this sheet should reserve space for vertical toolbar when calculating column width"s.<br /> Possible values are: <pre> "auto" : sheet try to estimate the need of scrollbar, this is the default. "true" : space for scroolbar is reserved. "false" : no space is reserved. </pre>'],
\ 'stateChangeListener' : [ ' ', 'Method binding representing a stateChangeListener method that will be notified when the state was changed by the user. The expression must evaluate to a public method that takes a SheetStateChangeEvent parameter, with a return type of void.'],
\ 'pagingStart' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Please use "first" instead. Zero-relative row number of the first row to be displayed.'],
\ 'showHeader' : [ ' ', 'Flag indicating the header should be rendered.'],
\ 'first' : [ ' ', 'Zero-relative row number of the first row to be displayed.'],
\ 'showRowRange' : [ ' ', 'Flag indicating whether or not the range of displayed rows should rendered in the sheet"s footer. Rendering this range also offers the capability to enter the index of the start row directly. <br /> Valid values are <strong>left</strong>, <strong>center</strong>, <strong>right</strong> and <strong>none</strong>. The <strong>default</strong> is <code>none</code>.'],
\ 'onchange' : [ ' ', 'Clientside script function to add to this component"s onchange handler.'],
\ 'valueChangeListener' : [ ' ', 'MethodBinding representing a value change listener method that will be notified when a new value has been set for this input component. The expression must evaluate to a public method that takes a ValueChangeEvent parameter, with a return type of void.'],
\ 'readonly' : [ ' ', 'Flag indicating that this component will prohibit changes by the user.'],
\ 'focus' : [ ' ', 'Flag indicating this component should recieve the focus.'],
\ 'scrollbars' : [ ' ', 'possible values are: "false" : no scrollbars should rendered "true" : scrollbars should always rendered "auto" : scrollbars should rendered when needed'],
\ 'spanY' : [ ' ', 'Count of layout row"s to span over.'],
\ 'spanX' : [ ' ', 'Count of layout column"s to span over.'],
\ 'showDetail' : [ ' ', 'Flag indicating whether the detail should be included The default is "false".'],
\ 'showSummary' : [ ' ', 'Flag indicating whether the summary should be included The default is "true".'],
\ 'frequency' : [ ' ', 'Time in milliseconds after which the parent component is automaticaly reloaded.'],
\ 'update' : [ ' ', 'Is update required.'],
\ 'renderRange' : [ ' ', 'Range of items to render.'],
\ 'iconSize' : [ ' ', 'Size of button images, possible values are: small, big, off.'],
\ 'orientation' : [ ' ', 'Orientation of toolbar'],
\ 'labelPosition' : [ ' ', 'Position of the button label, possible values are: right, bottom, off. If toolbar is facet of box: bottom is changed to right!'],
\ 'event' : [ ' ', ''],
\ 'escape' : [ ' ', 'Flag indicating that characters that are sensitive in HTML and XML markup must be escaped. This flag is set to "true" by default.'],
\ 'itemLabel' : [ ' ', 'Label to be displayed to the user for this option.'],
\ 'itemValue' : [ ' ', 'Value to be returned to the server if this option is selected by the user.'],
\ 'itemImage' : [ ' ', 'Image to be displayed to the user for this option.'],
\ 'itemDisabled' : [ ' ', 'Flag indicating whether the option created by this component is disabled.'],
\ 'itemDescription' : [ ' ', 'Flag indicating whether the option created by this component is disabled.'],
\ 'password' : [ ' ', 'Flag indicating whether or not this component should be rendered as password field , so you will not see the typed charakters.'],
\ 'suggestMethod' : [ ' ', 'MethodBinding which generates a list of suggested input values based on a passed prefix -- the currently entered text. The expression has to evaluate to a public method which has a String parameter and a List&lt;String> as return type.'],
\ 'showJunctions' : [ ' ', ''],
\ 'disabledReference' : [ ' ', 'Bean property reference to fetch the disabled state for the treeNode"s.<br /> Example:<br /> a disabledReference="userObject.disabled" try"s to invoke <code>&lt;UITreeNode>.getUserObject().getDisabled()</code> to fetch the state.'],
\ 'showIcons' : [ ' ', ''],
\ 'showRoot' : [ ' ', ''],
\ 'mutable' : [ ' ', ''],
\ 'showRootJunction' : [ ' ', ''],
\ 'mode' : [ ' ', 'Display option: Normal tree or menu.'],
\ 'defaultCommand' : [ ' ', 'If true the command is excuted as default -- for example if the user presses the enter key inside a related input field.'],
\ 'showNavigationBar' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Flag indicating that the Tab Navigationbar is rendered.'],
\ 'selectedIndex' : [ ' ', '<strong>ValueBindingExpression</strong> pointing to a Integer to save the component"s selected Tab.'],
\ 'serverside' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>Deprecated! Use "switchType" instead. Flag indicating that tab switching is done by server request.'],
\ 'switchType' : [ ' ', 'Flag indicating how tab switching should be done. <p/> Possible values are: "client" : Tab switching id done on client, no server Request. This is default. "reloadPage" : Tab switching id done by server request. Full page is reloaded. "reloadTab" : Tab switching id done by server request. Only the Tab is reloaded.'],
\ 'border' : [ ' ', 'Border size of this component.'],
\ 'alt' : [ ' ', 'Alternate textual description of the image rendered by this component.'],
\ 'cellspacing' : [ ' ', 'Spacing between component and layout cell"s'],
\ 'margin' : [ ' ', 'Margin between container component and layouted children.'],
\ 'marginRight' : [ ' ', 'Right margin between container component and layouted children.'],
\ 'marginBottom' : [ ' ', 'Bottom margin between container component and layouted children.'],
\ 'marginTop' : [ ' ', 'Top margin between container component and layouted children.'],
\ 'marginLeft' : [ ' ', 'Left margin between container component and layouted children.'],
\ 'maxNumber' : [ ' ', 'Sets the maximum number of messages to show. The default is 2147483647 (more or less unlimited).'],
\ 'orderBy' : [ ' ', 'Sets the order of the messages. The default "occurence".'],
\ 'minSeverity' : [ ' ', 'Sets the mininum severity to be shown. E. g. "warn" shows only "warn", "error" and "fatal". The default is "info".'],
\ 'maxSeverity' : [ ' ', 'Sets the maximum severity to be shown. E. g. "warn" shows only "warn" and "info". When setting this attribute you usually shoud take care, that you have a second message tag to show the higher severity levels. The default is "fatal".'],
\ 'globalOnly' : [ ' ', 'Flag indicating that only messages that are not associated to any particular UIComponent should be displayed. That are messages without clientId. The default is "false".'],
\ 'focusId' : [ ' ', 'Contains the id of the component wich should have the focus after loading the page. Set to emtpy string for disabling setting of focus. Default (null) enables the "auto focus" feature.'],
\ 'applicationIcon' : [ ' ', 'Absolute URL to an image or image name to lookup in tobago resource path representing the application. In HTML it is used as a favicon.'],
\ 'doctype' : [ ' ', 'Possible values for doctype are: <dl> <dt>strict</dt><dd>HTML 4.01 Strict DTD</dd> <dt>loose</dt><dd>HTML 4.01 Transitional DTD</dd> <dt>frameset</dt><dd>HTML 4.01 Frameset DTD</dd> </dl> All other values are ignored and no DOCTYPE is set. The default value is "loose".'],
\ 'align' : [ ' ', 'Alignment of this column.'],
\ 'sortable' : [ ' ', 'Flag indicating whether or not this column is sortable. To make a column sortable the data of the sheet must be one of <code>java.util.List</code> or <code>Object[]</code>.']
\ },
\}

@ -0,0 +1,109 @@
let g:xmldata_tx= {
\ 'menuRadio': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'disabled' : [],'value' : [],'converter' : []}
\ ],
\ 'separator': [
\ [],
\ { 'id' : [],'binding' : [],'rendered' : [],'label' : []}
\ ],
\ 'label': [
\ [],
\ { 'value' : [],'tip' : []}
\ ],
\ 'date': [
\ [],
\ { 'value' : [],'valueChangeListener' : [],'validator' : [],'id' : [],'binding' : [],'rendered' : [],'converter' : [],'readonly' : [],'disabled' : [],'onchange' : [],'required' : [],'tip' : [],'label' : [],'markup' : [],'labelWidth' : [],'focus' : [],'inline' : [],'tabIndex' : []}
\ ],
\ 'textarea': [
\ [],
\ { 'value' : [],'valueChangeListener' : [],'id' : [],'binding' : [],'rendered' : [],'converter' : [],'validator' : [],'readonly' : [],'disabled' : [],'markup' : [],'required' : [],'tip' : [],'label' : [],'labelWidth' : [],'focus' : [],'onchange' : [],'tabIndex' : []}
\ ],
\ 'selectManyListbox': [
\ [],
\ { 'id' : [],'value' : [],'valueChangeListener' : [],'disabled' : [],'height' : [],'inline' : [],'label' : [],'labelWidth' : [],'rendered' : [],'binding' : [],'tip' : [],'converter' : [],'validator' : [],'onchange' : [],'readonly' : [],'markup' : [],'focus' : [],'required' : [],'tabIndex' : []}
\ ],
\ 'selectBooleanCheckbox': [
\ [],
\ { 'validator' : [],'onchange' : [],'valueChangeListener' : [],'id' : [],'binding' : [],'rendered' : [],'label' : [],'value' : [],'labelWidth' : [],'disabled' : [],'tip' : [],'readonly' : [],'markup' : [],'tabIndex' : [],'focus' : []}
\ ],
\ 'selectOneListbox': [
\ [],
\ { 'id' : [],'value' : [],'valueChangeListener' : [],'disabled' : [],'label' : [],'labelWidth' : [],'readonly' : [],'onchange' : [],'rendered' : [],'markup' : [],'binding' : [],'height' : [],'focus' : [],'tip' : [],'required' : [],'converter' : [],'validator' : [],'tabIndex' : []}
\ ],
\ 'in': [
\ [],
\ { 'value' : [],'valueChangeListener' : [],'validator' : [],'id' : [],'binding' : [],'rendered' : [],'converter' : [],'readonly' : [],'disabled' : [],'onchange' : [],'markup' : [],'required' : [],'tip' : [],'label' : [],'labelWidth' : [],'password' : [],'focus' : [],'suggestMethod' : [],'tabIndex' : []}
\ ],
\ 'time': [
\ [],
\ { 'value' : [],'valueChangeListener' : [],'validator' : [],'id' : [],'binding' : [],'rendered' : [],'converter' : [],'readonly' : [],'disabled' : [],'onchange' : [],'required' : [],'tip' : [],'label' : [],'labelWidth' : [],'focus' : [],'inline' : [],'tabIndex' : []}
\ ],
\ 'selectOneRadio': [
\ [],
\ { 'id' : [],'value' : [],'valueChangeListener' : [],'disabled' : [],'markup' : [],'readonly' : [],'onchange' : [],'inline' : [],'label' : [],'labelWidth' : [],'required' : [],'rendered' : [],'binding' : [],'tip' : [],'validator' : [],'converter' : [],'renderRange' : [],'tabIndex' : []}
\ ],
\ 'selectManyCheckbox': [
\ [],
\ { 'id' : [],'value' : [],'valueChangeListener' : [],'disabled' : [],'height' : [],'inline' : [],'label' : [],'labelWidth' : [],'rendered' : [],'binding' : [],'tip' : [],'converter' : [],'validator' : [],'onchange' : [],'readonly' : [],'markup' : [],'focus' : [],'required' : [],'tabIndex' : [],'renderRange' : []}
\ ],
\ 'menuCheckbox': [
\ [],
\ { 'action' : [],'actionListener' : [],'immediate' : [],'onclick' : [],'link' : [],'transition' : [],'id' : [],'binding' : [],'rendered' : [],'disabled' : [],'value' : [],'label' : []}
\ ],
\ 'file': [
\ [],
\ { 'validator' : [],'onchange' : [],'value' : [],'valueChangeListener' : [],'tabIndex' : [],'id' : [],'binding' : [],'rendered' : [],'disabled' : [],'tip' : [],'label' : [],'labelWidth' : [],'required' : []}
\ ],
\ 'selectOneChoice': [
\ [],
\ { 'id' : [],'value' : [],'valueChangeListener' : [],'disabled' : [],'readonly' : [],'onchange' : [],'inline' : [],'label' : [],'labelWidth' : [],'required' : [],'rendered' : [],'focus' : [],'binding' : [],'tip' : [],'validator' : [],'converter' : [],'markup' : [],'tabIndex' : []}
\ ],
\ 'vimxmltaginfo': {
\ 'menuRadio' : [ ' ', 'Renders a submenu with select one items (like a radio button).<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.MenuRadioTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOneCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'separator' : [ ' ', 'Renders a separator. <br /> Short syntax of: <p/> <pre> &lt;tc:separator> &lt;f:facet name="label"> &lt;tc:label value="label"/> &lt;/f:facet> &lt;/tc:separator> </pre><p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.SeparatorTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISeparator</p><p><b>RendererType: </b>Separator</p><p><b>Supported facets:</b></p><dl><dt><b>label</b></dt><dd>This facet contains a UILabel</dd></dl>'],
\ 'label' : [ ' ', '<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.LabelTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UILabel</p><p><b>RendererType: </b>Label</p>'],
\ 'date' : [ ' ', 'Renders a date input field with a date picker and a label. <br /> Short syntax of: <p/> <pre> &lt;tc:panel> &lt;f:facet name="layout"> &lt;tc:gridLayout columns="fixed;*"/> &lt;/f:facet> &lt;tc:label value="#{label}" for="@auto"/> &lt;tc:date value="#{value}"> ... &lt;/tc:in> &lt;/tc:panel> </pre><p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.DateTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIDateInput</p><p><b>RendererType: </b>Date</p>'],
\ 'textarea' : [ ' ', 'Renders a multiline text input control with a label. <br /> Short syntax of: <p/> <pre> &lt;tc:panel> &lt;f:facet name="layout"> &lt;tc:gridLayout columns="fixed;*"/> &lt;/f:facet> &lt;tc:label value="#{label}" for="@auto"/> &lt;tc:textarea value="#{value}"> ... &lt;/tc:in> &lt;/tc:panel> </pre><p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.TextAreaTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIInput</p><p><b>RendererType: </b>TextArea</p>'],
\ 'selectManyListbox' : [ ' ', 'Render a group of checkboxes.<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.SelectManyListboxTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectMany</p><p><b>RendererType: </b>SelectManyListbox</p>'],
\ 'selectBooleanCheckbox' : [ ' ', 'Renders a checkbox.<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.SelectBooleanCheckboxTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectBoolean</p><p><b>RendererType: </b>SelectBooleanCheckbox</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>'],
\ 'selectOneListbox' : [ ' ', 'Render a single selection option listbox.<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.SelectOneListboxTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOne</p><p><b>RendererType: </b>SelectOneListbox</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>'],
\ 'in' : [ ' ', 'Renders a text input field with a label. <br /> Short syntax of: <p/> <pre> &lt;tc:panel> &lt;f:facet name="layout"> &lt;tc:gridLayout columns="fixed;*"/> &lt;/f:facet> &lt;tc:label value="#{label}" for="@auto"/> &lt;tc:in value="#{value}"> ... &lt;/tc:in> &lt;/tc:panel> </pre><p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.InTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIInput</p><p><b>RendererType: </b>In</p>'],
\ 'time' : [ ' ', 'Renders a time input field with a label. <br /> Short syntax of: <p/> <pre> &lt;tc:panel> &lt;f:facet name="layout"> &lt;tc:gridLayout columns="fixed;*"/> &lt;/f:facet> &lt;tc:label value="#{label}" for="@auto"/> &lt;tc:time value="#{value}"> ... &lt;/tc:in> &lt;/tc:panel> </pre><p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.TimeTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UITimeInput</p><p><b>RendererType: </b>Time</p>'],
\ 'selectOneRadio' : [ ' ', 'Render a set of radiobuttons.<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.SelectOneRadioTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOne</p><p><b>RendererType: </b>SelectOneRadio</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>'],
\ 'selectManyCheckbox' : [ ' ', 'Render a group of checkboxes.<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.SelectManyCheckboxTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectMany</p><p><b>RendererType: </b>SelectManyCheckbox</p>'],
\ 'menuCheckbox' : [ ' ', 'Renders a checkable menuitem.<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.MenuCheckboxTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectBooleanCommand</p><p><b>RendererType: </b>MenuCommand</p>'],
\ 'file' : [ ' ', 'Renders a file input field with a label. <p/> Short syntax of: <p/> <pre> &lt;tc:panel> &lt;f:facet name="layout"> &lt;tc:gridLayout columns="fixed;*"/> &lt;/f:facet> &lt;tc:label value="#{label}" for="@auto"/> &lt;tc:file value="#{value}"> ... &lt;/tc:in> &lt;/tc:panel> </pre><p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.FileTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UIFileInput</p><p><b>RendererType: </b>File</p>'],
\ 'selectOneChoice' : [ ' ', 'Render a single selection dropdown list with a label.<p><b>Extended tag: </b>org.apache.myfaces.tobago.taglib.component.SelectOneChoiceTag</p><p><b>UIComponentClass: </b>org.apache.myfaces.tobago.component.UISelectOne</p><p><b>RendererType: </b>SelectOneChoice</p><p><b>Supported facets:</b></p><dl><dt><b>click</b></dt><dd>This facet can contain a UICommand that is invoked in case of a click event from the component</dd><dt><b>change</b></dt><dd>This facet can contain a UICommand that is invoked in case of a change event from the component</dd></dl>']
\ },
\ 'vimxmlattrinfo': {
\ 'action' : [ ' ', 'Action to invoke when clicked. This must be a MethodBinding or a String representing the application action to invoke when this component is activated by the user. The MethodBinding must evaluate to a public method that takes no parameters, and returns a String (the logical outcome) which is passed to the NavigationHandler for this application. The String is directly passed to the Navigationhandler.'],
\ 'actionListener' : [ ' ', 'MethodBinding representing an action listener method that will be notified when this component is activated by the user. The expression must evaluate to a public method that takes an ActionEvent parameter, with a return type of void.'],
\ 'immediate' : [ ' ', 'Flag indicating that, if this component is activated by the user, notifications should be delivered to interested listeners and actions immediately (that is, during Apply Request Values phase) rather than waiting until Invoke Application phase.'],
\ 'onclick' : [ ' ', 'Script to be invoked when clicked'],
\ 'link' : [ ' ', 'Link to an arbitrary URL'],
\ 'transition' : [ ' ', 'Specify, if the command calls an JSF-Action. Useful to switch off the Double-Submit-Check and Waiting-Behavior.'],
\ 'id' : [ ' ', 'The component identifier for this component. This value must be unique within the closest parent component that is a naming container.'],
\ 'binding' : [ ' ', 'The value binding expression linking this component to a property in a backing bean.'],
\ 'rendered' : [ ' ', 'Flag indicating whether or not this component should be rendered (during Render Response Phase), or processed on any subsequent form submit.'],
\ 'label' : [ ' ', 'Text value to display as label. If text contains an underscore the next character is used as accesskey.'],
\ 'disabled' : [ ' ', 'Flag indicating that this element is disabled.'],
\ 'value' : [ ' ', 'The current value of this component.'],
\ 'converter' : [ ' ', 'An expression that specifies the Converter for this component. If the value binding expression is a String, the String is used as an ID to look up a Converter. If the value binding expression is a Converter, uses that instance as the converter. The value can either be a static value (ID case only) or an EL expression.'],
\ 'tip' : [ ' ', 'Text value to display as tooltip.'],
\ 'valueChangeListener' : [ ' ', 'MethodBinding representing a value change listener method that will be notified when a new value has been set for this input component. The expression must evaluate to a public method that takes a ValueChangeEvent parameter, with a return type of void.'],
\ 'validator' : [ ' ', 'A method binding EL expression, accepting FacesContext, UIComponent, and Object parameters, and returning void, that validates the component"s local value.'],
\ 'readonly' : [ ' ', 'Flag indicating that this component will prohibit changes by the user.'],
\ 'onchange' : [ ' ', 'Clientside script function to add to this component"s onchange handler.'],
\ 'required' : [ ' ', 'Flag indicating that a value is required. If the value is an empty string a ValidationError occurs and a Error Message is rendered.'],
\ 'markup' : [ ' ', 'Indicate markup of this component. Possible value is "none". But this can be overridden in the theme.'],
\ 'labelWidth' : [ ' ', 'The width for the label component. Default: "fixed". This value is used in the gridLayouts columns attribute. See gridLayout tag for valid values.'],
\ 'focus' : [ ' ', 'Flag indicating this component should recieve the focus.'],
\ 'inline' : [ ' ', 'Flag indicating this component should rendered as an inline element.'],
\ 'tabIndex' : [ ' ', ''],
\ 'height' : [ ' ', '<p>**** @deprecated. Will be removed in a future version **** </p>The height for this component.'],
\ 'password' : [ ' ', 'Flag indicating whether or not this component should be rendered as password field , so you will not see the typed charakters.'],
\ 'suggestMethod' : [ ' ', 'MethodBinding which generates a list of suggested input values based on a passed prefix -- the currently entered text. The expression has to evaluate to a public method which has a String parameter and a List&lt;String> as return type.'],
\ 'renderRange' : [ ' ', 'Range of items to render.']
\ },
\}

File diff suppressed because it is too large Load Diff

@ -0,0 +1 @@
Subproject commit 7d2042aecacca773c57bf3827d2f9a27ad3a348b

@ -0,0 +1,90 @@
"
" Vim color theme: DevEiate
"
" Gvim color definition file, based loosely on Michael Granger's
" eye-pleasing theme for Textmate of the same name.
" Mahlon E. Smith <mahlon@martini.nu>
" Michael Granger <ged@faeriemud.org>
"
" Drop this into your ~/.vim/colors directory, then load it via
" :colorscheme deveiate
"
" $Id: deveiate.vim 66 2008-06-30 02:28:56Z mahlon $
" ----------------------------------------
" Color definition reference
" ----------------------------------------
" :help group-name
" :help highlight-groups
" :help cterm-colors
set background=dark
highlight clear
let g:colors_name="deveiate"
" ----------------------------------------
" highlight groups
" ----------------------------------------
highlight Normal guifg=#f6dfb2 guibg=#00000f
highlight LineNr guifg=#333333
highlight Cursor guibg=yellow guifg=NONE
highlight CursorLine guibg=#171520
highlight Search guibg=#001632 guifg=NONE
highlight Visual guibg=#001632 guifg=NONE
highlight VisualNOS guibg=#001632 guifg=NONE
highlight Question guifg=yellow
highlight StatusLine guibg=#d4d2cb guifg=#292087
highlight StatusLineNC guibg=#8372be guifg=#22115c
highlight TabLine guibg=black guifg=#333333
highlight TabLineSel guibg=#333333 guifg=#f8f8f8
highlight TabLineFill guifg=black
highlight WildMenu guifg=yellow guibg=#22115c
highlight Pmenu guibg=black guifg=#da8d53
highlight PmenuSel guibg=black guifg=#76a3d7
highlight PmenuSbar guibg=black
highlight PmenuThumb guibg=black guifg=#333333
highlight Folded guifg=#8b98ab guibg=black
highlight FoldColumn guifg=#8b98ab guibg=black
highlight VertSplit guifg=black guibg=#333333
highlight DiffAdd guifg=#f8f8f8 guibg=#253b22
highlight DiffChange guifg=#f8f8f8 guibg=#4a410d
highlight DiffDelete guifg=#f8f8f8 guibg=#420e09
highlight DiffText guifg=white guibg=#7d6f20
highlight NonText guifg=#222222
" ----------------------------------------
" syntax highlighting groups
" ----------------------------------------
highlight Comment guifg=#a82419
highlight Constant guifg=#76a3d7
highlight Function guifg=#9b859d
highlight String guifg=#da8d53
highlight Special guifg=#da8d53
highlight PreProc gui=bold guifg=#00cbcd
highlight Identifier guifg=#9bda8b
highlight Number guifg=#9bda8b
highlight Float guifg=#9bda8b
highlight Statement guifg=#00cbcd
highlight todo guibg=NONE guifg=yellow
highlight MatchParen guifg=yellow guibg=NONE
" ----------------------------------------
" ruby specific syntax highlighting
" ----------------------------------------
highlight rubyConstant guifg=#76a3d7
highlight rubyInstanceVariable guifg=#c2eaf4
highlight rubyClassVariable guifg=#c2eaf4
highlight rubySymbol guifg=#9bda8b
highlight rubyEscape guifg=#ddf2a4
highlight rubyInterpolation guifg=#ddf2a4
highlight rubyClass guifg=#c3adc5
highlight rubyPseudoVariable guifg=#9bda8b
highlight rubyOperator guifg=#00cbcd
" ----------------------------------------
" other misc colors
" ----------------------------------------
highlight MyTagListFileName guifg=yellow guibg=NONE

@ -0,0 +1,110 @@
" Vim color file inherit from the molokai.vim file
"
" Author: Chase Colman <chase@infinityatlas.com>
" Version: 0.1 (2011.02.06)
"
" Note: Based on the molokai theme for vim
" by Tomas Restrepo who based it on Monokai for Textmate
" by Wimer Hazenberg and its darker variant
" by Hamish Stuart Macpherson
"
hi clear
set background=dark
if version > 580
" no guarantees for version 5.8 and below, but this makes it stop
" complaining
hi clear
if exists("syntax_on")
syntax reset
endif
endif
let g:colors_name="focuspoint"
hi Boolean guifg=#CD5C5C
hi Character guifg=#E6DB74
hi Number guifg=#CD5C5C
hi String guifg=#E6DB74 guibg=#242829
hi Conditional guifg=#43AB59 gui=bold
hi Constant guifg=#CD5C5C gui=bold
hi Cursor guifg=#000000 guibg=#F8F8F0
hi Debug guifg=#BCA3A3 gui=bold
hi Define guifg=#71ABC2
hi Delimiter guifg=#8F8F8F
hi DiffAdd guibg=#13354A
hi DiffChange guifg=#89807D guibg=#4C4745
hi DiffDelete guifg=#CD5C5C guibg=#571F1F
hi DiffText guibg=#4C4745 gui=italic,bold
hi Directory guifg=#d1c79e gui=bold
hi Error guifg=#CD5C5C guibg=#571F1F
hi ErrorMsg guifg=#43AB59 guibg=#232526 gui=bold
hi Exception guifg=#d1c79e gui=bold
hi Float guifg=#CD5C5C
hi FoldColumn guifg=#465457 guibg=#000000
hi Folded guifg=#465457 guibg=#000000
hi Function guifg=#d1c79e
hi Identifier guifg=#BD8F2E
hi Ignore guifg=#808080 guibg=bg
hi IncSearch guifg=#C4BE89 guibg=#000000
hi Keyword guifg=#43AB59 gui=bold
hi Label guifg=#E6DB74 gui=none
hi Macro guifg=#C4BE89 gui=italic
hi SpecialKey guifg=#71ABC2 gui=italic
hi MatchParen guifg=fg guibg=#455354 gui=bold
hi ModeMsg guifg=#E6DB74
hi MoreMsg guifg=#E6DB74
hi Operator guifg=#43AB59
" complete menu
hi Pmenu guifg=#87CEEB guibg=#000000
hi PmenuSel guibg=#808080
hi PmenuSbar guibg=#080808
hi PmenuThumb guifg=#87CEEB
hi PreCondit guifg=#d1c79e gui=bold
hi PreProc guifg=#d1c79e
hi Question guifg=#71ABC2
hi Repeat guifg=#43AB59 gui=bold
hi Search guifg=#FFFFFF guibg=#455354
" marks column
hi SignColumn guifg=#d1c79e guibg=#232526
hi SpecialChar guifg=#43AB59 guibg=#242829 gui=bold
hi SpecialComment guifg=#465457 gui=bold
hi Special guifg=#71ABC2 guibg=bg gui=italic
hi SpecialKey guifg=#888A85 gui=italic
if has("spell")
hi SpellBad guisp=#FF0000 gui=undercurl
hi SpellCap guisp=#7070F0 gui=undercurl
hi SpellLocal guisp=#70F0F0 gui=undercurl
hi SpellRare guisp=#FFFFFF gui=undercurl
endif
hi Statement guifg=#43AB59 gui=bold
hi StatusLine guifg=#455354 guibg=fg
hi StatusLineNC guifg=#7F7F7F guibg=#232526
hi StorageClass guifg=#BD8F2E gui=italic
hi Structure guifg=#71ABC2
hi Tag guifg=#43AB59 gui=italic
hi Title guifg=#ef5939
hi Todo guifg=bg guibg=#71ABC2 gui=underline,bold
hi Typedef guifg=#71ABC2
hi Type guifg=#71ABC2 gui=bold
hi Underlined guifg=#808080 gui=underline
hi VertSplit guifg=#080808 guibg=#080808 gui=bold
hi VisualNOS guibg=#403D3D
hi Visual guibg=#403D3D
hi WarningMsg guifg=#FFFFFF guibg=#333333 gui=bold
hi WildMenu guifg=#71ABC2 guibg=#000000
hi Normal guifg=#F8F8F2 guibg=#1B1D1E
hi Comment guifg=#465457
hi CursorLine guibg=#293739
hi CursorColumn guibg=#293739
hi LineNr guifg=#7F7F7F guibg=#232526
hi NonText guifg=#232526 guibg=#232526

@ -0,0 +1,147 @@
"
" Fruity Color Scheme
" ===================
"
" Author: Armin Ronacher <armin.ronacher@active-4.com>
" Version: 0.2
"
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "fruity"
" Default Colors
hi Normal guifg=#ffffff guibg=#111111
hi NonText guifg=#444444 guibg=#000000
hi Cursor guibg=#aaaaaa
hi lCursor guibg=#aaaaaa
" Search
hi Search guifg=#800000 guibg=#ffae00
hi IncSearch guifg=#800000 guibg=#ffae00
" Window Elements
hi StatusLine guifg=#ffffff guibg=#8090a0 gui=bold
hi StatusLineNC guifg=#506070 guibg=#a0b0c0
hi VertSplit guifg=#a0b0c0 guibg=#a0b0c0
hi Folded guifg=#111111 guibg=#8090a0
hi IncSearch guifg=#708090 guibg=#f0e68c
hi Pmenu guifg=#ffffff guibg=#cb2f27
hi SignColumn guibg=#111111
hi CursorLine guibg=#181818
hi LineNr guifg=#aaaaaa guibg=#222222
" Specials
hi Todo guifg=#e50808 guibg=#520000 gui=bold
hi Title guifg=#ffffff gui=bold
hi Special guifg=#fd8900
" Syntax Elements
hi String guifg=#0086d2
hi Constant guifg=#0086d2
hi Number guifg=#0086f7 gui=bold
hi Statement guifg=#fb660a gui=bold
hi Function guifg=#ff0086 gui=bold
hi PreProc guifg=#ff0007 gui=bold
hi Comment guifg=#00d2ff guibg=#0f140f gui=italic
hi Type guifg=#cdcaa9 gui=bold
hi Error guifg=#ffffff guibg=#ab0000
hi Identifier guifg=#ff0086 gui=bold
hi Label guifg=#ff0086
" Python Highlighting for python.vim
hi pythonCoding guifg=#ff0086
hi pythonRun guifg=#ff0086
hi pythonBuiltinObj guifg=#2b6ba2 gui=bold
hi pythonBuiltinFunc guifg=#2b6ba2 gui=bold
hi pythonException guifg=#ee0000 gui=bold
hi pythonExClass guifg=#66cd66 gui=bold
hi pythonSpaceError guibg=#270000
hi pythonDocTest guifg=#2f5f49
hi pythonDocTest2 guifg=#3b916a
hi pythonFunction guifg=#ee0000 gui=bold
hi pythonClass guifg=#ff0086 gui=bold
" JavaScript Highlighting
hi javaScript guifg=#ffffff
hi javaScriptRegexpString guifg=#aa6600
hi javaScriptDocComment guifg=#aaaaaa
hi javaScriptCssStyles guifg=#dd7700
hi javaScriptDomElemFuncs guifg=#66cd66
hi javaScriptHtmlElemFuncs guifg=#dd7700
hi javaScriptLabel guifg=#00bdec gui=italic
hi javaScriptPrototype guifg=#00bdec
hi javaScriptConditional guifg=#ff0007 gui=bold
hi javaScriptRepeat guifg=#ff0007 gui=bold
hi javaScriptFunction guifg=#ff0086 gui=bold
" CSS Highlighting
hi cssIdentifier guifg=#66cd66 gui=bold
hi cssBraces guifg=#00bdec gui=bold
" Ruby Highlighting
hi rubyFunction guifg=#0066bb gui=bold
hi rubyClass guifg=#ff0086 gui=bold
hi rubyModule guifg=#ff0086 gui=bold,underline
hi rubyKeyword guifg=#008800 gui=bold
hi rubySymbol guifg=#aa6600
hi rubyIndentifier guifg=#008aff
hi rubyGlobalVariable guifg=#dd7700
hi rubyConstant guifg=#5894d2 gui=bold
hi rubyBlockParameter guifg=#66cd66
hi rubyPredefinedIdentifier guifg=#555555 gui=bold
hi rubyString guifg=#0086d2
hi rubyStringDelimiter guifg=#dd7700
hi rubySpaceError guibg=#270000
hi rubyDocumentation guifg=#aaaaaa
hi rubyData guifg=#555555
" XML Highlighting
hi xmlTag guifg=#00bdec
hi xmlTagName guifg=#00bdec
hi xmlEndTag guifg=#00bdec
hi xmlNamespace guifg=#00bdec gui=underline
hi xmlAttribPunct guifg=#cccaa9 gui=bold
hi xmlEqual guifg=#cccaa9 gui=bold
hi xmlCdata guifg=#bf0945 gui=bold
hi xmlCdataCdata guifg=#ac1446 guibg=#23010c gui=none
hi xmlCdataStart guifg=#bf0945 gui=bold
hi xmlCdataEnd guifg=#bf0945 gui=bold
" HTML Highlighting
hi htmlTag guifg=#00bdec gui=bold
hi htmlEndTag guifg=#00bdec gui=bold
hi htmlSpecialTagName guifg=#66cd66
hi htmlTagName guifg=#66cd66
hi htmlTagN guifg=#66cd66
hi htmlEvent guifg=#ffffff
" Django Highlighting
hi djangoTagBlock guifg=#ff0007 guibg=#200000 gui=bold
hi djangoVarBlock guifg=#ff0007 guibg=#200000
hi djangoArgument guifg=#0086d2 guibg=#200000
hi djangoStatement guifg=#fb660a guibg=#200000 gui=bold
hi djangoComment guifg=#008800 guibg=#002300 gui=italic
hi djangoFilter guifg=#ff0086 guibg=#200000 gui=italic
" Jinja Highlighting
hi jinjaTagBlock guifg=#ff0007 guibg=#200000 gui=bold
hi jinjaVarBlock guifg=#ff0007 guibg=#200000
hi jinjaString guifg=#0086d2 guibg=#200000
hi jinjaNumber guifg=#bf0945 guibg=#200000 gui=bold
hi jinjaStatement guifg=#fb660a guibg=#200000 gui=bold
hi jinjaComment guifg=#008800 guibg=#002300 gui=italic
hi jinjaFilter guifg=#ff0086 guibg=#200000
hi jinjaRaw guifg=#aaaaaa guibg=#200000
hi jinjaOperator guifg=#ffffff guibg=#200000
hi jinjaVariable guifg=#92cd35 guibg=#200000
hi jinjaAttribute guifg=#dd7700 guibg=#200000
hi jinjaSpecial guifg=#008ffd guibg=#200000
" ERuby Highlighting (for my eruby.vim)
hi erubyRubyDelim guifg=#2c8a16 gui=bold
hi erubyComment guifg=#4d9b3a gui=italic

@ -0,0 +1,271 @@
" Vim color file
" Original Maintainer: Anders Korte <anderskorte@eml.cc>
" Modified: by entheon <jazzworksweb@yahoo.com>
" Last Change: 13 Sept 2005
" Gardener v1.1
" A modification of the Guardian colorscheme v1.2
" 'For code surgeons and web gardeners everywhere'
" A nice earthy color scheme which is easy on the eyes. It
" has as it's base a dark background monocrhomatic khaki
" scheme with dabs of color thrown in here and there on the
" keywords. Plus lots of extra config options so you can
" tweak it to your liking and or make it more like the
" original Guardian scheme. All the defaults are what I like
" but if you want to change stuff just set the right var and
" it will change pretty much immediately, you might have to
" move out of and back into your buffer for it to refresh.
" Features:
" 256 Color XTerm Compatibility
" Richer Syntax
" Black Background
" Functions
" No Italics
" Purple Booleans
" Swapped Status Line Colors
" Other minor tweaks
" Change Log:
" changed the ghastly puke salmon red to green like it
" should have been in the first place esp considering the
" name Gardener, now all vimsters can truly frolic in
" their Vim Gardens
" Options:
" g:gardener_light_comments
" if this var exists then comments are white on a
" gray-blue background if it is not set then the
" comments default to medium grey with no background
" color, I can't stand bg colors but some people might
" like it, so I left it as an option.
"
" g:gardener_soil
" This is a GUI only option because there are no
" colors that work even in the 256 color XTerm. This
" option gives you a brownish background instead of a
" black background. I think the black background gives
" better contrast and thus is easier to read from. if
" you disagree then you've got this option
"
" g:gardener_setnum
" turns the background of the line numbers black
" Using The Options:
" To enable a feature add the line
" let g:gardenter_some_feature=1
" to your ~/.vimrc
" To disable the feature temporarily run the command
" :unlet g:gardener_some_feature
" To disable the feature permanently, simply remove
" the line from your .vimrc file.
set background=dark
hi clear
syntax reset
if has("gui_running")
" Colors for the User Interface.
if exists("g:gardener_setnum")
hi linenr guibg=black guifg=#808080 gui=bold
else
hi linenr guibg=#262626 guifg=#808080 gui=bold
endif
hi Cursor guibg=#cc4455 guifg=white gui=bold
hi link CursorIM Cursor
if exists("g:gardener_soil")
hi Normal guibg=#332211 guifg=white gui=none
else
hi Normal guibg=black guifg=white gui=none
endif
hi NonText guibg=#445566 guifg=#ffeecc gui=bold
hi Visual guibg=#557799 guifg=white gui=none
hi Directory guibg=bg guifg=#337700 gui=none
hi IncSearch guibg=#0066cc guifg=white gui=none
hi link Seach IncSearch
hi SpecialKey guibg=bg guifg=fg gui=none
hi Titled guibg=bg guifg=fg gui=none
hi ErrorMsg guibg=bg guifg=#ff0000 gui=bold
hi ModeMsg guibg=bg guifg=#ffeecc gui=none
hi link MoreMsg ModeMsg
hi Question guibg=bg guifg=#ccffcc gui=bold
hi link WarningMsg ErrorMsg
hi StatusLineNC guibg=#ffeecc guifg=black gui=none
hi StatusLine guibg=#cc4455 guifg=white gui=bold
hi VertSplit guibg=#ffeecc guifg=black gui=none
hi DiffAdd guibg=#446688 guifg=fg gui=none
hi DiffChange guibg=#558855 guifg=fg gui=none
hi DiffDelete guibg=#884444 guifg=fg gui=none
hi DiffText guibg=#884444 guifg=fg gui=bold
" Colors for Syntax Highlighting.
if exists("g:gardener_light_comments")
hi Comment guibg=#334455 guifg=#dddddd gui=none
else
hi Comment guibg=bg guifg=#888888 gui=none
endif
hi Define guibg=bg guifg=#66ccdd gui=bold
hi Conditional guibg=bg guifg=#aadd55 gui=bold
hi Constant guibg=bg guifg=white gui=bold
hi Identifier guibg=bg guifg=#ffddaa gui=none
hi String guibg=bg guifg=#ffffcc gui=none
hi Character guibg=bg guifg=#ffffcc gui=bold
hi Number guibg=bg guifg=#bbddff gui=bold
hi Boolean guibg=bg guifg=#ff55ff gui=bold
hi Float guibg=bg guifg=#bbddff gui=bold
hi Function guibg=bg guifg=#ffffaa gui=bold
hi Statement guibg=bg guifg=#ffffcc gui=bold
hi Repeat guibg=bg guifg=#ff9900 gui=bold
hi Label guibg=bg guifg=#ffccff gui=bold
hi Operator guibg=bg guifg=#cc9966 gui=bold
hi Keyword guibg=bg guifg=#66ffcc gui=bold
hi Exception guibg=bg guifg=#66ffcc gui=bold
hi PreProc guibg=bg guifg=#ffcc99 gui=bold
hi Include guibg=bg guifg=#99cc99 gui=bold
hi link Macro Include
hi link PreCondit Include
hi Type guibg=bg guifg=#ccffaa gui=bold
hi Structure guibg=bg guifg=#99ff99 gui=bold
hi Typedef guibg=bg guifg=#99cc99 gui=italic
hi StorageClass guibg=bg guifg=#99cc99 gui=bold
hi Special guibg=bg guifg=#bbddff gui=bold
hi SpecialChar guibg=bg guifg=#bbddff gui=bold
hi Tag guibg=bg guifg=#bbddff gui=bold
hi Delimiter guibg=bg guifg=fg gui=bold
hi SpecialComment guibg=#334455 guifg=#dddddd gui=italic
hi Debug guibg=bg guifg=#ff9999 gui=none
hi Underlined guibg=bg guifg=#99ccff gui=underline
hi Title guibg=#445566 guifg=white gui=bold
hi Ignore guibg=bg guifg=#cccccc gui=italic
hi Error guibg=#ff0000 guifg=white gui=bold
hi Todo guibg=#556677 guifg=#ff0000 gui=bold
hi htmlH1 guibg=bg guifg=#ffffff gui=bold
hi htmlH2 guibg=bg guifg=#dadada gui=bold
hi htmlH3 guibg=bg guifg=#c6c6c6 gui=bold
hi htmlH4 guibg=bg guifg=#b2b2b2 gui=bold
hi htmlH5 guibg=bg guifg=#9e9e9e gui=bold
hi htmlH6 guibg=bg guifg=#8a8a8a gui=bold
else
" Colors for the User Interface.
if exists("g:gardener_setnum")
exec "hi linenr cterm=BOLD ctermfg=235 ctermbg=244"
else
exec "hi linenr cterm=BOLD ctermfg=244 ctermbg=235"
endif
exec "hi Cursor cterm=BOLD ctermfg=255 ctermbg=167"
exec "hi CursorIM cterm=BOLD ctermfg=255 ctermbg=167"
exec "hi Normal cterm=NONE ctermfg=255 ctermbg=233"
exec "hi NonText cterm=NONE ctermfg=230 ctermbg=233"
exec "hi Visual cterm=NONE ctermfg=255 ctermbg=68"
exec "hi Linear cterm=NONE ctermfg=248 ctermbg=NONE"
exec "hi Directory cterm=NONE ctermfg=64 ctermbg=NONE"
exec "hi IncSearch cterm=NONE ctermfg=255 ctermbg=25"
exec "hi ErrorMsg cterm=BOLD ctermfg=196 ctermbg=NONE"
exec "hi WarningMsg cterm=BOLD ctermfg=196 ctermbg=NONE"
exec "hi ModeMsg cterm=NONE ctermfg=230 ctermbg=NONE"
exec "hi MoreMsg cterm=NONE ctermfg=230 ctermbg=NONE"
exec "hi Question cterm=NONE ctermfg=194 ctermbg=NONE"
exec "hi StatusLineNC cterm=NONE ctermfg=16 ctermbg=229"
exec "hi StatusLine cterm=BOLD ctermfg=255 ctermbg=167"
exec "hi VertSplit cterm=NONE ctermfg=16 ctermbg=229"
exec "hi DiffAdd cterm=NONE ctermfg=255 ctermbg=60"
exec "hi DiffAdd cterm=NONE ctermfg=255 ctermbg=65"
exec "hi DiffAdd cterm=NONE ctermfg=255 ctermbg=95"
exec "hi DiffAdd cterm=BOLD ctermfg=255 ctermbg=95"
" Colors for Syntax Highlighting.
if exists("g:gardener_light_comments")
exec "hi Comment cterm=NONE ctermfg=253 ctermbg=60"
else
exec "hi Comment cterm=NONE ctermfg=244 ctermbg=NONE"
endif
exec "hi Constant cterm=BOLD ctermfg=255 ctermbg=NONE"
exec "hi String cterm=NONE ctermfg=230 ctermbg=NONE"
exec "hi Character cterm=BOLD ctermfg=230 ctermbg=NONE"
exec "hi Number cterm=BOLD ctermfg=153 ctermbg=NONE"
exec "hi Boolean cterm=NONE ctermfg=207 ctermbg=NONE"
exec "hi Float cterm=BOLD ctermfg=153 ctermbg=NONE"
exec "hi Identifier cterm=NONE ctermfg=223 ctermbg=NONE"
exec "hi Function cterm=BOLD ctermfg=229 ctermbg=NONE"
exec "hi Statement cterm=BOLD ctermfg=230 ctermbg=NONE"
exec "hi Define cterm=BOLD ctermfg=68 ctermbg=NONE"
exec "hi Conditional cterm=BOLD ctermfg=149 ctermbg=NONE"
exec "hi Repeat cterm=BOLD ctermfg=208 ctermbg=NONE"
exec "hi Label cterm=BOLD ctermfg=225 ctermbg=NONE"
exec "hi Operator cterm=BOLD ctermfg=173 ctermbg=NONE"
exec "hi Keyword cterm=BOLD ctermfg=86 ctermbg=NONE"
exec "hi Exception cterm=BOLD ctermfg=86 ctermbg=NONE"
exec "hi PreProc cterm=BOLD ctermfg=222 ctermbg=NONE"
exec "hi Include cterm=BOLD ctermfg=114 ctermbg=NONE"
exec "hi Macro cterm=BOLD ctermfg=114 ctermbg=NONE"
exec "hi PreCondit cterm=BOLD ctermfg=114 ctermbg=NONE"
exec "hi Type cterm=BOLD ctermfg=193 ctermbg=NONE"
exec "hi StorageClass cterm=BOLD ctermfg=78 ctermbg=NONE"
exec "hi Structure cterm=BOLD ctermfg=114 ctermbg=NONE"
exec "hi Typedef cterm=BOLD ctermfg=114 ctermbg=NONE"
exec "hi Special cterm=BOLD ctermfg=153 ctermbg=NONE"
exec "hi SpecialChar cterm=BOLD ctermfg=153 ctermbg=NONE"
exec "hi Tag cterm=BOLD ctermfg=153 ctermbg=NONE"
exec "hi Delimiter cterm=BOLD ctermfg=255 ctermbg=NONE"
exec "hi SpecialComment cterm=BOLD ctermfg=253 ctermbg=24"
exec "hi Debug cterm=NONE ctermfg=210 ctermbg=NONE"
exec "hi Title cterm=BOLD ctermfg=255 ctermbg=60"
exec "hi Ignore cterm=NONE ctermfg=251 ctermbg=NONE"
exec "hi Error cterm=NONE ctermfg=255 ctermbg=196"
exec "hi Ignore cterm=NONE ctermfg=196 ctermbg=60"
exec "hi htmlH1 cterm=BOLD ctermfg=255 ctermbg=NONE"
exec "hi htmlH2 cterm=BOLD ctermfg=253 ctermbg=NONE"
exec "hi htmlH3 cterm=BOLD ctermfg=251 ctermbg=NONE"
exec "hi htmlH4 cterm=BOLD ctermfg=249 ctermbg=NONE"
exec "hi htmlH5 cterm=BOLD ctermfg=247 ctermbg=NONE"
exec "hi htmlH6 cterm=BOLD ctermfg=245 ctermbg=NONE"
endif
" And finally.
let g:colors_name = "gardener"
let colors_name = "gardener"

@ -0,0 +1,216 @@
" Vim color file
" Name: inkpot.vim
" Maintainer: Ciaran McCreesh <ciaran.mccreesh@googlemail.com>
" Homepage: http://github.com/ciaranm/inkpot/
"
" This should work in the GUI, rxvt-unicode (88 colour mode) and xterm (256
" colour mode). It won't work in 8/16 colour terminals.
"
" To use a black background, :let g:inkpot_black_background = 1
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "inkpot"
" map a urxvt cube number to an xterm-256 cube number
fun! <SID>M(a)
return strpart("0135", a:a, 1) + 0
endfun
" map a urxvt colour to an xterm-256 colour
fun! <SID>X(a)
if &t_Co == 88
return a:a
else
if a:a == 8
return 237
elseif a:a < 16
return a:a
elseif a:a > 79
return 232 + (3 * (a:a - 80))
else
let l:b = a:a - 16
let l:x = l:b % 4
let l:y = (l:b / 4) % 4
let l:z = (l:b / 16)
return 16 + <SID>M(l:x) + (6 * <SID>M(l:y)) + (36 * <SID>M(l:z))
endif
endif
endfun
if ! exists("g:inkpot_black_background")
let g:inkpot_black_background = 0
endif
if has("gui_running")
if ! g:inkpot_black_background
hi Normal gui=NONE guifg=#cfbfad guibg=#1e1e27
else
hi Normal gui=NONE guifg=#cfbfad guibg=#000000
endif
hi CursorLine guibg=#2e2e37
hi IncSearch gui=BOLD guifg=#303030 guibg=#cd8b60
hi Search gui=NONE guifg=#303030 guibg=#ad7b57
hi ErrorMsg gui=BOLD guifg=#ffffff guibg=#ce4e4e
hi WarningMsg gui=BOLD guifg=#ffffff guibg=#ce8e4e
hi ModeMsg gui=BOLD guifg=#7e7eae guibg=NONE
hi MoreMsg gui=BOLD guifg=#7e7eae guibg=NONE
hi Question gui=BOLD guifg=#ffcd00 guibg=NONE
hi StatusLine gui=BOLD guifg=#b9b9b9 guibg=#3e3e5e
hi User1 gui=BOLD guifg=#00ff8b guibg=#3e3e5e
hi User2 gui=BOLD guifg=#7070a0 guibg=#3e3e5e
hi StatusLineNC gui=NONE guifg=#b9b9b9 guibg=#3e3e5e
hi VertSplit gui=NONE guifg=#b9b9b9 guibg=#3e3e5e
hi WildMenu gui=BOLD guifg=#eeeeee guibg=#6e6eaf
hi MBENormal guifg=#cfbfad guibg=#2e2e3f
hi MBEChanged guifg=#eeeeee guibg=#2e2e3f
hi MBEVisibleNormal guifg=#cfcfcd guibg=#4e4e8f
hi MBEVisibleChanged guifg=#eeeeee guibg=#4e4e8f
hi DiffText gui=NONE guifg=#ffffcd guibg=#4a2a4a
hi DiffChange gui=NONE guifg=#ffffcd guibg=#306b8f
hi DiffDelete gui=NONE guifg=#ffffcd guibg=#6d3030
hi DiffAdd gui=NONE guifg=#ffffcd guibg=#306d30
hi Cursor gui=NONE guifg=#404040 guibg=#8b8bff
hi lCursor gui=NONE guifg=#404040 guibg=#8fff8b
hi CursorIM gui=NONE guifg=#404040 guibg=#8b8bff
hi Folded gui=NONE guifg=#cfcfcd guibg=#4b208f
hi FoldColumn gui=NONE guifg=#8b8bcd guibg=#2e2e2e
hi Directory gui=NONE guifg=#00ff8b guibg=NONE
hi LineNr gui=NONE guifg=#8b8bcd guibg=#2e2e2e
hi NonText gui=BOLD guifg=#8b8bcd guibg=NONE
hi SpecialKey gui=BOLD guifg=#ab60ed guibg=NONE
hi Title gui=BOLD guifg=#af4f4b guibg=NONE
hi Visual gui=NONE guifg=#eeeeee guibg=#4e4e8f
hi Comment gui=NONE guifg=#cd8b00 guibg=NONE
hi Constant gui=NONE guifg=#ffcd8b guibg=NONE
hi String gui=NONE guifg=#ffcd8b guibg=#404040
hi Error gui=NONE guifg=#ffffff guibg=#6e2e2e
hi Identifier gui=NONE guifg=#ff8bff guibg=NONE
hi Ignore gui=NONE
hi Number gui=NONE guifg=#f0ad6d guibg=NONE
hi PreProc gui=NONE guifg=#409090 guibg=NONE
hi Special gui=NONE guifg=#c080d0 guibg=NONE
hi SpecialChar gui=NONE guifg=#c080d0 guibg=#404040
hi Statement gui=NONE guifg=#808bed guibg=NONE
hi Todo gui=BOLD guifg=#303030 guibg=#d0a060
hi Type gui=NONE guifg=#ff8bff guibg=NONE
hi Underlined gui=BOLD guifg=#df9f2d guibg=NONE
hi TaglistTagName gui=BOLD guifg=#808bed guibg=NONE
hi perlSpecialMatch gui=NONE guifg=#c080d0 guibg=#404040
hi perlSpecialString gui=NONE guifg=#c080d0 guibg=#404040
hi cSpecialCharacter gui=NONE guifg=#c080d0 guibg=#404040
hi cFormat gui=NONE guifg=#c080d0 guibg=#404040
hi doxygenBrief gui=NONE guifg=#fdab60 guibg=NONE
hi doxygenParam gui=NONE guifg=#fdd090 guibg=NONE
hi doxygenPrev gui=NONE guifg=#fdd090 guibg=NONE
hi doxygenSmallSpecial gui=NONE guifg=#fdd090 guibg=NONE
hi doxygenSpecial gui=NONE guifg=#fdd090 guibg=NONE
hi doxygenComment gui=NONE guifg=#ad7b20 guibg=NONE
hi doxygenSpecial gui=NONE guifg=#fdab60 guibg=NONE
hi doxygenSpecialMultilineDesc gui=NONE guifg=#ad600b guibg=NONE
hi doxygenSpecialOnelineDesc gui=NONE guifg=#ad600b guibg=NONE
if v:version >= 700
hi Pmenu gui=NONE guifg=#eeeeee guibg=#4e4e8f
hi PmenuSel gui=BOLD guifg=#eeeeee guibg=#2e2e3f
hi PmenuSbar gui=BOLD guifg=#eeeeee guibg=#6e6eaf
hi PmenuThumb gui=BOLD guifg=#eeeeee guibg=#6e6eaf
hi SpellBad gui=undercurl guisp=#cc6666
hi SpellRare gui=undercurl guisp=#cc66cc
hi SpellLocal gui=undercurl guisp=#cccc66
hi SpellCap gui=undercurl guisp=#66cccc
hi MatchParen gui=NONE guifg=#cfbfad guibg=#4e4e8f
endif
else
if ! g:inkpot_black_background
exec "hi Normal cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(80)
else
exec "hi Normal cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(16)
endif
exec "hi IncSearch cterm=BOLD ctermfg=" . <SID>X(80) . " ctermbg=" . <SID>X(73)
exec "hi Search cterm=NONE ctermfg=" . <SID>X(80) . " ctermbg=" . <SID>X(52)
exec "hi ErrorMsg cterm=BOLD ctermfg=" . <SID>X(16) . " ctermbg=" . <SID>X(48)
exec "hi WarningMsg cterm=BOLD ctermfg=" . <SID>X(16) . " ctermbg=" . <SID>X(68)
exec "hi ModeMsg cterm=BOLD ctermfg=" . <SID>X(38) . " ctermbg=" . "NONE"
exec "hi MoreMsg cterm=BOLD ctermfg=" . <SID>X(38) . " ctermbg=" . "NONE"
exec "hi Question cterm=BOLD ctermfg=" . <SID>X(52) . " ctermbg=" . "NONE"
exec "hi StatusLine cterm=BOLD ctermfg=" . <SID>X(85) . " ctermbg=" . <SID>X(81)
exec "hi User1 cterm=BOLD ctermfg=" . <SID>X(28) . " ctermbg=" . <SID>X(81)
exec "hi User2 cterm=BOLD ctermfg=" . <SID>X(39) . " ctermbg=" . <SID>X(81)
exec "hi StatusLineNC cterm=NONE ctermfg=" . <SID>X(84) . " ctermbg=" . <SID>X(81)
exec "hi VertSplit cterm=NONE ctermfg=" . <SID>X(84) . " ctermbg=" . <SID>X(81)
exec "hi WildMenu cterm=BOLD ctermfg=" . <SID>X(87) . " ctermbg=" . <SID>X(38)
exec "hi MBENormal ctermfg=" . <SID>X(85) . " ctermbg=" . <SID>X(81)
exec "hi MBEChanged ctermfg=" . <SID>X(87) . " ctermbg=" . <SID>X(81)
exec "hi MBEVisibleNormal ctermfg=" . <SID>X(85) . " ctermbg=" . <SID>X(82)
exec "hi MBEVisibleChanged ctermfg=" . <SID>X(87) . " ctermbg=" . <SID>X(82)
exec "hi DiffText cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(34)
exec "hi DiffChange cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(17)
exec "hi DiffDelete cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(32)
exec "hi DiffAdd cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(20)
exec "hi Folded cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(35)
exec "hi FoldColumn cterm=NONE ctermfg=" . <SID>X(39) . " ctermbg=" . <SID>X(80)
exec "hi Directory cterm=NONE ctermfg=" . <SID>X(28) . " ctermbg=" . "NONE"
exec "hi LineNr cterm=NONE ctermfg=" . <SID>X(39) . " ctermbg=" . <SID>X(80)
exec "hi NonText cterm=BOLD ctermfg=" . <SID>X(39) . " ctermbg=" . "NONE"
exec "hi SpecialKey cterm=BOLD ctermfg=" . <SID>X(55) . " ctermbg=" . "NONE"
exec "hi Title cterm=BOLD ctermfg=" . <SID>X(48) . " ctermbg=" . "NONE"
exec "hi Visual cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(38)
exec "hi Comment cterm=NONE ctermfg=" . <SID>X(52) . " ctermbg=" . "NONE"
exec "hi Constant cterm=NONE ctermfg=" . <SID>X(73) . " ctermbg=" . "NONE"
exec "hi String cterm=NONE ctermfg=" . <SID>X(73) . " ctermbg=" . <SID>X(81)
exec "hi Error cterm=NONE ctermfg=" . <SID>X(79) . " ctermbg=" . <SID>X(32)
exec "hi Identifier cterm=NONE ctermfg=" . <SID>X(53) . " ctermbg=" . "NONE"
exec "hi Ignore cterm=NONE"
exec "hi Number cterm=NONE ctermfg=" . <SID>X(69) . " ctermbg=" . "NONE"
exec "hi PreProc cterm=NONE ctermfg=" . <SID>X(25) . " ctermbg=" . "NONE"
exec "hi Special cterm=NONE ctermfg=" . <SID>X(55) . " ctermbg=" . "NONE"
exec "hi SpecialChar cterm=NONE ctermfg=" . <SID>X(55) . " ctermbg=" . <SID>X(81)
exec "hi Statement cterm=NONE ctermfg=" . <SID>X(27) . " ctermbg=" . "NONE"
exec "hi Todo cterm=BOLD ctermfg=" . <SID>X(16) . " ctermbg=" . <SID>X(57)
exec "hi Type cterm=NONE ctermfg=" . <SID>X(71) . " ctermbg=" . "NONE"
exec "hi Underlined cterm=BOLD ctermfg=" . <SID>X(77) . " ctermbg=" . "NONE"
exec "hi TaglistTagName cterm=BOLD ctermfg=" . <SID>X(39) . " ctermbg=" . "NONE"
if v:version >= 700
exec "hi Pmenu cterm=NONE ctermfg=" . <SID>X(87) . " ctermbg=" . <SID>X(82)
exec "hi PmenuSel cterm=BOLD ctermfg=" . <SID>X(87) . " ctermbg=" . <SID>X(38)
exec "hi PmenuSbar cterm=BOLD ctermfg=" . <SID>X(87) . " ctermbg=" . <SID>X(39)
exec "hi PmenuThumb cterm=BOLD ctermfg=" . <SID>X(87) . " ctermbg=" . <SID>X(39)
exec "hi SpellBad cterm=NONE ctermbg=" . <SID>X(32)
exec "hi SpellRare cterm=NONE ctermbg=" . <SID>X(33)
exec "hi SpellLocal cterm=NONE ctermbg=" . <SID>X(36)
exec "hi SpellCap cterm=NONE ctermbg=" . <SID>X(21)
exec "hi MatchParen cterm=NONE ctermbg=" . <SID>X(14) . "ctermfg=" . <SID>X(25)
endif
endif
" vim: set et :

@ -0,0 +1,47 @@
" local syntax file - set colors on a per-machine basis:
" vim: tw=0 ts=4 sw=4
" Vim color file
" Maintainer: Ralf Holly <ralf@hollyfamily.de>
" Last Change: 2006 Dec 28
hi! clear
set background=dark
if exists("syntax_on")
syntax reset
endi
let g:colors_name = "nightflight2"
"hi! Normal cterm=none ctermfg=darkgrey ctermbg=black guifg=#c0c0ff guibg=#000020
hi! Normal cterm=none ctermfg=darkgrey ctermbg=black guifg=#c0c0ff guibg=#000025
hi! Scrollbar cterm=bold ctermfg=darkcyan ctermbg=cyan guifg=darkcyan guibg=cyan
hi! Menu guifg=black guibg=cyan
hi! SpecialKey term=bold cterm=bold ctermfg=yellow guifg=yellow
hi! NonText term=bold cterm=bold ctermfg=yellow gui=none guifg=yellow
hi! Directory term=bold cterm=bold ctermfg=cyan guifg=cyan
hi! ErrorMsg term=standout cterm=bold ctermfg=white ctermbg=red guifg=white guibg=red
hi! Search term=reverse ctermfg=cyan ctermbg=blue guifg=cyan guibg=blue
hi! MoreMsg term=bold cterm=bold ctermfg=darkgreen gui=bold guifg=seagreen
hi! ModeMsg term=bold cterm=bold gui=bold guifg=white guibg=blue
hi! LineNr term=underline cterm=bold ctermfg=darkgrey guifg=#505070
hi! Question term=standout cterm=bold ctermfg=darkgreen gui=bold guifg=green
hi! StatusLine term=bold,reverse cterm=bold ctermfg=black ctermbg=cyan gui=bold guifg=black guibg=cyan
hi! StatusLineNC term=reverse ctermfg=black ctermbg=darkcyan guifg=darkcyan guibg=black
hi! Title term=bold cterm=bold ctermfg=darkmagenta gui=bold guifg=magenta
hi! Visual term=reverse cterm=bold ctermfg=black ctermbg=white guifg=black guibg=white
hi! WarningMsg term=standout cterm=bold ctermfg=red guifg=red
hi! Cursor guifg=bg guibg=green
hi! Comment term=bold cterm=bold ctermfg=lightblue guifg=darkgrey
hi! Identifier term=bold cterm=bold ctermfg=green gui=none guifg=white
hi! Special term=bold cterm=bold ctermfg=cyan guifg=darkgrey
hi! Constant term=underline cterm=bold ctermfg=cyan guifg=#30df60
hi! PreProc term=underline ctermfg=magenta guifg=#fcaf3e
hi! Statement term=bold cterm=bold ctermfg=green gui=none guifg=#8387ff
hi! Type term=underline cterm=bold ctermfg=lightgreen gui=none guifg=#8387ff
hi! Error term=reverse ctermfg=white ctermbg=red guifg=white guibg=red
hi! Todo term=standout ctermfg=white ctermbg=magenta guifg=white guibg=brown
" syntax match _COperators "+\|-\|\*\|;\|:\|,\|<\|>\|&\||\|!\|\~\|%\|=\|)\|(\|{\|}\|\.\|\[\|\]"
hi! _COperators ctermfg=white guifg=white gui=none
" For Vim 7
hi! MatchParen ctermbg=blue guifg=white guibg=blue

@ -0,0 +1,96 @@
" Vim color scheme
"
" Name: railscasts.vim
" Maintainer: Nick Moffitt <nick@zork.net>
" Last Change: 01 Mar 2008
" License: WTFPL <http://sam.zoy.org/wtfpl/>
" Version: 2.1
"
" This theme is based on Josh O'Rourke's Vim clone of the railscast
" textmate theme. The key thing I have done here is supply 256-color
" terminal equivalents for as many of the colors as possible, and fixed
" up some of the funny behaviors for editing e-mails and such.
"
" To use for gvim:
" 1: install this file as ~/.vim/colors/railscasts.vim
" 2: put "colorscheme railscasts" in your .gvimrc
"
" If you are using Ubuntu, you can get the benefit of this in your
" terminals using ordinary vim by taking the following steps:
"
" 1: sudo apt-get install ncurses-term
" 2: put the following in your .vimrc
" if $COLORTERM == 'gnome-terminal'
" set term=gnome-256color
" colorscheme railscasts
" else
" colorscheme default
" endif
" 3: if you wish to use this with screen, add the following to your .screenrc:
" attrcolor b ".I"
" termcapinfo xterm 'Co#256:AB=\E[48;5;%dm:AF=\E[38;5;%dm'
" defbce "on"
" term screen-256color-bce
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name = "railscasts"
hi link htmlTag xmlTag
hi link htmlTagName xmlTagName
hi link htmlEndTag xmlEndTag
highlight Normal guifg=#E6E1DC guibg=#111111
highlight Cursor guifg=#000000 ctermfg=0 guibg=#FFFFFF ctermbg=15
highlight CursorLine guibg=#000000 ctermbg=233 cterm=NONE
highlight Comment guifg=#BC9458 ctermfg=180 gui=italic
highlight Constant guifg=#6D9CBE ctermfg=73
highlight Define guifg=#CC7833 ctermfg=173
highlight Error guifg=#FFC66D ctermfg=221 guibg=#990000 ctermbg=88
highlight Function guifg=#FFC66D ctermfg=221 gui=NONE cterm=NONE
highlight Identifier guifg=#6D9CBE ctermfg=73 gui=NONE cterm=NONE
highlight Include guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
highlight PreCondit guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
highlight Keyword guifg=#CC7833 ctermfg=173 cterm=NONE
highlight LineNr guifg=#2B2B2B ctermfg=159 guibg=#C0C0FF
highlight Number guifg=#A5C261 ctermfg=107
highlight PreProc guifg=#E6E1DC ctermfg=103
highlight Search guifg=NONE ctermfg=NONE guibg=#2b2b2b ctermbg=235 gui=italic cterm=underline
highlight Statement guifg=#CC7833 ctermfg=173 gui=NONE cterm=NONE
highlight String guifg=#A5C261 ctermfg=107
highlight Title guifg=#FFFFFF ctermfg=15
highlight Type guifg=#DA4939 ctermfg=167 gui=NONE cterm=NONE
highlight Visual guibg=#5A647E ctermbg=60
highlight DiffAdd guifg=#E6E1DC ctermfg=7 guibg=#519F50 ctermbg=71
highlight DiffDelete guifg=#E6E1DC ctermfg=7 guibg=#660000 ctermbg=52
highlight Special guifg=#DA4939 ctermfg=167
highlight pythonBuiltin guifg=#6D9CBE ctermfg=73 gui=NONE cterm=NONE
highlight rubyBlockParameter guifg=#FFFFFF ctermfg=15
highlight rubyClass guifg=#FFFFFF ctermfg=15
highlight rubyConstant guifg=#DA4939 ctermfg=167
highlight rubyInstanceVariable guifg=#D0D0FF ctermfg=189
highlight rubyInterpolation guifg=#519F50 ctermfg=107
highlight rubyLocalVariableOrMethod guifg=#D0D0FF ctermfg=189
highlight rubyPredefinedConstant guifg=#DA4939 ctermfg=167
highlight rubyPseudoVariable guifg=#FFC66D ctermfg=221
highlight rubyStringDelimiter guifg=#A5C261 ctermfg=143
highlight xmlTag guifg=#E8BF6A ctermfg=179
highlight xmlTagName guifg=#E8BF6A ctermfg=179
highlight xmlEndTag guifg=#E8BF6A ctermfg=179
highlight mailSubject guifg=#A5C261 ctermfg=107
highlight mailHeaderKey guifg=#FFC66D ctermfg=221
highlight mailEmail guifg=#A5C261 ctermfg=107 gui=italic cterm=underline
highlight SpellBad guifg=#D70000 ctermfg=160 ctermbg=NONE cterm=underline
highlight SpellRare guifg=#D75F87 ctermfg=168 guibg=NONE ctermbg=NONE gui=underline cterm=underline
highlight SpellCap guifg=#D0D0FF ctermfg=189 guibg=NONE ctermbg=NONE gui=underline cterm=underline
highlight MatchParen guifg=#FFFFFF ctermfg=15 guibg=#005f5f ctermbg=23

@ -0,0 +1,51 @@
" Maintainer: Lars H. Nielsen (dengmao@gmail.com)
" Last Change: January 22 2007
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let colors_name = "wombat"
" Vim >= 7.0 specific colors
if version >= 700
hi CursorLine guibg=#2d2d2d
hi CursorColumn guibg=#2d2d2d
hi MatchParen guifg=#f6f3e8 guibg=#857b6f gui=bold
hi Pmenu guifg=#f6f3e8 guibg=#444444
hi PmenuSel guifg=#000000 guibg=#cae682
endif
" General colors
hi Cursor guifg=NONE guibg=#656565 gui=none
hi Normal guifg=#f6f3e8 guibg=#242424 gui=none
hi NonText guifg=#808080 guibg=#303030 gui=none
hi LineNr guifg=#857b6f guibg=#000000 gui=none
hi StatusLine guifg=#f6f3e8 guibg=#444444 gui=italic
hi StatusLineNC guifg=#857b6f guibg=#444444 gui=none
hi VertSplit guifg=#444444 guibg=#444444 gui=none
hi Folded guibg=#384048 guifg=#a0a8b0 gui=none
hi Title guifg=#f6f3e8 guibg=NONE gui=bold
hi Visual guifg=#f6f3e8 guibg=#444444 gui=none
hi SpecialKey guifg=#808080 guibg=#343434 gui=none
" Syntax highlighting
hi Comment guifg=#99968b gui=italic
hi Todo guifg=#8f8f8f gui=italic
hi Constant guifg=#e5786d gui=none
hi String guifg=#95e454 gui=italic
hi Identifier guifg=#cae682 gui=none
hi Function guifg=#cae682 gui=none
hi Type guifg=#cae682 gui=none
hi Statement guifg=#8ac6f2 gui=none
hi Keyword guifg=#8ac6f2 gui=none
hi PreProc guifg=#e5786d gui=none
hi Number guifg=#e5786d gui=none
hi Special guifg=#e7f6da gui=none

@ -0,0 +1,96 @@
" Vim color file
" Original Maintainer: Lars H. Nielsen (dengmao@gmail.com)
" Last Change: 2010-07-23
"
" Modified version of wombat for 256-color terminals by
" David Liang (bmdavll@gmail.com)
" based on version by
" Danila Bespalov (danila.bespalov@gmail.com)
set background=dark
if version > 580
hi clear
if exists("syntax_on")
syntax reset
endif
endif
let colors_name = "wombat256mod"
" General colors
hi Normal ctermfg=252 ctermbg=234 cterm=none guifg=#e3e0d7 guibg=#242424 gui=none
hi Cursor ctermfg=234 ctermbg=228 cterm=none guifg=#242424 guibg=#eae788 gui=none
hi Visual ctermfg=251 ctermbg=239 cterm=none guifg=#c3c6ca guibg=#554d4b gui=none
hi VisualNOS ctermfg=251 ctermbg=236 cterm=none guifg=#c3c6ca guibg=#303030 gui=none
hi Search ctermfg=177 ctermbg=241 cterm=none guifg=#d787ff guibg=#636066 gui=none
hi Folded ctermfg=103 ctermbg=237 cterm=none guifg=#a0a8b0 guibg=#3a4046 gui=none
hi Title ctermfg=230 cterm=bold guifg=#ffffd7 gui=bold
hi StatusLine ctermfg=230 ctermbg=238 cterm=none guifg=#ffffd7 guibg=#444444 gui=italic
hi VertSplit ctermfg=238 ctermbg=238 cterm=none guifg=#444444 guibg=#444444 gui=none
hi StatusLineNC ctermfg=241 ctermbg=238 cterm=none guifg=#857b6f guibg=#444444 gui=none
hi LineNr ctermfg=241 ctermbg=232 cterm=none guifg=#857b6f guibg=#080808 gui=none
hi SpecialKey ctermfg=241 ctermbg=235 cterm=none guifg=#626262 guibg=#2b2b2b gui=none
hi WarningMsg ctermfg=203 guifg=#ff5f55
hi ErrorMsg ctermfg=196 ctermbg=236 cterm=bold guifg=#ff2026 guibg=#3a3a3a gui=bold
" Vim >= 7.0 specific colors
if version >= 700
hi CursorLine ctermbg=236 cterm=none guibg=#32322f
hi MatchParen ctermfg=228 ctermbg=101 cterm=bold guifg=#eae788 guibg=#857b6f gui=bold
hi Pmenu ctermfg=230 ctermbg=238 guifg=#ffffd7 guibg=#444444
hi PmenuSel ctermfg=232 ctermbg=192 guifg=#080808 guibg=#cae982
endif
" Diff highlighting
hi DiffAdd ctermbg=17 guibg=#2a0d6a
hi DiffDelete ctermfg=234 ctermbg=60 cterm=none guifg=#242424 guibg=#3e3969 gui=none
hi DiffText ctermbg=53 cterm=none guibg=#73186e gui=none
hi DiffChange ctermbg=237 guibg=#382a37
"hi CursorIM
"hi Directory
"hi IncSearch
"hi Menu
"hi ModeMsg
"hi MoreMsg
"hi PmenuSbar
"hi PmenuThumb
"hi Question
"hi Scrollbar
"hi SignColumn
"hi SpellBad
"hi SpellCap
"hi SpellLocal
"hi SpellRare
"hi TabLine
"hi TabLineFill
"hi TabLineSel
"hi Tooltip
"hi User1
"hi User9
"hi WildMenu
" Syntax highlighting
hi Keyword ctermfg=111 cterm=none guifg=#88b8f6 gui=none
hi Statement ctermfg=111 cterm=none guifg=#88b8f6 gui=none
hi Constant ctermfg=173 cterm=none guifg=#e5786d gui=none
hi Number ctermfg=173 cterm=none guifg=#e5786d gui=none
hi PreProc ctermfg=173 cterm=none guifg=#e5786d gui=none
hi Function ctermfg=192 cterm=none guifg=#cae982 gui=none
hi Identifier ctermfg=192 cterm=none guifg=#cae982 gui=none
hi Type ctermfg=186 cterm=none guifg=#d4d987 gui=none
hi Special ctermfg=229 cterm=none guifg=#eadead gui=none
hi String ctermfg=113 cterm=none guifg=#95e454 gui=italic
hi Comment ctermfg=246 cterm=none guifg=#9c998e gui=italic
hi Todo ctermfg=101 cterm=none guifg=#857b6f gui=italic
" Links
hi! link FoldColumn Folded
hi! link CursorColumn CursorLine
hi! link NonText LineNr
" vim:set ts=4 sw=4 noet:

@ -0,0 +1,315 @@
" Vim color file
" Maintainer: Jani Nurminen <slinky@iki.fi>
" Last Change: $Id: zenburn.vim,v 2.5 2009/09/06 08:51:59 slinky Exp slinky $
" URL: http://slinky.imukuppi.org/zenburnpage/
" License: GPL
"
" Nothing too fancy, just some alien fruit salad to keep you in the zone.
" This syntax file was designed to be used with dark environments and
" low light situations. Of course, if it works during a daybright office, go
" ahead :)
"
" Owes heavily to other Vim color files! With special mentions
" to "BlackDust", "Camo" and "Desert".
"
" To install, copy to ~/.vim/colors directory. Then :colorscheme zenburn.
" See also :help syntax
"
" Credits:
" - Jani Nurminen - original Zenburn
" - Steve Hall & Cream posse - higher-contrast Visual selection
" - Kurt Maier - 256 color console coloring, low and high contrast toggle,
" bug fixing
" - Charlie - spotted too bright StatusLine in non-high contrast mode
" - Pablo Castellazzi - CursorLine fix for 256 color mode
" - Tim Smith - force dark background
" - John Gabriele - spotted bad Ignore-group handling
"
" CONFIGURABLE PARAMETERS:
"
" You can use the default (don't set any parameters), or you can
" set some parameters to tweak the Zenburn colours.
"
" * You can now set a darker background for bright environments. To activate, use:
" contrast Zenburn, use:
"
" let g:zenburn_high_Contrast = 1
"
" * For example, Vim help files uses the Ignore-group for the pipes in tags
" like "|somelink.txt|". By default, the pipes are not visible, as they
" map to Ignore group. If you wish to enable coloring of the Ignore group,
" set the following parameter to 1. Warning, it might make some syntax files
" look strange.
"
" let g:zenburn_color_also_Ignore = 1
"
" * To get more contrast to the Visual selection, use
"
" let g:zenburn_alternate_Visual = 1
"
" * To use alternate colouring for Error message, use
"
" let g:zenburn_alternate_Error = 1
"
" * The new default for Include is a duller orange. To use the original
" colouring for Include, use
"
" let g:zenburn_alternate_Include = 1
"
" * Work-around to a Vim bug, it seems to misinterpret ctermfg and 234 and 237
" as light values, and sets background to light for some people. If you have
" this problem, use:
"
" let g:zenburn_force_dark_Background = 1
"
" * To turn the parameter(s) back to defaults, use UNLET:
"
" unlet g:zenburn_alternate_Include
"
" Setting to 0 won't work!
"
" That's it, enjoy!
"
" TODO
" - Visual alternate color is broken? Try GVim >= 7.0.66 if you have trouble
" - IME colouring (CursorIM)
set background=dark
hi clear
if exists("syntax_on")
syntax reset
endif
let g:colors_name="zenburn"
hi Boolean guifg=#dca3a3
hi Character guifg=#dca3a3 gui=bold
hi Comment guifg=#7f9f7f gui=italic
hi Conditional guifg=#f0dfaf gui=bold
hi Constant guifg=#dca3a3 gui=bold
hi Cursor guifg=#000d18 guibg=#8faf9f gui=bold
hi Debug guifg=#bca3a3 gui=bold
hi Define guifg=#ffcfaf gui=bold
hi Delimiter guifg=#8f8f8f
hi DiffAdd guifg=#709080 guibg=#313c36 gui=bold
hi DiffChange guibg=#333333
hi DiffDelete guifg=#333333 guibg=#464646
hi DiffText guifg=#ecbcbc guibg=#41363c gui=bold
hi Directory guifg=#dcdccc gui=bold
hi ErrorMsg guifg=#80d4aa guibg=#2f2f2f gui=bold
hi Exception guifg=#c3bf9f gui=bold
hi Float guifg=#c0bed1
hi FoldColumn guifg=#93b3a3 guibg=#3f4040
hi Folded guifg=#93b3a3 guibg=#3f4040
hi Function guifg=#efef8f
hi Identifier guifg=#efdcbc
hi IncSearch guibg=#f8f893 guifg=#385f38
hi Keyword guifg=#f0dfaf gui=bold
hi Label guifg=#dfcfaf gui=underline
hi LineNr guifg=#9fafaf guibg=#262626
hi Macro guifg=#ffcfaf gui=bold
hi ModeMsg guifg=#ffcfaf gui=none
hi MoreMsg guifg=#ffffff gui=bold
hi NonText guifg=#404040
hi Number guifg=#8cd0d3
hi Operator guifg=#f0efd0
hi PreCondit guifg=#dfaf8f gui=bold
hi PreProc guifg=#ffcfaf gui=bold
hi Question guifg=#ffffff gui=bold
hi Repeat guifg=#ffd7a7 gui=bold
hi Search guifg=#ffffe0 guibg=#284f28
hi SpecialChar guifg=#dca3a3 gui=bold
hi SpecialComment guifg=#82a282 gui=bold
hi Special guifg=#cfbfaf
hi SpecialKey guifg=#9ece9e
hi Statement guifg=#e3ceab gui=none
hi StatusLine guifg=#313633 guibg=#ccdc90
hi StatusLineNC guifg=#2e3330 guibg=#88b090
hi StorageClass guifg=#c3bf9f gui=bold
hi String guifg=#cc9393
hi Structure guifg=#efefaf gui=bold
hi Tag guifg=#e89393 gui=bold
hi Title guifg=#efefef gui=bold
hi Todo guifg=#dfdfdf guibg=bg gui=bold
hi Typedef guifg=#dfe4cf gui=bold
hi Type guifg=#dfdfbf gui=bold
hi Underlined guifg=#dcdccc gui=underline
hi VertSplit guifg=#2e3330 guibg=#688060
hi VisualNOS guifg=#333333 guibg=#f18c96 gui=bold,underline
hi WarningMsg guifg=#ffffff guibg=#333333 gui=bold
hi WildMenu guibg=#2c302d guifg=#cbecd0 gui=underline
hi SpellBad guisp=#bc6c4c guifg=#dc8c6c
hi SpellCap guisp=#6c6c9c guifg=#8c8cbc
hi SpellRare guisp=#bc6c9c guifg=#bc8cbc
hi SpellLocal guisp=#7cac7c guifg=#9ccc9c
" Entering Kurt zone
if &t_Co > 255
hi Boolean ctermfg=181
hi Character ctermfg=181 cterm=bold
hi Comment ctermfg=108
hi Conditional ctermfg=223 cterm=bold
hi Constant ctermfg=181 cterm=bold
hi Cursor ctermfg=233 ctermbg=109 cterm=bold
hi Debug ctermfg=181 cterm=bold
hi Define ctermfg=223 cterm=bold
hi Delimiter ctermfg=245
hi DiffAdd ctermfg=66 ctermbg=237 cterm=bold
hi DiffChange ctermbg=236
hi DiffDelete ctermfg=236 ctermbg=238
hi DiffText ctermfg=217 ctermbg=237 cterm=bold
hi Directory ctermfg=188 cterm=bold
hi ErrorMsg ctermfg=115 ctermbg=236 cterm=bold
hi Exception ctermfg=249 cterm=bold
hi Float ctermfg=251
hi FoldColumn ctermfg=109 ctermbg=238
hi Folded ctermfg=109 ctermbg=238
hi Function ctermfg=228
hi Identifier ctermfg=223
hi IncSearch ctermbg=228 ctermfg=238
hi Keyword ctermfg=223 cterm=bold
hi Label ctermfg=187 cterm=underline
hi LineNr ctermfg=248 ctermbg=235
hi Macro ctermfg=223 cterm=bold
hi ModeMsg ctermfg=223 cterm=none
hi MoreMsg ctermfg=15 cterm=bold
hi NonText ctermfg=238
hi Number ctermfg=116
hi Operator ctermfg=230
hi PreCondit ctermfg=180 cterm=bold
hi PreProc ctermfg=223 cterm=bold
hi Question ctermfg=15 cterm=bold
hi Repeat ctermfg=223 cterm=bold
hi Search ctermfg=230 ctermbg=236
hi SpecialChar ctermfg=181 cterm=bold
hi SpecialComment ctermfg=108 cterm=bold
hi Special ctermfg=181
hi SpecialKey ctermfg=151
hi Statement ctermfg=187 ctermbg=234 cterm=none
hi StatusLine ctermfg=236 ctermbg=186
hi StatusLineNC ctermfg=235 ctermbg=108
hi StorageClass ctermfg=249 cterm=bold
hi String ctermfg=174
hi Structure ctermfg=229 cterm=bold
hi Tag ctermfg=181 cterm=bold
hi Title ctermfg=7 ctermbg=234 cterm=bold
hi Todo ctermfg=108 ctermbg=234 cterm=bold
hi Typedef ctermfg=253 cterm=bold
hi Type ctermfg=187 cterm=bold
hi Underlined ctermfg=188 ctermbg=234 cterm=bold
hi VertSplit ctermfg=236 ctermbg=65
hi VisualNOS ctermfg=236 ctermbg=210 cterm=bold
hi WarningMsg ctermfg=15 ctermbg=236 cterm=bold
hi WildMenu ctermbg=236 ctermfg=194 cterm=bold
hi CursorLine ctermbg=236 cterm=none
" spellchecking, always "bright" background
hi SpellLocal ctermfg=14 ctermbg=237
hi SpellBad ctermfg=9 ctermbg=237
hi SpellCap ctermfg=12 ctermbg=237
hi SpellRare ctermfg=13 ctermbg=237
" pmenu
hi PMenu ctermfg=248 ctermbg=0
hi PMenuSel ctermfg=223 ctermbg=235
if exists("g:zenburn_high_Contrast")
hi Normal ctermfg=188 ctermbg=234
else
hi Normal ctermfg=188 ctermbg=237
hi Cursor ctermbg=109
hi diffadd ctermbg=237
hi diffdelete ctermbg=238
hi difftext ctermbg=237
hi errormsg ctermbg=237
hi foldcolumn ctermbg=238
hi folded ctermbg=238
hi incsearch ctermbg=228
hi linenr ctermbg=238
hi search ctermbg=238
hi statement ctermbg=237
hi statusline ctermbg=144
hi statuslinenc ctermbg=108
hi title ctermbg=237
hi todo ctermbg=237
hi underlined ctermbg=237
hi vertsplit ctermbg=65
hi visualnos ctermbg=210
hi warningmsg ctermbg=236
hi wildmenu ctermbg=236
endif
endif
if exists("g:zenburn_force_dark_Background")
" Force dark background, because of a bug in VIM: VIM sets background
" automatically during "hi Normal ctermfg=X"; it misinterprets the high
" value (234 or 237 above) as a light color, and wrongly sets background to
" light. See ":help highlight" for details.
set background=dark
endif
if exists("g:zenburn_high_Contrast")
" use new darker background
hi Normal guifg=#dcdccc guibg=#1f1f1f
hi CursorLine guibg=#121212 gui=bold
hi Pmenu guibg=#242424 guifg=#ccccbc
hi PMenuSel guibg=#353a37 guifg=#ccdc90 gui=bold
hi PmenuSbar guibg=#2e3330 guifg=#000000
hi PMenuThumb guibg=#a0afa0 guifg=#040404
hi MatchParen guifg=#f0f0c0 guibg=#383838 gui=bold
hi SignColumn guifg=#9fafaf guibg=#181818 gui=bold
hi TabLineFill guifg=#cfcfaf guibg=#181818 gui=bold
hi TabLineSel guifg=#efefef guibg=#1c1c1b gui=bold
hi TabLine guifg=#b6bf98 guibg=#181818 gui=bold
hi CursorColumn guifg=#dcdccc guibg=#2b2b2b
else
" Original, lighter background
hi Normal guifg=#dcdccc guibg=#3f3f3f
hi CursorLine guibg=#434443
hi Pmenu guibg=#2c2e2e guifg=#9f9f9f
hi PMenuSel guibg=#242424 guifg=#d0d0a0 gui=bold
hi PmenuSbar guibg=#2e3330 guifg=#000000
hi PMenuThumb guibg=#a0afa0 guifg=#040404
hi MatchParen guifg=#b2b2a0 guibg=#2e2e2e gui=bold
hi SignColumn guifg=#9fafaf guibg=#343434 gui=bold
hi TabLineFill guifg=#cfcfaf guibg=#353535 gui=bold
hi TabLineSel guifg=#efefef guibg=#3a3a39 gui=bold
hi TabLine guifg=#b6bf98 guibg=#353535 gui=bold
hi CursorColumn guifg=#dcdccc guibg=#4f4f4f
endif
if exists("g:zenburn_alternate_Visual")
" Visual with more contrast, thanks to Steve Hall & Cream posse
" gui=none fixes weird highlight problem in at least GVim 7.0.66, thanks to Kurt Maier
hi Visual guifg=#000000 guibg=#71d3b4 gui=none
hi VisualNOS guifg=#000000 guibg=#71d3b4 gui=none
else
" use default visual
hi Visual guifg=#233323 guibg=#71d3b4 gui=none
hi VisualNOS guifg=#233323 guibg=#71d3b4 gui=none
endif
if exists("g:zenburn_alternate_Error")
" use a bit different Error
hi Error guifg=#ef9f9f guibg=#201010 gui=bold
else
" default
hi Error guifg=#e37170 guibg=#332323 gui=none
endif
if exists("g:zenburn_alternate_Include")
" original setting
hi Include guifg=#ffcfaf gui=bold
else
" new, less contrasted one
hi Include guifg=#dfaf8f gui=bold
endif
if exists("g:zenburn_color_also_Ignore")
" color the Ignore groups
" note: if you get strange coloring for your files, turn this off (unlet)
hi Ignore guifg=#545a4f
endif
" TODO check for more obscure syntax groups that they're ok

@ -0,0 +1,19 @@
" Vim compiler file
" Compiler: javac
" Maintainer: Doug Kearns <djkea2@gus.gscit.monash.edu.au>
" URL: http://gus.gscit.monash.edu.au/~djkea2/vim/compiler/javac.vim
" Last Change: 2004 Nov 27
if exists("current_compiler")
finish
endif
let current_compiler = "javac_ex"
if exists(":CompilerSet") != 2 " older Vim always used :setlocal
command -nargs=* CompilerSet setlocal <args>
endif
CompilerSet makeprg=javac
"CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%-C%.%#,%-G%.%#
CompilerSet errorformat=%E%f:%l:\ %m,%-Z%p^,%+C%.%#,%-G.%#

@ -0,0 +1,129 @@
*CuteTodoList.txt* Plugin to handle a todo list, nicely (v1.3)
Cute Todo List Plugin ~
1. The what and why of todoLists. |cuteTodoList|
2. How to use the different commands. |cuteTodoCommands|
3. How to manage the list. |cuteBufferUsage|
4. How to tweak the Todo list. |cuteTodoConfiguration|
==============================================================================
*cuteTodoList*
1. Why a Cute Todo list that even kitteh can't match ?~
The aim of this plug-in is to provide a nice 'to do' list which doesn't
interfere with your code. All the things to do are stored in separate
files.
Moreover the tasks can have priorities, and be sorted accordingly,
which help to manage the work flow without leaving Vim.
The files containing tasks are stored at two distinct places : >
~/.global.todo.txt
$pwd/.todo.txt
<
The global one is stored on your home directory, opened every time you use
the to-do list. The local one is intended to be used as a project-specific
list.
This plug-in can also extract all tasks gathered in your open buffer.
If you mark something TODO in your document, you will see it appear in the
list after the next (manual) update.
To be able to use this plugin, you must put : >
set nocompatible
> somwhere on your .vimrc
==============================================================================
*cuteTodoCommands* List of hoogle related command
2. Cute Todo List commands ~
*TodoOpen* *:TodoOpen*
:TodoOpen
Open the Todo Window at the top or bottom of your current window. Cursor
stay at it's current position.
*TodoClose* *:TodoClose*
:TodoClose
Close the Todo Window, whenever it is. Cursor stay where it is.
*Todo* *:Todo*
:Todo
Add a todo in the local list. A prompt will appear to type the todo text.
*Todog* *:Todog*
:Todog
Add a todo in the global list. A prompt will appear to type the todo text.
==============================================================================
*cuteBufferUsage* How to use the todolist buffer
3. Cute Todo List Buffer usage. ~
*todo_+*
+
Increase task priority. The icon should transform from down arrow to (!).
*todo_-*
-
Decrease task priority. The icon should transform from (!) to down arrow.
*todo_^*
^
Move the task up in the list.
*todo_v*
v
Move the task down in the list.
*todo_m*
m
Modify the task, you'll be prompted to modify the text in the command
line.
*todo_o*
o
Jump to the location of the gathered todo.
*todo_s*
s
Sort the todos. Press multiple times to change sorting factor.
*todo_u*
u
Scan all the open buffer to search for TODO and add them to the todo list
view.
*<S-D>*
<S-D>
Delete a task, no confirmation asked. the simple 'd' was avoided to
prevent manipulation error.
==============================================================================
*cuteTodoConfiguration* Variables controlling CuteTodoList configuration
4. Cute Todo List tweaks ~
*g:todo_list_buff_name* *todo_list_buff_name*
g:todo_list_buff_name
Default name of the todo list window, the default is 'Todo\ List', you
must escape spaces, as it is used as an Ex command argument. To change the
window name, use the following command : >
:let g:todo_list_buff_name= 'The\ name\ you\ want'
<
*g:todo_generate_auto* *todo_generate_auto*
g:todo_generate_auto
To disable automatic generation : >
:let g:todo_generate_auto = 0
<
*g:todo_list_filename* *todo_list_filename*
g:todo_list_filename
File name used to store the todo lists. The default is .todo.txt
*g:todo_list_globfilename* *todo_list_globfilename*
g:todo_list_globfilename
File name used to store the global todo list. The defult is
'.global.todo.txt'
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

@ -0,0 +1,60 @@
projects = latex-suite latex-suite-quickstart
htmlfiles = $(addsuffix .html, $(projects))
txtfiles = $(addsuffix .txt, $(projects))
cssfiles = $(addsuffix .css, $(projects))
all = $(projects) $(htmlfiles) $(cssfiles) $(txtfiles)
xsltproc=xsltproc
db2vim=../../db2vim/db2vim
# Use for debugging:
#xsltproc=strace -e trace=file xsltproc --nonet --load-trace
# export XML_DEBUG_CATALOG = 1
# Specify local catalog to not use system installed dtd/xsl files
# export XML_CATALOG_FILES=catalog.xml
# User configuration of this Makefile goes into Makefile.local
# E.g. to use a catalog file installed by the user.
-include Makefile.local
# Default Target is to create all documentation files
all: $(all)
# create multi page html (chunk xhtml)
$(projects): %: %.xml latex-suite-chunk.xsl latex-suite-common.xsl
$(xsltproc) -o $@/ latex-suite-chunk.xsl $<
# create single html files
$(htmlfiles): %.html: %.xml latex-suite.xsl latex-suite-common.xsl
$(xsltproc) -o $@ latex-suite.xsl $<
# create vim flat files
latex-suite.txt: %.txt: %.xml
$(db2vim) --prefix=ls_ $< > $@
latex-suite-quickstart.txt: %.txt: %.xml
$(db2vim) --prefix=lq_ $< > $@
# validate xml
validate:
for file in *.xml; do \
xmllint --valid --noout $$file; \
done
clean:
rm -f $(htmlfiles)
rm -rf $(projects)
# $(txtfiles) are currently in revision control, therefore they are not
# removed in the clean target
mr-proper: clean
rm -f $(txtfiles)
upload: $(all)
rsync --delete -lrtvz $(all) shell.sourceforge.net:/home/groups/v/vi/vim-latex/htdocs/documentation/
# Make sure that directories are group writeable, depends on bash beeing the remote shell
ssh shell.sourceforge.net chmod g+w "/home/groups/v/vi/vim-latex/htdocs/documentation/latex-suite{,-quickstart}"
# vim:nowrap

@ -0,0 +1,29 @@
# Manual files
ls-flat:
java com.icl.saxon.StyleSheet latex-suite.xml latex-suite.xsl > latex-suite.html
ls-chunk:
( \
cd latex-suite && \
java com.icl.saxon.StyleSheet ../latex-suite.xml ../latex-suite-chunk.xsl \
)
ls-txt:
db2vim --prefix=ls_ latex-suite.xml > latex-suite.txt
# Quickstart files
lsq-flat:
java com.icl.saxon.StyleSheet latex-suite-quickstart.xml latex-suite.xsl > latex-suite-quickstart.html
lsq-chunk:
( \
cd latex-suite-quickstart && \
java com.icl.saxon.StyleSheet ../latex-suite-quickstart.xml ../latex-suite-chunk.xsl \
)
lsq-txt:
db2vim --prefix=lq_ latex-suite-quickstart.xml > latex-suite-quickstart.txt
cvsci:
cvs ci latex-suite.xml latex-suite.txt
# vim:nowrap

File diff suppressed because it is too large Load Diff

@ -0,0 +1,110 @@
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
This file is outdated, please look at README.new for updated information
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
====================================
Generating Latex-Suite documentation
====================================
In order to generate the html files and vim-help files from the XML source,
you will need to do follow the following steps. The steps are complex only
for a windows machine. On most (modern) linux machines, the various
utilities are already installed and all you need to do is some
soft-linking.
1. Download the Docbook XSL stylesheets from
http://sourceforge.net/project/showfiles.php?group_id=21935
I downloaded docbook-xsl-1.61.2.tar.gz. Unpack this archive under the
present directory. You should see something like::
./docbook-xsl-1.XX.X/
Rename this to::
./docbook-xsl
Alternatively, if you are on a modern unix system, the docbook-xsl
stylesheets should already be installed on your system. Soft-linking
will thus work more simply. On a typical Debian box, just do::
ln -s /usr/share/sgml/docbook/stylesheet/xsl/nwalsh docbook-xsl
The docbook-xsl stylesheets can be installed via the docbook-xsl
package on Debian. (Just use apt-get).
2. Download the Docbook DTD from
http://www.oasis-open.org/docbook/xml/4.2/docbook-xml-4.2.zip
Extract this into a subdirectory ``docbook-xml/`` under the present
directory. You should see something like::
./docbook-xml/
with a file ``docbookx.dtd`` located there.
**CAUTION**:
The archive above does not create a top level directory but
unzips directly into the present directory. Therefore, make sure to
run the unzip by first creating ``./docbook-xml/``, copying the zip
file there and then unzipping.
Alternatively, if you are on a modern unix system, the docbook-xml DTD
will already be installed. Softlinking will thus work. On a typical
Debian box, you could do::
ln -s /usr/share/sgml/docbook/dtd/xml/4.2 docbook-xml
On debian, you need the docbook-xml package on Debian. (Just use
apt-get).
3. Download saxon.jar from
http://vim-latex.sourceforge.net/documentation/saxon.jar
This is the bare .jar file without any of the other things which saxon
comes with. Add the ``saxon.jar`` file to your ``$CLASSPATH`` setting.
**NOTE:**
The ``$CLASSPATH`` setting should point to the ``saxon.jar`` file,
not the directory where it resides.
Again, on a unix system, you might not need to download this. For debian
systems, the saxon.jar file resides in::
/usr/share/java/saxon.jar
You can point your ``$CLASSPATH`` to that file.
4. Download db2vim (created by me :)) via anonymous cvs::
mkdir -p ~/bin/db2vim
cvs -d :pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex \
co -d ~/bin/db2vim db2vim
Add the ``~/bin/db2vim/`` directory thus created to your ``$PATH``
setting.
5. Create a new directory ``latex-suite/`` under the present directory for
the chunked html files to reside in. You should see something like::
./latex-suite/
6. Copy ``Makefile.in`` to ``Makefile`` or ``makefile`` and perform any
necessary customizations. For example, if you are using Activestate
python under windows, you will need to change the ls-txt: target as::
python e:/srinath/testing/db2vim/db2vim latex-suite.xml > latex-suite.txt
Thats it! You are ready. Now you can do::
make ls-chunk
make ls-flat
make ls-txt
to create the 3 formats.
Author: Srinath Avadhanula <srinath@fastmail.fm>

@ -0,0 +1,17 @@
====================================
Generating Latex-Suite documentation
====================================
You need:
- xsltproc
- Docbook XSL stylesheets (*)
- Docbook DTD (*)
(*) These files will be downloaded every time you create the documentation,
unless you install or download them.
On Fedora, you can run as root:
yum install libxslt docbook-style-xsl docbook-dtds
to install the required packages.

@ -0,0 +1,113 @@
*RltvNmbr.txt* Relative Numbers Nov 21, 2008
Author: Charles E. Campbell, Jr. <NdrOchip@ScampbellPfamily.AbizM>
(remove NOSPAM from Campbell's email first)
Copyright: (c) 2008 by Charles E. Campbell, Jr. *RltvNmbr-copyright*
The VIM LICENSE applies to RltvNmbr.vim and RltvNmbr.txt
(see |copyright|) except use "RltvNmbr instead of "Vim".
NO WARRANTY, EXPRESS OR IMPLIED. USE AT-YOUR-OWN-RISK.
==============================================================================
1. Contents *RltvNmbr* *RltvNmbr-contents* {{{1
1. Contents......................................: |RltvNmbr-contents|
2. Relative Numbering Manual.....................: |RltvNmbr-manual|
3. Relative Numbering History....................: |RltvNmbr-history|
==============================================================================
2. Relative Numbering Manual *RltvNmbr-manual* {{{1
ENABLING AND DISABLING RELATIVE NUMBERING
The Relative Numbering plugin provides a command: >
:RltvNmbr[!]
< The :RltvNmbr command enables relative numbering.
The :RltvNmbr! command disables relative numbering.
If :RN hasn't been previously defined, then one may also use >
:RN
< to toggle relative numbering.
The RltvNumbr plugin reports on its enabled/disabled status with >
b:rltvnmbrmode=1 : RltvNmbr mode is enabled
b:rltvnmbrmode=0 : RltvNmbr mode is disabled
< This variable is used for reporting and to control :RN based toggling.
YOU MUST HAVE SIGNS FOR THIS PLUGIN
To use this plugin your vim must have been compiled with the "huge" feature
set (so as to have +signs in the :version listing). Typically that means
having used >
configure --with-features=huge
<
To determine if your copy of vim has signs, you may: >
:echo has("signs")
< If it shows "1", then your vim supports signs.
Alternatively, you may: >
:version
< and if +signs appears in the listing, then, again, your vim supports
signs. If it lists -signs, then unfortunately your vim does not do so.
MODFIYING THE RELATIVE NUMBERING HIGHLIGHTING
The relative numbering signs are highlighted with >
hi default HL_RltvNmbr_Minus gui=none,italic ctermfg=red ctermbg=black guifg=red guibg=black
hi default HL_RltvNmbr_Positive gui=none,italic ctermfg=green ctermbg=black guifg=green guibg=black
< This information is provided so that you may know what to specify to use
your preferences in relative number highlighting. One way to get your
preferred colorization in is to put lines like the following into
.vim/after/plugin/RltvNmbr.vim: >
au FileType * hi HL_RltvNmbr_Minus gui=none ctermfg=yellow ctermbg=black guifg=yellow guibg=black
au FileType * hi HL_RltvNmbr_Positive gui=none ctermfg=magenta ctermbg=black guifg=magenta guibg=black
<
HOW TO START WITH RELATIVE NUMBERING MODE ENABLED
Using >
Unix: ~/.vim/after/plugin/RltvNmbr.vim
Windows: $HOME\_vimfiles\after\plugin\RltvNmbr.vim
< place the following line: >
call RltvNmbr#RltvNmbrCtrl(1)
<
THE RELATIVE NUMBERING PATCH
This plugin was inspired by the relative-numbering patch mentioned on the
vim-dev mailing list, written by Markus Heidelberg. You can find his patch at
http://groups.google.com/group/vim_dev/attach/10fa0944a8b643b4/vim-7.2-relativenumber-02.patch?part=2
This plugin uses signs to enable relative numbering. Signs are assigned
on a buffer-by-buffer basis as an inherent limitation, so a given buffer
can only display one set of signs. The relative numbering patch does not
have this limitation. To see this effect, try using >
vim -O file file
< and use relative numbering provided by this plugin. You'll find that the
relative numbering column will change as you switch windows to reflect
your active cursor.
==============================================================================
3. Relative Numbering History *RltvNmbr-history* {{{1
3: Aug 22, 2008 * speeded up unplacing of signs
* included g:rltvnmbrmode to report en/dis-abled
* s:AvoidOtherSigns() written/included to
* allow RltvNmbr() to avoid using previously
existing sign IDs.
* included some more autocmds for rltv nmbr
updating
2: Aug 19, 2008 * included :RN command which toggles
relative numbering
* included some more autocmds to update
relative numbering.
* made gvim's version use italic numbers
* :RN was toggling globally; now its done
on a buffer-by-buffer basis.
* Included DrChip menu support for gvim use
1: Aug 18, 2008 * Initial release
Aug 18, 2008 * Fixed some bugs associated with folding
Aug 18, 2008 * Changes in colorscheme was clearing the
highlighting. Highlighting now restored.
==============================================================================
Modelines: {{{1
vim:tw=78:ts=8:ft=help:fdm=marker:

@ -0,0 +1,12 @@
<?xml version="1.0"?>
<!DOCTYPE catalog
PUBLIC "-//OASIS/DTD Entity Resolution XML Catalog V1.0//EN"
"http://www.oasis-open.org/committees/entity/release/1.0/catalog.dtd">
<catalog xmlns="urn:oasis:names:tc:entity:xmlns:xml:catalog">
<rewriteSystem
systemIdStartString="http://docbook.sourceforge.net/release/xsl/current"
rewritePrefix="docbook-xsl/"/>
<rewriteURI
uriStartString="http://docbook.sourceforge.net/release/xsl/current/"
rewritePrefix="docbook-xsl/" />
</catalog>

@ -0,0 +1,156 @@
*ConqueTerm* Plugin to run a shell in a buffer
The ConqueTerm plugin will convert a buffer into a terminal emulator, allowing
you to run a shell or shell application in the buffer.
*conque_term-usage*
Type :ConqueTerm <command> to launch an application in the current buffer. E.g.
:ConqueTerm bash
:ConqueTerm mysql -h localhost -u joe_lunchbox Menu
:ConqueTerm man top
Use :ConqueTermSplit or :ConqueTermVSplit to open Conque in a new horizontal
or vertical buffer.
Keys pressed in insert mode will be sent to the shell, along with output from
the 'p' command in normal mode.
Press the <Esc> key twice to send a single <Esc> to the shell. Pressing this
key once will leave insert mode like normal.
Press <F9> in any buffer to send a visual selection to the shell.
*conque_term-settings*
Set the following in your .vimrc (default values shown)
" Enable colors. Setting this to 0 will make your terminal faster.
let g:ConqueTerm_Color = 1
" Set your terminal type. I strong recommend leaving this as vt100,
" however more features may be enabled with xterm.
let g:ConqueTerm_TERM = 'vt100'
" Set buffer syntax. Conque has highlighting for MySQL, but not much else.
let g:ConqueTerm_Syntax = 'conque'
" Continue updating shell when it's not the current, focused buffer
let g:ConqueTerm_ReadUnfocused = 1
*conque_term-requirements*
The following minimum requirements are needed to run Conque. Conque will not
run on Windows without a Cygwin-like environment.
- Vim 7.1
- Python 2.3
- Supported operating systems: *nix, Mac, or Cygwin
Tested on:
- Vim 7.2 / Python 2.6 / Ubuntu 9.10 (Gnome & GTK)
- Vim 7.2 / Python 2.6 / FreeBSD 8.0 (GTK)
- Vim 7.1 / Python 2.6 / FreeBSD 8.0 (GTK)
x Vim 7.0 / Python 2.6 / FreeBSD 8.0 (GTK)
* feedkeys() doesn't restart updatetime
- Vim 7.2 / Python 2.4 / OpenSolaris 2009.06 (Gnome)
- Vim 7.2 / Python 2.4 / CentOS 5.3 (no GUI)
- Vim 7.1 / Python 2.3 / RHEL 4 (no GUI)
- Vim 7.2 / Python 2.5 / Cygwin (Windows Vista 64b)
- MacVim 7.2 / Python 2.3 / OS X 10.6.2
*conque_term-bugs*
The following are known limitations:
- Font/color highlighting is imperfect and slow. If you don't care about
color in your shell, set g:ConqueTerm_Color = 0 in your .vimrc
- Conque only supports the extended ASCII character set for input, not utf-8.
- VT100 escape sequence support is not complete.
- Alt/Meta key support in Vim isn't great in general, and conque is no
exception. Pressing <Esc><Esc>x or <Esc><M-x> instead of <M-x> works in
most cases.
*conque_term-todo*
- Fix pasting from named registers
- Polling unfucused conque buffers (Top explodes when window resizes)
- Enable graphics character set
- Consider supporting xterm escapes
- Improve color logic
- Find a solution to UTF-8 input (See InsertCharPre in Vim todo.txt)
- Find an alternative to updatetime polling (See Vim todo.txt)
- Find a graceful solution to Meta key input
- Windows support
(See PyConsole http://www.vim.org/scripts/script.php?script_id=1974)
- Always: look for performance improvements
*conque_term-contribute*
The two contributions most in need are improvements to Vim itself. I currently
use hacks to simulate a key press event and repeating CursorHold event. The
Vim todo.txt document lists proposed improvements to give users this behavior
without hacks. Having a key press event should allow Conque to work with multi-
byte input. If you are a Vim developer, please consider prioritizing these two
items:
- todo.txt (Autocommands, line ~3137)
8 Add an event like CursorHold that is triggered repeatedly, not just
once after typing something.
- todo.txt (Autocommands, proposed event list, line ~3189)
InsertCharPre - user typed character Insert mode, before inserting the
char. Pattern is matched with text before the cursor. Set v:char to the
character, can be changed. (not triggered when 'paste' is set).
Bugs, suggestions and patches are all welcome.
For more information visit http://conque.googlecode.com
Check out the latest from svn at http://conque.googlecode.com/svn/trunk/
*conque_term-changelog*
- 1.0 / 2010-02-
* Complete python rewrite
* Add support for ncurses based applications
* Add continuous polling, instead of using <Tab>
* Improve speed
* Improve syntax highlighting
- 0.6 / 2009-12-18
* Fix GVim errors with non-english locale
* No functional changes
- 0.5 / 2009-12-02
* Various performance enhancements and bugfixes.
* Rewritten escape sequence processing
- 0.4 / 2009-10-30
* Improved history and tab completion
* Fix escape sequence formatting and improve highlighting
* Send selected text to shell from any buffer
* Add special handling of "vi" and "man" commands
* Improve error handling
* Add key mappings for <C-p> <C-n> <C-l> <C-j>
* Various bugfixes
- 0.3 / 2009-10-13
* Apply escape sequence coloring to output, e.g. ls --color
* Clean up syntax files for portability
* Fix several Vim 7.1 bugs
* Bugfixes for multiple shell buffers
* Add experimental shell folding option
- 0.2 / 2009-10-01
* Rewritten subprocess management module in python instead of c
* Added support for OS X, partial support for Windows
* Improved tab completion
- 0.1 / 2009-09-03
* Initial release

File diff suppressed because it is too large Load Diff

@ -0,0 +1,220 @@
*fugitive.txt* A Git wrapper so awesome, it should be illegal
Author: Tim Pope <vimNOSPAM@tpope.info> *fugitive-author*
License: Same terms as Vim itself (see |license|)
This plugin is only available if 'compatible' is not set.
INTRODUCTION *fugitive*
Install in ~/.vim, or in ~\vimfiles if you're on Windows and feeling lucky.
Vim 7.2 is recommended as it ships with syntax highlighting for many Git file
types.
If you're in a hurry to get started, here are some things to try:
In any file in your repository, run |:Gedit| HEAD. Press <CR> to jump to the
current branch. Press <CR> again to jump to the top most commit. Keep using
<CR> to explore parent commits, trees, and blobs. Use C in a tree or blob to
get back to the commit.
Edit a file in the work tree and make some changes. Use |:Gdiff| to open up
the indexed version. Use |do| and |dp| on various hunks to bring the files in
sync, or use |:Gread| to pull in all changes. Write the indexed version to
stage the file.
Run |:Gstatus| to check your repository's status. Use "-" to stage and reset
files and "p" to add/reset --patch them. Invoke |:Gcommit| to commit your
changes.
Run |:Gblame| in a work tree file to see a blame in a vertical split. Press
<CR> on any line to reopen and reblame that file as it stood in that commit.
Press o or O on any line to inspect that commit in a split or a tab.
Run |:Ggrep| to search the work tree or history. Run |:Gmove| to rename a
file. Run |:Gremove| to delete a file.
COMMANDS *fugitive-commands*
These commands are local to the buffers in which they work (generally, buffers
that are part of Git repositories).
*fugitive-:Git*
:Git [args] Run an arbitrary git command. Similar to :!git [args]
but chdir to the repository tree first.
*fugitive-:Gcd*
:Gcd [directory] |:cd| relative to the repository.
*fugitive-:Glcd*
:Glcd [directory] |:lcd| relative to the repository.
*fugitive-:Gstatus*
:Gstatus Bring up the output of git-status in the preview
window. Press D to |:Gdiff| the file on the cursor
line. Press - to stage or unstage the file on the
cursor line. Press p to do so on a per hunk basis
(--patch). Press C to invoke |:Gcommit|.
*fugitive-:Gcommit*
:Gcommit [args] A wrapper around git-commit. If there is nothing
to commit, |:Gstatus| is called instead. Unless the
arguments given would skip the invocation of an editor
(e.g., -m), a split window will be used to obtain a
commit message. Write and close that window (:wq or
|:Gwrite|) to finish the commit. Unlike when running
the actual git-commit command, it is possible (but
unadvisable) to muck with the index with commands like
git-add and git-reset while a commit message is
pending.
*fugitive-:Ggrep*
:Ggrep [args] |:grep| with git-grep as 'grepprg'.
*fugitive-:Glog*
:Glog [args] Load all previous revisions of the current file into
the quickfix list. Additional git-log arguments can
be given (for example, --reverse). If "--" appears as
an argument, no file specific filtering is done, and
commits are loaded into the quickfix list.
*fugitive-:Gedit* *fugitive-:Ge*
:Gedit [revision] |:edit| a |fugitive-revision|.
*fugitive-:Gsplit*
:Gsplit [revision] |:split| a |fugitive-revision|.
*fugitive-:Gvsplit*
:Gvsplit [revision] |:vsplit| a |fugitive-revision|.
*fugitive-:Gtabedit*
:Gtabedit [revision] |:tabedit| a |fugitive-revision|
*fugitive-:Gpedit*
:Gpedit [revision] |:pedit| a |fugitive-revision|
*fugitive-:Gread*
:Gread [revision] Empty the buffer and |:read| a |fugitive-revision|.
When the argument is omitted, this is similar to
git-checkout on a work tree file or git-add on a stage
file, but without writing anything to disk.
:{range}Gread [revision]
|:read| in a |fugitive-revision| after {range}.
*fugitive-:Gread!*
:Gread! [revision] Deprecated synonym for |:Gread|.
*fugitive-:Gwrite*
:Gwrite Write to the current file's path and stage the results.
When run in a work tree file, it is effectively git
add. Elsewhere, it is effectively git-checkout. A
great deal of effort is expended to behave sensibly
when the work tree or index version of the file is
open in another buffer.
:Gwrite {path} You can give |:Gwrite| an explicit path of where in
the work tree to write. You can also give a path like
:0:foo.txt or even :0 to write to just that stage in
the index.
*fugitive-:Gdiff*
:Gdiff [revision] Perform a |vimdiff| against the current file in the
given revision. With no argument, the version in the
index is used (which means a three-way diff during a
merge conflict, making it a git-mergetool
alternative). The newer of the two files is placed
to the right. Use |do| and |dp| and write to the
index file to simulate "git add --patch".
*fugitive-:Gmove*
:Gmove {destination} Wrapper around git-mv that renames the buffer
afterward. The destination is relative to the current
directory except when started with a /, in which case
it is relative to the work tree. Add a ! to pass -f.
*fugitive-:Gremove*
:Gremove Wrapper around git-rm that deletes the buffer
afterward. When invoked in an index file, --cached is
passed. Add a ! to pass -f and forcefully discard the
buffer.
*fugitive-:Gblame*
:Gblame [flags] Run git-blame on the file and open the results in a
scroll bound vertical split. Press enter on a line to
reblame the file as it was in that commit. You can
give any of ltwfsMC as flags and they will be passed
along to git-blame.
:[range]Gblame [flags] Run git-blame on the given range.
MAPPINGS *fugitive-mappings*
These maps are available in Git objects.
*fugitive-<CR>*
<CR> Jump to the revision under the cursor.
*fugitive-o*
o Jump to the revision under the cursor in a new split.
*fugitive-O*
O Jump to the revision under the cursor in a new tab.
*fugitive-~*
~ Go to the current file in the [count]th first
ancestor.
*fugitive-P*
P Go to the current file in the [count]th parent.
*fugitive-C*
C Go to the commit containing the current file.
*fugitive-a*
a Show the current tag, commit, or tree in an alternate
format.
SPECIFYING REVISIONS *fugitive-revision*
Fugitive revisions are similar to Git revisions as defined in the "SPECIFYING
REVISIONS" section in the git-rev-parse man page. For commands that accept an
optional revision, the default is the file in the index for work tree files
and the work tree file for everything else. Example revisions follow.
Revision Meaning ~
HEAD .git/HEAD
master .git/refs/heads/master
HEAD^{} The commit referenced by HEAD
HEAD^ The parent of the commit referenced by HEAD
HEAD: The tree referenced by HEAD
/HEAD The file named HEAD in the work tree
Makefile The file named Makefile in the work tree
HEAD^:Makefile The file named Makefile in the parent of HEAD
:Makefile The file named Makefile in the index (writable)
- The current file in HEAD
^ The current file in the previous commit
~3 The current file 3 commits ago
: .git/index (Same as |:Gstatus|)
:0 The current file in the index
:1 The current file's common ancestor during a conflict
:2 The current file in the target branch during a conflict
:3 The current file in the merged branch during a conflict
:/foo The most recent commit with "foo" in the message
STATUSLINE *fugitive-statusline*
*fugitive#statusline()*
Add %{fugitive#statusline()} to your statusline to get an indicator including
the current branch and the currently edited file's commit. If you don't have
a statusline, this one matches the default when 'ruler' is set:
>
set statusline=%<%f\ %h%m%r%{fugitive#statusline()}%=%-14.(%l,%c%V%)\ %P
<
ABOUT *fugitive-about*
Grab the latest version or report a bug on GitHub:
http://github.com/tpope/vim-fugitive
vim:tw=78:et:ft=help:norl:

@ -0,0 +1,116 @@
IMAP -- A fluid replacement for :imap
*imaps.txt*
Srinath Avadhanula <srinath AT fastmail DOT fm>
Abstract
========
This plugin provides a function IMAP() which emulates vims |:imap| function. The
motivation for providing this plugin is that |:imap| suffers from problems
which get increasingly annoying with a large number of mappings.
Consider an example. If you do >
imap lhs something
then a mapping is set up. However, there will be the following problems:
1. The 'ttimeout' option will generally limit how easily you can type the lhs.
if you type the left hand side too slowly, then the mapping will not be
activated.
2. If you mistype one of the letters of the lhs, then the mapping is deactivated
as soon as you backspace to correct the mistake.
3. The characters in lhs are shown on top of each other. This is fairly
distracting. This becomes a real annoyance when a lot of characters initiate
mappings.
This script provides a function IMAP() which does not suffer from these
problems.
*imaps.txt-toc*
|im_1| Using IMAP
================================================================================
Viewing this file
This file can be viewed with all the sections and subsections folded to ease
navigation. By default, vim does not fold help documents. To create the folds,
press za now. The folds are created via a foldexpr which can be seen in the
last section of this file.
See |usr_28.txt| for an introduction to folding and |fold-commands| for key
sequences and commands to work with folds.
================================================================================
Using IMAP *im_1* *imaps-usage*
Each call to IMAP is made using the syntax: >
call IMAP (lhs, rhs, ft [, phs, phe])
This is equivalent to having <lhs> map to <rhs> for all files of type <ft>.
Some characters in the <rhs> have special meaning which help in cursor placement
as described in |imaps-placeholders|. The optional arguments define these
special characters.
Example One: >
call IMAP ("bit`", "\\begin{itemize}\<cr>\\item <++>\<cr>\\end{itemize}<++>", "tex")
This effectively sets up the map for "bit`" whenever you edit a latex file. When
you type in this sequence of letters, the following text is inserted: >
\begin{itemize}
\item *
\end{itemize}<++>
where * shows the cursor position. The cursor position after inserting the text
is decided by the position of the first "place-holder". Place holders are
special characters which decide cursor placement and movement. In the example
above, the place holder characters are <+ and +>. After you have typed in the
item, press <C-j> and you will be taken to the next set of <++>'s. Therefore by
placing the <++> characters appropriately, you can minimize the use of movement
keys.
Set g:Imap_UsePlaceHolders to 0 to disable placeholders altogether.
Set g:Imap_PlaceHolderStart and g:Imap_PlaceHolderEnd to something else if you
want different place holder characters. Also, b:Imap_PlaceHolderStart and
b:Imap_PlaceHolderEnd override the values of g:Imap_PlaceHolderStart and
g:Imap_PlaceHolderEnd respectively. This is useful for setting buffer specific
place holders.
Example Two: You can use the <C-r> command to insert dynamic elements such as
dates. >
call IMAP ('date`', "\<c-r>=strftime('%b %d %Y')\<cr>", '')
With this mapping, typing date` will insert the present date into the file.
================================================================================
About this file
This file was created automatically from its XML variant using db2vim. db2vim is
a python script which understands a very limited subset of the Docbook XML 4.2
DTD and outputs a plain text file in vim help format.
db2vim can be obtained via anonymous CVS from sourceforge.net. Use
cvs -d:pserver:anonymous@cvs.vim-latex.sf.net:/cvsroot/vim-latex co db2vim
Or you can visit the web-interface to sourceforge CVS at:
http://cvs.sourceforge.net/cgi-bin/viewcvs.cgi/vim-latex/db2vim/
The following modelines should nicely fold up this help manual.
vim:ft=help:fdm=expr:nowrap
vim:foldexpr=getline(v\:lnum-1)=~'-\\{80}'?'>2'\:getline(v\:lnum-1)=~'=\\{80}'?'>1'\:getline(v\:lnum)=~'=\\{80}'?'0'\:getline(v\:lnum)=~'-\\{80}'?'1'\:'='
vim:foldtext=substitute(v\:folddashes.substitute(getline(v\:foldstart),'\\s*\\*.*',"",""),'^--','--\ \ \ \ ','')
================================================================================

@ -0,0 +1,204 @@
*potwiki.txt* Plain Old Text Wiki v1.25
POTWIKI REFERENCE MANUAL~
Maintaining a Wiki of plain text files with the plugin "potwiki"
==============================================================================
CONTENT *potwiki-contents*
Installation : |potwiki-install|
potwiki intro : |potwiki|
Requirements : |potwiki-requirements|
potwiki commands : |potwiki-commands|
Customization : |potwiki-customize|
Bugs : |potwiki-bugs|
Todo list : |potwiki-todo|
==============================================================================
1. potwiki Installation *potwiki-install*
In order to install the plugin, place the potwiki.vim file into a plugin
directory in your runtime path (please see |add-global-plugin| and
|'runtimepath'|).
|potwiki| may be customized by setting variables, creating maps, and
specifying event handlers. Please see |potwiki-customize| for more
details.
*potwiki-auto-help*
This help file is automagically generated when the |potwiki| script is
loaded for the first time.
==============================================================================
1.1. potwiki requirements *potwiki-requirements*
potwiki should work with vim 6.0 or later versions.
==============================================================================
2. potwiki intro *potwiki*
*wiki* *potwiki-intro*
potwiki provides functions and mappings for maintaining a Wiki of plain
text files.
The Wiki is a collection of text files in a single directory. These files
can contain hyper links to each other in the form of WikiWords.
A WikiWord is a word which starts with an upper case letter and contains
at least one lower case letter and another upper case letter in this
order -- it's in 'camel case', e.g.
ThisIsAWikiWord
Such a WikiWord links to a file of exactly the same name in your
Wiki directory.
By default you can also use digits and underscore in your WikiWords.
You can customize this to your needs. |potwiki-customize|
When opening a Wiki file potwiki scans your Wiki directory to find
which WikiWords are valid links. WikiWords without a corresponding
file are highlighted as errors (otherwise it doesn't matter).
The default mappings are defined as follow (By default, <Leader> stands
for '\'. See |Leader| for more info) :
<Leader>ww - open the Wiki HomePage
<Leader>wi - open the Wiki index
<Leader>wf - follow a WikiWord (can be used in any buffer!)
<Leader>we - edit a Wiki file
The following mappings are present when editing a Wiki file:
<Leader><Leader> - close the file
<CR> - follow the WikiWord under the cursor
<Tab> - move to the next WikiWord
<BS> - move to the previous WikiWord
<Leader>wr - reload WikiWords
See |potwiki-mappings-override| and |potwiki-options| to learn how to
override those default mappings.
==============================================================================
3. potwiki commands *potwiki-commands*
See |potwiki-intro| for default mapping.
Currently potwiki does not define any commands.
==============================================================================
4. potwiki customization *potwiki-customize*
4.1. General configuration ~
--------------------------
*loaded_potwiki* *potwiki-disable*
You can disable this script by putting the following line in your |vimrc| >
let loaded_potwiki = 1
<
You can define your own color scheme for potwiki highlighting, by setting
|highlight| on PotwikiWord and PotwikiWordNotFound groups. For example:
>
highlight PotwikiWord guifg=darkcyan
highlight PotwikiWordNotFound guibg=Red guifg=Yellow
<
When a wiki file is edited the 'filetype' and 'syntax' options are set
to 'potwiki'. You can use autocommands for this filetype to customize
your wiki editing. For exmaple:
>
:au Filetype potwiki set sts=4
<
If you want to be able to switch the highlighting on and off with
>
:syntax on | enable | off
<
put the following line in a file called 'potwiki.vim' in your syntax
directory (usually ~/.vim/syntax):
>
call PotwikiSyntax()
<
4.2. Mapping documentation: ~
---------------------------
*potwiki-mappings-override*
By default, a global mapping is defined for some commands. User-provided
mappings can be used instead by mapping to <Plug>CommandName. This is
especially useful when these mappings collide with other existing mappings
(vim will warn of this during plugin initialization, but will not clobber
the existing mappings).
For instance, to override the default mapping for :PotwikiHome to set it to
\wh, add the following to the |vimrc|:
>
nmap \wh <Plug>PotwikiHome
<
4.3. Options documentation: ~
---------------------------
*potwiki-options*
Several variables are checked by the script to customize potwiki
behavior. You can set them using let in your |vimrc| file.
Example:
>
let potwiki_home = "$HOME/MyWiki/HomePage"
<
potwiki_suffix *potwiki_suffix*
This variable contains a suffix appended to the names of your
Wikifiles.
default: ''
potwiki_home *potwiki_home*
This variable contains the filename of your Wiki HomePage.
default: $HOME/Wiki/HomePage + potwiki_suffix
potwiki_home_dir *potwiki_home_dir*
This variable contains the path of your Wiki directory.
default: the directory containing the file set in potwiki_home.
potwiki_upper *potwiki_upper*
Upper case characters for WikiWords. Uses the syntax of [ ] atoms
in regular expressions.
default: 'A-Z'
potwiki_lower *potwiki_lower*
Lower case characters for WikiWords. Uses the syntax of [ ] atoms
in regular expressions.
default: 'a-z'
potwiki_other *potwiki_other*
Non-letter characters for WikiWords. Uses the syntax of [ ] atoms
in regular expressions.
default: '0-9_'
potwiki_autowrite *potwiki_autowrite*
If this is non-zero potwiki always writes a Wiki file when it
is closed by <Plug>PotwikiClose or when you follow another WikiWord.
(The file is only written if it has been changed.)
potwiki_ignore *potwiki_ignore*
A comma-separated list of words you don't want potwiki to
highlight. Don't include any whitespace in this list.
default: ''
==============================================================================
6. potwiki bugs *potwiki-bugs*
Please contact me <edwin.steiner@gmx.net> if you find any bugs in
potwiki. I'm sure there are enough of them.
Include 'potwiki' in the subject line when contacting me.
==============================================================================
7. potwiki TODO list *potwiki-todo*
Please contact me <edwin.steiner@gmx.net> if you have suggestions
for improving potwiki.
Include 'potwiki' in the subject line when contacting me.
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,286 @@
*snipMate.txt* Plugin for using TextMate-style snippets in Vim.
snipMate *snippet* *snippets* *snipMate*
Last Change: July 13, 2009
|snipMate-description| Description
|snipMate-syntax| Snippet syntax
|snipMate-usage| Usage
|snipMate-settings| Settings
|snipMate-features| Features
|snipMate-disadvantages| Disadvantages to TextMate
|snipMate-contact| Contact
For Vim version 7.0 or later.
This plugin only works if 'compatible' is not set.
{Vi does not have any of these features.}
==============================================================================
DESCRIPTION *snipMate-description*
snipMate.vim implements some of TextMate's snippets features in Vim. A
snippet is a piece of often-typed text that you can insert into your
document using a trigger word followed by a <tab>.
For instance, in a C file using the default installation of snipMate.vim, if
you type "for<tab>" in insert mode, it will expand a typical for loop in C: >
for (i = 0; i < count; i++) {
}
To go to the next item in the loop, simply <tab> over to it; if there is
repeated code, such as the "i" variable in this example, you can simply
start typing once it's highlighted and all the matches specified in the
snippet will be updated. To go in reverse, use <shift-tab>.
==============================================================================
SYNTAX *snippet-syntax*
Snippets can be defined in two ways. They can be in their own file, named
after their trigger in 'snippets/<filetype>/<trigger>.snippet', or they can be
defined together in a 'snippets/<filetype>.snippets' file. Note that dotted
'filetype' syntax is supported -- e.g., you can use >
:set ft=html.eruby
to activate snippets for both HTML and eRuby for the current file.
The syntax for snippets in *.snippets files is the following: >
snippet trigger
expanded text
more expanded text
Note that the first hard tab after the snippet trigger is required, and not
expanded in the actual snippet. The syntax for *.snippet files is the same,
only without the trigger declaration and starting indentation.
Also note that snippets must be defined using hard tabs. They can be expanded
to spaces later if desired (see |snipMate-indenting|).
"#" is used as a line-comment character in *.snippets files; however, they can
only be used outside of a snippet declaration. E.g.: >
# this is a correct comment
snippet trigger
expanded text
snippet another_trigger
# this isn't a comment!
expanded text
<
This should hopefully be obvious with the included syntax highlighting.
*snipMate-${#}*
Tab stops ~
By default, the cursor is placed at the end of a snippet. To specify where the
cursor is to be placed next, use "${#}", where the # is the number of the tab
stop. E.g., to place the cursor first on the id of a <div> tag, and then allow
the user to press <tab> to go to the middle of it:
>
snippet div
<div id="${1}">
${2}
</div>
<
*snipMate-placeholders* *snipMate-${#:}* *snipMate-$#*
Placeholders ~
Placeholder text can be supplied using "${#:text}", where # is the number of
the tab stop. This text then can be copied throughout the snippet using "$#",
given # is the same number as used before. So, to make a C for loop: >
snippet for
for (${2:i}; $2 < ${1:count}; $1++) {
${4}
}
This will cause "count" to first be selected and change if the user starts
typing. When <tab> is pressed, the "i" in ${2}'s position will be selected;
all $2 variables will default to "i" and automatically be updated if the user
starts typing.
NOTE: "$#" syntax is used only for variables, not for tab stops as in TextMate.
Variables within variables are also possible. For instance: >
snippet opt
<option value="${1:option}">${2:$1}</option>
Will, as usual, cause "option" to first be selected and update all the $1
variables if the user starts typing. Since one of these variables is inside of
${2}, this text will then be used as a placeholder for the next tab stop,
allowing the user to change it if he wishes.
To copy a value throughout a snippet without supplying default text, simply
use the "${#:}" construct without the text; e.g.: >
snippet foo
${1:}bar$1
< *snipMate-commands*
Interpolated Vim Script ~
Snippets can also contain Vim script commands that are executed (via |eval()|)
when the snippet is inserted. Commands are given inside backticks (`...`); for
TextMates's functionality, use the |system()| function. E.g.: >
snippet date
`system("date +%Y-%m-%d")`
will insert the current date, assuming you are on a Unix system. Note that you
can also (and should) use |strftime()| for this example.
Filename([{expr}] [, {defaultText}]) *snipMate-filename* *Filename()*
Since the current filename is used often in snippets, a default function
has been defined for it in snipMate.vim, appropriately called Filename().
With no arguments, the default filename without an extension is returned;
the first argument specifies what to place before or after the filename,
and the second argument supplies the default text to be used if the file
has not been named. "$1" in the first argument is replaced with the filename;
if you only want the filename to be returned, the first argument can be left
blank. Examples: >
snippet filename
`Filename()`
snippet filename_with_default
`Filename('', 'name')`
snippet filename_foo
`filename('$1_foo')`
The first example returns the filename if it the file has been named, and an
empty string if it hasn't. The second returns the filename if it's been named,
and "name" if it hasn't. The third returns the filename followed by "_foo" if
it has been named, and an empty string if it hasn't.
*multi_snip*
To specify that a snippet can have multiple matches in a *.snippets file, use
this syntax: >
snippet trigger A description of snippet #1
expand this text
snippet trigger A description of snippet #2
expand THIS text!
In this example, when "trigger<tab>" is typed, a numbered menu containing all
of the descriptions of the "trigger" will be shown; when the user presses the
corresponding number, that snippet will then be expanded.
To create a snippet with multiple matches using *.snippet files,
simply place all the snippets in a subdirectory with the trigger name:
'snippets/<filetype>/<trigger>/<name>.snippet'.
==============================================================================
USAGE *snipMate-usage*
*'snippets'* *g:snippets_dir*
Snippets are by default looked for any 'snippets' directory in your
'runtimepath'. Typically, it is located at '~/.vim/snippets/' on *nix or
'$HOME\vimfiles\snippets\' on Windows. To change that location or add another
one, change the g:snippets_dir variable in your |.vimrc| to your preferred
directory, or use the |ExtractSnips()|function. This will be used by the
|globpath()| function, and so accepts the same syntax as it (e.g.,
comma-separated paths).
ExtractSnipsFile({directory}, {filetype}) *ExtractSnipsFile()* *.snippets*
ExtractSnipsFile() extracts the specified *.snippets file for the given
filetype. A .snippets file contains multiple snippet declarations for the
filetype. It is further explained above, in |snippet-syntax|.
ExtractSnips({directory}, {filetype}) *ExtractSnips()* *.snippet*
ExtractSnips() extracts *.snippet files from the specified directory and
defines them as snippets for the given filetype. The directory tree should
look like this: 'snippets/<filetype>/<trigger>.snippet'. If the snippet has
multiple matches, it should look like this:
'snippets/<filetype>/<trigger>/<name>.snippet' (see |multi_snip|).
*ResetSnippets()*
The ResetSnippets() function removes all snippets from memory. This is useful
to put at the top of a snippet setup file for if you would like to |:source|
it multiple times.
*list-snippets* *i_CTRL-R_<Tab>*
If you would like to see what snippets are available, simply type <c-r><tab>
in the current buffer to show a list via |popupmenu-completion|.
==============================================================================
SETTINGS *snipMate-settings* *g:snips_author*
The g:snips_author string (similar to $TM_FULLNAME in TextMate) should be set
to your name; it can then be used in snippets to automatically add it. E.g.: >
let g:snips_author = 'Hubert Farnsworth'
snippet name
`g:snips_author`
<
*snipMate-expandtab* *snipMate-indenting*
If you would like your snippets to be expanded using spaces instead of tabs,
just enable 'expandtab' and set 'softtabstop' to your preferred amount of
spaces. If 'softtabstop' is not set, 'shiftwidth' is used instead.
*snipMate-remap*
snipMate does not come with a setting to customize the trigger key, but you
can remap it easily in the two lines it's defined in the 'after' directory
under 'plugin/snipMate.vim'. For instance, to change the trigger key
to CTRL-J, just change this: >
ino <tab> <c-r>=TriggerSnippet()<cr>
snor <tab> <esc>i<right><c-r>=TriggerSnippet()<cr>
to this: >
ino <c-j> <c-r>=TriggerSnippet()<cr>
snor <c-j> <esc>i<right><c-r>=TriggerSnippet()<cr>
==============================================================================
FEATURES *snipMate-features*
snipMate.vim has the following features among others:
- The syntax of snippets is very similar to TextMate's, allowing
easy conversion.
- The position of the snippet is kept transparently (i.e. it does not use
markers/placeholders written to the buffer), which allows you to escape
out of an incomplete snippet, something particularly useful in Vim.
- Variables in snippets are updated as-you-type.
- Snippets can have multiple matches.
- Snippets can be out of order. For instance, in a do...while loop, the
condition can be added before the code.
- [New] File-based snippets are supported.
- [New] Triggers after non-word delimiters are expanded, e.g. "foo"
in "bar.foo".
- [New] <shift-tab> can now be used to jump tab stops in reverse order.
==============================================================================
DISADVANTAGES *snipMate-disadvantages*
snipMate.vim currently has the following disadvantages to TextMate's snippets:
- There is no $0; the order of tab stops must be explicitly stated.
- Placeholders within placeholders are not possible. E.g.: >
'<div${1: id="${2:some_id}}">${3}</div>'
<
In TextMate this would first highlight ' id="some_id"', and if
you hit delete it would automatically skip ${2} and go to ${3}
on the next <tab>, but if you didn't delete it it would highlight
"some_id" first. You cannot do this in snipMate.vim.
- Regex cannot be performed on variables, such as "${1/.*/\U&}"
- Placeholders cannot span multiple lines.
- Activating snippets in different scopes of the same file is
not possible.
Perhaps some of these features will be added in a later release.
==============================================================================
CONTACT *snipMate-contact* *snipMate-author*
To contact the author (Michael Sanders), please email:
msanders42+snipmate <at> gmail <dot> com
I greatly appreciate any suggestions or improvements offered for the script.
==============================================================================
vim:tw=78:ts=8:ft=help:norl:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,834 @@
'Tlist_Auto_Highlight_Tag' taglist.txt /*'Tlist_Auto_Highlight_Tag'*
'Tlist_Auto_Open' taglist.txt /*'Tlist_Auto_Open'*
'Tlist_Auto_Update' taglist.txt /*'Tlist_Auto_Update'*
'Tlist_Close_On_Select' taglist.txt /*'Tlist_Close_On_Select'*
'Tlist_Compact_Format' taglist.txt /*'Tlist_Compact_Format'*
'Tlist_Ctags_Cmd' taglist.txt /*'Tlist_Ctags_Cmd'*
'Tlist_Display_Prototype' taglist.txt /*'Tlist_Display_Prototype'*
'Tlist_Display_Tag_Scope' taglist.txt /*'Tlist_Display_Tag_Scope'*
'Tlist_Enable_Fold_Column' taglist.txt /*'Tlist_Enable_Fold_Column'*
'Tlist_Exit_OnlyWindow' taglist.txt /*'Tlist_Exit_OnlyWindow'*
'Tlist_File_Fold_Auto_Close' taglist.txt /*'Tlist_File_Fold_Auto_Close'*
'Tlist_GainFocus_On_ToggleOpen' taglist.txt /*'Tlist_GainFocus_On_ToggleOpen'*
'Tlist_Highlight_Tag_On_BufEnter' taglist.txt /*'Tlist_Highlight_Tag_On_BufEnter'*
'Tlist_Inc_Winwidth' taglist.txt /*'Tlist_Inc_Winwidth'*
'Tlist_Max_Submenu_Items' taglist.txt /*'Tlist_Max_Submenu_Items'*
'Tlist_Max_Tag_Length' taglist.txt /*'Tlist_Max_Tag_Length'*
'Tlist_Process_File_Always' taglist.txt /*'Tlist_Process_File_Always'*
'Tlist_Show_Menu' taglist.txt /*'Tlist_Show_Menu'*
'Tlist_Show_One_File' taglist.txt /*'Tlist_Show_One_File'*
'Tlist_Sort_Type' taglist.txt /*'Tlist_Sort_Type'*
'Tlist_Use_Horiz_Window' taglist.txt /*'Tlist_Use_Horiz_Window'*
'Tlist_Use_Right_Window' taglist.txt /*'Tlist_Use_Right_Window'*
'Tlist_Use_SingleClick' taglist.txt /*'Tlist_Use_SingleClick'*
'Tlist_WinHeight' taglist.txt /*'Tlist_WinHeight'*
'Tlist_WinWidth' taglist.txt /*'Tlist_WinWidth'*
'snippets' snipMate.txt /*'snippets'*
.snippet snipMate.txt /*.snippet*
.snippets snipMate.txt /*.snippets*
:ABitLy twitvim.txt /*:ABitLy*
:ACligs twitvim.txt /*:ACligs*
:AIsGd twitvim.txt /*:AIsGd*
:AMetamark twitvim.txt /*:AMetamark*
:ASnipurl twitvim.txt /*:ASnipurl*
:ATinyURL twitvim.txt /*:ATinyURL*
:ATrim twitvim.txt /*:ATrim*
:ATweetburner twitvim.txt /*:ATweetburner*
:AUrlBorg twitvim.txt /*:AUrlBorg*
:ArrangeColumn ft-csv.txt /*:ArrangeColumn*
:BPosttoTwitter twitvim.txt /*:BPosttoTwitter*
:BackTwitter twitvim.txt /*:BackTwitter*
:BitLy twitvim.txt /*:BitLy*
:CPosttoTwitter twitvim.txt /*:CPosttoTwitter*
:Cligs twitvim.txt /*:Cligs*
:DMSentTwitter twitvim.txt /*:DMSentTwitter*
:DMTwitter twitvim.txt /*:DMTwitter*
:Filter ft-csv.txt /*:Filter*
:ForwardTwitter twitvim.txt /*:ForwardTwitter*
:FriendsTwitter twitvim.txt /*:FriendsTwitter*
:IsGd twitvim.txt /*:IsGd*
:LocationTwitter twitvim.txt /*:LocationTwitter*
:Metamark twitvim.txt /*:Metamark*
:NextTwitter twitvim.txt /*:NextTwitter*
:PBitLy twitvim.txt /*:PBitLy*
:PCligs twitvim.txt /*:PCligs*
:PIsGd twitvim.txt /*:PIsGd*
:PMetamark twitvim.txt /*:PMetamark*
:PSnipurl twitvim.txt /*:PSnipurl*
:PTinyURL twitvim.txt /*:PTinyURL*
:PTrim twitvim.txt /*:PTrim*
:PTweetburner twitvim.txt /*:PTweetburner*
:PUrlBorg twitvim.txt /*:PUrlBorg*
:PosttoTwitter twitvim.txt /*:PosttoTwitter*
:PreviousTwitter twitvim.txt /*:PreviousTwitter*
:ProfileTwitter twitvim.txt /*:ProfileTwitter*
:PublicTwitter twitvim.txt /*:PublicTwitter*
:RateLimitTwitter twitvim.txt /*:RateLimitTwitter*
:RefreshTwitter twitvim.txt /*:RefreshTwitter*
:RepliesTwitter twitvim.txt /*:RepliesTwitter*
:SearchTwitter twitvim.txt /*:SearchTwitter*
:SendDMTwitter twitvim.txt /*:SendDMTwitter*
:Snipurl twitvim.txt /*:Snipurl*
:TinyURL twitvim.txt /*:TinyURL*
:TlistAddFiles taglist.txt /*:TlistAddFiles*
:TlistAddFilesRecursive taglist.txt /*:TlistAddFilesRecursive*
:TlistClose taglist.txt /*:TlistClose*
:TlistDebug taglist.txt /*:TlistDebug*
:TlistHighlightTag taglist.txt /*:TlistHighlightTag*
:TlistLock taglist.txt /*:TlistLock*
:TlistMessages taglist.txt /*:TlistMessages*
:TlistOpen taglist.txt /*:TlistOpen*
:TlistSessionLoad taglist.txt /*:TlistSessionLoad*
:TlistSessionSave taglist.txt /*:TlistSessionSave*
:TlistShowPrototype taglist.txt /*:TlistShowPrototype*
:TlistShowTag taglist.txt /*:TlistShowTag*
:TlistToggle taglist.txt /*:TlistToggle*
:TlistUndebug taglist.txt /*:TlistUndebug*
:TlistUnlock taglist.txt /*:TlistUnlock*
:TlistUpdate taglist.txt /*:TlistUpdate*
:Todo CuteTodoList.txt /*:Todo*
:TodoClose CuteTodoList.txt /*:TodoClose*
:TodoOpen CuteTodoList.txt /*:TodoOpen*
:Todog CuteTodoList.txt /*:Todog*
:Trim twitvim.txt /*:Trim*
:Tweetburner twitvim.txt /*:Tweetburner*
:UrlBorg twitvim.txt /*:UrlBorg*
:UserTwitter twitvim.txt /*:UserTwitter*
:VWS vimwiki.txt /*:VWS*
:Vimwiki2HTML vimwiki.txt /*:Vimwiki2HTML*
:VimwikiAll2HTML vimwiki.txt /*:VimwikiAll2HTML*
:VimwikiDeleteLink vimwiki.txt /*:VimwikiDeleteLink*
:VimwikiDiaryNextDay vimwiki.txt /*:VimwikiDiaryNextDay*
:VimwikiDiaryPrevDay vimwiki.txt /*:VimwikiDiaryPrevDay*
:VimwikiFollowLink vimwiki.txt /*:VimwikiFollowLink*
:VimwikiGenerateLinks vimwiki.txt /*:VimwikiGenerateLinks*
:VimwikiGoBackLink vimwiki.txt /*:VimwikiGoBackLink*
:VimwikiGoto vimwiki.txt /*:VimwikiGoto*
:VimwikiIndex vimwiki.txt /*:VimwikiIndex*
:VimwikiMakeDiaryNote vimwiki.txt /*:VimwikiMakeDiaryNote*
:VimwikiNextLink vimwiki.txt /*:VimwikiNextLink*
:VimwikiPrevLink vimwiki.txt /*:VimwikiPrevLink*
:VimwikiRenameLink vimwiki.txt /*:VimwikiRenameLink*
:VimwikiSearch vimwiki.txt /*:VimwikiSearch*
:VimwikiSplitLink vimwiki.txt /*:VimwikiSplitLink*
:VimwikiTabIndex vimwiki.txt /*:VimwikiTabIndex*
:VimwikiTabMakeDiaryNote vimwiki.txt /*:VimwikiTabMakeDiaryNote*
:VimwikiTable vimwiki.txt /*:VimwikiTable*
:VimwikiTableMoveColumnLeft vimwiki.txt /*:VimwikiTableMoveColumnLeft*
:VimwikiTableMoveColumnRight vimwiki.txt /*:VimwikiTableMoveColumnRight*
:VimwikiToggleListItem vimwiki.txt /*:VimwikiToggleListItem*
:VimwikiUISelect vimwiki.txt /*:VimwikiUISelect*
:VimwikiVSplitLink vimwiki.txt /*:VimwikiVSplitLink*
<C-Y>, zencoding.txt /*<C-Y>,*
<C-Y>/ zencoding.txt /*<C-Y>\/*
<C-Y>A zencoding.txt /*<C-Y>A*
<C-Y>D zencoding.txt /*<C-Y>D*
<C-Y>N zencoding.txt /*<C-Y>N*
<C-Y>a zencoding.txt /*<C-Y>a*
<C-Y>d zencoding.txt /*<C-Y>d*
<C-Y>i zencoding.txt /*<C-Y>i*
<C-Y>j zencoding.txt /*<C-Y>j*
<C-Y>k zencoding.txt /*<C-Y>k*
<C-Y>n zencoding.txt /*<C-Y>n*
<S-D> CuteTodoList.txt /*<S-D>*
Analyze_CSV ft-csv.txt /*Analyze_CSV*
ArrangeColumn_CSV ft-csv.txt /*ArrangeColumn_CSV*
CSV-Funtions ft-csv.txt /*CSV-Funtions*
CSVFixed ft-csv.txt /*CSVFixed*
CSVPat() ft-csv.txt /*CSVPat()*
CSV_WCol ft-csv.txt /*CSV_WCol*
ConqueTerm conque_term.txt /*ConqueTerm*
ConvertData_CSV ft-csv.txt /*ConvertData_CSV*
Copy_CSV ft-csv.txt /*Copy_CSV*
CuteTodoList.txt CuteTodoList.txt /*CuteTodoList.txt*
DeleteColumn_CSV ft-csv.txt /*DeleteColumn_CSV*
Duplicate_CSV ft-csv.txt /*Duplicate_CSV*
ExtractSnips() snipMate.txt /*ExtractSnips()*
ExtractSnipsFile() snipMate.txt /*ExtractSnipsFile()*
Filename() snipMate.txt /*Filename()*
Filter_CSV ft-csv.txt /*Filter_CSV*
HeaderToggle_CSV ft-csv.txt /*HeaderToggle_CSV*
Header_CSV ft-csv.txt /*Header_CSV*
HiColumn_CSV ft-csv.txt /*HiColumn_CSV*
InitCSV ft-csv.txt /*InitCSV*
MoveCol_CSV ft-csv.txt /*MoveCol_CSV*
NERDAllowAnyVisualDelims NERD_commenter.txt /*NERDAllowAnyVisualDelims*
NERDBlockComIgnoreEmpty NERD_commenter.txt /*NERDBlockComIgnoreEmpty*
NERDComAlignedComment NERD_commenter.txt /*NERDComAlignedComment*
NERDComAltDelim NERD_commenter.txt /*NERDComAltDelim*
NERDComAppendComment NERD_commenter.txt /*NERDComAppendComment*
NERDComAuthor NERD_commenter.txt /*NERDComAuthor*
NERDComChangelog NERD_commenter.txt /*NERDComChangelog*
NERDComComment NERD_commenter.txt /*NERDComComment*
NERDComCredits NERD_commenter.txt /*NERDComCredits*
NERDComDefaultDelims NERD_commenter.txt /*NERDComDefaultDelims*
NERDComEOLComment NERD_commenter.txt /*NERDComEOLComment*
NERDComFiletypes NERD_commenter.txt /*NERDComFiletypes*
NERDComFunctionality NERD_commenter.txt /*NERDComFunctionality*
NERDComFunctionalityDetails NERD_commenter.txt /*NERDComFunctionalityDetails*
NERDComFunctionalitySummary NERD_commenter.txt /*NERDComFunctionalitySummary*
NERDComHeuristics NERD_commenter.txt /*NERDComHeuristics*
NERDComInsertComment NERD_commenter.txt /*NERDComInsertComment*
NERDComInvertComment NERD_commenter.txt /*NERDComInvertComment*
NERDComIssues NERD_commenter.txt /*NERDComIssues*
NERDComLicense NERD_commenter.txt /*NERDComLicense*
NERDComMappings NERD_commenter.txt /*NERDComMappings*
NERDComMinimalComment NERD_commenter.txt /*NERDComMinimalComment*
NERDComNERDComment NERD_commenter.txt /*NERDComNERDComment*
NERDComNestedComment NERD_commenter.txt /*NERDComNestedComment*
NERDComNesting NERD_commenter.txt /*NERDComNesting*
NERDComOptions NERD_commenter.txt /*NERDComOptions*
NERDComOptionsDetails NERD_commenter.txt /*NERDComOptionsDetails*
NERDComOptionsSummary NERD_commenter.txt /*NERDComOptionsSummary*
NERDComPrependComment NERD_commenter.txt /*NERDComPrependComment*
NERDComSexyComment NERD_commenter.txt /*NERDComSexyComment*
NERDComSexyComments NERD_commenter.txt /*NERDComSexyComments*
NERDComToggleComment NERD_commenter.txt /*NERDComToggleComment*
NERDComUncommentLine NERD_commenter.txt /*NERDComUncommentLine*
NERDComYankComment NERD_commenter.txt /*NERDComYankComment*
NERDCommentWholeLinesInVMode NERD_commenter.txt /*NERDCommentWholeLinesInVMode*
NERDCommenter NERD_commenter.txt /*NERDCommenter*
NERDCommenterContents NERD_commenter.txt /*NERDCommenterContents*
NERDCompactSexyComs NERD_commenter.txt /*NERDCompactSexyComs*
NERDDefaultNesting NERD_commenter.txt /*NERDDefaultNesting*
NERDLPlace NERD_commenter.txt /*NERDLPlace*
NERDMapleader NERD_commenter.txt /*NERDMapleader*
NERDMenuMode NERD_commenter.txt /*NERDMenuMode*
NERDRPlace NERD_commenter.txt /*NERDRPlace*
NERDRemoveAltComs NERD_commenter.txt /*NERDRemoveAltComs*
NERDRemoveExtraSpaces NERD_commenter.txt /*NERDRemoveExtraSpaces*
NERDShutUp NERD_commenter.txt /*NERDShutUp*
NERDSpaceDelims NERD_commenter.txt /*NERDSpaceDelims*
NERDUsePlaceHolders NERD_commenter.txt /*NERDUsePlaceHolders*
NERD_commenter.txt NERD_commenter.txt /*NERD_commenter.txt*
NewRecord_CSV ft-csv.txt /*NewRecord_CSV*
NewRecords_CSV ft-csv.txt /*NewRecords_CSV*
NrColumns_CSV ft-csv.txt /*NrColumns_CSV*
ResetSnippets() snipMate.txt /*ResetSnippets()*
RltvNmbr RltvNmbr.txt /*RltvNmbr*
RltvNmbr-contents RltvNmbr.txt /*RltvNmbr-contents*
RltvNmbr-copyright RltvNmbr.txt /*RltvNmbr-copyright*
RltvNmbr-history RltvNmbr.txt /*RltvNmbr-history*
RltvNmbr-manual RltvNmbr.txt /*RltvNmbr-manual*
RltvNmbr.txt RltvNmbr.txt /*RltvNmbr.txt*
SearchInColumn_CSV ft-csv.txt /*SearchInColumn_CSV*
Sort_CSV ft-csv.txt /*Sort_CSV*
SumCol_CSV ft-csv.txt /*SumCol_CSV*
Tlist_Get_Tag_Prototype_By_Line() taglist.txt /*Tlist_Get_Tag_Prototype_By_Line()*
Tlist_Get_Tagname_By_Line() taglist.txt /*Tlist_Get_Tagname_By_Line()*
Tlist_Set_App() taglist.txt /*Tlist_Set_App()*
Tlist_Update_File_Tags() taglist.txt /*Tlist_Update_File_Tags()*
Todo CuteTodoList.txt /*Todo*
TodoClose CuteTodoList.txt /*TodoClose*
TodoOpen CuteTodoList.txt /*TodoOpen*
Todog CuteTodoList.txt /*Todog*
Transpose_CSV ft-csv.txt /*Transpose_CSV*
TwitVim twitvim.txt /*TwitVim*
TwitVim-A-d twitvim.txt /*TwitVim-A-d*
TwitVim-A-g twitvim.txt /*TwitVim-A-g*
TwitVim-A-r twitvim.txt /*TwitVim-A-r*
TwitVim-A-t twitvim.txt /*TwitVim-A-t*
TwitVim-C-PageDown twitvim.txt /*TwitVim-C-PageDown*
TwitVim-C-PageUp twitvim.txt /*TwitVim-C-PageUp*
TwitVim-C-i twitvim.txt /*TwitVim-C-i*
TwitVim-C-o twitvim.txt /*TwitVim-C-o*
TwitVim-C-t twitvim.txt /*TwitVim-C-t*
TwitVim-Leader-@ twitvim.txt /*TwitVim-Leader-@*
TwitVim-Leader-Leader twitvim.txt /*TwitVim-Leader-Leader*
TwitVim-Leader-S-r twitvim.txt /*TwitVim-Leader-S-r*
TwitVim-Leader-X twitvim.txt /*TwitVim-Leader-X*
TwitVim-Leader-d twitvim.txt /*TwitVim-Leader-d*
TwitVim-Leader-e twitvim.txt /*TwitVim-Leader-e*
TwitVim-Leader-g twitvim.txt /*TwitVim-Leader-g*
TwitVim-Leader-p twitvim.txt /*TwitVim-Leader-p*
TwitVim-Leader-r twitvim.txt /*TwitVim-Leader-r*
TwitVim-LongURL twitvim.txt /*TwitVim-LongURL*
TwitVim-add twitvim.txt /*TwitVim-add*
TwitVim-cURL twitvim.txt /*TwitVim-cURL*
TwitVim-contents twitvim.txt /*TwitVim-contents*
TwitVim-credits twitvim.txt /*TwitVim-credits*
TwitVim-delete twitvim.txt /*TwitVim-delete*
TwitVim-direct-message twitvim.txt /*TwitVim-direct-message*
TwitVim-goto twitvim.txt /*TwitVim-goto*
TwitVim-highlight twitvim.txt /*TwitVim-highlight*
TwitVim-history twitvim.txt /*TwitVim-history*
TwitVim-hotkeys twitvim.txt /*TwitVim-hotkeys*
TwitVim-inreplyto twitvim.txt /*TwitVim-inreplyto*
TwitVim-install twitvim.txt /*TwitVim-install*
TwitVim-intro twitvim.txt /*TwitVim-intro*
TwitVim-line-length twitvim.txt /*TwitVim-line-length*
TwitVim-login-base64 twitvim.txt /*TwitVim-login-base64*
TwitVim-manual twitvim.txt /*TwitVim-manual*
TwitVim-mappings twitvim.txt /*TwitVim-mappings*
TwitVim-next twitvim.txt /*TwitVim-next*
TwitVim-non-cURL twitvim.txt /*TwitVim-non-cURL*
TwitVim-previous twitvim.txt /*TwitVim-previous*
TwitVim-profile twitvim.txt /*TwitVim-profile*
TwitVim-refresh twitvim.txt /*TwitVim-refresh*
TwitVim-reply twitvim.txt /*TwitVim-reply*
TwitVim-retweet twitvim.txt /*TwitVim-retweet*
TwitVim-ssl twitvim.txt /*TwitVim-ssl*
TwitVim-ssl-curl twitvim.txt /*TwitVim-ssl-curl*
TwitVim-ssl-perl twitvim.txt /*TwitVim-ssl-perl*
TwitVim-ssl-python twitvim.txt /*TwitVim-ssl-python*
TwitVim-ssl-ruby twitvim.txt /*TwitVim-ssl-ruby*
TwitVim-switch twitvim.txt /*TwitVim-switch*
TwitVim-timeline-commands twitvim.txt /*TwitVim-timeline-commands*
TwitVim-tips twitvim.txt /*TwitVim-tips*
TwitVim-update-commands twitvim.txt /*TwitVim-update-commands*
TwitVim-utility twitvim.txt /*TwitVim-utility*
UnArrangeColumn_CSV ft-csv.txt /*UnArrangeColumn_CSV*
VHeaderToggle_CSV ft-csv.txt /*VHeaderToggle_CSV*
VHeader_CSV ft-csv.txt /*VHeader_CSV*
VertFold_CSV ft-csv.txt /*VertFold_CSV*
VimwikiWeblinkHandler vimwiki.txt /*VimwikiWeblinkHandler*
Vjdegd vjde.txt /*Vjdegd*
Vjdeinfo vjde.txt /*Vjdeinfo*
WhatColumn_CSV ft-csv.txt /*WhatColumn_CSV*
config/rails.vim rails.txt /*config\/rails.vim*
conque_term-bugs conque_term.txt /*conque_term-bugs*
conque_term-changelog conque_term.txt /*conque_term-changelog*
conque_term-contribute conque_term.txt /*conque_term-contribute*
conque_term-requirements conque_term.txt /*conque_term-requirements*
conque_term-settings conque_term.txt /*conque_term-settings*
conque_term-todo conque_term.txt /*conque_term-todo*
conque_term-usage conque_term.txt /*conque_term-usage*
csv-aggregate-functions ft-csv.txt /*csv-aggregate-functions*
csv-analyze ft-csv.txt /*csv-analyze*
csv-arrange-autocmd ft-csv.txt /*csv-arrange-autocmd*
csv-changelog ft-csv.txt /*csv-changelog*
csv-column ft-csv.txt /*csv-column*
csv-commands ft-csv.txt /*csv-commands*
csv-comments ft-csv.txt /*csv-comments*
csv-conceal ft-csv.txt /*csv-conceal*
csv-configuration ft-csv.txt /*csv-configuration*
csv-convert ft-csv.txt /*csv-convert*
csv-delimiter ft-csv.txt /*csv-delimiter*
csv-filter ft-csv.txt /*csv-filter*
csv-fixedwidth ft-csv.txt /*csv-fixedwidth*
csv-header ft-csv.txt /*csv-header*
csv-hicol ft-csv.txt /*csv-hicol*
csv-higroup ft-csv.txt /*csv-higroup*
csv-installation ft-csv.txt /*csv-installation*
csv-intro ft-csv.txt /*csv-intro*
csv-mapping ft-csv.txt /*csv-mapping*
csv-mbyte ft-csv.txt /*csv-mbyte*
csv-move-folds ft-csv.txt /*csv-move-folds*
csv-newline ft-csv.txt /*csv-newline*
csv-nrformat ft-csv.txt /*csv-nrformat*
csv-slow ft-csv.txt /*csv-slow*
csv-stl ft-csv.txt /*csv-stl*
csv-strict ft-csv.txt /*csv-strict*
csv-syntax ft-csv.txt /*csv-syntax*
csv-syntax-error ft-csv.txt /*csv-syntax-error*
csv-tips ft-csv.txt /*csv-tips*
csv-toc ft-csv.txt /*csv-toc*
csv-transpose ft-csv.txt /*csv-transpose*
csv-vertfold ft-csv.txt /*csv-vertfold*
cuteBufferUsage CuteTodoList.txt /*cuteBufferUsage*
cuteTodoCommands CuteTodoList.txt /*cuteTodoCommands*
cuteTodoConfiguration CuteTodoList.txt /*cuteTodoConfiguration*
cuteTodoList CuteTodoList.txt /*cuteTodoList*
ft-csv.txt ft-csv.txt /*ft-csv.txt*
fugitive fugitive.txt /*fugitive*
fugitive#statusline() fugitive.txt /*fugitive#statusline()*
fugitive-:Gblame fugitive.txt /*fugitive-:Gblame*
fugitive-:Gcd fugitive.txt /*fugitive-:Gcd*
fugitive-:Gcommit fugitive.txt /*fugitive-:Gcommit*
fugitive-:Gdiff fugitive.txt /*fugitive-:Gdiff*
fugitive-:Ge fugitive.txt /*fugitive-:Ge*
fugitive-:Gedit fugitive.txt /*fugitive-:Gedit*
fugitive-:Ggrep fugitive.txt /*fugitive-:Ggrep*
fugitive-:Git fugitive.txt /*fugitive-:Git*
fugitive-:Glcd fugitive.txt /*fugitive-:Glcd*
fugitive-:Glog fugitive.txt /*fugitive-:Glog*
fugitive-:Gmove fugitive.txt /*fugitive-:Gmove*
fugitive-:Gpedit fugitive.txt /*fugitive-:Gpedit*
fugitive-:Gread fugitive.txt /*fugitive-:Gread*
fugitive-:Gread! fugitive.txt /*fugitive-:Gread!*
fugitive-:Gremove fugitive.txt /*fugitive-:Gremove*
fugitive-:Gsplit fugitive.txt /*fugitive-:Gsplit*
fugitive-:Gstatus fugitive.txt /*fugitive-:Gstatus*
fugitive-:Gtabedit fugitive.txt /*fugitive-:Gtabedit*
fugitive-:Gvsplit fugitive.txt /*fugitive-:Gvsplit*
fugitive-:Gwrite fugitive.txt /*fugitive-:Gwrite*
fugitive-<CR> fugitive.txt /*fugitive-<CR>*
fugitive-C fugitive.txt /*fugitive-C*
fugitive-O fugitive.txt /*fugitive-O*
fugitive-P fugitive.txt /*fugitive-P*
fugitive-a fugitive.txt /*fugitive-a*
fugitive-about fugitive.txt /*fugitive-about*
fugitive-author fugitive.txt /*fugitive-author*
fugitive-commands fugitive.txt /*fugitive-commands*
fugitive-mappings fugitive.txt /*fugitive-mappings*
fugitive-o fugitive.txt /*fugitive-o*
fugitive-revision fugitive.txt /*fugitive-revision*
fugitive-statusline fugitive.txt /*fugitive-statusline*
fugitive-~ fugitive.txt /*fugitive-~*
fugitive.txt fugitive.txt /*fugitive.txt*
g:loaded_rails rails.txt /*g:loaded_rails*
g:rails_abbreviations rails.txt /*g:rails_abbreviations*
g:rails_ctags_arguments rails.txt /*g:rails_ctags_arguments*
g:rails_dbext rails.txt /*g:rails_dbext*
g:rails_default_database rails.txt /*g:rails_default_database*
g:rails_default_file rails.txt /*g:rails_default_file*
g:rails_expensive rails.txt /*g:rails_expensive*
g:rails_gnu_screen rails.txt /*g:rails_gnu_screen*
g:rails_history_size rails.txt /*g:rails_history_size*
g:rails_mappings rails.txt /*g:rails_mappings*
g:rails_menu rails.txt /*g:rails_menu*
g:rails_modelines rails.txt /*g:rails_modelines*
g:rails_statusline rails.txt /*g:rails_statusline*
g:rails_syntax rails.txt /*g:rails_syntax*
g:rails_tabstop rails.txt /*g:rails_tabstop*
g:rails_url rails.txt /*g:rails_url*
g:snippets_dir snipMate.txt /*g:snippets_dir*
g:snips_author snipMate.txt /*g:snips_author*
g:todo_generate_auto CuteTodoList.txt /*g:todo_generate_auto*
g:todo_list_buff_name CuteTodoList.txt /*g:todo_list_buff_name*
g:todo_list_filename CuteTodoList.txt /*g:todo_list_filename*
g:todo_list_globfilename CuteTodoList.txt /*g:todo_list_globfilename*
g:vimwiki_CJK_length vimwiki.txt /*g:vimwiki_CJK_length*
g:vimwiki_auto_checkbox vimwiki.txt /*g:vimwiki_auto_checkbox*
g:vimwiki_badsyms vimwiki.txt /*g:vimwiki_badsyms*
g:vimwiki_browsers vimwiki.txt /*g:vimwiki_browsers*
g:vimwiki_camel_case vimwiki.txt /*g:vimwiki_camel_case*
g:vimwiki_conceallevel vimwiki.txt /*g:vimwiki_conceallevel*
g:vimwiki_dir_link vimwiki.txt /*g:vimwiki_dir_link*
g:vimwiki_file_exts vimwiki.txt /*g:vimwiki_file_exts*
g:vimwiki_fold_lists vimwiki.txt /*g:vimwiki_fold_lists*
g:vimwiki_fold_trailing_empty_lines vimwiki.txt /*g:vimwiki_fold_trailing_empty_lines*
g:vimwiki_folding vimwiki.txt /*g:vimwiki_folding*
g:vimwiki_global_ext vimwiki.txt /*g:vimwiki_global_ext*
g:vimwiki_hl_cb_checked vimwiki.txt /*g:vimwiki_hl_cb_checked*
g:vimwiki_hl_headers vimwiki.txt /*g:vimwiki_hl_headers*
g:vimwiki_html_header_numbering vimwiki.txt /*g:vimwiki_html_header_numbering*
g:vimwiki_html_header_numbering_sym vimwiki.txt /*g:vimwiki_html_header_numbering_sym*
g:vimwiki_list vimwiki.txt /*g:vimwiki_list*
g:vimwiki_list_ignore_newline vimwiki.txt /*g:vimwiki_list_ignore_newline*
g:vimwiki_listsyms vimwiki.txt /*g:vimwiki_listsyms*
g:vimwiki_lower vimwiki.txt /*g:vimwiki_lower*
g:vimwiki_menu vimwiki.txt /*g:vimwiki_menu*
g:vimwiki_stripsym vimwiki.txt /*g:vimwiki_stripsym*
g:vimwiki_table_auto_fmt vimwiki.txt /*g:vimwiki_table_auto_fmt*
g:vimwiki_upper vimwiki.txt /*g:vimwiki_upper*
g:vimwiki_use_calendar vimwiki.txt /*g:vimwiki_use_calendar*
g:vimwiki_use_mouse vimwiki.txt /*g:vimwiki_use_mouse*
g:vimwiki_valid_html_tags vimwiki.txt /*g:vimwiki_valid_html_tags*
g:vimwiki_w32_dir_enc vimwiki.txt /*g:vimwiki_w32_dir_enc*
g:vjde_taglib_uri vjde.txt /*g:vjde_taglib_uri*
hl-twitterLink twitvim.txt /*hl-twitterLink*
hl-twitterReply twitvim.txt /*hl-twitterReply*
hl-twitterTime twitvim.txt /*hl-twitterTime*
hl-twitterTitle twitvim.txt /*hl-twitterTitle*
hl-twitterUser twitvim.txt /*hl-twitterUser*
i_CTRL-R_<Tab> snipMate.txt /*i_CTRL-R_<Tab>*
im_1 imaps.txt /*im_1*
imaps-usage imaps.txt /*imaps-usage*
imaps.txt imaps.txt /*imaps.txt*
imaps.txt-toc imaps.txt /*imaps.txt-toc*
list-snippets snipMate.txt /*list-snippets*
loaded_nerd_comments NERD_commenter.txt /*loaded_nerd_comments*
loaded_potwiki potwiki.txt /*loaded_potwiki*
macros/rails.vim rails.txt /*macros\/rails.vim*
multi_snip snipMate.txt /*multi_snip*
potwiki potwiki.txt /*potwiki*
potwiki-auto-help potwiki.txt /*potwiki-auto-help*
potwiki-bugs potwiki.txt /*potwiki-bugs*
potwiki-commands potwiki.txt /*potwiki-commands*
potwiki-contents potwiki.txt /*potwiki-contents*
potwiki-customize potwiki.txt /*potwiki-customize*
potwiki-disable potwiki.txt /*potwiki-disable*
potwiki-install potwiki.txt /*potwiki-install*
potwiki-intro potwiki.txt /*potwiki-intro*
potwiki-mappings-override potwiki.txt /*potwiki-mappings-override*
potwiki-options potwiki.txt /*potwiki-options*
potwiki-requirements potwiki.txt /*potwiki-requirements*
potwiki-todo potwiki.txt /*potwiki-todo*
potwiki.txt potwiki.txt /*potwiki.txt*
potwiki_autowrite potwiki.txt /*potwiki_autowrite*
potwiki_home potwiki.txt /*potwiki_home*
potwiki_home_dir potwiki.txt /*potwiki_home_dir*
potwiki_ignore potwiki.txt /*potwiki_ignore*
potwiki_lower potwiki.txt /*potwiki_lower*
potwiki_other potwiki.txt /*potwiki_other*
potwiki_suffix potwiki.txt /*potwiki_suffix*
potwiki_upper potwiki.txt /*potwiki_upper*
rails rails.txt /*rails*
rails-'cfu' rails.txt /*rails-'cfu'*
rails-'completefunc' rails.txt /*rails-'completefunc'*
rails-'et' rails.txt /*rails-'et'*
rails-'expandtab' rails.txt /*rails-'expandtab'*
rails-'filetype' rails.txt /*rails-'filetype'*
rails-'ft' rails.txt /*rails-'ft'*
rails-'includeexpr' rails.txt /*rails-'includeexpr'*
rails-'inex' rails.txt /*rails-'inex'*
rails-'pa' rails.txt /*rails-'pa'*
rails-'path' rails.txt /*rails-'path'*
rails-'shiftwidth' rails.txt /*rails-'shiftwidth'*
rails-'softtabstop' rails.txt /*rails-'softtabstop'*
rails-'statusline' rails.txt /*rails-'statusline'*
rails-'stl' rails.txt /*rails-'stl'*
rails-'sts' rails.txt /*rails-'sts'*
rails-'sua' rails.txt /*rails-'sua'*
rails-'suffixesadd' rails.txt /*rails-'suffixesadd'*
rails-'sw' rails.txt /*rails-'sw'*
rails-:A rails.txt /*rails-:A*
rails-:AD rails.txt /*rails-:AD*
rails-:AE rails.txt /*rails-:AE*
rails-:AS rails.txt /*rails-:AS*
rails-:AT rails.txt /*rails-:AT*
rails-:AV rails.txt /*rails-:AV*
rails-:OpenURL rails.txt /*rails-:OpenURL*
rails-:R rails.txt /*rails-:R*
rails-:RD rails.txt /*rails-:RD*
rails-:RE rails.txt /*rails-:RE*
rails-:RS rails.txt /*rails-:RS*
rails-:RT rails.txt /*rails-:RT*
rails-:RV rails.txt /*rails-:RV*
rails-:Rabbrev rails.txt /*rails-:Rabbrev*
rails-:Rabbrev! rails.txt /*rails-:Rabbrev!*
rails-:Rails rails.txt /*rails-:Rails*
rails-:Rake rails.txt /*rails-:Rake*
rails-:Rake! rails.txt /*rails-:Rake!*
rails-:Rapi rails.txt /*rails-:Rapi*
rails-:Rcd rails.txt /*rails-:Rcd*
rails-:Rcommand rails.txt /*rails-:Rcommand*
rails-:Rconsole rails.txt /*rails-:Rconsole*
rails-:Rcontroller rails.txt /*rails-:Rcontroller*
rails-:Rdbext rails.txt /*rails-:Rdbext*
rails-:Rdestroy rails.txt /*rails-:Rdestroy*
rails-:Rdoc rails.txt /*rails-:Rdoc*
rails-:Rdoc! rails.txt /*rails-:Rdoc!*
rails-:Redit rails.txt /*rails-:Redit*
rails-:Renvironment rails.txt /*rails-:Renvironment*
rails-:Rextract rails.txt /*rails-:Rextract*
rails-:Rfind rails.txt /*rails-:Rfind*
rails-:Rfixtures rails.txt /*rails-:Rfixtures*
rails-:Rfunctionaltest rails.txt /*rails-:Rfunctionaltest*
rails-:Rgenerate rails.txt /*rails-:Rgenerate*
rails-:Rhelper rails.txt /*rails-:Rhelper*
rails-:Rinitializer rails.txt /*rails-:Rinitializer*
rails-:Rintegrationtest rails.txt /*rails-:Rintegrationtest*
rails-:Rinvert rails.txt /*rails-:Rinvert*
rails-:Rjavascript rails.txt /*rails-:Rjavascript*
rails-:Rlayout rails.txt /*rails-:Rlayout*
rails-:Rlcd rails.txt /*rails-:Rlcd*
rails-:Rlib rails.txt /*rails-:Rlib*
rails-:Rlocale rails.txt /*rails-:Rlocale*
rails-:Rlog rails.txt /*rails-:Rlog*
rails-:Rmetal rails.txt /*rails-:Rmetal*
rails-:Rmigration rails.txt /*rails-:Rmigration*
rails-:Rmodel rails.txt /*rails-:Rmodel*
rails-:Rnavcommand rails.txt /*rails-:Rnavcommand*
rails-:Robserver rails.txt /*rails-:Robserver*
rails-:Rp rails.txt /*rails-:Rp*
rails-:Rpartial rails.txt /*rails-:Rpartial*
rails-:Rplugin rails.txt /*rails-:Rplugin*
rails-:Rpp rails.txt /*rails-:Rpp*
rails-:Rpreview rails.txt /*rails-:Rpreview*
rails-:Rpreview! rails.txt /*rails-:Rpreview!*
rails-:Rproject rails.txt /*rails-:Rproject*
rails-:Rrefresh rails.txt /*rails-:Rrefresh*
rails-:Rrefresh! rails.txt /*rails-:Rrefresh!*
rails-:Rrunner rails.txt /*rails-:Rrunner*
rails-:Rscript rails.txt /*rails-:Rscript*
rails-:Rserver rails.txt /*rails-:Rserver*
rails-:Rserver! rails.txt /*rails-:Rserver!*
rails-:Rset rails.txt /*rails-:Rset*
rails-:Rspec rails.txt /*rails-:Rspec*
rails-:Rstylesheet rails.txt /*rails-:Rstylesheet*
rails-:Rtags rails.txt /*rails-:Rtags*
rails-:Rtask rails.txt /*rails-:Rtask*
rails-:Rtree rails.txt /*rails-:Rtree*
rails-:Runittest rails.txt /*rails-:Runittest*
rails-:Rview rails.txt /*rails-:Rview*
rails-:Ry rails.txt /*rails-:Ry*
rails-:autocmd rails.txt /*rails-:autocmd*
rails-@params rails.txt /*rails-@params*
rails-abbreviations rails.txt /*rails-abbreviations*
rails-about rails.txt /*rails-about*
rails-alternate rails.txt /*rails-alternate*
rails-alternate-related rails.txt /*rails-alternate-related*
rails-autocommands rails.txt /*rails-autocommands*
rails-commands rails.txt /*rails-commands*
rails-configuration rails.txt /*rails-configuration*
rails-controller-navigation rails.txt /*rails-controller-navigation*
rails-cream rails.txt /*rails-cream*
rails-custom-navigation rails.txt /*rails-custom-navigation*
rails-dbext rails.txt /*rails-dbext*
rails-gf rails.txt /*rails-gf*
rails-global-settings rails.txt /*rails-global-settings*
rails-install-plugin rails.txt /*rails-install-plugin*
rails-install-vim rails.txt /*rails-install-vim*
rails-installation rails.txt /*rails-installation*
rails-integration rails.txt /*rails-integration*
rails-introduction rails.txt /*rails-introduction*
rails-license rails.txt /*rails-license*
rails-menu rails.txt /*rails-menu*
rails-merb rails.txt /*rails-merb*
rails-migrations rails.txt /*rails-migrations*
rails-misc-navigation rails.txt /*rails-misc-navigation*
rails-model-navigation rails.txt /*rails-model-navigation*
rails-modelines rails.txt /*rails-modelines*
rails-navigation rails.txt /*rails-navigation*
rails-options rails.txt /*rails-options*
rails-partials rails.txt /*rails-partials*
rails-plugin-author rails.txt /*rails-plugin-author*
rails-rails-integration rails.txt /*rails-rails-integration*
rails-rake rails.txt /*rails-rake*
rails-rake-defaults rails.txt /*rails-rake-defaults*
rails-refactoring rails.txt /*rails-refactoring*
rails-related rails.txt /*rails-related*
rails-rspec rails.txt /*rails-rspec*
rails-screen rails.txt /*rails-screen*
rails-scripts rails.txt /*rails-scripts*
rails-slow rails.txt /*rails-slow*
rails-snippets rails.txt /*rails-snippets*
rails-surround rails.txt /*rails-surround*
rails-syntax rails.txt /*rails-syntax*
rails-syntax-assertions rails.txt /*rails-syntax-assertions*
rails-syntax-classes rails.txt /*rails-syntax-classes*
rails-syntax-deprecated rails.txt /*rails-syntax-deprecated*
rails-syntax-keywords rails.txt /*rails-syntax-keywords*
rails-syntax-strings rails.txt /*rails-syntax-strings*
rails-syntax-yaml rails.txt /*rails-syntax-yaml*
rails-tabs rails.txt /*rails-tabs*
rails-template-types rails.txt /*rails-template-types*
rails-vim-integration rails.txt /*rails-vim-integration*
rails.txt rails.txt /*rails.txt*
snipMate snipMate.txt /*snipMate*
snipMate-$# snipMate.txt /*snipMate-$#*
snipMate-${#:} snipMate.txt /*snipMate-${#:}*
snipMate-${#} snipMate.txt /*snipMate-${#}*
snipMate-author snipMate.txt /*snipMate-author*
snipMate-commands snipMate.txt /*snipMate-commands*
snipMate-contact snipMate.txt /*snipMate-contact*
snipMate-description snipMate.txt /*snipMate-description*
snipMate-disadvantages snipMate.txt /*snipMate-disadvantages*
snipMate-expandtab snipMate.txt /*snipMate-expandtab*
snipMate-features snipMate.txt /*snipMate-features*
snipMate-filename snipMate.txt /*snipMate-filename*
snipMate-indenting snipMate.txt /*snipMate-indenting*
snipMate-placeholders snipMate.txt /*snipMate-placeholders*
snipMate-remap snipMate.txt /*snipMate-remap*
snipMate-settings snipMate.txt /*snipMate-settings*
snipMate-usage snipMate.txt /*snipMate-usage*
snipMate.txt snipMate.txt /*snipMate.txt*
snippet snipMate.txt /*snippet*
snippet-syntax snipMate.txt /*snippet-syntax*
snippets snipMate.txt /*snippets*
taglist-commands taglist.txt /*taglist-commands*
taglist-debug taglist.txt /*taglist-debug*
taglist-extend taglist.txt /*taglist-extend*
taglist-faq taglist.txt /*taglist-faq*
taglist-functions taglist.txt /*taglist-functions*
taglist-install taglist.txt /*taglist-install*
taglist-internet taglist.txt /*taglist-internet*
taglist-intro taglist.txt /*taglist-intro*
taglist-keys taglist.txt /*taglist-keys*
taglist-license taglist.txt /*taglist-license*
taglist-menu taglist.txt /*taglist-menu*
taglist-options taglist.txt /*taglist-options*
taglist-requirements taglist.txt /*taglist-requirements*
taglist-session taglist.txt /*taglist-session*
taglist-todo taglist.txt /*taglist-todo*
taglist-using taglist.txt /*taglist-using*
taglist.txt taglist.txt /*taglist.txt*
textile-changelog textile.txt /*textile-changelog*
textile-commands textile.txt /*textile-commands*
textile-credits textile.txt /*textile-credits*
textile-requirements textile.txt /*textile-requirements*
textile.txt textile.txt /*textile.txt*
todo_+ CuteTodoList.txt /*todo_+*
todo_- CuteTodoList.txt /*todo_-*
todo_^ CuteTodoList.txt /*todo_^*
todo_generate_auto CuteTodoList.txt /*todo_generate_auto*
todo_list_buff_name CuteTodoList.txt /*todo_list_buff_name*
todo_list_filename CuteTodoList.txt /*todo_list_filename*
todo_list_globfilename CuteTodoList.txt /*todo_list_globfilename*
todo_m CuteTodoList.txt /*todo_m*
todo_o CuteTodoList.txt /*todo_o*
todo_s CuteTodoList.txt /*todo_s*
todo_u CuteTodoList.txt /*todo_u*
todo_v CuteTodoList.txt /*todo_v*
twitvim-identi.ca twitvim.txt /*twitvim-identi.ca*
twitvim.txt twitvim.txt /*twitvim.txt*
twitvim_api_root twitvim.txt /*twitvim_api_root*
twitvim_browser_cmd twitvim.txt /*twitvim_browser_cmd*
twitvim_cert_insecure twitvim.txt /*twitvim_cert_insecure*
twitvim_cligs_key twitvim.txt /*twitvim_cligs_key*
twitvim_count twitvim.txt /*twitvim_count*
twitvim_enable_perl twitvim.txt /*twitvim_enable_perl*
twitvim_enable_python twitvim.txt /*twitvim_enable_python*
twitvim_enable_ruby twitvim.txt /*twitvim_enable_ruby*
twitvim_enable_tcl twitvim.txt /*twitvim_enable_tcl*
twitvim_login twitvim.txt /*twitvim_login*
twitvim_login_b64 twitvim.txt /*twitvim_login_b64*
twitvim_proxy twitvim.txt /*twitvim_proxy*
twitvim_proxy_login twitvim.txt /*twitvim_proxy_login*
twitvim_proxy_login_b64 twitvim.txt /*twitvim_proxy_login_b64*
twitvim_retweet_format twitvim.txt /*twitvim_retweet_format*
twitvim_trim_login twitvim.txt /*twitvim_trim_login*
twitvim_urlborg_key twitvim.txt /*twitvim_urlborg_key*
v_<C-Y>, zencoding.txt /*v_<C-Y>,*
vcde vcde.txt /*vcde*
vimwiki vimwiki.txt /*vimwiki*
vimwiki-calendar vimwiki.txt /*vimwiki-calendar*
vimwiki-changelog vimwiki.txt /*vimwiki-changelog*
vimwiki-commands vimwiki.txt /*vimwiki-commands*
vimwiki-contents vimwiki.txt /*vimwiki-contents*
vimwiki-developers vimwiki.txt /*vimwiki-developers*
vimwiki-diary vimwiki.txt /*vimwiki-diary*
vimwiki-folding vimwiki.txt /*vimwiki-folding*
vimwiki-global-commands vimwiki.txt /*vimwiki-global-commands*
vimwiki-global-mappings vimwiki.txt /*vimwiki-global-mappings*
vimwiki-help vimwiki.txt /*vimwiki-help*
vimwiki-license vimwiki.txt /*vimwiki-license*
vimwiki-local-commands vimwiki.txt /*vimwiki-local-commands*
vimwiki-local-mappings vimwiki.txt /*vimwiki-local-mappings*
vimwiki-mappings vimwiki.txt /*vimwiki-mappings*
vimwiki-multiple-wikies vimwiki.txt /*vimwiki-multiple-wikies*
vimwiki-nohtml vimwiki.txt /*vimwiki-nohtml*
vimwiki-option-auto_export vimwiki.txt /*vimwiki-option-auto_export*
vimwiki-option-css_name vimwiki.txt /*vimwiki-option-css_name*
vimwiki-option-diary_header vimwiki.txt /*vimwiki-option-diary_header*
vimwiki-option-diary_index vimwiki.txt /*vimwiki-option-diary_index*
vimwiki-option-diary_link_count vimwiki.txt /*vimwiki-option-diary_link_count*
vimwiki-option-diary_rel_path vimwiki.txt /*vimwiki-option-diary_rel_path*
vimwiki-option-ext vimwiki.txt /*vimwiki-option-ext*
vimwiki-option-html_footer vimwiki.txt /*vimwiki-option-html_footer*
vimwiki-option-html_header vimwiki.txt /*vimwiki-option-html_header*
vimwiki-option-index vimwiki.txt /*vimwiki-option-index*
vimwiki-option-maxhi vimwiki.txt /*vimwiki-option-maxhi*
vimwiki-option-nested_syntaxes vimwiki.txt /*vimwiki-option-nested_syntaxes*
vimwiki-option-path vimwiki.txt /*vimwiki-option-path*
vimwiki-option-path_html vimwiki.txt /*vimwiki-option-path_html*
vimwiki-option-syntax vimwiki.txt /*vimwiki-option-syntax*
vimwiki-options vimwiki.txt /*vimwiki-options*
vimwiki-placeholders vimwiki.txt /*vimwiki-placeholders*
vimwiki-prerequisites vimwiki.txt /*vimwiki-prerequisites*
vimwiki-syntax vimwiki.txt /*vimwiki-syntax*
vimwiki-syntax-blockquotes vimwiki.txt /*vimwiki-syntax-blockquotes*
vimwiki-syntax-comments vimwiki.txt /*vimwiki-syntax-comments*
vimwiki-syntax-headers vimwiki.txt /*vimwiki-syntax-headers*
vimwiki-syntax-links vimwiki.txt /*vimwiki-syntax-links*
vimwiki-syntax-lists vimwiki.txt /*vimwiki-syntax-lists*
vimwiki-syntax-paragraphs vimwiki.txt /*vimwiki-syntax-paragraphs*
vimwiki-syntax-preformatted vimwiki.txt /*vimwiki-syntax-preformatted*
vimwiki-syntax-tables vimwiki.txt /*vimwiki-syntax-tables*
vimwiki-syntax-typefaces vimwiki.txt /*vimwiki-syntax-typefaces*
vimwiki-table-mappings vimwiki.txt /*vimwiki-table-mappings*
vimwiki-table-of-contents vimwiki.txt /*vimwiki-table-of-contents*
vimwiki-tables vimwiki.txt /*vimwiki-tables*
vimwiki-temporary-wiki vimwiki.txt /*vimwiki-temporary-wiki*
vimwiki-text-objects vimwiki.txt /*vimwiki-text-objects*
vimwiki-title vimwiki.txt /*vimwiki-title*
vimwiki-toc vimwiki.txt /*vimwiki-toc*
vimwiki-todo-lists vimwiki.txt /*vimwiki-todo-lists*
vimwiki.txt vimwiki.txt /*vimwiki.txt*
vimwiki_- vimwiki.txt /*vimwiki_-*
vimwiki_<A-Left> vimwiki.txt /*vimwiki_<A-Left>*
vimwiki_<A-Right> vimwiki.txt /*vimwiki_<A-Right>*
vimwiki_<Backspace> vimwiki.txt /*vimwiki_<Backspace>*
vimwiki_<C-CR> vimwiki.txt /*vimwiki_<C-CR>*
vimwiki_<C-Down> vimwiki.txt /*vimwiki_<C-Down>*
vimwiki_<C-Space> vimwiki.txt /*vimwiki_<C-Space>*
vimwiki_<C-Up> vimwiki.txt /*vimwiki_<C-Up>*
vimwiki_<CR> vimwiki.txt /*vimwiki_<CR>*
vimwiki_<Leader>wd vimwiki.txt /*vimwiki_<Leader>wd*
vimwiki_<Leader>wr vimwiki.txt /*vimwiki_<Leader>wr*
vimwiki_<S-CR> vimwiki.txt /*vimwiki_<S-CR>*
vimwiki_<S-Tab> vimwiki.txt /*vimwiki_<S-Tab>*
vimwiki_<Tab> vimwiki.txt /*vimwiki_<Tab>*
vimwiki_= vimwiki.txt /*vimwiki_=*
vimwiki_gqq vimwiki.txt /*vimwiki_gqq*
vimwiki_gww vimwiki.txt /*vimwiki_gww*
vimwiki_i_<CR> vimwiki.txt /*vimwiki_i_<CR>*
vimwiki_i_<S-CR> vimwiki.txt /*vimwiki_i_<S-CR>*
vimwiki_i_<Tab> vimwiki.txt /*vimwiki_i_<Tab>*
viwmiki-global-options vimwiki.txt /*viwmiki-global-options*
viwmiki-local-options vimwiki.txt /*viwmiki-local-options*
vjde vjde.txt /*vjde*
vjde-auto-comp vjde.txt /*vjde-auto-comp*
vjde-code vjde.txt /*vjde-code*
vjde-command vjde.txt /*vjde-command*
vjde-define vjde.txt /*vjde-define*
vjde-desc vjde.txt /*vjde-desc*
vjde-doc vjde.txt /*vjde-doc*
vjde-fix-ex vjde.txt /*vjde-fix-ex*
vjde-fix-im vjde.txt /*vjde-fix-im*
vjde-fix-th vjde.txt /*vjde-fix-th*
vjde-fix-tools vjde.txt /*vjde-fix-tools*
vjde-goto vjde.txt /*vjde-goto*
vjde-html vjde.txt /*vjde-html*
vjde-iabbr vjde.txt /*vjde-iabbr*
vjde-implements vjde.txt /*vjde-implements*
vjde-import-extract vjde.txt /*vjde-import-extract*
vjde-import-sort vjde.txt /*vjde-import-sort*
vjde-install vjde.txt /*vjde-install*
vjde-java vjde.txt /*vjde-java*
vjde-java-pkg vjde.txt /*vjde-java-pkg*
vjde-javadoc vjde.txt /*vjde-javadoc*
vjde-jsp vjde.txt /*vjde-jsp*
vjde-override vjde.txt /*vjde-override*
vjde-preview vjde.txt /*vjde-preview*
vjde-project vjde.txt /*vjde-project*
vjde-qa vjde.txt /*vjde-qa*
vjde-refactor vjde.txt /*vjde-refactor*
vjde-rft-arg vjde.txt /*vjde-rft-arg*
vjde-rft-const vjde.txt /*vjde-rft-const*
vjde-rft-field vjde.txt /*vjde-rft-field*
vjde-rft-local vjde.txt /*vjde-rft-local*
vjde-taglib vjde.txt /*vjde-taglib*
vjde-tasklist vjde.txt /*vjde-tasklist*
vjde-template vjde.txt /*vjde-template*
vjde-todolist vjde.txt /*vjde-todolist*
vjde-variable vjde.txt /*vjde-variable*
vjde-wizard vjde.txt /*vjde-wizard*
vjde-xdoclet vjde.txt /*vjde-xdoclet*
vjde-xml vjde.txt /*vjde-xml*
vjde-xmldata vjde.txt /*vjde-xmldata*
vjde.txt vjde.txt /*vjde.txt*
vjde_auto_mark vjde.txt /*vjde_auto_mark*
vjde_autoload_stl vjde.txt /*vjde_autoload_stl*
vjde_autoload_taglib vjde.txt /*vjde_autoload_taglib*
vjde_cfu_java_dot vjde.txt /*vjde_cfu_java_dot*
vjde_cfu_java_para vjde.txt /*vjde_cfu_java_para*
vjde_doc_gui_height vjde.txt /*vjde_doc_gui_height*
vjde_doc_gui_width vjde.txt /*vjde_doc_gui_width*
vjde_javadoc_path vjde.txt /*vjde_javadoc_path*
vjde_lib_path vjde.txt /*vjde_lib_path*
vjde_out_path vjde.txt /*vjde_out_path*
vjde_show_paras vjde.txt /*vjde_show_paras*
vjde_show_preview vjde.txt /*vjde_show_preview*
vjde_src_path vjde.txt /*vjde_src_path*
vjde_use_window vjde.txt /*vjde_use_window*
vjde_web_app vjde.txt /*vjde_web_app*
vjde_xml_advance vjde.txt /*vjde_xml_advance*
wiki potwiki.txt /*wiki*
zencoding zencoding.txt /*zencoding*
zencoding-balance-tag-inward zencoding.txt /*zencoding-balance-tag-inward*
zencoding-balance-tag-outward zencoding.txt /*zencoding-balance-tag-outward*
zencoding-complete-tag zencoding.txt /*zencoding-complete-tag*
zencoding-contents zencoding.txt /*zencoding-contents*
zencoding-customize zencoding.txt /*zencoding-customize*
zencoding-customize-keymappings zencoding.txt /*zencoding-customize-keymappings*
zencoding-define-tags-behavior zencoding.txt /*zencoding-define-tags-behavior*
zencoding-expandabbr zencoding.txt /*zencoding-expandabbr*
zencoding-goto-next-point zencoding.txt /*zencoding-goto-next-point*
zencoding-goto-previous-point zencoding.txt /*zencoding-goto-previous-point*
zencoding-indent-size zencoding.txt /*zencoding-indent-size*
zencoding-install zencoding.txt /*zencoding-install*
zencoding-introduction zencoding.txt /*zencoding-introduction*
zencoding-make-anchor-url zencoding.txt /*zencoding-make-anchor-url*
zencoding-merge-lines zencoding.txt /*zencoding-merge-lines*
zencoding-quoted-text-url zencoding.txt /*zencoding-quoted-text-url*
zencoding-remove-tag zencoding.txt /*zencoding-remove-tag*
zencoding-split-join-tag zencoding.txt /*zencoding-split-join-tag*
zencoding-todo zencoding.txt /*zencoding-todo*
zencoding-toggle-comment zencoding.txt /*zencoding-toggle-comment*
zencoding-tutorial zencoding.txt /*zencoding-tutorial*
zencoding-update-image-size zencoding.txt /*zencoding-update-image-size*
zencoding-wrap-wtih-abbreviation zencoding.txt /*zencoding-wrap-wtih-abbreviation*
zencoding.txt zencoding.txt /*zencoding.txt*

@ -0,0 +1,52 @@
*textile.txt* Textile for Vim Last Change: November 3, 2008
===============================================================================
REQUIREMENTS *textile-requirements*
- ruby - http://ruby-lang.org/ (seperate executable, not compiled in)
- RedCloth - http://whytheluckystiff.net/ruby/redcloth/
Files with the extension *.textile will auto-detected. If editing a new file,
or otherwise, run ":setf textile" to enable textile commands.
==============================================================================
CHANGELOG *textile-changelog*
0.3 - Fixed keymappings in the documentation
0.2 - Added multiple colors for headers, and alternating colors for list
items
- Fixed error in the vim script for TextileRenderBufferToFile
- Changed shortcut keys from \tp to \rp (render preview instead of
textile preview, since it's file-type specific anyways)
0.1 - Initial Release
==============================================================================
COMMANDS *textile-commands*
h2. Commands
:TextilePreview - Render the current buffer to a temp file, and open it in
your web browser (OSX only)
<Leader>rp
:TextileRenderTab - ... to a new tab
<Leader>rt
:TextileRenderFile - ... to a file
<Leader>rf
<Leader> is \ by default, so <Leader>rp == \rp
==============================================================================
CREDITS *textile-credits*
- "Dominic Mitchell":http://happygiraffe.net/: initial syntax highlighting
- "Aaron Bieber":http://blog.aaronbieber.com/: improved syntax highlighting
- "Tim Harper":http://tim.theenchanter.com/ : improved syntax highlighting,
plugin
vim:tw=78:noet:wrap:ts=2:expandtab:ft=help:norl:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,80 @@
*vcde*
Description~
VCDE is a c++ development support by VJDE framework.
Future~
Now, ctags file supported from two ways:
1. ruby parser,
2 readtags which come from ctag5.5.4
Default , use readtags , Once the $VIM_RUNTIME/plugin/vjde/readtags is
not runnable for you OS, use following in your .vimrc to disable it. >
let g:vjde_readtags=''
<
Then, ruby parser will be used.
Code completion in a gui window or a preview window for c++,simply
namespace and typedef support. >
string str;
str.find
^<c-space>
<
Parameter preview in a window while your input a <C-space> after a
'(' >
string str;
str.find_first_of(
^<c-space>
<
For quickly search the tag of c++ , you can generate a index for your
tags. Use the flowing command: >
:call VjdeCppGenerateIdx()
<
It's use |tags| parameter , then generate a index for each tag file,
named tags.vjde_idx
NOTE: for *inux user, you must make sure that the director is writable
for the user.
Setup~
To setup the completion for your own cpp files, you can set >
g:vjde_cpp_exts
<
which is seperated by ';' , It's treat as the extensions of c++/c
files , like >
let g:vjde_cpp_exts='cpp;c;cxx;h;hpp;hxx'
<
Smart pointer support~
Sometimes , We had use some smart pointer ,such as >
typedef auto_ptr<MyClass> MyClassPtr;
<
At that time , some coding support is read a MyClassPtr as auto_ptr, so , code
completion is not working correctly. So , add a file which is located : >
~/.vim/vjde/ptr.lst
<
Add the following line: >
auto_ptr
std::auto_ptr
<
Then , code completion will treat MyClassPtr as MyClass.
Other language Support ~
NOTE: Just now, use <c-x><c-o> omni completion instead of this
function.
VJDE support other language which is ctags supported.
Once you want to use with your language, setup the variable >
let g:vjde_ctags_exts='vim;rb'
<
Then, the vim and ruby file can be previewed!
Global Variables~
g:vjde_max_deeps
Search for member in Inheries .
g:vjde_max_tags
The tags number will be searched.
vim:ts=8 sw=8 noexpandtab tw=78 ft=help:

File diff suppressed because it is too large Load Diff

@ -0,0 +1,871 @@
*vjde.txt* Plugging for Java/? language
For Vim version 7.0
*vjde*
Comments:
Description |vjde-desc|
Install |vjde-install|
VJDE project |vjde-project|
search auto-completion |vjde-auto-comp|
java |vjde-java|
cpp |vcde|
ruby |vjde-ruby|
java |vjde-java-pkg|
jsp |vjde-jsp|
taglib |vjde-taglib|
xslt |vjde-xsl|
html |vjde-html|
xml |vjde-xml|
xdoclet |vjde-xdoclet|
javadoc |vjde-javadoc|
iabbr |vjde-iabbr|
document viewer |vjde-doc|
Preview window |vjde-preview|
Re factor tools |vjde-refactor|
extract local variable |vjde-rft-local|
extract member variable |vjde-rft-field|
extract argument |vjde-rft-arg|
extract constance |vjde-rft-const|
quick fix tools |vjde-fix-tools|
surround by try/catch |vjde-fix-ex|
add throws |vjde-fix-th|
Add import |vjde-fix-im|
Code tools |vjde-code|
override methods |vjde-override|
implements methods |vjde-implements|
sort imports |vjde-import-sort|
extract imports |vjde-import-extract|
wizard |vjde-wizard|
template define |vjde-template|
search definition |vjde-define|
goto definition |vjde-goto|
to-do list view |vjde-tasklist|
VJDE usefull command list |vjde-command|
VJDE variable |vjde-variable|
VJDE to-do list |vjde-todolist|
VJDE Q&A |vjde-qa|
*vjde-desc*
Desc~
Now , C++ supported with ruby and ctags. See |vcde| for detail.
Now , Csharp supported .
This tools wich is named "Vim Java Development Environment".
Current version, has two tools : Project and Auto Completion
Auto completion is available to :java ,jsp, taglib , html
Show Auto Completion in Preview window , and select or input in the
Preview window, <M-d> is map to show doc of current In Preview window.
See |vjde_javadoc_path| for how to setup a java document path to be shown in
the preview window.
Require : ruby , rexml for ruby
the future list is:
Some plug-in is already used for Vim JDE~
a. Project File Plug-in already
b. match it
c. auto import ok
d. getter setter ok
e. compiler
I will do:~
1. Project management ok
2. Auto completion ok
3. Template ok
4. Extend tool
5. Implementing tool ok
6. Getter/Setter ok
7. To-do List ok, but don't committed
*vjde-install*
Install~
For Windows , for the document viewer , must copy plugin/vjde/wspawn.exe
to you path, such as JAVA_HOME/bin ...
*vjde-project*
Project~
Project tools is used to save the VJDE variables, while you
change your variable,some command is useful to save and restore
the current settings.
Of course, you can add variable settings on the vimrc or anywhere
the vim can be found.
Load project
>
:Vjdeload filename
<Save project as a new project >
:Vjdeas filename
<Save the current project >
:Vjdesave
<
Auto completion ~
*vjde-auto-comp*
For c++ or other ctags supported language , see |vcde|
Setup custom completion function >
:set cfu=VjdeCompletionFun
<
Setup classpath variable: >
:let g:vjde_lib_path="lib/j2ee.jar:lib/struts.jar:build/classes"
<
*vjde-java*
Once you input something like : >
String str;
str.to<CTRL>-X<CTRL>-U
System.out.println(str.to<CTR>-X<CTR>-U
System.out.println(str.toUpperCase().<CTR>-X<CTR>-U
return str.to<CTRL>-X<CTRL>-U
new str.to<CTRL>-X<CTRL>-U
... [operator] str.to<CTRL>-X<CTRL>-U
... = str.to<CTRL>-X<CTRL>-U
<
Package completion~
*vjde-java-pkg*
Completion for package and classes: >
import java.<CTRL>-X<CTRL>-U
applet awt...
import java.util.<CTRL>-X<CTRL>-U
Abstract...
<
In source Code : >
java.util.<CTR>-x<CTRL>-u
Abstract..
<
Jsp file completion~
*vjde-jsp*
the same as for jsp files >
<%!
str.to<CTRL>-x<CTRL>-u
%>
<%
str.to<CTRL>-x<CTRL>-u
%>
<%= session.get<CTRL>-x<CTRL>-u %>
<
Taglib completion ~
*vjde-taglib*
I add the taglib completion for jsp developer.
Just now, completion with tld use xml-completion of |ft-xml-omni|.
For Example , I want to use completion for the following: >
<c:<CTR>-X<CTR>-U
out forEach...
<c:o<CTR>-X<CTR>-U
out
<c:out <CTR>-X<CTR>-U
value default ....
<jsp:<CTR>-x<CTR>-u
include useBean ....
<
At first , I had use this command : >
:XMLns stl_c c
< See |XMLns| for detail of this command.
I had generate xmldata for STL taglib, use the following name: >
stl_c
stl_sql
stl_fn
stl_fmt
stl_x
<
You had to use you own prefix , For example , your coding is: >
<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql"%>
< You should use following command: >
:XMLns stl_sql sql
<
To generate your own taglib from the tld file , You can use the following
command. >
:VjdeTld2Data <a TLD file> <name>
< TLD file is your own TLD file. Name is used to identify your xmldata. See
|xml-omni-datafile| for Detail. I will generate the file at
$VJDE/autoload/xml/<name>.vim .
NOTE: This function is |ruby| required.
*vjde-html*
Html auto completion :~
use it like: >
<<CTR>-x<CTR>-u
% %= ....
<body <CTR>-x<CTR>-u
bgcolor fgcolor....
<body bgcolor=<CTR>-x<CTR>-u
aqua antiquewhit ....
<body bgcolor="<CTR>-x<CTR>-u
aqua" antiquewhit" ....
<
Xml auto completion:~
*vjde-xmldata* *vjde-xml*
Use the system xml completion for xml . See |ft-xml-omni| .
Vjde Has a tool to generate the data file. >
:VjdeDtd2Data <a dtd file> <name>
<
See |vjde-xmldata| for detail.
Note: This function is |ruby| required.
Xdoclet completion~
*vjde-xdoclet* *vjde-javadoc*
Xdoclet completion is used for xdoclet.
While coding comment ,use : >
/**
* @<CTR>-x<CTR>-u
author param return ... hibernate.class hibernate.subclass...
* @hibernate.class <CTR>-x<CTR>-u
lazy ...
* @hibernate.class lazy="<CTR>-x<CTR>-u
true" false"
<
Default , xdoclet support javadoc only.
Add you own part , such as ejb.* ,hibernate.* to >
~/.vim/vjde/xdoclet.def
<
while the xdoclet is enabled , automatically load the define from >
~/.vim/vjde/xdoclet.def
<
file format is simple , line which is started / or * is treated as comment. >
[private|public] enum BOOLEAN {
value1,value2
}
public tag tagname < tagparent1,parent2 {
attr [ATTRTYPE] attr1;
attr attr2 {
value1,value2
}
attr BOOLEAN attr3;
....
}
<
Note: once you change the xdoclet.def , backup is need for next time .
Update VJDE will recover it.
*vjde-doc*
Document viewer~
When you preview your code completion in a gui window, for some
delays, the document of this function or member will be shown.
It's depends on :
g:vjde_javadoc_path '/javadocs/api/'
g:vjde_doc_gui_height height of the window
g:vjde_doc_gui_width width of the window
g:vjde_doc_delay once a item selected ,delay how long.
(1/1000 seconds) default 2000
See |vjde-variable|
*vjde-iabbr*
Iabbr~
Iabbr is some codelet,just something like :
a while block, a for block ...
use <c-j> to invoke this tools on gui running
For example ,to use ruby with Iabbr
Install your own iabbr as ~/.vim/vjde/ruby.iab
setup g:vjde_iab_exts='rb'
so , for your ruby file which is used '.rb' as the extend
Iabbr define file is |vjde-template|, and use the first '|' as the
cursor position.
Refactor~
Note:Use g:vjde_utils_setup=0 to avoid command definition
*vjde-preview*
Vjde Preview window~
VJDE Preview window is a tool for preview in a gui tools for
selection.
I had Use this window to preview the VJDE completion and code template
.
In Java , html , It's use the completion cfu |cfu| to generate lines
to use. It's used like:
NOTE:
Preview.name ~
name of the previewer , must equals the variable name;
Preview.preview_buffer ~
The buffer to be shown, It's the first line is
a description of content , like >
java.lang.System:
<
or >
java.lang.System:c
element->:
body->attributes:
bgground->values:
<
Each line of the preview_buffer, the first word ( It's separated by a
space) is the type of the tag, the second word ( It's separated by ';' or '(')
it the tag name. All the other is trusted as comment. For example >
java.io.PrintStream in;
boolean equals(java.lang.Object);
...
element body;
element html;
....
<
previewer.onSelect ~
is called when use select a word in preview window.
Both GUI or Console preview are. It's has a parameter
which is the user selected word.
previewer.previewLinesFun ~
It's be called with a parameter
which is previewer self. like >
call previewer.PreviewLinesFun(self)
<
previewer.docLineFun ~
This function it's called to get the document preview window
line. It's would return a String , which is comma separated. like >
400;300;2000;java -cp vjde.jar vjde.completion.Document
/mnt/win_e/downloads/docs/api/ src
<
It's used as :
doc width ; doc height ; delay mills;command line to get document
I will add preview.preview_buffer[0] and the
user selected tag name at the end of command line , and call it , trust the
stdout as the document which to be shown.
previewer.CFU ~
At first , It's call the |cfu| function to complete code
complation.
Then , call previewer.previewLinesFun to get buffer would be
shown.
Third , call preview.docLineFun get the docment define line
Third, call the previewer.Preview to preview.
Four , call preview.onSelect to handle the user input.
NOTE:See vjde_preview.vim for detail.
>
let java_previewer = VjdePreviewWindow_New()
let java_previewer.name = 'java_previewer'
let java_previewer.onSelect='VjdeInsertWord'
let java_previewer.previewLinesFun='GetJavaCompletionLines'
let java_previewer.docLineFun='VjdeGetDocWindowLine'
au BufNewFile,BufRead,BufEnter *.java imap <buffer> <C-space> <Esc>:call java_previewer.CFU('<C-space>',1)<CR>a
<
NOTE:you can put you preview content to preview buffer >
call add(previewer.preview_buffer,'line1');
<
Used for the code template: >
let g:iab_previewer = VjdePreviewWindow_New()
let g:iab_previewer.name='iab_previewer'
let g:iab_previewer.onSelect='VjdePreviewIabSelect'
let g:iab_previewer.previewLinesFun=''
...
...
call g:iab_previewer.Preview(0)
<
See vjde_java_iab.vim for detail.
*vjde-refactor*
Variable refactoring~
normal mode:
put your cursor on the variable , use the following command
*vjde-rft-field*
>
<Leader>rf
< change current variable to member field.
*vjde-rft-local*
>
<Leader>rl
< change current variable as local variable.
*vjde-rft-arg*
>
<Leader>rp
< Add current variable as argument of method.
*vjde-rft-const*
Visula mode , a variable is selected ,only support
String , char ,int ,long,double
select a number or a quoited String , >
<Leader>rc
Make the current symbol as a private final static variable.
*vjde-fix-tools*
Vjde fix tools~
Fix tools is used for fix some minimal compile bugs. Now ,
unreported exception is supported
*vjde-fix-ex*
Vjde Exception fix is used for fix uncatched exception compile error
For example >
java.net.URLConnection con= new java.net.URL("").openConnection();
<
Once compile the code of above, two exception is not catched. >
:cc " move the cusor to current error line
<leader>ff
<
this line is change to : >
try {
java.net.URLConnection con ...
}
catch(UN... e1) {
}
catch(IOExce.. e5) {
}
<
It's a simple and useful tools.
*vjde-fix-th*
This tools is fix unreported exception to function declaration,use throws on
function to generate code .
*vjde-fix-im*
Automatically add import for Word under cursor. >
<leader>ai
<
See |quickfix| for more compile support.
*vjde-code*
Code tools~
This tools for code generation .
*vjde-override*
Override the parents method.
I the class , execute : >
:call Vjde_override(0)
<
list the class method , select the index of method, separated by comma or
space , then ,the code will generated on the end of class definition.
*vjde-implements*
Implements the methods of implements . >
:call Vjde_override(1)
<leader>oe
>
list the class method , select the index of method, separated by comma or
space , then ,the code will generated on the end of class definition.
*vjde-import-sort*
to sort the file imports lines , select the lines of import statement. >
:call Vjde_sort_import()
<leader>js
<
or >
:[range]call Vjde_sort_import()
<
the lines : >
import java.awt.*;
import com.abc.*;
import javax.applet.*;
import java.io.*;
import org.apache.*;
<
change to : >
import java.awt.*;
import java.io.*;
import javax.applet.*;
import org.apache.*;
import com.abc.*
<
Extract import~
*vjde-import-extract*
This is a simple import tool. It's used to extract a import to define.
For example , a line: >
javax.servlet.http.HttpSession session = reqeust.....
<
put the cursor on the work "HttpSession" , use a key >
<Leader>je
<
the javax.servlet.http.HttpSession would be imported, >
import javax.servlet.http.HttpSession;
<
and this line become: >
HttpSession session = request....
<
*vjde-wizard*
Wizard ~
Wizard is a tool template tools.
It's generated from a definition file and used by any language.
Default template file:
Note:$VIM/vimfiles/plugin/vjde/tlds/java.vjde
Everyone can define a new template and use it.
Wizard engines generate any lines from the template. >
< Generate a class >
:VjdeNclass
< Generate a class with a main >
:VjdeNmain
< Generate a interface >
:VjdeNinte
< Generate a property >
:VjdeNprop
<
*vjde-template*
Template file~
Template can be defined by you self.
this is a simple description for template file.
a template is started by the following commands
Define a template~
Definition a template started(^:the line of started): >
template {templatename} [;template desc]
<
Definition a parameter used by template( in a template , would zero or more >
parameter {parametername} [;parameter desc]
<
Definition a body of template ( followed by any text : >
body
<
End of a template >
endtemplate
<
Note:All of these worlds (template|temp , parameter|para , body, endtemplate|endt)
must at the beginning of a line.
Note: [;template desc] [;parameter desc] must started with a ';'
Template comment ~
the line is started with a '/' is comment : >
//this is a comment
/this is a comment too
<
Would be ignored
And , the line which is started with '\' will be handled:
remove the '\', leave all the following : >
\//abc
< treated as '//abc' , is not a comment ; >
\body
<treated as word 'body', not the body definition of above .
Template reference ~
Now , we say another two import element.
the line is math following , treated as a template reference : >
%AnthorTemplateName%
< Just like the entity of xml.
Well find the Template which named by "AnthorTemplateName" , and
insert the text of that template here.
Template Variable ~
Template variable once defined , can be used in template body. >
%{variablename}
<this pattern would be replaced by the value of variable which named "variable name"
or : >
%{Time.now}
< Can be a ruby command can be resolved by ruby eval() function.
Once you have to have the String like : >
%{notbetreatedasabove}
<
Can be writed as the following : >
%{"%"}{notbetreatedasabove}
<
Note See $VIM/vimfiles/plugin/vjde/tlds/java.vjde , template JUnitCase for
a powerfull ussage.
*Vjdeinfo* *vjde-define*
Search Definition~
This tool is used to find a variable info or function define.
For example (both java and jsp file is available):
Show class information >
System.out.println(....
^ place sursor here ,then execute:
:Vjdei
the constructor,fields,methods, and inner class will be echoed.
<
Show information of fields >
System.out.println(....
^ place cursor here, then execute:
:Vjdei
the field which is called "out" would be echoed. like:
class : java.lang.System
java.io.PrintWriter out;
<
Show information of methods >
System.out.println(....
^ cursor here
the method which name is started with "println" will be echoed.
like:
class : java.io.PrintWriter
public void print(bool);
public void print(int);
.....
would be printed
<
Show information of taglibs
for a tag definition >
<c:out
^ place cursor here, then execute:
:Vjdei
the defination of tag out is printed as:
<tag>\n<name>out</name>\n.....</tag>
<
For a tag attribute definition >
<c:out value
^ place cursor here, then execute:
:Vjdei
the defination of tag out is printed as:
<attribute>\n<name>value</name>\n.....</attribute>
<
*Vjdegd* *vjde-goto*
Goto Declaration ~
Goto the declaration of current works under cursor. It's search the
path for all source and goto the method or fields declaration. >
:Vjdegd
<
*vjde-tasklist*
We can find something like "//TODO Add something here" is a task list;
This tool is used to search task in a file quickly.
Just a command: >
:TDlist
<
*vjde-command*
command for normal mode:
<leader>\ai
Add import under cursor
<leader>\oe
extend some methods of class
<leader>\oi
implements some interface of current class
<leader>\fr
fix compiler errors with throws statement.
<leader>\ft
fix compiler errors with try-catch statement
<leader>\jc
generate constructor of class with all members.
<leader>\jt
surround line with try-catch statement
<leader>\jd
read the document of symbol that under cursor.
<leader>\jg
generate getter-setter of current member.
<leader>\je
add import for current line,it used for this line >
java.io.PrintWriter
>
would add import statement and change this line to >
PrintWriter
<
<leader>\ep
change current variable to function parameters.
<leader>\em
chnage current variable to member of class.
command for visul mode:
<leader>\js
sort the selected import statement.
<leader>\jt
surround the selected lines with try-catch statement.
<leader>\en
change the selected to a static const defination.
*vjde-variable*
Note:the define like : >
g:vjde_show_paras [0|1]
<
is indicate: the global variable g:vjde_show_paras accept two values , 0 or 1.
the first is the default value.
*vjde_use_window*
g:vjde_use_window [1|0]
sometimes , you want to show some infomation , for example, the document of
a method. your can use normal command >
\jd
<
to show the document the symbol under cursor. Just support for java
method,member. this function is dependented on g:vjde_javadoc_path
*vjde_show_paras*
g:vjde_show_paras [0|1]
while the auto completion is called, the parameter info display or
not.
*vjde_lib_path*
g:vjde_lib_path
the class search path form auto completion.
*vjde_out_path*
g:vjde_out_path
the output path for compile
*vjde_src_path*
g:vjde_src_path
the src path for code template
*vjde_web_app*
g:vjde_web_app
not used ,
*vjde_autoload_stl*
g:vjde_autoload_stl [1|0]
load the Standard Tag libray on startup
*vjde_autoload_taglib*
g:vjde_autoload_taglib [1|0]
load the Tag libray on startup
*g:vjde_taglib_uri*
g:vjde_taglib_uri
a dictory for relation-ship of xml-datafile and taglib uri. >
g:vjde_taglib_uri={'http://java.sun.com/jsp/jstl/core' : 'stl_c' ,
'http://java.sun.com/jsp/jstl/sql' : 'stl_sql' }
<
when this relation is exists, once you used taglib in your file : >
<%@ taglib prefix='c' uri='http://java.sun.com/jsp/jstl/core'%>
<
when your input like : >
<c:<c-x><c-u>
<
I whill call >
:XMLns stl_c c
<
so , autocompletion will do for you.
*vjde_auto_mark*
g:vjde_auto_mark [1|0]
Once Goto the declaration, see |Vjdegd|,mark current as J
*vjde_xml_advance*
g:vjde_xml_advance [1|0]
While completion for xml, search the dtd exactly for the children
elements or all elements.
*vjde_show_preview*
g:vjde_show_preview[1|0]
While Completion for java , split a preview window to show the full
information or not.
*vjde_cfu_java_dot*
g:vjde_cfu_java_dot [1|0]
setup auto command for "."(dot) or not . if ture while . is typed , show all of the completion in a preview window.
*vjde_cfu_java_para*
g:vjde_cfu_java_para [0|1]
setup auto command for "(" or not . if true, while ( is typed, show all
override function and parameter types and throws in a preview window.
*vjde_javadoc_path*
g:vjde_javadoc_path
setup the javadoc path, must be 'd:\javadocs\api\' , end with a
splash, and reference to the api document path.
*vjde_doc_gui_height*
g:vjde_doc_gui_height
document viewer height
*vjde_doc_gui_width*
g:vjde_doc_gui_width
document viewer width
g:vjde_doc_delay
timemillis to delay.
g:vjde_preview_gui [0|1]
setup the preview for gui.
Note:gtk+2.0 runtime is required.
g:vjde_preview_gui_width [350]
preview width for the gui window
g:vjde_preview_gui_height [170]
preview height for the gui window
g:vjde_use_project [0|1]
use project.vim as the project file manager. >
if g:vjde_use_project && !exist(':Project')
runtime plugin/vjde/project.vim
endif
<
While a vjde project is loaded , the project file manager is enabled >
if filereadable('.prj') && exists(':Project')
exec 'Project .prj'
endif
<
g:vjde_completion_key
Completion key for user completion. >
if has('gui_running')
let g:vjde_completion_key='<c-space>'
else
let g:vjde_completion_key='<c-l>'
endif
<
g:vjde_iab_exts
This variable is used for iab tools. All the extension is add can use
<c-j> to completion for code template. >
let g:vjde_iab_exts='cpp;h;c;hpp'
<
g:vjde_java_symbol
For fix tool to find a message.You can change it to your own local: >
if !exists('g:vjde_java_symbol')
let g:vjde_java_symbol= 'cannot find symbol\nsymbol\s*: class \([^ \t;\s]*\)\n'
endif
<
g:vjde_java_exception
For fix tool to find a exception message : >
if !exists('g:vjde_java_exception')
let g:vjde_java_exception = '\(unreported exception \)\([^ \t;]*\);'
endif
<
g:vjde_cs_libs
For completion with csharp, use this parameter, looks like >
let g:vjde_cs_libs='d:/mono-1.1.13.4/lib/mono/2.0/mscorlib.dll;..'
<
g:vjde_cs_cmd
For command line of csharp , looks like: >
let g:vjde_cs_cmd='mono.exe d:/vim/vimfiles/plugin/vjde/CSParser.exe'
<
Default value is : >
let g:vjde_cs_cmd='mono.exe '.g:vjde_install_path.'/vjde/CSParser.exe'
<
ruby
$java_command
the java command line, linux, is tested for "java",
for MS windows , "javaw" is recommend
$vjde_java_cfu
$vjde_java_cfu.found_class
the java completion function implements. It's contain
the last class which is be searched.
*vjde-todolist*
1. template
such as , new class , new interface,new ejb.... OK.
2. extends and implements
select a class and extend or implement it. OK.
3. some other tools
getter/setter generator OK.
auto import OK.
auto documention
*vjde-qa*
Note: Most of setting is auto command enabled .
see vjde.vim for detail.
Q1. I had install this plugin, but , when I use <CTR>-x<CTR>-u, it said, not
found, why?
A1. Check your |cfu| settings. "VjdeCompletionFun" is expected.
Q2. I had used this tool for a java code completion, but I can't use it for jsp,
why?
A2. Check your g:vjde_lib_path settings.The j2ee.jar or another is
include. like: >
let g:vjde_lib_path="/home/me/lib/j2ee.jar:build/classes"
<
Q3. I am MS Windows user, while I use <CTR>-x<CTR>-u, a command window is
occurred, how to avoid it?
A3. You must use "javaw" instead of "java", use this command: >
ruby $java_command="javaw"
<
Q4. I am MS Windows user, I can't see the document , although the
g:vjde_javadoc_path is correctly.
A3. Confirm the wspawn.exe is run enable from you command window.
for 2.00.01 later version. use this command: >
let g:vjde_java_command='javaw'
<
===============================================================
vim:ts=8 sw=8 noexpandtab tw=78 ft=help:

@ -0,0 +1,383 @@
*zencoding.txt* ZenCoding for Vim
-------------------------------------------------------
ZenCoding: vim plugins for HTML and CSS hi-speed coding
-------------------------------------------------------
Author: Yasuhiro Matsumoto <mattn.jp@gmail.com>
WebSite: http://mattn.kaoriya.net/
Repository: http://github.com/mattn/zencoding-vim
Site: http://mattn.github.com/zencoding-vim
License: BSD style license
==============================================================================
CONTENTS *zencoding-contents*
Introduction |zencoding-introduction|
Install |zencoding-install|
Tutorial |zencoding-tutorial|
1. Expand Abbreviation |zencoding-expandabbr|
2. Wrap with Abbreviation |zencoding-wrap-wtih-abbreviation|
3. Balance Tag Inward |zencoding-balance-tag-inward|
4. Balance Tag Outward |zencoding-balance-tag-outward|
5. Go to Next Edit Point |zencoding-goto-next-point| |<C-Y>n|
6. Go to Previous Edit Point |zencoding-goto-previous-point|
7. Update <img> Size |zencoding-update-image-size|
8. Merge Lines |zencoding-merge-lines|
9. Remove Tag |zencoding-remove-tag|
10. Split/Join Tag |zencoding-split-join-tag|
11. Toggle Comment |zencoding-toggle-comment|
12. Make anchor from URL |zencoding-make-anchor-url|
13. Make quoted text from URL |zencoding-quoted-text-url|
Customize |zencoding-customize|
1. Key Mappings |zencoding-customize-keymappings|
2. Indent Size |zencoding-indent-size|
3. Define Tag's Behavior |zencoding-define-tags-behavior|
4. Complete Tag |zencoding-complete-tag|
ToDo |zencoding-todo|
==============================================================================
INTRODUCTION *zencoding-introduction* *zencoding*
|ZenCoding| is an editor plugin for high-speed HTML, XML, XSL (or any other
structured code format) coding and editing. The core of this plugin is a
powerful abbreviation engine which allows you to expand expressions?similar to
CSS selectors?into HTML code:
>
div#page>div.logo+ul#navigation>li*5>a
<
...can be expanded into:
>
<div id="page">
<div class="logo"></div>
<ul id="navigation">
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
<li><a href=""></a></li>
</ul>
</div>
<
Read more about current Zen Coding syntax
http://code.google.com/p/zen-coding/wiki/ZenHTMLSelectorsEn
Abbreviation engine has a modular structure which allows you to expand
abbreviations into different languages. Zen Coding currently supports CSS,
HTML, XML/XSL and HAML languages via filters.
==============================================================================
INSTALL *zencoding-install*
Install the distributed files into Vim runtime directory which is usually
~/.vim/, or $HOME/vimfiles on Windows.
If you install pathogen that provided from Tim Pope, you should extract the
file into 'bundle' directory.
==============================================================================
TUTORIAL *zencoding-tutorial*
If you are seeing this file as :help, then you can't edit this file.
You should copy this section and create new buffer, paste and write as
'zencoding-tutor.txt'. Formally, open the file to start tutorial.
1. Expand Abbreviation *zencoding-expandabbr* *<C-Y>,*
Type abbreviation as 'div>p#foo$*3>a' and type |<C-Y>,|.
>
<div>
<p id="foo1">
<a href=""></a>
</p>
<p id="foo2">
<a href=""></a>
</p>
<p id="foo3">
<a href=""></a>
</p>
</div>
<
2. Wrap with Abbreviation *zencoding-wrap-wtih-abbreviation* *v_<C-Y>,*
Write as below.
>
test1
test2
test3
<
Then do visual select(line wize) and type |<C-Y>,|.
If you request 'Tag:', then type 'ul>li*'.
>
<ul>
<li>test1</li>
<li>test2</li>
<li>test3</li>
</ul>
<
If you type tag as 'blockquote', then you'll see as following.
>
<blockquote>
test1
test2
test3
</blockquote>
<
3. Balance Tag Inward *zencoding-balance-tag-inward* *<C-Y>d*
To select inward of ul tag, type |<C-Y>d| in insert mode.
>
<ul>
* <li class="list1"></li>
<li class="list2"></li>
<li class="list3"></li>
</ul>
<
If cursor is at '*', |<C-Y>d| select from begin of <ul> to end of </ul>.
If cursor is at first of <li>, it select <li class="list1"></li>.
4. Balance Tag Outward *zencoding-balance-tag-outward* *<C-Y>D*
To select outward of ul tag, insert mode, type <C-Y>D in insert mode.
>
<ul>
* <li class="list1"></li>
<li class="list2"></li>
<li class="list3"></li>
</ul>
<
If cursor is at '*', |<C-Y>d| select from next letter of <ul> to previous
letter of </ul>.
If cursor is at first of <li>, it select <li class="list1"></li>.
5. Go to Next Edit Point *zencoding-goto-next-point* *<C-Y>n*
To jump next point that need to edit, type |<C-Y>n| in insert mode.
>
* <div id="foo" class="">foo</div>
<div id="bar" class="bar"></li>
<
If cursor is at '*', |<C-Y>n| move a cursor into attribute value of div
specified id as 'foo'. And type again |<C-Y>n| move a cursor into inner of
div specified id as 'bar'.
6. Go to Previous Edit Point *zencoding-goto-previous-point* *<C-Y>N*
To jump previous point that need to edit, type |<C-Y>N| in insert mode.
>
<div id="foo" class="">foo</div>
<div id="bar" class="bar"></li> *
<
If cursor is at '*', |<C-Y>N| move a cursor into div specified id as 'bar'.
And type again |<C-Y>N| move a cursor into attribute value of 'foo'.
7. Update <img> Size *zencoding-update-image-size* *<C-Y>i*
To expand or update size of image, type |<C-Y>i| on img tag
>
<img src="foo.png" />
<
Type '<c-y>i' on img tag
>
<img src="foo.png" width="32" height="32" />
<
If you change image, then type it again. it will be following.
>
<img src="foo-48.png" width="32" height="48" />
<
8. Merge Lines *zencoding-merge-lines*
To join multi line text like following, type |J|.
>
<ul>
<li class="list1"></li>
<li class="list2"></li>
<li class="list3"></li>
</ul>
<
If you select part of line include <li> and type |J|, it will be following.
>
<ul>
<li class="list1"></li><li class="list2"></li><li class="list3"></li>
</ul>
<
9. Remove Tag *zencoding-remove-tag* *<C-Y>k*
To remove tag in the block, type |<C-Y>k|.
>
<div class="foo">
<a>cursor is here</a>
</div>
<
Type |<C-Y>k| in insert mode, then
>
<div class="foo">
</div>
<
And type |<C-Y>k| in there again, then div will be removed.
10. Split/Join Tag *zencoding-split-join-tag* *<C-Y>j*
To join block, type |<C-Y>j|.
>
<div class="foo">
cursor is here
</div>
<
Type |<C-Y>j| in insert mode. then,
>
<div class="foo"/>
<
And type |<C-Y>j| in there again.
>
<div class="foo">
</div>
<
11. Toggle Comment *zencoding-toggle-comment* *<C-Y>/*
Move cursor to block
>
<div>
hello world
</div>
<
Type '<c-y>/' in insert mode.
>
<!-- <div>
hello world
</div> -->
<
Type '<c-y>/' in there again.
>
<div>
hello world
</div>
<
12. Make anchor from URL *zencoding-make-anchor-url* *<C-Y>a*
Move cursor to URL
>
http://www.google.com/
<
Type |<C-Y>a|
>
<a href="http://www.google.com/">Google</a>
<
13. Make quoted text from URL *zencoding-quoted-text-url* *<C-Y>A*
Move cursor to URL
>
http://github.com/
<
Type |<C-Y>A|
>
<blockquote class="quote">
<a href="http://github.com/">Secure source code hosting and collaborative development - GitHub</a><br />
<p>How does it work? Get up and running in seconds by forking a project, pushing an existing repository...</p>
<cite>http://github.com/</cite>
</blockquote>
<
==============================================================================
CUSTOMIZE *zencoding-customize*
1. Key Mapping *zencoding-customize-keymappings*
To specify leading key for expanding or balance tag, or for all,
Add this line in your vimrc: >
>
let g:user_zen_leader_key = '<c-y>'
<
Or if you prefer to map for each actions, then you set each variables.
'user_zen_expandabbr_key'
'user_zen_expandword_key'
'user_zen_balancetaginward_key'
'user_zen_balancetagoutward_key'
'user_zen_next_key'
'user_zen_prev_key'
'user_zen_imagesize_key'
'user_zen_togglecomment_key'
'user_zen_splitjointag_key'
'user_zen_removetag_key'
'user_zen_anchorizeurl_key'
'user_zen_anchorizesummary_key'
2. Indent Size *zencoding-indent-size*
To change indent size of html, add this code in your vimrc.
>
let g:user_zen_settings = {
\ 'html' : {
\ 'indentation' : ' '
\ },
\}
<
If you prefer to change global indent size then add this.
>
let g:user_zen_settings = {
\ 'indentation' : ' '
\}
<
3. Define Tag's Behavior *zencoding-define-tags-behavior*
zencoding.vim can change behavior of expanding abbreviation for each
filetypes as |Dictionary|. for details, see official site of zencoding.
for example, vimmer can add following.
>
let g:user_zen_settings = {
\ 'lang' : 'ja',
\ 'html' : {
\ 'filters' : 'html',
\ 'indentation' : ' '
\ },
\ 'perl' : {
\ 'indentation' : ' ',
\ 'aliases' : {
\ 'req' : "require '|'"
\ },
\ 'snippets' : {
\ 'use' : "use strict\nuse warnings\n\n",
\ 'w' : "warn \"${cursor}\";",
\ },
\ },
\ 'php' : {
\ 'extends' : 'html',
\ 'filters' : 'html,c',
\ },
\ 'css' : {
\ 'filters' : 'fc',
\ },
\ 'javascript' : {
\ 'snippets' : {
\ 'jq' : "$(function() {\n\t${cursor}${child}\n});",
\ 'jq:each' : "$.each(arr, function(index, item)\n\t${child}\n});",
\ 'fn' : "(function() {\n\t${cursor}\n})();",
\ 'tm' : "setTimeout(function() {\n\t${cursor}\n}, 100);",
\ },
\ },
\ 'java' : {
\ 'indentation' : ' ',
\ 'snippets' : {
\ 'main': "public static void main(String[] args) {\n\t|\n}",
\ 'println': "System.out.println(\"|\");",
\ 'class': "public class | {\n}\n",
\ },
\ },
\}
<
4. Complete Tag *zencoding-complete-tag*
If you want to complete tags using |ominifunc| then add this.
>
let g:use_zen_complete_tag = 1
<
==============================================================================
TODO *zencoding-todo*
* wrapping inline selected.
* more documents.
* more contributor.
* more time to improve zencodig.vim.
==============================================================================
vim:tw=78:ts=8:ft=help:norl:noet:fen:fdl=0:

@ -0,0 +1,6 @@
" Install Filetype detection for CSV files
augroup ftdetect_csv
au!
au BufRead,BufNewFile *.csv,*.dat,*.tsv,*.tab set filetype=csv
augroup END

@ -0,0 +1,2 @@
autocmd BufNewFile,BufRead *.haml setf haml
autocmd BufNewFile,BufRead *.sass setf sass

@ -0,0 +1,5 @@
augroup filetypedetect
au! BufRead,BufNewFile *.js.opa setfiletype opajs
au! BufRead,BufNewFile *.classic.opa setfiletype opa
au! BufRead,BufNewFile *.opa setfiletype opa
augroup END

@ -0,0 +1 @@
au BufRead,BufNewFile *.scala set filetype=scala

@ -0,0 +1,70 @@
pyflakes-vim
============
A Vim plugin for checking Python code on the fly.
PyFlakes catches common Python errors like mistyping a variable name or
accessing a local before it is bound, and also gives warnings for things like
unused imports.
pyflakes-vim uses the output from PyFlakes to highlight errors in your code.
Make sure to check vim.org_ for the latest updates.
.. _pyflakes.vim: http://www.vim.org/scripts/script.php?script_id=2441
.. _vim.org: http://www.vim.org/scripts/script.php?script_id=2441
Quick Installation
------------------
1. Make sure your ``.vimrc`` has::
filetype on " enables filetype detection
filetype plugin on " enables filetype specific plugins
2. Download the latest release_.
3. Unzip ``pyflakes.vim`` and the ``pyflakes`` directory into
``~/.vim/ftplugin/python`` (or somewhere similar on your
`runtime path`_ that will be sourced for Python files).
.. _release: http://www.vim.org/scripts/script.php?script_id=2441
.. _runtime path: http://vimdoc.sourceforge.net/htmldoc/options.html#'runtimepath'
Installation
------------
If you downloaded this from vim.org_, then just drop the contents of the zip
file into ``~/.vim/ftplugin/python``.
Otherwise, you'll need PyFlakes on your PYTHONPATH somewhere. I recommend
getting my PyFlakes_ fork, which uses the ``_ast`` module new to Python 2.5,
and is faster and more current than PyFlakes' old usage of the deprecated
``compiler`` module.
.. _vim.org: http://www.vim.org/scripts/script.php?script_id=2441
.. _PyFlakes: http://github.com/kevinw/pyflakes
Hacking
-------
::
git clone git://github.com/kevinw/pyflakes-vim.git
cd pyflakes-vim
git clone git://github.com/kevinw/pyflakes.git
TODO
----
* signs_ support (show warning and error icons to left of the buffer area)
* configuration variables
* parse or intercept useful output from the warnings module
.. _signs: http://www.vim.org/htmldoc/sign.html
Changelog
---------
Please see http://www.vim.org/scripts/script.php?script_id=2441 for a history of
all changes.

File diff suppressed because it is too large Load Diff

@ -0,0 +1,66 @@
" Vim filetype plugin
" Language: Haml
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
let s:save_cpo = &cpo
set cpo-=C
" Define some defaults in case the included ftplugins don't set them.
let s:undo_ftplugin = ""
let s:browsefilter = "All Files (*.*)\t*.*\n"
let s:match_words = ""
runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim
unlet! b:did_ftplugin
" Override our defaults if these were set by an included ftplugin.
if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin
unlet b:undo_ftplugin
endif
if exists("b:browsefilter")
let s:browsefilter = b:browsefilter
unlet b:browsefilter
endif
if exists("b:match_words")
let s:match_words = b:match_words
unlet b:match_words
endif
runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim
let b:did_ftplugin = 1
" Combine the new set of values with those previously included.
if exists("b:undo_ftplugin")
let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin
endif
if exists ("b:browsefilter")
let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter
endif
if exists("b:match_words")
let s:match_words = b:match_words . ',' . s:match_words
endif
" Change the browse dialog on Win32 to show mainly Haml-related files
if has("gui_win32")
let b:browsefilter="Haml Files (*.haml)\t*.haml\nSass Files (*.sass)\t*.sass\n" . s:browsefilter
endif
" Load the combined list of match_words for matchit.vim
if exists("loaded_matchit")
let b:match_words = s:match_words
endif
setlocal comments= commentstring=-#\ %s
let b:undo_ftplugin = "setl cms< com< "
\ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin
let &cpo = s:save_cpo
" vim:set sw=2:

@ -0,0 +1,10 @@
" Helper function for (x)html snippets
if exists('s:did_snip_helper') || &cp || !exists('loaded_snips')
finish
endif
let s:did_snip_helper = 1
" Automatically closes tag if in xhtml
fun! Close()
return stridx(&ft, 'xhtml') == -1 ? '' : ' /'
endf

@ -0,0 +1,203 @@
" pyflakes.vim - A script to highlight Python code on the fly with warnings
" from Pyflakes, a Python lint tool.
"
" Place this script and the accompanying pyflakes directory in
" .vim/after/ftplugin/python.
"
" See README for additional installation and information.
"
" Thanks to matlib.vim for ideas/code on interactive linting.
"
" Maintainer: Kevin Watters <kevin.watters@gmail.com>
" Version: 0.1
if exists("b:did_pyflakes_plugin")
finish " only load once
else
let b:did_pyflakes_plugin = 1
endif
if !exists('g:pyflakes_builtins')
let g:pyflakes_builtins = []
endif
if !exists("b:did_python_init")
python << EOF
import vim
import os.path
import sys
# get the directory this script is in: the pyflakes python module should be installed there.
scriptdir = os.path.join(os.path.dirname(vim.eval('expand("<sfile>")')), 'pyflakes')
sys.path.insert(0, scriptdir)
from pyflakes import checker, ast, messages
from operator import attrgetter
class SyntaxError(messages.Message):
message = 'could not compile: %s'
def __init__(self, filename, lineno, col, message):
messages.Message.__init__(self, filename, lineno, col)
self.message_args = (message,)
class blackhole(object):
write = flush = lambda *a, **k: None
def check(buffer):
filename = buffer.name
contents = '\n'.join(buffer[:])
builtins = []
try:
builtins = eval(vim.eval('string(g:pyflakes_builtins)'))
except Exception:
pass
try:
# TODO: use warnings filters instead of ignoring stderr
old_stderr, sys.stderr = sys.stderr, blackhole()
try:
tree = ast.parse(contents, filename)
finally:
sys.stderr = old_stderr
except:
try:
value = sys.exc_info()[1]
lineno, offset, line = value[1][1:]
except IndexError:
lineno, offset, line = 1, 0, ''
if line.endswith("\n"):
line = line[:-1]
return [SyntaxError(filename, lineno, offset, str(value))]
else:
w = checker.Checker(tree, filename, builtins = builtins)
w.messages.sort(key = attrgetter('lineno'))
return w.messages
def vim_quote(s):
return s.replace("'", "''")
EOF
let b:did_python_init = 1
endif
au BufLeave <buffer> call s:ClearPyflakes()
au BufEnter <buffer> call s:RunPyflakes()
au InsertLeave <buffer> call s:RunPyflakes()
au InsertEnter <buffer> call s:RunPyflakes()
au BufWritePost <buffer> call s:RunPyflakes()
au CursorHold <buffer> call s:RunPyflakes()
au CursorHoldI <buffer> call s:RunPyflakes()
au CursorHold <buffer> call s:GetPyflakesMessage()
au CursorMoved <buffer> call s:GetPyflakesMessage()
if !exists("*s:PyflakesUpdate")
function s:PyflakesUpdate()
silent call s:RunPyflakes()
call s:GetPyflakesMessage()
endfunction
endif
" Call this function in your .vimrc to update PyFlakes
if !exists(":PyflakesUpdate")
command PyflakesUpdate :call s:PyflakesUpdate()
endif
" Hook common text manipulation commands to update PyFlakes
" TODO: is there a more general "text op" autocommand we could register
" for here?
noremap <buffer><silent> dd dd:PyflakesUpdate<CR>
noremap <buffer><silent> dw dw:PyflakesUpdate<CR>
noremap <buffer><silent> u u:PyflakesUpdate<CR>
noremap <buffer><silent> <C-R> <C-R>:PyflakesUpdate<CR>
" WideMsg() prints [long] message up to (&columns-1) length
" guaranteed without "Press Enter" prompt.
if !exists("*s:WideMsg")
function s:WideMsg(msg)
let x=&ruler | let y=&showcmd
set noruler noshowcmd
redraw
echo a:msg
let &ruler=x | let &showcmd=y
endfun
endif
if !exists("*s:RunPyflakes")
function s:RunPyflakes()
highlight link PyFlakes SpellBad
if exists("b:cleared")
if b:cleared == 0
silent call s:ClearPyflakes()
let b:cleared = 1
endif
else
let b:cleared = 1
endif
let b:matched = []
let b:matchedlines = {}
python << EOF
for w in check(vim.current.buffer):
vim.command('let s:matchDict = {}')
vim.command("let s:matchDict['lineNum'] = " + str(w.lineno))
vim.command("let s:matchDict['message'] = '%s'" % vim_quote(w.message % w.message_args))
vim.command("let b:matchedlines[" + str(w.lineno) + "] = s:matchDict")
if w.col is None:
# without column information, just highlight the whole line
# (minus the newline)
vim.command(r"let s:mID = matchadd('PyFlakes', '\%" + str(w.lineno) + r"l\n\@!')")
else:
# with a column number, highlight the first keyword there
vim.command(r"let s:mID = matchadd('PyFlakes', '^\%" + str(w.lineno) + r"l\_.\{-}\zs\k\+\k\@!\%>" + str(w.col) + r"c')")
vim.command("call add(b:matched, s:matchDict)")
EOF
let b:cleared = 0
endfunction
end
" keep track of whether or not we are showing a message
let b:showing_message = 0
if !exists("*s:GetPyflakesMessage")
function s:GetPyflakesMessage()
let s:cursorPos = getpos(".")
" if there's a message for the line the cursor is currently on, echo
" it to the console
if has_key(b:matchedlines, s:cursorPos[1])
let s:pyflakesMatch = get(b:matchedlines, s:cursorPos[1])
call s:WideMsg(s:pyflakesMatch['message'])
let b:showing_message = 1
return
endif
" otherwise, if we're showing a message, clear it
if b:showing_message == 1
echo
let b:showing_message = 0
endif
endfunction
endif
if !exists('*s:ClearPyflakes')
function s:ClearPyflakes()
let s:matches = getmatches()
for s:matchId in s:matches
if s:matchId['group'] == 'PyFlakes'
call matchdelete(s:matchId['id'])
endif
endfor
let b:matched = []
let b:matchedlines = {}
let b:cleared = 1
endfunction
endif

@ -0,0 +1,21 @@
Copyright (c) 2005 Divmod, Inc., http://www.divmod.com/
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

@ -0,0 +1,36 @@
pyflakes
========
This version of PyFlakes_ has been improved to use Python's newer ``ast``
module, instead of ``compiler``. So code checking happens faster, and will stay
up to date with new language changes.
.. _PyFlakes: http://http://www.divmod.org/trac/wiki/DivmodPyflakes
TODO
----
Importing several modules from the same package results in unnecessary warnings:
::
import a.b
import a.c # Redefinition of unused "a" from line 1
The following construct for defining a function differently depending on some
condition results in a redefinition warning:
::
if some_condition:
def foo(): do_foo()
else:
def foo(): do_bar() # redefinition of function 'foo' from line 2
IDE Integration
---------------
* vim: pyflakes-vim_
.. _pyflakes-vim: http://github.com/kevinw/pyflakes-vim

@ -0,0 +1,4 @@
#!/usr/bin/python
from pyflakes.scripts.pyflakes import main
main()

@ -0,0 +1,311 @@
# -*- coding: utf-8 -*-
"""
ast
~~~
The `ast` module helps Python applications to process trees of the Python
abstract syntax grammar. The abstract syntax itself might change with
each Python release; this module helps to find out programmatically what
the current grammar looks like and allows modifications of it.
An abstract syntax tree can be generated by passing `ast.PyCF_ONLY_AST` as
a flag to the `compile()` builtin function or by using the `parse()`
function from this module. The result will be a tree of objects whose
classes all inherit from `ast.AST`.
A modified abstract syntax tree can be compiled into a Python code object
using the built-in `compile()` function.
Additionally various helper functions are provided that make working with
the trees simpler. The main intention of the helper functions and this
module in general is to provide an easy to use interface for libraries
that work tightly with the python syntax (template engines for example).
:copyright: Copyright 2008 by Armin Ronacher.
:license: Python License.
"""
from _ast import *
from _ast import __version__
def parse(expr, filename='<unknown>', mode='exec'):
"""
Parse an expression into an AST node.
Equivalent to compile(expr, filename, mode, PyCF_ONLY_AST).
"""
return compile(expr, filename, mode, PyCF_ONLY_AST)
def literal_eval(node_or_string):
"""
Safely evaluate an expression node or a string containing a Python
expression. The string or node provided may only consist of the following
Python literal structures: strings, numbers, tuples, lists, dicts, booleans,
and None.
"""
_safe_names = {'None': None, 'True': True, 'False': False}
if isinstance(node_or_string, basestring):
node_or_string = parse(node_or_string, mode='eval')
if isinstance(node_or_string, Expression):
node_or_string = node_or_string.body
def _convert(node):
if isinstance(node, Str):
return node.s
elif isinstance(node, Num):
return node.n
elif isinstance(node, Tuple):
return tuple(map(_convert, node.elts))
elif isinstance(node, List):
return list(map(_convert, node.elts))
elif isinstance(node, Dict):
return dict((_convert(k), _convert(v)) for k, v
in zip(node.keys, node.values))
elif isinstance(node, Name):
if node.id in _safe_names:
return _safe_names[node.id]
raise ValueError('malformed string')
return _convert(node_or_string)
def dump(node, annotate_fields=True, include_attributes=False):
"""
Return a formatted dump of the tree in *node*. This is mainly useful for
debugging purposes. The returned string will show the names and the values
for fields. This makes the code impossible to evaluate, so if evaluation is
wanted *annotate_fields* must be set to False. Attributes such as line
numbers and column offsets are not dumped by default. If this is wanted,
*include_attributes* can be set to True.
"""
def _format(node):
if isinstance(node, AST):
fields = [(a, _format(b)) for a, b in iter_fields(node)]
rv = '%s(%s' % (node.__class__.__name__, ', '.join(
('%s=%s' % field for field in fields)
if annotate_fields else
(b for a, b in fields)
))
if include_attributes and node._attributes:
rv += fields and ', ' or ' '
rv += ', '.join('%s=%s' % (a, _format(getattr(node, a)))
for a in node._attributes)
return rv + ')'
elif isinstance(node, list):
return '[%s]' % ', '.join(_format(x) for x in node)
return repr(node)
if not isinstance(node, AST):
raise TypeError('expected AST, got %r' % node.__class__.__name__)
return _format(node)
def copy_location(new_node, old_node):
"""
Copy source location (`lineno` and `col_offset` attributes) from
*old_node* to *new_node* if possible, and return *new_node*.
"""
for attr in 'lineno', 'col_offset':
if attr in old_node._attributes and attr in new_node._attributes \
and hasattr(old_node, attr):
setattr(new_node, attr, getattr(old_node, attr))
return new_node
def fix_missing_locations(node):
"""
When you compile a node tree with compile(), the compiler expects lineno and
col_offset attributes for every node that supports them. This is rather
tedious to fill in for generated nodes, so this helper adds these attributes
recursively where not already set, by setting them to the values of the
parent node. It works recursively starting at *node*.
"""
def _fix(node, lineno, col_offset):
if 'lineno' in node._attributes:
if not hasattr(node, 'lineno'):
node.lineno = lineno
else:
lineno = node.lineno
if 'col_offset' in node._attributes:
if not hasattr(node, 'col_offset'):
node.col_offset = col_offset
else:
col_offset = node.col_offset
for child in iter_child_nodes(node):
_fix(child, lineno, col_offset)
_fix(node, 1, 0)
return node
def add_col_end(node):
def _fix(node, next):
children = list(iter_child_nodes(node))
for i, child in enumerate(children):
next_offset = children[i+1].col_offset if i < len(children) else next.col_offset
child.col_end = next_offset
def increment_lineno(node, n=1):
"""
Increment the line number of each node in the tree starting at *node* by *n*.
This is useful to "move code" to a different location in a file.
"""
if 'lineno' in node._attributes:
node.lineno = getattr(node, 'lineno', 0) + n
for child in walk(node):
if 'lineno' in child._attributes:
child.lineno = getattr(child, 'lineno', 0) + n
return node
def iter_fields(node):
"""
Yield a tuple of ``(fieldname, value)`` for each field in ``node._fields``
that is present on *node*.
"""
if node._fields is None:
return
for field in node._fields:
try:
yield field, getattr(node, field)
except AttributeError:
pass
def iter_child_nodes(node):
"""
Yield all direct child nodes of *node*, that is, all fields that are nodes
and all items of fields that are lists of nodes.
"""
for name, field in iter_fields(node):
if isinstance(field, AST):
yield field
elif isinstance(field, list):
for item in field:
if isinstance(item, AST):
yield item
def get_docstring(node, clean=True):
"""
Return the docstring for the given node or None if no docstring can
be found. If the node provided does not have docstrings a TypeError
will be raised.
"""
if not isinstance(node, (FunctionDef, ClassDef, Module)):
raise TypeError("%r can't have docstrings" % node.__class__.__name__)
if node.body and isinstance(node.body[0], Expr) and \
isinstance(node.body[0].value, Str):
if clean:
import inspect
return inspect.cleandoc(node.body[0].value.s)
return node.body[0].value.s
def walk(node):
"""
Recursively yield all child nodes of *node*, in no specified order. This is
useful if you only want to modify nodes in place and don't care about the
context.
"""
from collections import deque
todo = deque([node])
while todo:
node = todo.popleft()
todo.extend(iter_child_nodes(node))
yield node
class NodeVisitor(object):
"""
A node visitor base class that walks the abstract syntax tree and calls a
visitor function for every node found. This function may return a value
which is forwarded by the `visit` method.
This class is meant to be subclassed, with the subclass adding visitor
methods.
Per default the visitor functions for the nodes are ``'visit_'`` +
class name of the node. So a `TryFinally` node visit function would
be `visit_TryFinally`. This behavior can be changed by overriding
the `visit` method. If no visitor function exists for a node
(return value `None`) the `generic_visit` visitor is used instead.
Don't use the `NodeVisitor` if you want to apply changes to nodes during
traversing. For this a special visitor exists (`NodeTransformer`) that
allows modifications.
"""
def visit(self, node):
"""Visit a node."""
method = 'visit_' + node.__class__.__name__
visitor = getattr(self, method, self.generic_visit)
return visitor(node)
def generic_visit(self, node):
"""Called if no explicit visitor function exists for a node."""
for field, value in iter_fields(node):
if isinstance(value, list):
for item in value:
if isinstance(item, AST):
self.visit(item)
elif isinstance(value, AST):
self.visit(value)
class NodeTransformer(NodeVisitor):
"""
A :class:`NodeVisitor` subclass that walks the abstract syntax tree and
allows modification of nodes.
The `NodeTransformer` will walk the AST and use the return value of the
visitor methods to replace or remove the old node. If the return value of
the visitor method is ``None``, the node will be removed from its location,
otherwise it is replaced with the return value. The return value may be the
original node in which case no replacement takes place.
Here is an example transformer that rewrites all occurrences of name lookups
(``foo``) to ``data['foo']``::
class RewriteName(NodeTransformer):
def visit_Name(self, node):
return copy_location(Subscript(
value=Name(id='data', ctx=Load()),
slice=Index(value=Str(s=node.id)),
ctx=node.ctx
), node)
Keep in mind that if the node you're operating on has child nodes you must
either transform the child nodes yourself or call the :meth:`generic_visit`
method for the node first.
For nodes that were part of a collection of statements (that applies to all
statement nodes), the visitor may also return a list of nodes rather than
just a single node.
Usually you use the transformer like this::
node = YourTransformer().visit(node)
"""
def generic_visit(self, node):
for field, old_value in iter_fields(node):
old_value = getattr(node, field, None)
if isinstance(old_value, list):
new_values = []
for value in old_value:
if isinstance(value, AST):
value = self.visit(value)
if value is None:
continue
elif not isinstance(value, AST):
new_values.extend(value)
continue
new_values.append(value)
old_value[:] = new_values
elif isinstance(old_value, AST):
new_node = self.visit(old_value)
if new_node is None:
delattr(node, field)
else:
setattr(node, field, new_node)
return node

@ -0,0 +1,389 @@
import ast
from pyflakes import messages
import __builtin__
allowed_before_future = (ast.Module, ast.ImportFrom, ast.Expr, ast.Str)
defined_names = set(('__file__', '__builtins__'))
class Binding(object):
"""
@ivar used: pair of (L{Scope}, line-number) indicating the scope and
line number that this binding was last used
"""
def __init__(self, name, source):
self.name = name
self.source = source
self.used = False
def __str__(self):
return self.name
def __repr__(self):
return '<%s object %r from line %r at 0x%x>' % (self.__class__.__name__,
self.name,
self.source.lineno,
id(self))
class UnBinding(Binding):
'''Created by the 'del' operator.'''
class Importation(Binding):
def __init__(self, name, source):
name = name.split('.')[0]
super(Importation, self).__init__(name, source)
class Assignment(Binding):
pass
class FunctionDefinition(Binding):
pass
class Scope(dict):
import_starred = False # set to True when import * is found
def __repr__(self):
return '<%s at 0x%x %s>' % (self.__class__.__name__, id(self), dict.__repr__(self))
def __init__(self):
super(Scope, self).__init__()
class ClassScope(Scope):
pass
class FunctionScope(Scope):
"""
I represent a name scope for a function.
@ivar globals: Names declared 'global' in this function.
"""
def __init__(self):
super(FunctionScope, self).__init__()
self.globals = {}
class ModuleScope(Scope):
pass
class Checker(ast.NodeVisitor):
def __init__(self, tree, filename='(none)', builtins = None):
ast.NodeVisitor.__init__(self)
self.deferred = []
self.dead_scopes = []
self.messages = []
self.filename = filename
self.scope_stack = [ModuleScope()]
self.futures_allowed = True
self.builtins = frozenset(builtins or [])
self.visit(tree)
for handler, scope in self.deferred:
self.scope_stack = scope
handler()
del self.scope_stack[1:]
self.pop_scope()
self.check_dead_scopes()
def defer(self, callable):
'''Schedule something to be called after just before completion.
This is used for handling function bodies, which must be deferred
because code later in the file might modify the global scope. When
`callable` is called, the scope at the time this is called will be
restored, however it will contain any new bindings added to it.
'''
self.deferred.append( (callable, self.scope_stack[:]) )
def check_dead_scopes(self):
# Check for modules that were imported but unused
for scope in self.dead_scopes:
for importation in scope.itervalues():
if isinstance(importation, Importation) and not importation.used:
self.report(messages.UnusedImport, importation.source.lineno, importation.name)
def push_function_scope(self):
self.scope_stack.append(FunctionScope())
def push_class_scope(self):
self.scope_stack.append(ClassScope())
def pop_scope(self):
scope = self.scope_stack.pop()
self.dead_scopes.append(scope)
@property
def scope(self):
return self.scope_stack[-1]
def report(self, message_class, *args, **kwargs):
self.messages.append(message_class(self.filename, *args, **kwargs))
def visit_Import(self, node):
for name_node in node.names:
# "import bar as foo" -> name=bar, asname=foo
name = name_node.asname or name_node.name
self.add_binding(node, Importation(name, node))
def visit_GeneratorExp(self, node):
for generator in node.generators:
self.visit(generator.iter)
self.assign_vars(generator.target)
for generator in node.generators:
if hasattr(node, 'elt'):
self.visit(node.elt)
self.visit_nodes(generator.ifs)
visit_ListComp = visit_GeneratorExp
def visit_For(self, node):
'''
Process bindings for loop variables.
'''
self.visit_nodes(node.iter)
for var in self.flatten(node.target):
upval = self.scope.get(var.id)
if isinstance(upval, Importation) and upval.used:
self.report(messages.ImportShadowedByLoopVar,
node.lineno, node.col_offset, var.id, upval.source.lineno)
self.add_binding(var, Assignment(var.id, var))
self.visit_nodes(node.body + node.orelse)
def visit_FunctionDef(self, node):
try:
decorators = node.decorator_list
except AttributeError:
# Use .decorators for Python 2.5 compatibility
decorators = node.decorators
self.visit_nodes(decorators)
self.add_binding(node, FunctionDefinition(node.name, node))
self.visit_Lambda(node)
def visit_Lambda(self, node):
self.visit_nodes(node.args.defaults)
def run_function():
self.push_function_scope()
# Check for duplicate arguments
argnames = set()
for arg in self.flatten(node.args.args):
if arg.id in argnames:
self.report(messages.DuplicateArgument, arg.lineno, arg.col_offset, arg.id)
argnames.add(arg.id)
self.assign_vars(node.args.args, report_redef=False)
if node.args.vararg is not None:
self.add_binding(node, Assignment(node.args.vararg, node), False)
if node.args.kwarg is not None:
self.add_binding(node, Assignment(node.args.kwarg, node), False)
self.visit_nodes(node.body)
self.pop_scope()
self.defer(run_function)
def visit_Name(self, node):
'''
Locate names in locals / function / globals scopes.
'''
scope, name = self.scope, node.id
# try local scope
import_starred = scope.import_starred
try:
scope[name].used = (scope, node.lineno, node.col_offset)
except KeyError:
pass
else:
return
# try enclosing function scopes
for func_scope in self.scope_stack[-2:0:-1]:
import_starred = import_starred or func_scope.import_starred
if not isinstance(func_scope, FunctionScope):
continue
try:
func_scope[name].used = (scope, node.lineno, node.col_offset)
except KeyError:
pass
else:
return
# try global scope
import_starred = import_starred or self.scope_stack[0].import_starred
try:
self.scope_stack[0][node.id].used = (scope, node.lineno, node.col_offset)
except KeyError:
if not import_starred and not self.is_builtin(name):
self.report(messages.UndefinedName, node.lineno, node.col_offset, name)
def assign_vars(self, targets, report_redef=True):
scope = self.scope
for target in self.flatten(targets):
name = target.id
# if the name hasn't already been defined in the current scope
if isinstance(scope, FunctionScope) and name not in scope:
# for each function or module scope above us
for upscope in self.scope_stack[:-1]:
if not isinstance(upscope, (FunctionScope, ModuleScope)):
continue
upval = upscope.get(name)
# if the name was defined in that scope, and the name has
# been accessed already in the current scope, and hasn't
# been declared global
if upval is not None:
if upval.used and upval.used[0] is scope and name not in scope.globals:
# then it's probably a mistake
self.report(messages.UndefinedLocal,
upval.used[1], upval.used[2], name, upval.source.lineno, upval.source.col_offset)
self.add_binding(target, Assignment(name, target), report_redef)
def visit_Assign(self, node):
for target in node.targets:
self.visit_nodes(node.value)
self.assign_vars(node.targets)
def visit_Delete(self, node):
for target in self.flatten(node.targets):
if isinstance(self.scope, FunctionScope) and target.id in self.scope.globals:
del self.scope.globals[target.id]
else:
self.add_binding(target, UnBinding(target.id, target))
def visit_With(self, node):
self.visit(node.context_expr)
# handle new bindings made by optional "as" part
if node.optional_vars is not None:
self.assign_vars(node.optional_vars)
self.visit_nodes(node.body)
def visit_ImportFrom(self, node):
if node.module == '__future__':
if not self.futures_allowed:
self.report(messages.LateFutureImport, node.lineno, node.col_offset, [alias.name for alias in node.names])
else:
self.futures_allowed = False
for alias in node.names:
if alias.name == '*':
self.scope.import_starred = True
self.report(messages.ImportStarUsed, node.lineno, node.col_offset, node.module)
continue
name = alias.asname or alias.name
importation = Importation(name, node)
if node.module == '__future__':
importation.used = (self.scope, node.lineno, node.col_offset)
self.add_binding(node, importation)
def visit_Global(self, node):
'''
Keep track of global declarations.
'''
scope = self.scope
if isinstance(scope, FunctionScope):
scope.globals.update(dict.fromkeys(node.names))
def visit_ClassDef(self, node):
self.add_binding(node, Assignment(node.name, node))
self.visit_nodes(node.bases)
self.push_class_scope()
self.visit_nodes(node.body)
self.pop_scope()
def visit_excepthandler(self, node):
if node.type is not None:
self.visit(node.type)
if node.name is not None:
self.assign_vars(node.name)
self.visit_nodes(node.body)
visit_ExceptHandler = visit_excepthandler # in 2.6, this was CamelCased
def flatten(self, nodes):
if isinstance(nodes, ast.Attribute):
self.visit(nodes)
return []
elif isinstance(nodes, ast.Subscript):
self.visit(nodes.value)
self.visit(nodes.slice)
return []
elif isinstance(nodes, ast.Name):
return [nodes]
elif isinstance(nodes, (ast.Tuple, ast.List)):
return self.flatten(nodes.elts)
flattened_nodes = []
for node in nodes:
if hasattr(node, 'elts'):
flattened_nodes += self.flatten(node.elts)
elif node is not None:
flattened_nodes += self.flatten(node)
return flattened_nodes
def add_binding(self, node, value, report_redef=True):
line, col, scope, name = node.lineno, node.col_offset, self.scope, value.name
# Check for a redefined function
func = scope.get(name)
if (isinstance(func, FunctionDefinition) and isinstance(value, FunctionDefinition)):
self.report(messages.RedefinedFunction, line, name, func.source.lineno)
# Check for redefining an unused import
if report_redef and not isinstance(scope, ClassScope):
for up_scope in self.scope_stack[::-1]:
upval = up_scope.get(name)
if isinstance(upval, Importation) and not upval.used:
self.report(messages.RedefinedWhileUnused, line, col, name, upval.source.lineno)
# Check for "del undefined_name"
if isinstance(value, UnBinding):
try:
del scope[name]
except KeyError:
self.report(messages.UndefinedName, line, col, name)
else:
scope[name] = value
def visit(self, node):
if not isinstance(node, allowed_before_future):
self.futures_allowed = False
return super(Checker, self).visit(node)
def visit_nodes(self, nodes):
try:
nodes = list(getattr(nodes, 'elts', nodes))
except TypeError:
nodes = [nodes]
for node in nodes:
self.visit(node)
def is_builtin(self, name):
if hasattr(__builtin__, name):
return True
if name in defined_names:
return True
if name in self.builtins:
return True
return False

@ -0,0 +1,77 @@
# (c) 2005 Divmod, Inc. See LICENSE file for details
class Message(object):
message = ''
message_args = ()
def __init__(self, filename, lineno, col = None):
self.filename = filename
self.lineno = lineno
self.col = col
def __str__(self):
if self.col is not None:
return '%s:%s(%d): %s' % (self.filename, self.lineno, self.col, self.message % self.message_args)
else:
return '%s:%s: %s' % (self.filename, self.lineno, self.message % self.message_args)
class UnusedImport(Message):
message = '%r imported but unused'
def __init__(self, filename, lineno, name):
Message.__init__(self, filename, lineno)
self.message_args = (name,)
class RedefinedWhileUnused(Message):
message = 'redefinition of unused %r from line %r'
def __init__(self, filename, lineno, col, name, orig_lineno):
Message.__init__(self, filename, lineno)
self.message_args = (name, orig_lineno)
class ImportShadowedByLoopVar(Message):
message = 'import %r from line %r shadowed by loop variable'
def __init__(self, filename, lineno, col, name, orig_lineno):
Message.__init__(self, filename, lineno, col)
self.message_args = (name, orig_lineno)
class ImportStarUsed(Message):
message = "'from %s import *' used; unable to detect undefined names"
def __init__(self, filename, lineno, col, modname):
Message.__init__(self, filename, lineno, col)
self.message_args = (modname,)
class UndefinedName(Message):
message = 'undefined name %r'
def __init__(self, filename, lineno, col, name):
Message.__init__(self, filename, lineno, col)
self.message_args = (name,)
class UndefinedLocal(Message):
message = "local variable %r (defined in enclosing scope on line %r) referenced before assignment"
def __init__(self, filename, lineno, col, name, orig_lineno, orig_col):
Message.__init__(self, filename, lineno)
self.message_args = (name, orig_lineno)
class DuplicateArgument(Message):
message = 'duplicate argument %r in function definition'
def __init__(self, filename, lineno, col, name):
Message.__init__(self, filename, lineno, col)
self.message_args = (name,)
class RedefinedFunction(Message):
message = 'redefinition of function %r from line %r'
def __init__(self, filename, lineno, name, orig_lineno):
Message.__init__(self, filename, lineno)
self.message_args = (name, orig_lineno)
class LateFutureImport(Message):
message = 'future import(s) %r after other statements'
def __init__(self, filename, lineno, col, names):
Message.__init__(self, filename, lineno)
self.message_args = (names,)

@ -0,0 +1,63 @@
"""
Implementation of the command-line I{pyflakes} tool.
"""
import _ast
import sys
import os
checker = __import__('pyflakes.checker').checker
def check(codeString, filename):
try:
tree = compile(codeString, filename, 'exec', _ast.PyCF_ONLY_AST)
except (SyntaxError, IndentationError):
value = sys.exc_info()[1]
try:
(lineno, offset, line) = value[1][1:]
except IndexError:
print >> sys.stderr, 'could not compile %r' % (filename,)
return 1
if line.endswith("\n"):
line = line[:-1]
print >> sys.stderr, '%s:%d: could not compile' % (filename, lineno)
print >> sys.stderr, line
print >> sys.stderr, " " * (offset-2), "^"
return 1
else:
w = checker.Checker(tree, filename)
w.messages.sort(lambda a, b: cmp(a.lineno, b.lineno))
for warning in w.messages:
print warning
return len(w.messages)
def checkPath(filename):
"""
Check the given path, printing out any warnings detected.
@return: the number of warnings printed
"""
if os.path.exists(filename):
return check(file(filename, 'U').read() + '\n', filename)
else:
print >> sys.stderr, '%s: no such file' % (filename,)
return 1
def main():
warnings = 0
args = sys.argv[1:]
if args:
for arg in args:
if os.path.isdir(arg):
for dirpath, dirnames, filenames in os.walk(arg):
for filename in filenames:
if filename.endswith('.py'):
warnings += checkPath(os.path.join(dirpath, filename))
else:
warnings += checkPath(arg)
else:
warnings += check(sys.stdin.read(), '<stdin>')
raise SystemExit(warnings > 0)

@ -0,0 +1,24 @@
import textwrap
from twisted.trial import unittest
from pyflakes import checker, ast
class Test(unittest.TestCase):
def flakes(self, input, *expectedOutputs):
w = checker.Checker(ast.parse(textwrap.dedent(input)))
outputs = [type(o) for o in w.messages]
expectedOutputs = list(expectedOutputs)
outputs.sort()
expectedOutputs.sort()
self.assert_(outputs == expectedOutputs, '''\
for input:
%s
expected outputs:
%s
but got:
%s''' % (input, repr(expectedOutputs), '\n'.join([str(o) for o in w.messages])))
return w

@ -0,0 +1,512 @@
from sys import version_info
from pyflakes import messages as m
from pyflakes.test import harness
class Test(harness.Test):
def test_unusedImport(self):
self.flakes('import fu, bar', m.UnusedImport, m.UnusedImport)
self.flakes('from baz import fu, bar', m.UnusedImport, m.UnusedImport)
def test_aliasedImport(self):
self.flakes('import fu as FU, bar as FU', m.RedefinedWhileUnused, m.UnusedImport)
self.flakes('from moo import fu as FU, bar as FU', m.RedefinedWhileUnused, m.UnusedImport)
def test_usedImport(self):
self.flakes('import fu; print fu')
self.flakes('from baz import fu; print fu')
def test_redefinedWhileUnused(self):
self.flakes('import fu; fu = 3', m.RedefinedWhileUnused)
self.flakes('import fu; del fu', m.RedefinedWhileUnused)
self.flakes('import fu; fu, bar = 3', m.RedefinedWhileUnused)
self.flakes('import fu; [fu, bar] = 3', m.RedefinedWhileUnused)
def test_redefinedByFunction(self):
self.flakes('''
import fu
def fu():
pass
''', m.RedefinedWhileUnused)
def test_redefinedInNestedFunction(self):
"""
Test that shadowing a global name with a nested function definition
generates a warning.
"""
self.flakes('''
import fu
def bar():
def baz():
def fu():
pass
''', m.RedefinedWhileUnused, m.UnusedImport)
def test_redefinedByClass(self):
self.flakes('''
import fu
class fu:
pass
''', m.RedefinedWhileUnused)
def test_redefinedInClass(self):
"""
Test that shadowing a global with a class attribute does not produce a
warning.
"""
self.flakes('''
import fu
class bar:
fu = 1
print fu
''')
def test_usedInFunction(self):
self.flakes('''
import fu
def fun():
print fu
''')
def test_shadowedByParameter(self):
self.flakes('''
import fu
def fun(fu):
print fu
''', m.UnusedImport)
self.flakes('''
import fu
def fun(fu):
print fu
print fu
''')
def test_newAssignment(self):
self.flakes('fu = None')
def test_usedInGetattr(self):
self.flakes('import fu; fu.bar.baz')
self.flakes('import fu; "bar".fu.baz', m.UnusedImport)
def test_usedInSlice(self):
self.flakes('import fu; print fu.bar[1:]')
def test_usedInIfBody(self):
self.flakes('''
import fu
if True: print fu
''')
def test_usedInIfConditional(self):
self.flakes('''
import fu
if fu: pass
''')
def test_usedInElifConditional(self):
self.flakes('''
import fu
if False: pass
elif fu: pass
''')
def test_usedInElse(self):
self.flakes('''
import fu
if False: pass
else: print fu
''')
def test_usedInCall(self):
self.flakes('import fu; fu.bar()')
def test_usedInClass(self):
self.flakes('''
import fu
class bar:
bar = fu
''')
def test_usedInClassBase(self):
self.flakes('''
import fu
class bar(object, fu.baz):
pass
''')
def test_notUsedInNestedScope(self):
self.flakes('''
import fu
def bleh():
pass
print fu
''')
def test_usedInFor(self):
self.flakes('''
import fu
for bar in range(9):
print fu
''')
def test_usedInForElse(self):
self.flakes('''
import fu
for bar in range(10):
pass
else:
print fu
''')
def test_redefinedByFor(self):
self.flakes('''
import fu
for fu in range(2):
pass
''', m.RedefinedWhileUnused)
def test_shadowedByFor(self):
"""
Test that shadowing a global name with a for loop variable generates a
warning.
"""
self.flakes('''
import fu
fu.bar()
for fu in ():
pass
''', m.ImportShadowedByLoopVar)
def test_shadowedByForDeep(self):
"""
Test that shadowing a global name with a for loop variable nested in a
tuple unpack generates a warning.
"""
self.flakes('''
import fu
fu.bar()
for (x, y, z, (a, b, c, (fu,))) in ():
pass
''', m.ImportShadowedByLoopVar)
def test_usedInReturn(self):
self.flakes('''
import fu
def fun():
return fu
''')
def test_usedInOperators(self):
self.flakes('import fu; 3 + fu.bar')
self.flakes('import fu; 3 % fu.bar')
self.flakes('import fu; 3 - fu.bar')
self.flakes('import fu; 3 * fu.bar')
self.flakes('import fu; 3 ** fu.bar')
self.flakes('import fu; 3 / fu.bar')
self.flakes('import fu; 3 // fu.bar')
self.flakes('import fu; -fu.bar')
self.flakes('import fu; ~fu.bar')
self.flakes('import fu; 1 == fu.bar')
self.flakes('import fu; 1 | fu.bar')
self.flakes('import fu; 1 & fu.bar')
self.flakes('import fu; 1 ^ fu.bar')
self.flakes('import fu; 1 >> fu.bar')
self.flakes('import fu; 1 << fu.bar')
def test_usedInAssert(self):
self.flakes('import fu; assert fu.bar')
def test_usedInSubscript(self):
self.flakes('import fu; fu.bar[1]')
def test_usedInLogic(self):
self.flakes('import fu; fu and False')
self.flakes('import fu; fu or False')
self.flakes('import fu; not fu.bar')
def test_usedInList(self):
self.flakes('import fu; [fu]')
def test_usedInTuple(self):
self.flakes('import fu; (fu,)')
def test_usedInTry(self):
self.flakes('''
import fu
try: fu
except: pass
''')
def test_usedInExcept(self):
self.flakes('''
import fu
try: fu
except: pass
''')
def test_redefinedByExcept(self):
self.flakes('''
import fu
try: pass
except Exception, fu: pass
''', m.RedefinedWhileUnused)
def test_usedInRaise(self):
self.flakes('''
import fu
raise fu.bar
''')
def test_usedInYield(self):
self.flakes('''
import fu
def gen():
yield fu
''')
def test_usedInDict(self):
self.flakes('import fu; {fu:None}')
self.flakes('import fu; {1:fu}')
def test_usedInParameterDefault(self):
self.flakes('''
import fu
def f(bar=fu):
pass
''')
def test_usedInAttributeAssign(self):
self.flakes('import fu; fu.bar = 1')
def test_usedInKeywordArg(self):
self.flakes('import fu; fu.bar(stuff=fu)')
def test_usedInAssignment(self):
self.flakes('import fu; bar=fu')
self.flakes('import fu; n=0; n+=fu')
def test_usedInListComp(self):
self.flakes('import fu; [fu for _ in range(1)]')
self.flakes('import fu; [1 for _ in range(1) if fu]')
def test_redefinedByListComp(self):
self.flakes('import fu; [1 for fu in range(1)]', m.RedefinedWhileUnused)
def test_usedInTryFinally(self):
self.flakes('''
import fu
try: pass
finally: fu
''')
self.flakes('''
import fu
try: fu
finally: pass
''')
def test_usedInWhile(self):
self.flakes('''
import fu
while 0:
fu
''')
self.flakes('''
import fu
while fu: pass
''')
def test_usedInGlobal(self):
self.flakes('''
import fu
def f(): global fu
''', m.UnusedImport)
def test_usedInBackquote(self):
self.flakes('import fu; `fu`')
def test_usedInExec(self):
self.flakes('import fu; exec "print 1" in fu.bar')
def test_usedInLambda(self):
self.flakes('import fu; lambda: fu')
def test_shadowedByLambda(self):
self.flakes('import fu; lambda fu: fu', m.UnusedImport)
def test_usedInSliceObj(self):
self.flakes('import fu; "meow"[::fu]')
def test_unusedInNestedScope(self):
self.flakes('''
def bar():
import fu
fu
''', m.UnusedImport, m.UndefinedName)
def test_methodsDontUseClassScope(self):
self.flakes('''
class bar:
import fu
def fun(self):
fu
''', m.UnusedImport, m.UndefinedName)
def test_nestedFunctionsNestScope(self):
self.flakes('''
def a():
def b():
fu
import fu
''')
def test_nestedClassAndFunctionScope(self):
self.flakes('''
def a():
import fu
class b:
def c(self):
print fu
''')
def test_importStar(self):
self.flakes('from fu import *', m.ImportStarUsed)
def test_packageImport(self):
self.flakes('import fu.bar; fu.bar')
test_packageImport.todo = "this has been hacked to treat 'import fu.bar' as just 'import fu'"
def test_assignRHSFirst(self):
self.flakes('import fu; fu = fu')
self.flakes('import fu; fu, bar = fu')
self.flakes('import fu; [fu, bar] = fu')
self.flakes('import fu; fu += fu')
def test_tryingMultipleImports(self):
self.flakes('''
try:
import fu
except ImportError:
import bar as fu
''')
test_tryingMultipleImports.todo = ''
def test_nonGlobalDoesNotRedefine(self):
self.flakes('''
import fu
def a():
fu = 3
fu
''')
def test_functionsRunLater(self):
self.flakes('''
def a():
fu
import fu
''')
def test_functionNamesAreBoundNow(self):
self.flakes('''
import fu
def fu():
fu
fu
''', m.RedefinedWhileUnused)
def test_ignoreNonImportRedefinitions(self):
self.flakes('a = 1; a = 2')
def test_importingForImportError(self):
self.flakes('''
try:
import fu
except ImportError:
pass
''')
test_importingForImportError.todo = ''
def test_explicitlyPublic(self):
'''imports mentioned in __all__ are not unused'''
self.flakes('import fu; __all__ = ["fu"]')
test_explicitlyPublic.todo = "this would require importing the module or doing smarter parsing"
def test_importedInClass(self):
'''Imports in class scope can be used through self'''
self.flakes('''
class c:
import i
def __init__(self):
self.i
''')
test_importedInClass.todo = 'requires evaluating attribute access'
def test_futureImport(self):
'''__future__ is special'''
self.flakes('from __future__ import division')
def test_futureImportFirst(self):
"""
__future__ imports must come before anything else.
"""
self.flakes('''
x = 5
from __future__ import division
''', m.LateFutureImport)
class Python24Tests(harness.Test):
"""
Tests for checking of syntax which is valid in Python 2.4 and newer.
"""
if version_info < (2, 4):
skip = "Python 2.4 required for generator expression and decorator tests."
def test_usedInGenExp(self):
"""
Using a global in a generator expression results in no warnings.
"""
self.flakes('import fu; (fu for _ in range(1))')
self.flakes('import fu; (1 for _ in range(1) if fu)')
def test_redefinedByGenExp(self):
"""
Re-using a global name as the loop variable for a generator
expression results in a redefinition warning.
"""
self.flakes('import fu; (1 for fu in range(1))', m.RedefinedWhileUnused)
def test_usedAsDecorator(self):
"""
Using a global name in a decorator statement results in no warnings,
but using an undefined name in a decorator statement results in an
undefined name warning.
"""
self.flakes('''
from interior import decorate
@decorate
def f():
return "hello"
''')
self.flakes('''
from interior import decorate
@decorate('value')
def f():
return "hello"
''')
self.flakes('''
@decorate
def f():
return "hello"
''', m.UndefinedName)

@ -0,0 +1,234 @@
# (c) 2005-2008 Divmod, Inc.
# See LICENSE file for details
"""
Tests for various Pyflakes behavior.
"""
from sys import version_info
from pyflakes import messages as m
from pyflakes.test import harness
class Test(harness.Test):
def test_duplicateArgs(self):
self.flakes('def fu(bar, bar): pass', m.DuplicateArgument)
def test_localReferencedBeforeAssignment(self):
self.flakes('''
a = 1
def f():
a; a=1
f()
''', m.UndefinedName)
test_localReferencedBeforeAssignment.todo = 'this requires finding all assignments in the function body first'
def test_redefinedFunction(self):
"""
Test that shadowing a function definition with another one raises a
warning.
"""
self.flakes('''
def a(): pass
def a(): pass
''', m.RedefinedFunction)
def test_redefinedClassFunction(self):
"""
Test that shadowing a function definition in a class suite with another
one raises a warning.
"""
self.flakes('''
class A:
def a(): pass
def a(): pass
''', m.RedefinedFunction)
def test_functionDecorator(self):
"""
Test that shadowing a function definition with a decorated version of
that function does not raise a warning.
"""
self.flakes('''
from somewhere import somedecorator
def a(): pass
a = somedecorator(a)
''')
def test_classFunctionDecorator(self):
"""
Test that shadowing a function definition in a class suite with a
decorated version of that function does not raise a warning.
"""
self.flakes('''
class A:
def a(): pass
a = classmethod(a)
''')
def test_unaryPlus(self):
'''Don't die on unary +'''
self.flakes('+1')
class Python25Test(harness.Test):
"""
Tests for checking of syntax only available in Python 2.5 and newer.
"""
if version_info < (2, 5):
skip = "Python 2.5 required for if-else and with tests"
def test_ifexp(self):
"""
Test C{foo if bar else baz} statements.
"""
self.flakes("a = 'moo' if True else 'oink'")
self.flakes("a = foo if True else 'oink'", m.UndefinedName)
self.flakes("a = 'moo' if True else bar", m.UndefinedName)
def test_withStatementNoNames(self):
"""
No warnings are emitted for using inside or after a nameless C{with}
statement a name defined beforehand.
"""
self.flakes('''
from __future__ import with_statement
bar = None
with open("foo"):
bar
bar
''')
def test_withStatementSingleName(self):
"""
No warnings are emitted for using a name defined by a C{with} statement
within the suite or afterwards.
"""
self.flakes('''
from __future__ import with_statement
with open('foo') as bar:
bar
bar
''')
def test_withStatementTupleNames(self):
"""
No warnings are emitted for using any of the tuple of names defined by
a C{with} statement within the suite or afterwards.
"""
self.flakes('''
from __future__ import with_statement
with open('foo') as (bar, baz):
bar, baz
bar, baz
''')
def test_withStatementSingleNameUndefined(self):
"""
An undefined name warning is emitted if the name first defined by a
C{with} statement is used before the C{with} statement.
"""
self.flakes('''
from __future__ import with_statement
bar
with open('foo') as bar:
pass
''', m.UndefinedName)
def test_withStatementTupleNamesUndefined(self):
"""
An undefined name warning is emitted if a name first defined by a the
tuple-unpacking form of the C{with} statement is used before the
C{with} statement.
"""
self.flakes('''
from __future__ import with_statement
baz
with open('foo') as (bar, baz):
pass
''', m.UndefinedName)
def test_withStatementSingleNameRedefined(self):
"""
A redefined name warning is emitted if a name bound by an import is
rebound by the name defined by a C{with} statement.
"""
self.flakes('''
from __future__ import with_statement
import bar
with open('foo') as bar:
pass
''', m.RedefinedWhileUnused)
def test_withStatementTupleNamesRedefined(self):
"""
A redefined name warning is emitted if a name bound by an import is
rebound by one of the names defined by the tuple-unpacking form of a
C{with} statement.
"""
self.flakes('''
from __future__ import with_statement
import bar
with open('foo') as (bar, baz):
pass
''', m.RedefinedWhileUnused)
def test_withStatementUndefinedInside(self):
"""
An undefined name warning is emitted if a name is used inside the
body of a C{with} statement without first being bound.
"""
self.flakes('''
from __future__ import with_statement
with open('foo') as bar:
baz
''', m.UndefinedName)
def test_withStatementNameDefinedInBody(self):
"""
A name defined in the body of a C{with} statement can be used after
the body ends without warning.
"""
self.flakes('''
from __future__ import with_statement
with open('foo') as bar:
baz = 10
baz
''')
def test_withStatementUndefinedInExpression(self):
"""
An undefined name warning is emitted if a name in the I{test}
expression of a C{with} statement is undefined.
"""
self.flakes('''
from __future__ import with_statement
with bar as baz:
pass
''', m.UndefinedName)
self.flakes('''
from __future__ import with_statement
with bar as bar:
pass
''', m.UndefinedName)
def test_listNestedListComprehension(self):
self.flakes('''
root = [['213', '123'], ['4354']]
foo = [int(c) for group in root for c in group]
''')

@ -0,0 +1,48 @@
"""
Tests for L{pyflakes.scripts.pyflakes}.
"""
import sys
from StringIO import StringIO
from twisted.python.filepath import FilePath
from twisted.trial.unittest import TestCase
from pyflakes.scripts.pyflakes import checkPath
def withStderrTo(stderr, f):
"""
Call C{f} with C{sys.stderr} redirected to C{stderr}.
"""
(outer, sys.stderr) = (sys.stderr, stderr)
try:
return f()
finally:
sys.stderr = outer
class CheckTests(TestCase):
"""
Tests for L{check} and L{checkPath} which check a file for flakes.
"""
def test_missingTrailingNewline(self):
"""
Source which doesn't end with a newline shouldn't cause any
exception to be raised nor an error indicator to be returned by
L{check}.
"""
fName = self.mktemp()
FilePath(fName).setContent("def foo():\n\tpass\n\t")
self.assertFalse(checkPath(fName))
def test_checkPathNonExisting(self):
"""
L{checkPath} handles non-existing files.
"""
err = StringIO()
count = withStderrTo(err, lambda: checkPath('extremo'))
self.assertEquals(err.getvalue(), 'extremo: no such file\n')
self.assertEquals(count, 1)

@ -0,0 +1,182 @@
from sys import version_info
from pyflakes import messages as m
from pyflakes.test import harness
class Test(harness.Test):
def test_undefined(self):
self.flakes('bar', m.UndefinedName)
def test_definedInListComp(self):
self.flakes('[a for a in range(10) if a]')
def test_functionsNeedGlobalScope(self):
self.flakes('''
class a:
def b():
fu
fu = 1
''')
def test_builtins(self):
self.flakes('range(10)')
def test_magic_globals(self):
self.flakes('__file__')
def test_globalImportStar(self):
'''Can't find undefined names with import *'''
self.flakes('from fu import *; bar', m.ImportStarUsed)
def test_localImportStar(self):
'''A local import * still allows undefined names to be found in upper scopes'''
self.flakes('''
def a():
from fu import *
bar
''', m.ImportStarUsed, m.UndefinedName)
def test_unpackedParameter(self):
'''Unpacked function parameters create bindings'''
self.flakes('''
def a((bar, baz)):
bar; baz
''')
def test_definedByGlobal(self):
'''"global" can make an otherwise undefined name in another function defined'''
self.flakes('''
def a(): global fu; fu = 1
def b(): fu
''')
test_definedByGlobal.todo = ''
def test_del(self):
'''del deletes bindings'''
self.flakes('a = 1; del a; a', m.UndefinedName)
def test_delGlobal(self):
'''del a global binding from a function'''
self.flakes('''
a = 1
def f():
global a
del a
a
''')
def test_delUndefined(self):
'''del an undefined name'''
self.flakes('del a', m.UndefinedName)
def test_globalFromNestedScope(self):
'''global names are available from nested scopes'''
self.flakes('''
a = 1
def b():
def c():
a
''')
def test_laterRedefinedGlobalFromNestedScope(self):
"""
Test that referencing a local name that shadows a global, before it is
defined, generates a warning.
"""
self.flakes('''
a = 1
def fun():
a
a = 2
''', m.UndefinedLocal)
def test_laterRedefinedGlobalFromNestedScope2(self):
"""
Test that referencing a local name in a nested scope that shadows a
global declared in an enclosing scope, before it is defined, generates
a warning.
"""
self.flakes('''
a = 1
def fun():
global a
def fun2():
a
a = 2
''', m.UndefinedLocal)
def test_doubleNestingReportsClosestName(self):
"""
Test that referencing a local name in a nested scope that shadows a
variable declared in two different outer scopes before it is defined
in the innermost scope generates an UnboundLocal warning which
refers to the nearest shadowed name.
"""
exc = self.flakes('''
def a():
x = 1
def b():
x = 2 # line 5
def c():
x
x = 3
''', m.UndefinedLocal).messages[0]
self.assertEqual(exc.message_args, ('x', 5))
def test_laterRedefinedGlobalFromNestedScope3(self):
"""
Test that referencing a local name in a nested scope that shadows a
global, before it is defined, generates a warning.
"""
self.flakes('''
def fun():
a = 1
def fun2():
a
a = 1
''', m.UndefinedLocal)
def test_nestedClass(self):
'''nested classes can access enclosing scope'''
self.flakes('''
def f(foo):
class C:
bar = foo
def f(self):
return foo
return C()
f(123).f()
''')
def test_badNestedClass(self):
'''free variables in nested classes must bind at class creation'''
self.flakes('''
def f():
class C:
bar = foo
foo = 456
f()
''', m.UndefinedName)
class Python24Test(harness.Test):
"""
Tests for checking of syntax which is valid in Python 2.4 and newer.
"""
if version_info < (2, 4):
skip = "Python 2.4 required for generator expression tests."
def test_definedInGenExp(self):
"""
Using the loop variable of a generator expression results in no
warnings.
"""
self.flakes('(a for a in xrange(10) if a)')

@ -0,0 +1,19 @@
#!/usr/bin/python
# (c) 2005 Divmod, Inc. See LICENSE file for details
from distutils.core import setup
setup(
name="pyflakes",
license="MIT",
version="0.2.1",
description="passive checker of Python programs",
author="Phil Frost",
maintainer="Moe Aboulkheir",
maintainer_email="moe@divmod.com",
url="http://www.divmod.org/projects/pyflakes",
packages=["pyflakes", "pyflakes.scripts"],
scripts=["bin/pyflakes"],
long_description="""Pyflakes is program to analyze Python programs and detect various errors. It
works by parsing the source file, not importing it, so it is safe to use on
modules with side effects. It's also much faster.""")

@ -0,0 +1,250 @@
" Vim folding file
" Language: Python
" Author: Jorrit Wiersma (foldexpr), Max Ischenko (foldtext), Robert,
" Ames (line counts), Jean-Pierre Chauvel (bugfixes and improvements)
" Last Change: 2008 Apr 20
" Version: 2.9.c
" Bugfixes: Jean-Pierre Chauvel
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
if !exists("g:ifold_mode")
let g:ifold_mode = 1
endif
" map <buffer> f :call ToggleFold()<CR>
set tabstop=4
set softtabstop=4
set shiftwidth=4
set expandtab
set autoindent
set foldcolumn=1
let w:nestinglevel = 0
let w:signature = 0
let w:is_folded = 1
function! PythonFoldText()
let line = getline(v:foldstart)
let nnum = nextnonblank(v:foldstart + 1)
let nextline = getline(nnum)
if nextline =~ '^\s\+"""$'
let line = line . getline(nnum + 1)
elseif nextline =~ '^\s\+"""'
let line = line . ' ' . matchstr(nextline, '"""\zs.\{-}\ze\("""\)\?$')
elseif nextline =~ '^\s\+"[^"]\+"$'
let line = line . ' ' . matchstr(nextline, '"\zs.*\ze"')
elseif nextline =~ '^\s\+pass\s*$'
let line = line . ' pass'
endif
let size = 1 + v:foldend - v:foldstart
if size < 10
let size = " " . size
endif
if size < 100
let size = " " . size
endif
if size < 1000
let size = " " . size
endif
return size . " lines: " . line
endfunction
function! GetPythonFold(lnum)
let line = getline(a:lnum - 1)
" Classes and functions get their own folds
if line =~ '^\s*\(class\|def\)\s'
" Verify if the next line is a class or function definition
" as well
let imm_nnum = a:lnum + 1
let nnum = nextnonblank(imm_nnum)
if nnum - imm_nnum < 2
let nind = indent(nnum)
let pind = indent(a:lnum - 1)
if pind >= nind
let nline = getline(nnum)
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
endif
endif
let w:nestinglevel = indent(a:lnum - 1)
return ">" . ((w:nestinglevel + &sw) / &sw)
endif
" If next line has less or equal indentation than the first one,
" we end a fold.
let nind = indent(nextnonblank(a:lnum + 1))
if nind <= w:nestinglevel
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
else
let ind = indent(a:lnum)
if ind == (w:nestinglevel + &sw)
if nind < ind
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
endif
endif
endif
" If none of the above apply, keep the indentation
return "="
endfunction
function! GetPythonFoldBest(lnum)
" Determine folding level in Python source
"
let line = getline(a:lnum - 1)
" Handle Support markers
if line =~ '{{{'
return "a1"
elseif line =~ '}}}'
return "s1"
endif
" Classes and functions get their own folds
if line =~ '^\s*\(class\|def\)\s'
" Verify if the next line is a class or function definition
" as well
let imm_nnum = a:lnum + 1
let nnum = nextnonblank(imm_nnum)
let nind = indent(nnum)
let pind = indent(a:lnum - 1)
if pind >= nind
let nline = getline(nnum)
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
endif
let w:nestinglevel = indent(a:lnum - 1)
return ">" . ((w:nestinglevel + &sw) / &sw)
endif
" If next line has less or equal indentation than the first one,
" we end a fold.
let nnonblank = nextnonblank(a:lnum + 1)
let nextline = getline(nnonblank)
if (nextline !~ '^#\+.*')
let nind = indent(nnonblank)
if nind <= w:nestinglevel
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
else
let ind = indent(a:lnum)
if ind == (w:nestinglevel + &sw)
if nind < ind
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
endif
endif
endif
endif
" If none of the above apply, keep the indentation
return "="
endfunction
function! GetPythonFoldExperimental(lnum)
" Determine folding level in Python source
"
let line = getline(a:lnum - 1)
" Handle suport markers
if line =~ '{{{'
return "a1"
elseif line =~ '}}}'
return "s1"
endif
" Classes and functions get their own folds
if line =~ '^\s*\(class\|def\)\s'
" Verify if the next line is a class or function definition
" as well
let imm_nnum = a:lnum + 1
let nnum = nextnonblank(imm_nnum)
let nind = indent(nnum)
let pind = indent(a:lnum - 1)
if pind >= nind
let nline = getline(nnum)
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
endif
let w:signature = 1
let w:nestinglevel = indent(a:lnum - 1)
endif
if line =~ '^.*:' && w:signature
let w:signature = 0
return ">" . ((w:nestinglevel + &sw) / &sw)
endif
" If next line has less or equal indentation than the first one,
" we end a fold.
let nnonblank = nextnonblank(a:lnum + 1)
let nextline = getline(nnonblank)
if (nextline !~ '^#\+.*')
let nind = indent(nnonblank)
if nind <= w:nestinglevel
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
else
let ind = indent(a:lnum)
if ind == (w:nestinglevel + &sw)
if nind < ind
let w:nestinglevel = nind
return "<" . ((w:nestinglevel + &sw) / &sw)
endif
endif
endif
endif
" If none of the above apply, keep the indentation
return "="
endfunction
function! ToggleFold()
let w:nestinglevel = 0
let w:signature = 0
if w:is_folded
set foldexpr=0
let w:is_folded = 0
else
call ReFold()
" Open the fold we are in
exec 'norm! zO'
let w:is_folded = 1
endif
endfunction
" In case folding breaks down
function! ReFold()
set foldmethod=expr
set foldexpr=0
set foldmethod=expr
if g:ifold_mode == 0
set foldexpr=GetPythonFold(v:lnum)
else
if g:ifold_mode == 1
set foldexpr=GetPythonFoldBest(v:lnum)
else
if g:ifold_mode == 2
set foldexpr=GetPythonFoldExperimental(v:lnum)
endif
endif
endif
if g:ifold_mode
set foldtext=PythonFoldText()
else
set foldtext='Folded\ code'
endif
echo
endfunction
call ReFold()

@ -0,0 +1,18 @@
" Vim filetype plugin
" Language: Sass
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Only do this when not done yet for this buffer
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1
let b:undo_ftplugin = "setl cms< inc< ofu<"
setlocal commentstring=//\ %s
setlocal omnifunc=csscomplete#CompleteCSS
let &l:include = '^\s*@import\s\+\%(url(\)\='
" vim:set sw=2:

@ -0,0 +1,51 @@
" textile.vim
"
" Tim Harper (tim.theenchanter.com)
command! -nargs=0 TextileRenderFile call TextileRenderBufferToFile()
command! -nargs=0 TextileRenderTab call TextileRenderBufferToTab()
command! -nargs=0 TextilePreview call TextileRenderBufferToPreview()
noremap <buffer> <Leader>rp :TextilePreview<CR>
noremap <buffer> <Leader>rf :TextileRenderFile<CR>
noremap <buffer> <Leader>rt :TextileRenderTab<CR>
setlocal ignorecase
setlocal wrap
setlocal lbr
function! TextileRender(lines)
if (system('which ruby') == "")
throw "Could not find ruby!"
end
let text = join(a:lines, "\n")
let html = system("ruby -e \"def e(msg); puts msg; exit 1; end; begin; require 'rubygems'; rescue LoadError; e('rubygems not found'); end; begin; require 'redcloth'; rescue LoadError; e('RedCloth gem not installed. Run this from the terminal: sudo gem install RedCloth'); end; puts(RedCloth.new(\\$stdin.read).to_html(:textile))\"", text)
return html
endfunction
function! TextileRenderFile(lines, filename)
let html = TextileRender(getbufline(bufname("%"), 1, '$'))
let html = "<html><head><title>" . bufname("%") . "</title><body>\n" . html . "\n</body></html>"
return writefile(split(html, "\n"), a:filename)
endfunction
function! TextileRenderBufferToPreview()
let filename = "/tmp/textile-preview.html"
call TextileRenderFile(getbufline(bufname("%"), 1, '$'), filename)
" Modify this line to make it compatible on other platforms
call system("open -a Safari ". filename)
endfunction
function! TextileRenderBufferToFile()
let filename = input("Filename:", substitute(bufname("%"), "textile$", "html", ""), "file")
call TextileRenderFile(getbufline(bufname("%"), 1, '$'), filename)
echo "Rendered to '" . filename . "'"
endfunction
function! TextileRenderBufferToTab()
let html = TextileRender(getbufline(bufname("%"), 1, '$'))
tabnew
call append("^", split(html, "\n"))
set syntax=html
endfunction

@ -0,0 +1,384 @@
" vim:tabstop=2:shiftwidth=2:expandtab:foldmethod=marker:textwidth=79
" Vimwiki filetype plugin file
" Author: Maxim Kim <habamax@gmail.com>
" Home: http://code.google.com/p/vimwiki/
if exists("b:did_ftplugin")
finish
endif
let b:did_ftplugin = 1 " Don't load another plugin for this buffer
" UNDO list {{{
" Reset the following options to undo this plugin.
let b:undo_ftplugin = "setlocal ".
\ "suffixesadd< isfname< comments< ".
\ "autowriteall< ".
\ "formatoptions< foldtext< ".
\ "foldmethod< foldexpr< commentstring< "
" UNDO }}}
" MISC STUFF {{{
setlocal autowriteall
setlocal commentstring=<!--%s-->
if g:vimwiki_conceallevel && exists("+conceallevel")
let &conceallevel = g:vimwiki_conceallevel
endif
" MISC }}}
" GOTO FILE: gf {{{
execute 'setlocal suffixesadd='.VimwikiGet('ext')
setlocal isfname-=[,]
" gf}}}
" Autocreate list items {{{
" for list items, and list items with checkboxes
if VimwikiGet('syntax') == 'default'
setl comments=b:*,b:#,b:-
setl formatlistpat=^\\s*[*#-]\\s*
else
setl comments=n:*,n:#
endif
setlocal formatoptions=tnro
if !empty(&langmap)
" Valid only if langmap is a comma separated pairs of chars
let l_o = matchstr(&langmap, '\C,\zs.\zeo,')
if l_o
exe 'nnoremap <buffer> '.l_o.' :call vimwiki_lst#kbd_oO("o")<CR>a'
endif
let l_O = matchstr(&langmap, '\C,\zs.\zeO,')
if l_O
exe 'nnoremap <buffer> '.l_O.' :call vimwiki_lst#kbd_oO("O")<CR>a'
endif
endif
" COMMENTS }}}
" FOLDING for headers and list items using expr fold method. {{{
function! VimwikiFoldLevel(lnum) "{{{
let line = getline(a:lnum)
" Header folding...
if line =~ g:vimwiki_rxHeader
let n = vimwiki#count_first_sym(line)
return '>'.n
endif
if g:vimwiki_fold_trailing_empty_lines == 0
if line =~ '^\s*$'
let nnline = getline(nextnonblank(a:lnum + 1))
if nnline =~ g:vimwiki_rxHeader
let n = vimwiki#count_first_sym(nnline)
return '<'.n
endif
endif
endif
" List item folding...
if g:vimwiki_fold_lists
let base_level = s:get_base_level(a:lnum)
let rx_list_item = '\('.
\ g:vimwiki_rxListBullet.'\|'.g:vimwiki_rxListNumber.
\ '\)'
if line =~ rx_list_item
let [nnum, nline] = s:find_forward(rx_list_item, a:lnum)
let level = s:get_li_level(a:lnum)
let leveln = s:get_li_level(nnum)
let adj = s:get_li_level(s:get_start_list(rx_list_item, a:lnum))
if leveln > level
return ">".(base_level+leveln-adj)
else
return (base_level+level-adj)
endif
else
" process multilined list items
let [pnum, pline] = s:find_backward(rx_list_item, a:lnum)
if pline =~ rx_list_item
if indent(a:lnum) > indent(pnum)
let level = s:get_li_level(pnum)
let adj = s:get_li_level(s:get_start_list(rx_list_item, pnum))
let [nnum, nline] = s:find_forward(rx_list_item, a:lnum)
if nline =~ rx_list_item
let leveln = s:get_li_level(nnum)
if leveln > level
return (base_level+leveln-adj)
endif
endif
return (base_level+level-adj)
endif
endif
endif
return base_level
endif
return -1
endfunction "}}}
function! s:get_base_level(lnum) "{{{
let lnum = a:lnum - 1
while lnum > 0
if getline(lnum) =~ g:vimwiki_rxHeader
return vimwiki#count_first_sym(getline(lnum))
endif
let lnum -= 1
endwhile
return 0
endfunction "}}}
function! s:find_forward(rx_item, lnum) "{{{
let lnum = a:lnum + 1
while lnum <= line('$')
let line = getline(lnum)
if line =~ a:rx_item
\ || line =~ '^\S'
\ || line =~ g:vimwiki_rxHeader
break
endif
let lnum += 1
endwhile
return [lnum, getline(lnum)]
endfunction "}}}
function! s:find_backward(rx_item, lnum) "{{{
let lnum = a:lnum - 1
while lnum > 1
let line = getline(lnum)
if line =~ a:rx_item
\ || line =~ '^\S'
break
endif
let lnum -= 1
endwhile
return [lnum, getline(lnum)]
endfunction "}}}
function! s:get_li_level(lnum) "{{{
if VimwikiGet('syntax') == 'media'
let level = vimwiki#count_first_sym(getline(a:lnum))
else
let level = (indent(a:lnum) / &sw)
endif
return level
endfunction "}}}
function! s:get_start_list(rx_item, lnum) "{{{
let lnum = a:lnum
while lnum >= 1
let line = getline(lnum)
if line !~ a:rx_item && line =~ '^\S'
return nextnonblank(lnum + 1)
endif
let lnum -= 1
endwhile
return 0
endfunction "}}}
function! VimwikiFoldText() "{{{
let line = substitute(getline(v:foldstart), '\t',
\ repeat(' ', &tabstop), 'g')
return line.' ['.(v:foldend - v:foldstart).']'
endfunction "}}}
" FOLDING }}}
" COMMANDS {{{
command! -buffer Vimwiki2HTML
\ call vimwiki_html#Wiki2HTML(expand(VimwikiGet('path_html')),
\ expand('%'))
command! -buffer VimwikiAll2HTML
\ call vimwiki_html#WikiAll2HTML(expand(VimwikiGet('path_html')))
command! -buffer VimwikiNextLink call vimwiki#find_next_link()
command! -buffer VimwikiPrevLink call vimwiki#find_prev_link()
command! -buffer VimwikiDeleteLink call vimwiki#delete_link()
command! -buffer VimwikiRenameLink call vimwiki#rename_link()
command! -buffer VimwikiFollowLink call vimwiki#follow_link('nosplit')
command! -buffer VimwikiGoBackLink call vimwiki#go_back_link()
command! -buffer VimwikiSplitLink call vimwiki#follow_link('split')
command! -buffer VimwikiVSplitLink call vimwiki#follow_link('vsplit')
command! -buffer -range VimwikiToggleListItem call vimwiki_lst#ToggleListItem(<line1>, <line2>)
command! -buffer VimwikiGenerateLinks call vimwiki#generate_links()
exe 'command! -buffer -nargs=* VimwikiSearch vimgrep <args> '.
\ escape(VimwikiGet('path').'**/*'.VimwikiGet('ext'), ' ')
exe 'command! -buffer -nargs=* VWS vimgrep <args> '.
\ escape(VimwikiGet('path').'**/*'.VimwikiGet('ext'), ' ')
command! -buffer -nargs=1 VimwikiGoto call vimwiki#goto("<args>")
" table commands
command! -buffer -nargs=* VimwikiTable call vimwiki_tbl#create(<f-args>)
command! -buffer VimwikiTableAlignQ call vimwiki_tbl#align_or_cmd('gqq')
command! -buffer VimwikiTableAlignW call vimwiki_tbl#align_or_cmd('gww')
command! -buffer VimwikiTableMoveColumnLeft call vimwiki_tbl#move_column_left()
command! -buffer VimwikiTableMoveColumnRight call vimwiki_tbl#move_column_right()
" diary commands
command! -buffer VimwikiDiaryNextDay call vimwiki_diary#goto_next_day()
command! -buffer VimwikiDiaryPrevDay call vimwiki_diary#goto_prev_day()
" COMMANDS }}}
" KEYBINDINGS {{{
if g:vimwiki_use_mouse
nmap <buffer> <S-LeftMouse> <NOP>
nmap <buffer> <C-LeftMouse> <NOP>
noremap <silent><buffer> <2-LeftMouse> :VimwikiFollowLink<CR>
noremap <silent><buffer> <S-2-LeftMouse> <LeftMouse>:VimwikiSplitLink<CR>
noremap <silent><buffer> <C-2-LeftMouse> <LeftMouse>:VimwikiVSplitLink<CR>
noremap <silent><buffer> <RightMouse><LeftMouse> :VimwikiGoBackLink<CR>
endif
if !hasmapto('<Plug>VimwikiFollowLink')
nmap <silent><buffer> <CR> <Plug>VimwikiFollowLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiFollowLink :VimwikiFollowLink<CR>
if !hasmapto('<Plug>VimwikiSplitLink')
nmap <silent><buffer> <S-CR> <Plug>VimwikiSplitLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiSplitLink :VimwikiSplitLink<CR>
if !hasmapto('<Plug>VimwikiVSplitLink')
nmap <silent><buffer> <C-CR> <Plug>VimwikiVSplitLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiVSplitLink :VimwikiVSplitLink<CR>
if !hasmapto('<Plug>VimwikiGoBackLink')
nmap <silent><buffer> <BS> <Plug>VimwikiGoBackLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiGoBackLink :VimwikiGoBackLink<CR>
if !hasmapto('<Plug>VimwikiNextLink')
nmap <silent><buffer> <TAB> <Plug>VimwikiNextLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiNextLink :VimwikiNextLink<CR>
if !hasmapto('<Plug>VimwikiPrevLink')
nmap <silent><buffer> <S-TAB> <Plug>VimwikiPrevLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiPrevLink :VimwikiPrevLink<CR>
if !hasmapto('<Plug>VimwikiDeleteLink')
nmap <silent><buffer> <Leader>wd <Plug>VimwikiDeleteLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiDeleteLink :VimwikiDeleteLink<CR>
if !hasmapto('<Plug>VimwikiRenameLink')
nmap <silent><buffer> <Leader>wr <Plug>VimwikiRenameLink
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiRenameLink :VimwikiRenameLink<CR>
if !hasmapto('<Plug>VimwikiToggleListItem')
nmap <silent><buffer> <C-Space> <Plug>VimwikiToggleListItem
vmap <silent><buffer> <C-Space> <Plug>VimwikiToggleListItem
if has("unix")
nmap <silent><buffer> <C-@> <Plug>VimwikiToggleListItem
endif
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiToggleListItem :VimwikiToggleListItem<CR>
if !hasmapto('<Plug>VimwikiDiaryNextDay')
nmap <silent><buffer> <C-Down> <Plug>VimwikiDiaryNextDay
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiDiaryNextDay :VimwikiDiaryNextDay<CR>
if !hasmapto('<Plug>VimwikiDiaryPrevDay')
nmap <silent><buffer> <C-Up> <Plug>VimwikiDiaryPrevDay
endif
noremap <silent><script><buffer>
\ <Plug>VimwikiDiaryPrevDay :VimwikiDiaryPrevDay<CR>
function! s:CR() "{{{
let res = vimwiki_lst#kbd_cr()
if res == "\<CR>" && g:vimwiki_table_auto_fmt
let res = vimwiki_tbl#kbd_cr()
endif
return res
endfunction "}}}
" List and Table <CR> mapping
inoremap <buffer> <expr> <CR> <SID>CR()
" List mappings
nnoremap <buffer> o :call vimwiki_lst#kbd_oO('o')<CR>a
nnoremap <buffer> O :call vimwiki_lst#kbd_oO('O')<CR>a
" Table mappings
if g:vimwiki_table_auto_fmt
inoremap <expr> <buffer> <Tab> vimwiki_tbl#kbd_tab()
inoremap <expr> <buffer> <S-Tab> vimwiki_tbl#kbd_shift_tab()
endif
nnoremap <buffer> gqq :VimwikiTableAlignQ<CR>
nnoremap <buffer> gww :VimwikiTableAlignW<CR>
nnoremap <buffer> <A-Left> :VimwikiTableMoveColumnLeft<CR>
nnoremap <buffer> <A-Right> :VimwikiTableMoveColumnRight<CR>
" Misc mappings
inoremap <buffer> <S-CR> <br /><CR>
" Text objects {{{
onoremap <silent><buffer> ah :<C-U>call vimwiki#TO_header(0, 0)<CR>
vnoremap <silent><buffer> ah :<C-U>call vimwiki#TO_header(0, 1)<CR>
onoremap <silent><buffer> ih :<C-U>call vimwiki#TO_header(1, 0)<CR>
vnoremap <silent><buffer> ih :<C-U>call vimwiki#TO_header(1, 1)<CR>
onoremap <silent><buffer> a\ :<C-U>call vimwiki#TO_table_cell(0, 0)<CR>
vnoremap <silent><buffer> a\ :<C-U>call vimwiki#TO_table_cell(0, 1)<CR>
onoremap <silent><buffer> i\ :<C-U>call vimwiki#TO_table_cell(1, 0)<CR>
vnoremap <silent><buffer> i\ :<C-U>call vimwiki#TO_table_cell(1, 1)<CR>
onoremap <silent><buffer> ac :<C-U>call vimwiki#TO_table_col(0, 0)<CR>
vnoremap <silent><buffer> ac :<C-U>call vimwiki#TO_table_col(0, 1)<CR>
onoremap <silent><buffer> ic :<C-U>call vimwiki#TO_table_col(1, 0)<CR>
vnoremap <silent><buffer> ic :<C-U>call vimwiki#TO_table_col(1, 1)<CR>
noremap <silent><buffer> = :call vimwiki#AddHeaderLevel()<CR>
noremap <silent><buffer> - :call vimwiki#RemoveHeaderLevel()<CR>
" }}}
" KEYBINDINGS }}}
" AUTOCOMMANDS {{{
if VimwikiGet('auto_export')
" Automatically generate HTML on page write.
augroup vimwiki
au BufWritePost <buffer> Vimwiki2HTML
augroup END
endif
" AUTOCOMMANDS }}}

@ -0,0 +1,10 @@
:insert
- @title = "empty article"
- @abstract = "this is an empty article"
- @lang = "en"
- @tags = %w()
:textile
no content
.

@ -0,0 +1,9 @@
:insert
/***
File Name :
Purpose :
Creation Date :
Last Modified :
Created By :
***/
.

@ -0,0 +1,40 @@
:insert
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title></title>
<meta name="author" content="Norman Köhring" />
<meta name="DC.title" content="" />
<!-- GeoURL -->
<meta name="ICBM" content="51.3333, 12.4167" />
<meta name="geo.position" content="51.3333; 12.4167" />
<meta name="geo.region" content="DE" />
<link rel="author" href="mailto:me@nkoehring.de" />
<style type="text/css">
body {
font: 17pt/22pt "Helvetica Neue", Arial, sans-serif;
font-weight: bold;
letter-spacing: -0.75pt;
margin: 2em 2.3em;
color: #AAA;
background-color: #333;
min-width: 20em;
max-width: 23.5em;
}
h1 { display: block; font-size: 1em; border-bottom: 1px solid #AAA; }
a { color: #DDD; text-decoration: none; }
a:visited { color: #777; }
a:hover { color: #FFF; }
p { max-width: 23.5em; }
.big { font-size: 1.5em; }
</style>
</head>
<body>
<h1>TITLE</h1>
<p>Text</p>
</body>
</html>
.

@ -0,0 +1,14 @@
:insert
#!/usr/bin/python
# -*- encoding: utf-8 -*-
#
# File Name :
# Purpose :
# Creation Date :
# Last Modified :
# Created By :
#
if __name__ == '__main__':
.

@ -0,0 +1,18 @@
:insert
SyntaxHighlighter.brushes.Custom = function()
{
    var funcs       = '';
    var keywords    = '';
    var operators   = '';
 
    this.regexList = [
        { regex: /--(.*)$/gm,                                               css: 'comments' },
        { regex: SyntaxHighlighter.regexLib.multiLineDoubleQuotedString,    css: 'string' },
        { regex: new RegExp(this.getKeywords(funcs), 'gmi'),                css: 'color2' },
        { regex: new RegExp(this.getKeywords(operators), 'gmi'),            css: 'color1' },
        { regex: new RegExp(this.getKeywords(keywords), 'gmi'),             css: 'keyword' }
        ];
};
SyntaxHighlighter.brushes.Custom.prototype = new SyntaxHighlighter.Highlighter();
SyntaxHighlighter.brushes.Custom.aliases    = ['custom', 'ctm', 'ct'];
.

@ -0,0 +1,54 @@
:insert
%Vorlage von Jürgen Fenn
\\documentclass[11pt]{dinbrief}
\\usepackage{german}
\\usepackage[T1]{fontenc}
\\usepackage[utf8]{inputenc}
\\usepackage{mathpazo} % Fuer Palatino auf 11pt umstellen!
\\usepackage{url}
\\backaddress{Back Address}
\\nowindowrules %% keine Rahmen um das Adreßfenster
\\begin{document}
\\begin{letter} {HerrnFrauFirma\\ \\Straße\\9999 Stadt}
\\centeraddress %% Vertikeles Zentrieren der Anschrift
% \setreflinetop{120mm} %% Oberkante Bezugszeichenzeile = Briefanfang
% \yourmail{Empfänger & Co. } %% Ihr Zeichen
% \sign{Meine Firma} %% Unser Zeichen
% \phone{12345}{ 67890} %% Unsere Durchwahl
\\subject{Subject}
\\opening{Sehr geehrte Damen und Herren,}
%\pagebreak %% Seitenumbruch bei Bedarf
\\closing{Mit freundlichen Grüßen,}
%\ps{} %% PS:
%\encl{} %% Anlagen
%\cc{} %% Verteiler
\\end{letter}
\\end{document}
.

@ -0,0 +1,73 @@
" Vim indent file
" Language: HAML
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Last Change: 2008 Sep 11
if exists("b:did_indent")
finish
endif
runtime! indent/ruby.vim
unlet! b:did_indent
let b:did_indent = 1
setlocal autoindent sw=2 et
setlocal indentexpr=GetHamlIndent()
setlocal indentkeys=o,O,*<Return>,},],0),!^F,=end,=else,=elsif,=rescue,=ensure,=when
" Only define the function once.
if exists("*GetHamlIndent")
finish
endif
let s:attributes = '\%({.\{-\}}\|\[.\{-\}\]\)'
let s:tag = '\%([%.#][[:alnum:]_-]\+\|'.s:attributes.'\)*[<>]*'
if !exists('g:haml_self_closing_tags')
let g:haml_self_closing_tags = 'meta|link|img|hr|br'
endif
function! GetHamlIndent()
let lnum = prevnonblank(v:lnum-1)
if lnum == 0
return 0
endif
let line = substitute(getline(lnum),'\s\+$','','')
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
let lastcol = strlen(line)
let line = substitute(line,'^\s\+','','')
let indent = indent(lnum)
let cindent = indent(v:lnum)
if cline =~# '\v^-\s*%(elsif|else|when)>'
let indent = cindent < indent ? cindent : indent - &sw
endif
let increase = indent + &sw
if indent == indent(lnum)
let indent = cindent <= indent ? -1 : increase
endif
"let indent = indent == indent(lnum) ? -1 : indent
"let indent = indent > indent(lnum) + &sw ? indent(lnum) + &sw : indent
let group = synIDattr(synID(lnum,lastcol,1),'name')
if line =~ '^!!!'
return indent
elseif line =~ '^/\%(\[[^]]*\]\)\=$'
return increase
elseif line =~ '^:'
return increase
elseif line =~ '^'.s:tag.'[=~-]\s*\%(\%(if\|else\|elsif\|unless\|case\|when\|while\|until\|for\|begin\|module\|class\|def\)\>\%(.*\<end\>\)\@!\|.*do\%(\s*|[^|]*|\)\=\s*$\)'
return increase
elseif line == '-#'
return increase
elseif group =~? '\v^(hamlSelfCloser)$' || line =~? '^%\v%('.g:haml_self_closing_tags.')>'
return indent
elseif group =~? '\v^%(hamlTag|hamlAttributesDelimiter|hamlObjectDelimiter|hamlClass|hamlId|htmlTagName|htmlSpecialTagName)$'
return increase
elseif synIDattr(synID(v:lnum,1,1),'name') ==? 'hamlRubyFilter'
return GetRubyIndent()
else
return indent
endif
endfunction
" vim:set sw=2:

@ -0,0 +1,196 @@
" Python indent file
" Language: Python
" Maintainer: Eric Mc Sween <em@tomcom.de>
" Original Author: David Bustos <bustos@caltech.edu>
" Last Change: 2004 Jun 07
" Only load this indent file when no other was loaded.
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal expandtab
setlocal nolisp
setlocal autoindent
setlocal indentexpr=GetPythonIndent(v:lnum)
setlocal indentkeys=!^F,o,O,<:>,0),0],0},=elif,=except
let s:maxoff = 50
" Find backwards the closest open parenthesis/bracket/brace.
function! s:SearchParensPair()
let line = line('.')
let col = col('.')
" Skip strings and comments and don't look too far
let skip = "line('.') < " . (line - s:maxoff) . " ? dummy :" .
\ 'synIDattr(synID(line("."), col("."), 0), "name") =~? ' .
\ '"string\\|comment"'
" Search for parentheses
call cursor(line, col)
let parlnum = searchpair('(', '', ')', 'bW', skip)
let parcol = col('.')
" Search for brackets
call cursor(line, col)
let par2lnum = searchpair('\[', '', '\]', 'bW', skip)
let par2col = col('.')
" Search for braces
call cursor(line, col)
let par3lnum = searchpair('{', '', '}', 'bW', skip)
let par3col = col('.')
" Get the closest match
if par2lnum > parlnum || (par2lnum == parlnum && par2col > parcol)
let parlnum = par2lnum
let parcol = par2col
endif
if par3lnum > parlnum || (par3lnum == parlnum && par3col > parcol)
let parlnum = par3lnum
let parcol = par3col
endif
" Put the cursor on the match
if parlnum > 0
call cursor(parlnum, parcol)
endif
return parlnum
endfunction
" Find the start of a multi-line statement
function! s:StatementStart(lnum)
let lnum = a:lnum
while 1
if getline(lnum - 1) =~ '\\$'
let lnum = lnum - 1
else
call cursor(lnum, 1)
let maybe_lnum = s:SearchParensPair()
if maybe_lnum < 1
return lnum
else
let lnum = maybe_lnum
endif
endif
endwhile
endfunction
" Find the block starter that matches the current line
function! s:BlockStarter(lnum, block_start_re)
let lnum = a:lnum
let maxindent = 10000 " whatever
while lnum > 1
let lnum = prevnonblank(lnum - 1)
if indent(lnum) < maxindent
if getline(lnum) =~ a:block_start_re
return lnum
else
let maxindent = indent(lnum)
" It's not worth going further if we reached the top level
if maxindent == 0
return -1
endif
endif
endif
endwhile
return -1
endfunction
function! GetPythonIndent(lnum)
" First line has indent 0
if a:lnum == 1
return 0
endif
" If we can find an open parenthesis/bracket/brace, line up with it.
call cursor(a:lnum, 1)
let parlnum = s:SearchParensPair()
if parlnum > 0
let parcol = col('.')
let closing_paren = match(getline(a:lnum), '^\s*[])}]') != -1
if match(getline(parlnum), '[([{]\s*$', parcol - 1) != -1
if closing_paren
return indent(parlnum)
else
return indent(parlnum) + &shiftwidth
endif
else
if closing_paren
return parcol - 1
else
return parcol
endif
endif
endif
" Examine this line
let thisline = getline(a:lnum)
let thisindent = indent(a:lnum)
" If the line starts with 'elif' or 'else', line up with 'if' or 'elif'
if thisline =~ '^\s*\(elif\|else\)\>'
let bslnum = s:BlockStarter(a:lnum, '^\s*\(if\|elif\)\>')
if bslnum > 0
return indent(bslnum)
else
return -1
endif
endif
" If the line starts with 'except' or 'finally', line up with 'try'
" or 'except'
if thisline =~ '^\s*\(except\|finally\)\>'
let bslnum = s:BlockStarter(a:lnum, '^\s*\(try\|except\)\>')
if bslnum > 0
return indent(bslnum)
else
return -1
endif
endif
" Examine previous line
let plnum = a:lnum - 1
let pline = getline(plnum)
let sslnum = s:StatementStart(plnum)
" If the previous line is blank, keep the same indentation
if pline =~ '^\s*$'
return -1
endif
" If this line is explicitly joined, try to find an indentation that looks
" good.
if pline =~ '\\$'
let compound_statement = '^\s*\(if\|while\|for\s.*\sin\|except\)\s*'
let maybe_indent = matchend(getline(sslnum), compound_statement)
if maybe_indent != -1
return maybe_indent
else
return indent(sslnum) + &sw * 2
endif
endif
" If the previous line ended with a colon, indent relative to
" statement start.
if pline =~ ':\s*$'
return indent(sslnum) + &sw
endif
" If the previous line was a stop-execution statement or a pass
if getline(sslnum) =~ '^\s*\(break\|continue\|raise\|return\|pass\)\>'
" See if the user has already dedented
if indent(a:lnum) > indent(sslnum) - &sw
" If not, recommend one dedent
return indent(sslnum) - &sw
endif
" Otherwise, trust the user
return -1
endif
" In all other cases, line up with the start of the previous statement.
return indent(sslnum)
endfunction

@ -0,0 +1,39 @@
" Vim indent file
" Language: SASS
" Maintainer: Tim Pope <vimNOSPAM@tpope.info>
" Last Change: 2007 Dec 16
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal autoindent sw=2 et
setlocal indentexpr=GetSassIndent()
setlocal indentkeys=o,O,*<Return>,<:>,!^F
" Only define the function once.
if exists("*GetSassIndent")
finish
endif
let s:property = '^\s*:\|^\s*[[:alnum:]-]\+\%(:\|\s*=\)'
function! GetSassIndent()
let lnum = prevnonblank(v:lnum-1)
let line = substitute(getline(lnum),'\s\+$','','')
let cline = substitute(substitute(getline(v:lnum),'\s\+$','',''),'^\s\+','','')
let lastcol = strlen(line)
let line = substitute(line,'^\s\+','','')
let indent = indent(lnum)
let cindent = indent(v:lnum)
if line !~ s:property && cline =~ s:property
return indent + &sw
"elseif line =~ s:property && cline !~ s:property
"return indent - &sw
else
return -1
endif
endfunction
" vim:set sw=2:

@ -0,0 +1,83 @@
" Vim indent file
" Language : Scala (http://scala-lang.org/)
" Maintainer : Stefan Matthias Aust
" Last Change: 2006 Apr 13
if exists("b:did_indent")
finish
endif
let b:did_indent = 1
setlocal indentexpr=GetScalaIndent()
setlocal indentkeys=0{,0},0),!^F,<>>,<CR>
setlocal autoindent sw=2 et
if exists("*GetScalaIndent")
finish
endif
function! CountParens(line)
let line = substitute(a:line, '"\(.\|\\"\)*"', '', 'g')
let open = substitute(line, '[^(]', '', 'g')
let close = substitute(line, '[^)]', '', 'g')
return strlen(open) - strlen(close)
endfunction
function! GetScalaIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" Hit the start of the file, use zero indent.
if lnum == 0
return 0
endif
let ind = indent(lnum)
let prevline = getline(lnum)
"Indent html literals
if prevline !~ '/>\s*$' && prevline =~ '^\s*<[a-zA-Z][^>]*>\s*$'
return ind + &shiftwidth
endif
" Add a 'shiftwidth' after lines that start a block
" If if, for or while end with ), this is a one-line block
" If val, var, def end with =, this is a one-line block
if prevline =~ '^\s*\<\(\(else\s\+\)\?if\|for\|while\|va[lr]\|def\)\>.*[)=]\s*$'
\ || prevline =~ '^\s*\<else\>\s*$'
\ || prevline =~ '{\s*$'
let ind = ind + &shiftwidth
endif
" If parenthesis are unbalanced, indent or dedent
let c = CountParens(prevline)
echo c
if c > 0
let ind = ind + &shiftwidth
elseif c < 0
let ind = ind - &shiftwidth
endif
" Dedent after if, for, while and val, var, def without block
let pprevline = getline(prevnonblank(lnum - 1))
if pprevline =~ '^\s*\<\(\(else\s\+\)\?if\|for\|while\|va[lr]\|def\)\>.*[)=]\s*$'
\ || pprevline =~ '^\s*\<else\>\s*$'
let ind = ind - &shiftwidth
endif
" Align 'for' clauses nicely
if prevline =~ '^\s*\<for\> (.*;\s*$'
let ind = ind - &shiftwidth + 5
endif
" Subtract a 'shiftwidth' on '}' or html
let thisline = getline(v:lnum)
if thisline =~ '^\s*[})]'
\ || thisline =~ '^\s*</[a-zA-Z][^>]*>'
let ind = ind - &shiftwidth
endif
return ind
endfunction

@ -0,0 +1,139 @@
" Vim indent file
" Language: LaTeX
" Maintainer: Johannes Tanzler <jtanzler@yline.com>
" Created: Sat, 16 Feb 2002 16:50:19 +0100
" Last Change: Sun, 17 Feb 2002 00:09:11 +0100
" Last Update: 18th feb 2002, by LH :
" (*) better support for the option
" (*) use some regex instead of several '||'.
" Version: 0.02
" URL: comming soon: http://www.unet.univie.ac.at/~a9925098/vim/indent/tex.vim
" --> If you're a Vim guru & and you find something that could be done in a
" better (perhaps in a more Vim-ish or Vi-ish) way, please let me know!
" Options: {{{
"
" To set the following options (ok, currently it's just one), add a line like
" let g:tex_indent_items = 1
" to your ~/.vimrc.
"
" * g:tex_indent_items
"
" If this variable is set, item-environments are indented like Emacs does
" it, i.e., continuation lines are indented with a shiftwidth.
"
" NOTE: I've already set the variable below; delete the corresponding line
" if you don't like this behaviour.
"
" Per default, it is unset.
"
" set unset
" ----------------------------------------------------------------
" \begin{itemize} \begin{itemize}
" \item blablabla \item blablabla
" bla bla bla bla bla bla
" \item blablabla \item blablabla
" bla bla bla bla bla bla
" \end{itemize} \end{itemize}
"
"
" This option applies to itemize, description, enumerate, and
" thebibliography.
"
" }}}
" Delete the next line to avoid the special indention of items
if !exists("g:tex_indent_items")
let g:tex_indent_items = 1
endif
if exists("b:did_indent") | finish
endif
let b:did_indent = 1
setlocal indentexpr=GetTeXIndent()
setlocal nolisp
setlocal nosmartindent
setlocal autoindent
setlocal indentkeys+=},=\\item,=\\bibitem
" Only define the function once
if exists("*GetTeXIndent") | finish
endif
function GetTeXIndent()
" Find a non-blank line above the current line.
let lnum = prevnonblank(v:lnum - 1)
" At the start of the file use zero indent.
if lnum == 0 | return 0
endif
let ind = indent(lnum)
let line = getline(lnum) " last line
let cline = getline(v:lnum) " current line
" Do not change indentation of commented lines.
if line =~ '^\s*%'
return ind
endif
" Add a 'shiftwidth' after beginning of environments.
" Don't add it for \begin{document} and \begin{verbatim}
""if line =~ '^\s*\\begin{\(.*\)}' && line !~ 'verbatim'
" LH modification : \begin does not always start a line
if line =~ '\\begin{\(.*\)}' && line !~ 'verbatim'
\ && line !~ 'document'
let ind = ind + &sw
if g:tex_indent_items == 1
" Add another sw for item-environments
if line =~ 'itemize\|description\|enumerate\|thebibliography'
let ind = ind + &sw
endif
endif
endif
" Subtract a 'shiftwidth' when an environment ends
if cline =~ '^\s*\\end' && cline !~ 'verbatim'
\&& cline !~ 'document'
if g:tex_indent_items == 1
" Remove another sw for item-environments
if cline =~ 'itemize\|description\|enumerate\|thebibliography'
let ind = ind - &sw
endif
endif
let ind = ind - &sw
endif
" Special treatment for 'item'
" ----------------------------
if g:tex_indent_items == 1
" '\item' or '\bibitem' itself:
if cline =~ '^\s*\\\(bib\)\=item'
let ind = ind - &sw
endif
" lines following to '\item' are intented once again:
if line =~ '^\s*\\\(bib\)\=item'
let ind = ind + &sw
endif
endif
return ind
endfunction

@ -0,0 +1,78 @@
#!/usr/bin/perl
# Author: Dimitri Antoniou <dimitri@risc2.aecom.yu.edu>
# usage: ltags filename
# handles: \label and \cite{ } with one or more arguments
# fails if arguments of cite spread over more than one line
# also searches in files that are \include or \input in the main file
# get main LaTeX source file from command line:
$mainfile = shift;
# get names of included files and store them in an array
open MAIN, $mainfile or die "$!" ;
@mainfile=<MAIN>;
@allsrcfiles = map{ /^\\(?:input|include){(.*?)}/ } @mainfile;
unshift @allsrcfiles, $mainfile;
# loop over all source files
for $srcfile (@allsrcfiles) {
# if \input{fname} append .tex to fname
unless ( $srcfile =~ m/\.tex/ ) { $srcfile = $srcfile . "\.tex" }
open SRC, $srcfile or die "$!" ;
# store contents of source file in array @texfile
@texfile=<SRC>;
# store lines with \label and \cite (or \citeonline) in arrays
@labelList = grep{ /\\label{/ } @texfile;
@citeList = grep{ /\\(cite|citeonline){/ } @texfile;
# see if we use an external database; if yes, store its name in $bibfile
($dbase) = grep{ /^\\bibliography{/ } @texfile;
if ($dbase) {
$dbase =~ m/\\bibliography{(.*?)}/;
$bibfile = $1;
}
# write \bibitem in tags file
@mrefs=();
@refs=();
@multirefs=();
foreach (@citeList) {
while ( m/\\(?:cite|citeonline){(.*?)}/g ) {
$refs = $1;
# if \cite has more than one argument, split them:
if ($refs =~ /,/) {
@mrefs = split /,/, $refs;
# there might be more than one \cite in a line:
push (@multirefs, @mrefs);
}
else {
@refs = ($refs);
push (@multirefs, @refs);
}
}
# in BibTeX, format is @ARTICLE{Name, }; in source file, \bibitem{Name}
for $ref (@multirefs) {
if ( $dbase ) {
push @unsorttag, "$ref\t$bibfile\t/{$ref,/\n"
}
else {
push @unsorttag, "$ref\t$srcfile\t/bibitem{$ref}/\n"
}
}
}
# write \label in tag file
foreach (@labelList) {
m/\\label{(.*?)}/;
push @unsorttag, "$1\t$srcfile\t/label{$1}/\n";
}
}
# sort tag file; then, eliminate duplicates
@sortedtag = sort @unsorttag;
%seen = ();
@uniqtag = grep { ! $seen{$_} ++ } @sortedtag;
open(TAGS, "> tags");
print TAGS @uniqtag;

Some files were not shown because too many files have changed in this diff Show More

Loading…
Cancel
Save