mirror of
1
0
Fork 0

Updated plugins

This commit is contained in:
amix 2013-07-17 19:06:05 -04:00
parent 879a7b6bd4
commit a448b32309
85 changed files with 2174 additions and 941 deletions

View File

@ -68,6 +68,7 @@ let [s:pref, s:bpref, s:opts, s:new_opts, s:lc_opts] =
\ 'key_loop': ['s:keyloop', 0], \ 'key_loop': ['s:keyloop', 0],
\ 'lazy_update': ['s:lazy', 0], \ 'lazy_update': ['s:lazy', 0],
\ 'match_func': ['s:matcher', {}], \ 'match_func': ['s:matcher', {}],
\ 'match_window': ['s:mw', ''],
\ 'match_window_bottom': ['s:mwbottom', 1], \ 'match_window_bottom': ['s:mwbottom', 1],
\ 'match_window_reversed': ['s:mwreverse', 1], \ 'match_window_reversed': ['s:mwreverse', 1],
\ 'max_depth': ['s:maxdepth', 40], \ 'max_depth': ['s:maxdepth', 40],
@ -102,7 +103,7 @@ let [s:pref, s:bpref, s:opts, s:new_opts, s:lc_opts] =
" Global options " Global options
let s:glbs = { 'magic': 1, 'to': 1, 'tm': 0, 'sb': 1, 'hls': 0, 'im': 0, let s:glbs = { 'magic': 1, 'to': 1, 'tm': 0, 'sb': 1, 'hls': 0, 'im': 0,
\ 'report': 9999, 'sc': 0, 'ss': 0, 'siso': 0, 'mfd': 200, 'mouse': 'n', \ 'report': 9999, 'sc': 0, 'ss': 0, 'siso': 0, 'mfd': 200, 'ttimeout': 0,
\ 'gcr': 'a:blinkon0', 'ic': 1, 'lmap': '', 'mousef': 0, 'imd': 1 } \ 'gcr': 'a:blinkon0', 'ic': 1, 'lmap': '', 'mousef': 0, 'imd': 1 }
" Keymaps " Keymaps
@ -181,7 +182,7 @@ let s:hlgrps = {
\ 'PrtText': 'Normal', \ 'PrtText': 'Normal',
\ 'PrtCursor': 'Constant', \ 'PrtCursor': 'Constant',
\ } \ }
" s:opts() {{{2 " Get the options {{{2
fu! s:opts(...) fu! s:opts(...)
unl! s:usrign s:usrcmd s:urprtmaps unl! s:usrign s:usrcmd s:urprtmaps
for each in ['byfname', 'regexp', 'extensions'] | if exists('s:'.each) for each in ['byfname', 'regexp', 'extensions'] | if exists('s:'.each)
@ -201,6 +202,9 @@ fu! s:opts(...)
let {va} = {s:bpref.ke} let {va} = {s:bpref.ke}
en en
endfo endfo
" Match window options
cal s:match_window_opts()
" One-time values
if a:0 && a:1 != {} if a:0 && a:1 != {}
unl va unl va
for [ke, va] in items(a:1) for [ke, va] in items(a:1)
@ -217,7 +221,6 @@ fu! s:opts(...)
en | endfo en | endfo
if !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en if !exists('g:ctrlp_newcache') | let g:ctrlp_newcache = 0 | en
let s:maxdepth = min([s:maxdepth, 100]) let s:maxdepth = min([s:maxdepth, 100])
let s:mxheight = max([s:mxheight, 1])
let s:glob = s:showhidden ? '.*\|*' : '*' let s:glob = s:showhidden ? '.*\|*' : '*'
let s:igntype = empty(s:usrign) ? -1 : type(s:usrign) let s:igntype = empty(s:usrign) ? -1 : type(s:usrign)
let s:lash = ctrlp#utils#lash() let s:lash = ctrlp#utils#lash()
@ -238,13 +241,32 @@ fu! s:opts(...)
cal extend(s:prtmaps, s:urprtmaps) cal extend(s:prtmaps, s:urprtmaps)
en en
endf endf
fu! s:match_window_opts()
let s:mw_pos =
\ s:mw =~ 'top\|bottom' ? matchstr(s:mw, 'top\|bottom') :
\ exists('g:ctrlp_match_window_bottom') ? ( s:mwbottom ? 'bottom' : 'top' )
\ : 'bottom'
let s:mw_order =
\ s:mw =~ 'order:[^,]\+' ? matchstr(s:mw, 'order:\zs[^,]\+') :
\ exists('g:ctrlp_match_window_reversed') ? ( s:mwreverse ? 'btt' : 'ttb' )
\ : 'btt'
let s:mw_max =
\ s:mw =~ 'max:[^,]\+' ? str2nr(matchstr(s:mw, 'max:\zs\d\+')) :
\ exists('g:ctrlp_max_height') ? s:mxheight
\ : 10
let s:mw_min =
\ s:mw =~ 'min:[^,]\+' ? str2nr(matchstr(s:mw, 'min:\zs\d\+')) : 1
let [s:mw_max, s:mw_min] = [max([s:mw_max, 1]), max([s:mw_min, 1])]
let s:mw_min = min([s:mw_min, s:mw_max])
endf
"}}}1 "}}}1
" * Open & Close {{{1 " * Open & Close {{{1
fu! s:Open() fu! s:Open()
cal s:log(1) cal s:log(1)
cal s:getenv() cal s:getenv()
cal s:execextvar('enter') cal s:execextvar('enter')
sil! exe 'keepa' ( s:mwbottom ? 'bo' : 'to' ) '1new ControlP' sil! exe 'keepa' ( s:mw_pos == 'top' ? 'to' : 'bo' ) '1new ControlP'
cal s:buffunc(1) cal s:buffunc(1)
let [s:bufnr, s:winw] = [bufnr('%'), winwidth(0)] let [s:bufnr, s:winw] = [bufnr('%'), winwidth(0)]
let [s:focus, s:prompt] = [1, ['', '', '']] let [s:focus, s:prompt] = [1, ['', '', '']]
@ -297,7 +319,7 @@ fu! ctrlp#clra()
if isdirectory(cadir) if isdirectory(cadir)
let cafiles = split(s:glbpath(s:fnesc(cadir, 'g', ','), '**', 1), "\n") let cafiles = split(s:glbpath(s:fnesc(cadir, 'g', ','), '**', 1), "\n")
let eval = '!isdirectory(v:val) && v:val !~ ''\v[\/]cache[.a-z]+$|\.log$''' let eval = '!isdirectory(v:val) && v:val !~ ''\v[\/]cache[.a-z]+$|\.log$'''
sil! cal map(filter(cafiles, eval), 'delete(v:val)') sil! cal map(s:ifilter(cafiles, eval), 'delete(v:val)')
en en
cal ctrlp#clr() cal ctrlp#clr()
endf endf
@ -362,7 +384,7 @@ fu! s:UserCmd(lscmd)
let [ssl, &ssl, path] = [&ssl, 0, tr(path, '/', '\')] let [ssl, &ssl, path] = [&ssl, 0, tr(path, '/', '\')]
en en
if has('win32') || has('win64') if has('win32') || has('win64')
let lscmd = substitute(lscmd, '\v(^|&&\s*)\zscd (/d)@!', 'cd /d ', '') let lscmd = substitute(lscmd, '\v(^|\&\&\s*)\zscd (/d)@!', 'cd /d ', '')
en en
let path = exists('*shellescape') ? shellescape(path) : path let path = exists('*shellescape') ? shellescape(path) : path
let g:ctrlp_allfiles = split(system(printf(lscmd, path)), "\n") let g:ctrlp_allfiles = split(system(printf(lscmd, path)), "\n")
@ -433,7 +455,7 @@ endf
fu! s:MatchIt(items, pat, limit, exc) fu! s:MatchIt(items, pat, limit, exc)
let [lines, id] = [[], 0] let [lines, id] = [[], 0]
let pat = let pat =
\ s:byfname ? map(split(a:pat, '^[^;]\+\\\@<!\zs;', 1), 's:martcs.v:val') \ s:byfname() ? map(split(a:pat, '^[^;]\+\\\@<!\zs;', 1), 's:martcs.v:val')
\ : s:martcs.a:pat \ : s:martcs.a:pat
for item in a:items for item in a:items
let id += 1 let id += 1
@ -450,7 +472,16 @@ fu! s:MatchedItems(items, pat, limit)
let exc = exists('s:crfilerel') ? s:crfilerel : '' let exc = exists('s:crfilerel') ? s:crfilerel : ''
let items = s:narrowable() ? s:matched + s:mdata[3] : a:items let items = s:narrowable() ? s:matched + s:mdata[3] : a:items
if s:matcher != {} if s:matcher != {}
let argms = [items, a:pat, a:limit, s:mmode(), s:ispath, exc, s:regexp] let argms =
\ has_key(s:matcher, 'arg_type') && s:matcher['arg_type'] == 'dict' ? [{
\ 'items': items,
\ 'str': a:pat,
\ 'limit': a:limit,
\ 'mmode': s:mmode(),
\ 'ispath': s:ispath,
\ 'crfile': exc,
\ 'regex': s:regexp,
\ }] : [items, a:pat, a:limit, s:mmode(), s:ispath, exc, s:regexp]
let lines = call(s:matcher['match'], argms, s:matcher) let lines = call(s:matcher['match'], argms, s:matcher)
el el
let lines = s:MatchIt(items, a:pat, a:limit, exc) let lines = s:MatchIt(items, a:pat, a:limit, exc)
@ -480,7 +511,7 @@ fu! s:SplitPattern(str)
if exists('lst') if exists('lst')
let pat = '' let pat = ''
if !empty(lst) if !empty(lst)
if s:byfname && index(lst, ';') > 0 if s:byfname() && index(lst, ';') > 0
let fbar = index(lst, ';') let fbar = index(lst, ';')
let lst_1 = s:sublist(lst, 0, fbar - 1) let lst_1 = s:sublist(lst, 0, fbar - 1)
let lst_2 = len(lst) - 1 > fbar ? s:sublist(lst, fbar + 1, -1) : [''] let lst_2 = len(lst) - 1 > fbar ? s:sublist(lst, fbar + 1, -1) : ['']
@ -494,15 +525,19 @@ fu! s:SplitPattern(str)
endf endf
" * BuildPrompt() {{{1 " * BuildPrompt() {{{1
fu! s:Render(lines, pat) fu! s:Render(lines, pat)
let [&ma, lines, s:height] = [1, a:lines, min([len(a:lines), s:winh])] let [&ma, lines, s:res_count] = [1, a:lines, len(a:lines)]
let pat = s:byfname ? split(a:pat, '^[^;]\+\\\@<!\zs;', 1)[0] : a:pat let height = min([max([s:mw_min, s:res_count]), s:winmaxh])
let pat = s:byfname() ? split(a:pat, '^[^;]\+\\\@<!\zs;', 1)[0] : a:pat
let cur_cmd = 'keepj norm! '.( s:mw_order == 'btt' ? 'G' : 'gg' ).'1|'
" Setup the match window " Setup the match window
sil! exe '%d _ | res' s:height sil! exe '%d _ | res' height
" Print the new items " Print the new items
if empty(lines) if empty(lines)
let [s:matched, s:lines] = [[], []] let [s:matched, s:lines] = [[], []]
cal setline(1, ' == NO ENTRIES ==') let lines = [' == NO ENTRIES ==']
cal setline(1, s:offset(lines, height - 1))
setl noma nocul setl noma nocul
exe cur_cmd
cal s:unmarksigns() cal s:unmarksigns()
if s:dohighlight() | cal clearmatches() | en if s:dohighlight() | cal clearmatches() | en
retu retu
@ -514,12 +549,12 @@ fu! s:Render(lines, pat)
cal sort(lines, 's:mixedsort') cal sort(lines, 's:mixedsort')
unl s:compat unl s:compat
en en
if s:mwreverse | cal reverse(lines) | en if s:mw_order == 'btt' | cal reverse(lines) | en
let s:lines = copy(lines) let s:lines = copy(lines)
cal map(lines, 's:formatline(v:val)') cal map(lines, 's:formatline(v:val)')
cal setline(1, lines) cal setline(1, s:offset(lines, height))
setl noma cul setl noma cul
exe 'keepj norm!' ( s:mwreverse ? 'G' : 'gg' ).'1|' exe cur_cmd
cal s:unmarksigns() cal s:unmarksigns()
cal s:remarksigns() cal s:remarksigns()
if exists('s:cline') && s:nolim != 1 if exists('s:cline') && s:nolim != 1
@ -541,7 +576,7 @@ fu! s:Update(str)
let s:martcs = &scs && str =~ '\u' ? '\C' : '' let s:martcs = &scs && str =~ '\u' ? '\C' : ''
let pat = s:matcher == {} ? s:SplitPattern(str) : str let pat = s:matcher == {} ? s:SplitPattern(str) : str
let lines = s:nolim == 1 && empty(str) ? copy(g:ctrlp_lines) let lines = s:nolim == 1 && empty(str) ? copy(g:ctrlp_lines)
\ : s:MatchedItems(g:ctrlp_lines, pat, s:winh) \ : s:MatchedItems(g:ctrlp_lines, pat, s:winmaxh)
cal s:Render(lines, pat) cal s:Render(lines, pat)
endf endf
@ -550,7 +585,7 @@ fu! s:ForceUpdate()
endf endf
fu! s:BuildPrompt(upd) fu! s:BuildPrompt(upd)
let base = ( s:regexp ? 'r' : '>' ).( s:byfname ? 'd' : '>' ).'> ' let base = ( s:regexp ? 'r' : '>' ).( s:byfname() ? 'd' : '>' ).'> '
let str = escape(s:getinput(), '\') let str = escape(s:getinput(), '\')
let lazy = str == '' || exists('s:force') || !has('autocmd') ? 0 : s:lazy let lazy = str == '' || exists('s:force') || !has('autocmd') ? 0 : s:lazy
if a:upd && !lazy && ( s:matches || s:regexp || exists('s:did_exp') if a:upd && !lazy && ( s:matches || s:regexp || exists('s:did_exp')
@ -581,11 +616,8 @@ fu! s:SetDefTxt()
if s:deftxt == '0' || ( s:deftxt == 1 && !s:ispath ) | retu | en if s:deftxt == '0' || ( s:deftxt == 1 && !s:ispath ) | retu | en
let txt = s:deftxt let txt = s:deftxt
if !type(txt) if !type(txt)
let txt = txt && !stridx(s:crfpath, s:dyncwd) let path = s:crfpath.s:lash(s:crfpath)
\ ? ctrlp#rmbasedir([s:crfpath])[0] : '' let txt = txt && !stridx(path, s:dyncwd) ? ctrlp#rmbasedir([path])[0] : ''
let txt = txt != '' ? txt.s:lash(s:crfpath) : ''
el
let txt = expand(txt, 1)
en en
let s:prompt[0] = txt let s:prompt[0] = txt
endf endf
@ -735,7 +767,7 @@ endf
fu! s:PrtSelectJump(char) fu! s:PrtSelectJump(char)
let lines = copy(s:lines) let lines = copy(s:lines)
if s:byfname if s:byfname()
cal map(lines, 'split(v:val, ''[\/]\ze[^\/]\+$'')[-1]') cal map(lines, 'split(v:val, ''[\/]\ze[^\/]\+$'')[-1]')
en en
" Cycle through matches, use s:jmpchr to store last jump " Cycle through matches, use s:jmpchr to store last jump
@ -904,6 +936,11 @@ fu! s:ToggleKeyLoop()
en en
endf endf
fu! s:ToggleMRURelative()
cal ctrlp#mrufiles#tgrel()
cal s:PrtClearCache()
endf
fu! s:PrtSwitcher() fu! s:PrtSwitcher()
let [s:force, s:matches] = [1, 1] let [s:force, s:matches] = [1, 1]
cal s:BuildPrompt(1) cal s:BuildPrompt(1)
@ -937,14 +974,21 @@ fu! s:SetWD(args)
en en
endf endf
" * AcceptSelection() {{{1 " * AcceptSelection() {{{1
fu! ctrlp#acceptfile(mode, line, ...) fu! ctrlp#acceptfile(...)
let [md, useb] = [a:mode, 0] let useb = 0
if !type(a:line) if a:0 == 1 && type(a:1) == 4
let [filpath, bufnr, useb] = [a:line, a:line, 1] let [md, line] = [a:1['action'], a:1['line']]
let atl = has_key(a:1, 'tail') ? a:1['tail'] : ''
el el
let filpath = fnamemodify(a:line, ':p') let [md, line] = [a:1, a:2]
if s:nonamecond(a:line, filpath) let atl = a:0 > 2 ? a:3 : ''
let bufnr = str2nr(matchstr(a:line, '[\/]\?\[\zs\d\+\ze\*No Name\]$')) en
if !type(line)
let [filpath, bufnr, useb] = [line, line, 1]
el
let filpath = fnamemodify(line, ':p')
if s:nonamecond(line, filpath)
let bufnr = str2nr(matchstr(line, '[\/]\?\[\zs\d\+\ze\*No Name\]$'))
let [filpath, useb] = [bufnr, 1] let [filpath, useb] = [bufnr, 1]
el el
let bufnr = bufnr('^'.filpath.'$') let bufnr = bufnr('^'.filpath.'$')
@ -952,7 +996,7 @@ fu! ctrlp#acceptfile(mode, line, ...)
en en
cal s:PrtExit() cal s:PrtExit()
let tail = s:tail() let tail = s:tail()
let j2l = a:0 ? a:1 : matchstr(tail, '^ +\zs\d\+$') let j2l = atl != '' ? atl : matchstr(tail, '^ +\zs\d\+$')
if ( s:jmptobuf =~ md || ( s:jmptobuf && md =~ '[et]' ) ) && bufnr > 0 if ( s:jmptobuf =~ md || ( s:jmptobuf && md =~ '[et]' ) ) && bufnr > 0
\ && !( md == 'e' && bufnr == bufnr('%') ) \ && !( md == 'e' && bufnr == bufnr('%') )
let [jmpb, bufwinnr] = [1, bufwinnr(bufnr)] let [jmpb, bufwinnr] = [1, bufwinnr(bufnr)]
@ -980,7 +1024,7 @@ fu! ctrlp#acceptfile(mode, line, ...)
" Reset &switchbuf option " Reset &switchbuf option
let [swb, &swb] = [&swb, ''] let [swb, &swb] = [&swb, '']
" Open new window/buffer " Open new window/buffer
let [fid, tail] = [( useb ? bufnr : filpath ), ( a:0 ? ' +'.a:1 : tail )] let [fid, tail] = [( useb ? bufnr : filpath ), ( atl != '' ? ' +'.atl : tail )]
let args = [cmd, fid, tail, 1, [useb, j2l]] let args = [cmd, fid, tail, 1, [useb, j2l]]
cal call('s:openfile', args) cal call('s:openfile', args)
let &swb = swb let &swb = swb
@ -1011,24 +1055,34 @@ fu! s:SpecInputs(str)
retu 0 retu 0
endf endf
fu! s:AcceptSelection(mode) fu! s:AcceptSelection(action)
if a:mode != 'e' && s:OpenMulti(a:mode) != -1 | retu | en let [md, icr] = [a:action[0], match(a:action, 'r') >= 0]
let subm = icr || ( !icr && md == 'e' )
if !subm && s:OpenMulti(md) != -1 | retu | en
let str = s:getinput() let str = s:getinput()
if a:mode == 'e' | if s:SpecInputs(str) | retu | en | en if subm | if s:SpecInputs(str) | retu | en | en
" Get the selected line " Get the selected line
let line = ctrlp#getcline() let line = ctrlp#getcline()
if a:mode != 'e' && !s:itemtype && line == '' if !subm && !s:itemtype && line == '' && line('.') > s:offset
\ && str !~ '\v^(\.\.([\/]\.\.)*[\/]?[.\/]*|/|\\|\?|\@.+)$' \ && str !~ '\v^(\.\.([\/]\.\.)*[\/]?[.\/]*|/|\\|\?|\@.+)$'
cal s:CreateNewFile(a:mode) | retu cal s:CreateNewFile(md) | retu
en en
if empty(line) | retu | en if empty(line) | retu | en
" Do something with it " Do something with it
if s:openfunc != {} && has_key(s:openfunc, s:ctype) if s:openfunc != {} && has_key(s:openfunc, s:ctype)
let actfunc = s:openfunc[s:ctype] let actfunc = s:openfunc[s:ctype]
let type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'list'
el el
let actfunc = s:itemtype < 3 ? 'ctrlp#acceptfile' : s:getextvar('accept') if s:itemtype < 3
let [actfunc, type] = ['ctrlp#acceptfile', 'dict']
el
let [actfunc, exttype] = [s:getextvar('accept'), s:getextvar('act_farg')]
let type = exttype == 'dict' ? exttype : 'list'
en en
cal call(actfunc, [a:mode, line]) en
let actargs = type == 'dict' ? [{ 'action': md, 'line': line, 'icr': icr }]
\ : [md, line]
cal call(actfunc, actargs)
endf endf
" - CreateNewFile() {{{1 " - CreateNewFile() {{{1
fu! s:CreateNewFile(...) fu! s:CreateNewFile(...)
@ -1187,7 +1241,10 @@ fu! s:OpenNoMarks(md, line)
cal s:remarksigns() cal s:remarksigns()
cal s:BuildPrompt(0) cal s:BuildPrompt(0)
elsei a:md == 'x' elsei a:md == 'x'
cal call(s:openfunc[s:ctype], [a:md, a:line], s:openfunc) let type = has_key(s:openfunc, 'arg_type') ? s:openfunc['arg_type'] : 'dict'
let argms = type == 'dict' ? [{ 'action': a:md, 'line': a:line }]
\ : [a:md, a:line]
cal call(s:openfunc[s:ctype], argms, s:openfunc)
elsei a:md == 'd' elsei a:md == 'd'
let dir = fnamemodify(a:line, ':h') let dir = fnamemodify(a:line, ':h')
if isdirectory(dir) if isdirectory(dir)
@ -1278,7 +1335,7 @@ fu! s:mixedsort(...)
let [cln, cml] = [ctrlp#complen(a:1, a:2), s:compmatlen(a:1, a:2)] let [cln, cml] = [ctrlp#complen(a:1, a:2), s:compmatlen(a:1, a:2)]
if s:ispath if s:ispath
let ms = [] let ms = []
if s:height < 21 if s:res_count < 21
let ms += [s:compfnlen(a:1, a:2)] let ms += [s:compfnlen(a:1, a:2)]
if s:itemtype !~ '^[12]$' | let ms += [s:comptime(a:1, a:2)] | en if s:itemtype !~ '^[12]$' | let ms += [s:comptime(a:1, a:2)] | en
if !s:itemtype | let ms += [s:comparent(a:1, a:2)] | en if !s:itemtype | let ms += [s:comparent(a:1, a:2)] | en
@ -1324,12 +1381,21 @@ fu! ctrlp#statusline()
let prv = tps[s:walker(max, s:itemtype, -1)][1] let prv = tps[s:walker(max, s:itemtype, -1)][1]
let s:ctype = tps[s:itemtype][0] let s:ctype = tps[s:itemtype][0]
let focus = s:focus ? 'prt' : 'win' let focus = s:focus ? 'prt' : 'win'
let byfname = s:byfname ? 'file' : 'path' let byfname = s:ispath ? s:byfname ? 'file' : 'path' : 'line'
let marked = s:opmul != '0' ? let marked = s:opmul != '0' ?
\ exists('s:marked') ? ' <'.s:dismrk().'>' : ' <->' : '' \ exists('s:marked') ? ' <'.s:dismrk().'>' : ' <->' : ''
if s:status != {} if s:status != {}
let args = [focus, byfname, s:regexp, prv, s:ctype, nxt, marked] let argms =
let &l:stl = call(s:status['main'], args, s:status) \ has_key(s:status, 'arg_type') && s:status['arg_type'] == 'dict' ? [{
\ 'focus': focus,
\ 'byfname': byfname,
\ 'regex': s:regexp,
\ 'prev': prv,
\ 'item': s:ctype,
\ 'next': nxt,
\ 'marked': marked,
\ }] : [focus, byfname, s:regexp, prv, s:ctype, nxt, marked]
let &l:stl = call(s:status['main'], argms, s:status)
el el
let item = '%#CtrlPMode1# '.s:ctype.' %*' let item = '%#CtrlPMode1# '.s:ctype.' %*'
let focus = '%#CtrlPMode2# '.focus.' %*' let focus = '%#CtrlPMode2# '.focus.' %*'
@ -1349,8 +1415,13 @@ endf
fu! ctrlp#progress(enum, ...) fu! ctrlp#progress(enum, ...)
if has('macunix') || has('mac') | sl 1m | en if has('macunix') || has('mac') | sl 1m | en
let txt = a:0 ? '(press ctrl-c to abort)' : '' let txt = a:0 ? '(press ctrl-c to abort)' : ''
let &l:stl = s:status != {} ? call(s:status['prog'], [a:enum], s:status) if s:status != {}
\ : '%#CtrlPStats# '.a:enum.' %* '.txt.'%=%<%#CtrlPMode2# %{getcwd()} %*' let argms = has_key(s:status, 'arg_type') && s:status['arg_type'] == 'dict'
\ ? [{ 'str': a:enum }] : [a:enum]
let &l:stl = call(s:status['prog'], argms, s:status)
el
let &l:stl = '%#CtrlPStats# '.a:enum.' %* '.txt.'%=%<%#CtrlPMode2# %{getcwd()} %*'
en
redraws redraws
endf endf
" *** Paths {{{2 " *** Paths {{{2
@ -1376,6 +1447,11 @@ fu! s:pathshorten(str)
retu matchstr(a:str, '^.\{9}').'...' retu matchstr(a:str, '^.\{9}').'...'
\ .matchstr(a:str, '.\{'.( s:winw - 16 ).'}$') \ .matchstr(a:str, '.\{'.( s:winw - 16 ).'}$')
endf endf
fu! s:offset(lines, height)
let s:offset = s:mw_order == 'btt' ? ( a:height - s:res_count ) : 0
retu s:offset > 0 ? ( repeat([''], s:offset) + a:lines ) : a:lines
endf
" Directory completion {{{3 " Directory completion {{{3
fu! s:dircompl(be, sd) fu! s:dircompl(be, sd)
if a:sd == '' | retu [] | en if a:sd == '' | retu [] | en
@ -1464,7 +1540,7 @@ fu! s:samerootsyml(each, isfile, cwd)
endf endf
fu! ctrlp#rmbasedir(items) fu! ctrlp#rmbasedir(items)
let cwd = s:dyncwd.( s:dyncwd !~ '[\/]$' ? s:lash : '' ) let cwd = s:dyncwd.s:lash()
if a:items != [] && !stridx(a:items[0], cwd) if a:items != [] && !stridx(a:items[0], cwd)
let idx = strlen(cwd) let idx = strlen(cwd)
retu map(a:items, 'strpart(v:val, idx)') retu map(a:items, 'strpart(v:val, idx)')
@ -1599,6 +1675,18 @@ fu! s:dosigns()
retu exists('s:marked') && s:bufnr > 0 && s:opmul != '0' && has('signs') retu exists('s:marked') && s:bufnr > 0 && s:opmul != '0' && has('signs')
endf endf
" Lists & Dictionaries {{{2 " Lists & Dictionaries {{{2
fu! s:ifilter(list, str)
let [rlist, estr] = [[], substitute(a:str, 'v:val', 'each', 'g')]
for each in a:list
try
if eval(estr)
cal add(rlist, each)
en
cat | con | endt
endfo
retu rlist
endf
fu! s:dictindex(dict, expr) fu! s:dictindex(dict, expr)
for key in keys(a:dict) for key in keys(a:dict)
if a:dict[key] == a:expr | retu key | en if a:dict[key] == a:expr | retu key | en
@ -1808,7 +1896,6 @@ endf
fu! s:modevar() fu! s:modevar()
let s:matchtype = s:mtype() let s:matchtype = s:mtype()
let s:ispath = s:ispathitem() let s:ispath = s:ispathitem()
if !s:ispath | let s:byfname = 0 | en
let s:mfunc = s:mfunc() let s:mfunc = s:mfunc()
let s:nolim = s:getextvar('nolim') let s:nolim = s:getextvar('nolim')
let s:dosort = s:getextvar('sort') let s:dosort = s:getextvar('sort')
@ -1820,6 +1907,10 @@ fu! s:nosort()
\ || ( s:itemtype =~ '\v^(1|2)$' && s:prompt == ['', '', ''] ) || !s:dosort \ || ( s:itemtype =~ '\v^(1|2)$' && s:prompt == ['', '', ''] ) || !s:dosort
endf endf
fu! s:byfname()
retu s:ispath && s:byfname
endf
fu! s:narrowable() fu! s:narrowable()
retu exists('s:act_add') && exists('s:matched') && s:matched != [] retu exists('s:act_add') && exists('s:matched') && s:matched != []
\ && exists('s:mdata') && s:mdata[:2] == [s:dyncwd, s:itemtype, s:regexp] \ && exists('s:mdata') && s:mdata[:2] == [s:dyncwd, s:itemtype, s:regexp]
@ -1834,7 +1925,7 @@ fu! s:getinput(...)
if gmd =~ 't' && gmd =~ 'k' && !a:0 && matchstr(str, '.$') =~ '\k' if gmd =~ 't' && gmd =~ 'k' && !a:0 && matchstr(str, '.$') =~ '\k'
retu join(prt, '') retu join(prt, '')
en en
let [pf, rz] = [( s:byfname ? 'f' : 'p' ), ( s:regexp ? 'r' : 'z' )] let [pf, rz] = [( s:byfname() ? 'f' : 'p' ), ( s:regexp ? 'r' : 'z' )]
for dict in s:abbrev['abbrevs'] for dict in s:abbrev['abbrevs']
let dmd = has_key(dict, 'mode') ? dict['mode'] : '' let dmd = has_key(dict, 'mode') ? dict['mode'] : ''
let pat = escape(dict['pattern'], '~') let pat = escape(dict['pattern'], '~')
@ -1916,7 +2007,7 @@ fu! s:getenv()
let [s:cwd, s:winres] = [getcwd(), [winrestcmd(), &lines, winnr('$')]] let [s:cwd, s:winres] = [getcwd(), [winrestcmd(), &lines, winnr('$')]]
let [s:crword, s:crnbword] = [expand('<cword>', 1), expand('<cWORD>', 1)] let [s:crword, s:crnbword] = [expand('<cword>', 1), expand('<cWORD>', 1)]
let [s:crgfile, s:crline] = [expand('<cfile>', 1), getline('.')] let [s:crgfile, s:crline] = [expand('<cfile>', 1), getline('.')]
let [s:winh, s:crcursor] = [min([s:mxheight, &lines]), getpos('.')] let [s:winmaxh, s:crcursor] = [min([s:mw_max, &lines]), getpos('.')]
let [s:crbufnr, s:crvisual] = [bufnr('%'), s:lastvisual()] let [s:crbufnr, s:crvisual] = [bufnr('%'), s:lastvisual()]
let s:crfile = bufname('%') == '' let s:crfile = bufname('%') == ''
\ ? '['.s:crbufnr.'*No Name]' : expand('%:p', 1) \ ? '['.s:crbufnr.'*No Name]' : expand('%:p', 1)
@ -1939,7 +2030,8 @@ endf
fu! s:log(m) fu! s:log(m)
if exists('g:ctrlp_log') && g:ctrlp_log | if a:m if exists('g:ctrlp_log') && g:ctrlp_log | if a:m
let cadir = ctrlp#utils#cachedir() let cadir = ctrlp#utils#cachedir()
sil! exe 'redi! >' cadir.s:lash(cadir).'ctrlp.log' let apd = g:ctrlp_log > 1 ? '>' : ''
sil! exe 'redi! >'.apd cadir.s:lash(cadir).'ctrlp.log'
el el
sil! redi END sil! redi END
en | en en | en
@ -2023,7 +2115,7 @@ endf
fu! s:mfunc() fu! s:mfunc()
let mfunc = 'match' let mfunc = 'match'
if s:byfname && s:ispath if s:byfname()
let mfunc = 's:matchfname' let mfunc = 's:matchfname'
elsei s:itemtype > 2 elsei s:itemtype > 2
let matchtypes = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' } let matchtypes = { 'tabs': 's:matchtabs', 'tabe': 's:matchtabe' }
@ -2102,7 +2194,9 @@ fu! s:getextvar(key)
endf endf
fu! ctrlp#getcline() fu! ctrlp#getcline()
retu !empty(s:lines) ? s:lines[line('.') - 1] : '' let [linenr, offset] = [line('.'), ( s:offset > 0 ? s:offset : 0 )]
retu !empty(s:lines) && !( offset && linenr <= offset )
\ ? s:lines[linenr - 1 - offset] : ''
endf endf
fu! ctrlp#getmarkedlist() fu! ctrlp#getmarkedlist()
@ -2134,6 +2228,10 @@ endf
fu! ctrlp#call(func, ...) fu! ctrlp#call(func, ...)
retu call(a:func, a:000) retu call(a:func, a:000)
endf endf
fu! ctrlp#getvar(var)
retu {a:var}
endf
"}}}1 "}}}1
" * Initialization {{{1 " * Initialization {{{1
fu! ctrlp#setlines(...) fu! ctrlp#setlines(...)

View File

@ -248,7 +248,9 @@ endf
fu! ctrlp#buffertag#cmd(mode, ...) fu! ctrlp#buffertag#cmd(mode, ...)
let s:btmode = a:mode let s:btmode = a:mode
if a:0 && !empty(a:1) if a:0 && !empty(a:1)
let s:bufname = fnamemodify(a:1, ':p') let s:btmode = 0
let bname = a:1 =~# '^%$\|^#\d*$' ? expand(a:1) : a:1
let s:bufname = fnamemodify(bname, ':p')
en en
retu s:id retu s:id
endf endf

View File

@ -83,7 +83,9 @@ endf
fu! ctrlp#changes#cmd(mode, ...) fu! ctrlp#changes#cmd(mode, ...)
let s:clmode = a:mode let s:clmode = a:mode
if a:0 && !empty(a:1) if a:0 && !empty(a:1)
let s:bufnr = bufnr('^'.fnamemodify(a:1, ':p').'$') let s:clmode = 0
let bname = a:1 =~# '^%$\|^#\d*$' ? expand(a:1) : a:1
let s:bufnr = bufnr('^'.fnamemodify(bname, ':p').'$')
en en
retu s:id retu s:id
endf endf

View File

@ -74,7 +74,7 @@ fu! ctrlp#dir#init(...)
endf endf
fu! ctrlp#dir#accept(mode, str) fu! ctrlp#dir#accept(mode, str)
let path = a:mode == 'h' ? getcwd() : s:cwd.ctrlp#utils#lash().a:str let path = a:mode == 'h' ? getcwd() : s:cwd.ctrlp#call('s:lash', s:cwd).a:str
if a:mode =~ 't\|v\|h' if a:mode =~ 't\|v\|h'
cal ctrlp#exit() cal ctrlp#exit()
en en

View File

@ -11,7 +11,7 @@ en
let g:loaded_ctrlp_line = 1 let g:loaded_ctrlp_line = 1
cal add(g:ctrlp_ext_vars, { cal add(g:ctrlp_ext_vars, {
\ 'init': 'ctrlp#line#init()', \ 'init': 'ctrlp#line#init(s:crbufnr)',
\ 'accept': 'ctrlp#line#accept', \ 'accept': 'ctrlp#line#accept',
\ 'lname': 'lines', \ 'lname': 'lines',
\ 'sname': 'lns', \ 'sname': 'lns',
@ -29,8 +29,9 @@ fu! s:syntax()
en en
endf endf
" Public {{{1 " Public {{{1
fu! ctrlp#line#init() fu! ctrlp#line#init(bufnr)
let [bufs, lines] = [ctrlp#buffers('id'), []] let [lines, bufnr] = [[], exists('s:bufnr') ? s:bufnr : a:bufnr]
let bufs = exists('s:lnmode') && s:lnmode ? ctrlp#buffers('id') : [bufnr]
for bufnr in bufs for bufnr in bufs
let [lfb, bufn] = [getbufline(bufnr, 1, '$'), bufname(bufnr)] let [lfb, bufn] = [getbufline(bufnr, 1, '$'), bufname(bufnr)]
if lfb == [] && bufn != '' if lfb == [] && bufn != ''
@ -57,7 +58,13 @@ fu! ctrlp#line#accept(mode, str)
en en
endf endf
fu! ctrlp#line#id() fu! ctrlp#line#cmd(mode, ...)
let s:lnmode = a:mode
if a:0 && !empty(a:1)
let s:lnmode = 0
let bname = a:1 =~# '^%$\|^#\d*$' ? expand(a:1) : a:1
let s:bufnr = bufnr('^'.fnamemodify(bname, ':p').'$')
en
retu s:id retu s:id
endf endf
"}}} "}}}

View File

@ -126,6 +126,10 @@ fu! ctrlp#mrufiles#bufs()
retu s:mrbs retu s:mrbs
endf endf
fu! ctrlp#mrufiles#tgrel()
let {s:re} = !{s:re}
endf
fu! ctrlp#mrufiles#cachefile() fu! ctrlp#mrufiles#cachefile()
if !exists('s:cadir') || !exists('s:cafile') if !exists('s:cadir') || !exists('s:cafile')
let s:cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'mru' let s:cadir = ctrlp#utils#cachedir().ctrlp#utils#lash().'mru'

View File

@ -40,9 +40,7 @@ Overview:~
|ctrlp_cmd|...................Default command used for the default mapping. |ctrlp_cmd|...................Default command used for the default mapping.
|ctrlp_by_filename|...........Default to filename mode or not. |ctrlp_by_filename|...........Default to filename mode or not.
|ctrlp_regexp|................Default to regexp mode or not. |ctrlp_regexp|................Default to regexp mode or not.
|ctrlp_match_window_bottom|...Where to show the match window. |ctrlp_match_window|..........Order, height and position of the match window.
|ctrlp_match_window_reversed|.Sort order in the match window.
|ctrlp_max_height|............Max height of the match window.
|ctrlp_switch_buffer|.........Jump to an open buffer if already opened. |ctrlp_switch_buffer|.........Jump to an open buffer if already opened.
|ctrlp_reuse_window|..........Reuse special windows (help, quickfix, etc). |ctrlp_reuse_window|..........Reuse special windows (help, quickfix, etc).
|ctrlp_tabpage_position|......Where to put the new tab page. |ctrlp_tabpage_position|......Where to put the new tab page.
@ -77,6 +75,11 @@ Overview:~
|ctrlp_mruf_case_sensitive|...MRU files are case sensitive or not. |ctrlp_mruf_case_sensitive|...MRU files are case sensitive or not.
|ctrlp_mruf_save_on_update|...Save to disk whenever a new entry is added. |ctrlp_mruf_save_on_update|...Save to disk whenever a new entry is added.
BufferTag mode: (to enable, see |ctrlp-extensions|)
|g:ctrlp_buftag_ctags_bin|....The location of the ctags-compatible binary.
|g:ctrlp_buftag_systemenc|....The encoding used for the ctags command.
|g:ctrlp_buftag_types|........Add new filetypes and set the cmd arguments.
Advanced options: Advanced options:
|ctrlp_open_func|.............Use custom file opening functions. |ctrlp_open_func|.............Use custom file opening functions.
|ctrlp_status_func|...........Change CtrlP's two statuslines. |ctrlp_status_func|...........Change CtrlP's two statuslines.
@ -114,21 +117,27 @@ Set this to 1 to set regexp search as the default: >
< <
Can be toggled on/off by pressing <c-r> inside the prompt. Can be toggled on/off by pressing <c-r> inside the prompt.
*'g:ctrlp_match_window_bottom'* *'g:ctrlp_match_window'*
Set this to 0 to show the match window at the top of the screen: > Change the postion, the listing order of results, the minimum and the maximum
let g:ctrlp_match_window_bottom = 1 heights of the match window: >
let g:ctrlp_match_window = ''
< <
Example: >
let g:ctrlp_match_window = 'bottom,order:btt,min:1,max:10'
<
The position: (default: bottom)
top - show the match window at the top of the screen.
bottom - show the match window at the bottom of the screen.
*'g:ctrlp_match_window_reversed'* The listing order of results: (default: btt)
Change the listing order of the files in the match window. The default setting order:ttb - from top to bottom.
(1) is from bottom to top: > order:btt - from bottom to top.
let g:ctrlp_match_window_reversed = 1
<
*'g:ctrlp_max_height'* The minimum and maximum heights:
Set the maximum height of the match window: > min:{n} - show minimum {n} lines (default: 1).
let g:ctrlp_max_height = 10 max:{n} - show maximum {n} lines (default: 10).
<
Note: When a setting isn't set, its default value will be used.
*'g:ctrlp_switch_buffer'* *'g:ctrlp_switch_buffer'*
When opening a file, if it's already open in a window somewhere, CtrlP will try When opening a file, if it's already open in a window somewhere, CtrlP will try
@ -323,18 +332,21 @@ Some examples: >
let g:ctrlp_user_command = ['.hg', 'for /f "tokens=1" %%a in (''hg root'') ' let g:ctrlp_user_command = ['.hg', 'for /f "tokens=1" %%a in (''hg root'') '
\ . 'do hg --cwd %s status -numac -I . %%a'] " Windows \ . 'do hg --cwd %s status -numac -I . %%a'] " Windows
< <
Note #1: if the fallback_command is empty or the 'fallback' key is not defined, Note #1: in the |Dictionary| format, 'fallback' and 'ignore' are optional. In
the |List| format, fallback_command is optional.
Note #2: if the fallback_command is empty or the 'fallback' key is not defined,
|globpath()| will then be used when scanning outside of a repository. |globpath()| will then be used when scanning outside of a repository.
Note #2: unless the |Dictionary| format is used and 'ignore' is defined and set Note #3: unless the |Dictionary| format is used and 'ignore' is defined and set
to 1, the |wildignore| and |g:ctrlp_custom_ignore| options do not apply when to 1, the |wildignore| and |g:ctrlp_custom_ignore| options do not apply when
these custom commands are being used. When not present, 'ignore' is set to 0 by these custom commands are being used. When not present, 'ignore' is set to 0 by
default to retain the performance advantage of using external commands. default to retain the performance advantage of using external commands.
Note #3: when changing the option's variable type, remember to |:unlet| it Note #4: when changing the option's variable type, remember to |:unlet| it
first or restart Vim to avoid the "E706: Variable type mismatch" error. first or restart Vim to avoid the "E706: Variable type mismatch" error.
Note #4: you can use a |b:var| to set this option on a per buffer basis. Note #5: you can use a |b:var| to set this option on a per buffer basis.
*'g:ctrlp_max_history'* *'g:ctrlp_max_history'*
The maximum number of input strings you want CtrlP to remember. The default The maximum number of input strings you want CtrlP to remember. The default
@ -563,6 +575,9 @@ Example: >
Set this to 1 to show only MRU files in the current working directory: > Set this to 1 to show only MRU files in the current working directory: >
let g:ctrlp_mruf_relative = 0 let g:ctrlp_mruf_relative = 0
< <
Note: you can use a custom mapping to toggle this option inside the prompt: >
let g:ctrlp_prompt_mappings = { 'ToggleMRURelative()': ['<F2>'] }
<
*'g:ctrlp_mruf_default_order'* *'g:ctrlp_mruf_default_order'*
Set this to 1 to disable sorting when searching in MRU mode: > Set this to 1 to disable sorting when searching in MRU mode: >
@ -734,6 +749,27 @@ Structure of the function: >
endfunction endfunction
< <
Note: you can extend any of the above options with { 'arg_type': 'dict' } to
enable passing all the function arguments in a single Dictionary argument. Use
the existing argument names as keys in this Dictionary.
Example: >
let g:ctrlp_status_func = {
\ 'arg_type' : 'dict',
\ 'enter': 'Function_Name_1',
\ 'exit': 'Function_Name_2',
\ }
function! Function_Name_1(dict)
" where dict == {
" \ 'focus': value,
" \ 'byfname': value,
" \ 'regex': value,
" \ ...
" }
endfunction
<
=============================================================================== ===============================================================================
COMMANDS *ctrlp-commands* COMMANDS *ctrlp-commands*
@ -1076,8 +1112,8 @@ Available extensions:~
*:CtrlPLine* *:CtrlPLine*
* Line mode:~ * Line mode:~
- Name: 'line' - Name: 'line'
- Command: ":CtrlPLine" - Command: ":CtrlPLine [buffer]"
- Search for a line in all listed buffers. - Search for a line in all listed buffers or in the specified [buffer].
*:CtrlPChange* *:CtrlPChange*
*:CtrlPChangeAll* *:CtrlPChangeAll*
@ -1164,7 +1200,7 @@ Highlighting:~
Statuslines:~ Statuslines:~
* Highlight groups: * Highlight groups:
CtrlPMode1 : 'file' or 'path', and the current mode (Character) CtrlPMode1 : 'file' or 'path' or 'line', and the current mode (Character)
CtrlPMode2 : 'prt' or 'win', 'regex', the working directory (|hl-LineNr|) CtrlPMode2 : 'prt' or 'win', 'regex', the working directory (|hl-LineNr|)
CtrlPStats : the scanning status (Function) CtrlPStats : the scanning status (Function)
@ -1253,6 +1289,10 @@ Special thanks:~
=============================================================================== ===============================================================================
CHANGELOG *ctrlp-changelog* CHANGELOG *ctrlp-changelog*
+ Combine *g:ctrlp_match_window_bottom* *g:ctrlp_match_window_reversed* and
*g:ctrlp_max_height* into |g:ctrlp_match_window|.
+ New option: |g:ctrlp_match_window|.
Before 2012/11/30~ Before 2012/11/30~
+ New options: |g:ctrlp_abbrev|, + New options: |g:ctrlp_abbrev|,

View File

@ -51,7 +51,9 @@ com! -n=? -com=buffer CtrlPBufTag
com! -bar CtrlPBufTagAll cal ctrlp#init(ctrlp#buffertag#cmd(1)) com! -bar CtrlPBufTagAll cal ctrlp#init(ctrlp#buffertag#cmd(1))
com! -bar CtrlPRTS cal ctrlp#init(ctrlp#rtscript#id()) com! -bar CtrlPRTS cal ctrlp#init(ctrlp#rtscript#id())
com! -bar CtrlPUndo cal ctrlp#init(ctrlp#undo#id()) com! -bar CtrlPUndo cal ctrlp#init(ctrlp#undo#id())
com! -bar CtrlPLine cal ctrlp#init(ctrlp#line#id())
com! -n=? -com=buffer CtrlPLine
\ cal ctrlp#init(ctrlp#line#cmd(1, <q-args>))
com! -n=? -com=buffer CtrlPChange com! -n=? -com=buffer CtrlPChange
\ cal ctrlp#init(ctrlp#changes#cmd(0, <q-args>)) \ cal ctrlp#init(ctrlp#changes#cmd(0, <q-args>))

View File

@ -76,8 +76,8 @@ syn region markdownAutomaticLink matchgroup=markdownUrlDelimiter start="<\%(\w\+
syn region markdownItalic start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart syn region markdownItalic start="\S\@<=\*\|\*\S\@=" end="\S\@<=\*\|\*\S\@=" keepend contains=markdownLineStart
syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart syn region markdownItalic start="\S\@<=_\|_\S\@=" end="\S\@<=_\|_\S\@=" keepend contains=markdownLineStart
syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart syn region markdownBold start="\S\@<=\*\*\|\*\*\S\@=" end="\S\@<=\*\*\|\*\*\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart syn region markdownBold start="\S\@<=__\|__\S\@=" end="\S\@<=__\|__\S\@=" keepend contains=markdownLineStart,markdownItalic
syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart syn region markdownBoldItalic start="\S\@<=\*\*\*\|\*\*\*\S\@=" end="\S\@<=\*\*\*\|\*\*\*\S\@=" keepend contains=markdownLineStart
syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart syn region markdownBoldItalic start="\S\@<=___\|___\S\@=" end="\S\@<=___\|___\S\@=" keepend contains=markdownLineStart
syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart syn region markdownCode matchgroup=markdownCodeDelimiter start="`" end="`" keepend contains=markdownLineStart
@ -86,7 +86,7 @@ syn region markdownCode matchgroup=markdownCodeDelimiter start="^\s*```.*$" end=
if main_syntax ==# 'markdown' if main_syntax ==# 'markdown'
for s:type in g:markdown_fenced_languages for s:type in g:markdown_fenced_languages
exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g') exe 'syn region markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\..*','','').' matchgroup=markdownCodeDelimiter start="^\s*```\s*'.matchstr(s:type,'[^=]*').'\>.*$" end="^\s*```\ze\s*$" keepend contains=@markdownHighlight'.substitute(matchstr(s:type,'[^=]*$'),'\.','','g')
endfor endfor
unlet! s:type unlet! s:type
endif endif

View File

@ -1,3 +1,7 @@
## 2.2 (06/10/2013)
Bugfixes:
- Fix plugin break in PASTE mode. This fixes #44.
## 2.1 (04/26/2013) ## 2.1 (04/26/2013)
Bugfixes: Bugfixes:

View File

@ -69,7 +69,7 @@ let g:multi_cursor_start_key='<F6>'
## Setting ## Setting
Currently there're two additional global settings one can tweak: Currently there're two additional global settings one can tweak:
### ```g:multi_cursor_exit_from_visual_mode``` (Defaut: 1) ### ```g:multi_cursor_exit_from_visual_mode``` (Default: 1)
If set to 0, then pressing `g:multi_cursor_quit_key` in _Visual_ mode will not quit and delete all existing cursors. This is useful if you want to press Escape and go back to Normal mode, and still be able to operate on all the cursors. If set to 0, then pressing `g:multi_cursor_quit_key` in _Visual_ mode will not quit and delete all existing cursors. This is useful if you want to press Escape and go back to Normal mode, and still be able to operate on all the cursors.
@ -87,7 +87,6 @@ highlight link multiple_cursors_visual Visual
## Issues ## Issues
- Multi key commands like `ciw` do not work at the moment - Multi key commands like `ciw` do not work at the moment
- Insert mode can be slow. If you are using Neobundle and have many plugins, try switching to Vundle to see if it helps. See https://github.com/Shougo/neobundle.vim/issues/84 for additional info.
- All user input typed before Vim is able to fan out the last operation to all cursors is lost. This is a implementation decision to keep the input perfectly synced in all locations, at the cost of potentially losing user input. - All user input typed before Vim is able to fan out the last operation to all cursors is lost. This is a implementation decision to keep the input perfectly synced in all locations, at the cost of potentially losing user input.
- Select mode is not implemented - Select mode is not implemented

View File

@ -50,9 +50,9 @@ endif
" Internal Mappings " Internal Mappings
"=============================================================================== "===============================================================================
inoremap <silent> <Plug>(i) <C-o>:call <SID>process_user_inut()<CR> inoremap <silent> <Plug>(i) <C-o>:call <SID>process_user_input()<CR>
nnoremap <silent> <Plug>(i) :call <SID>process_user_inut()<CR> nnoremap <silent> <Plug>(i) :call <SID>process_user_input()<CR>
xnoremap <silent> <Plug>(i) :<C-u>call <SID>process_user_inut()<CR> xnoremap <silent> <Plug>(i) :<C-u>call <SID>process_user_input()<CR>
inoremap <silent> <Plug>(a) <C-o>:call <SID>apply_user_input_next('i')<CR> inoremap <silent> <Plug>(a) <C-o>:call <SID>apply_user_input_next('i')<CR>
nnoremap <silent> <Plug>(a) :call <SID>apply_user_input_next('n')<CR> nnoremap <silent> <Plug>(a) :call <SID>apply_user_input_next('n')<CR>
@ -97,8 +97,8 @@ endfunction
" attempted to be created at the next occurrence of the visual selection " attempted to be created at the next occurrence of the visual selection
function! multiple_cursors#new(mode) function! multiple_cursors#new(mode)
if a:mode ==# 'n' if a:mode ==# 'n'
" Reset all existing cursors, don't restore view " Reset all existing cursors, don't restore view and setting
call s:cm.reset(0) call s:cm.reset(0, 0)
" Select the word under cursor to set the '< and '> marks " Select the word under cursor to set the '< and '> marks
exec "normal! viw" exec "normal! viw"
@ -113,7 +113,7 @@ function! multiple_cursors#new(mode)
let start = line("'<") let start = line("'<")
let finish = line("'>") let finish = line("'>")
if start != finish if start != finish
call s:cm.reset(0) call s:cm.reset(0, 0)
let col = col("'<") let col = col("'<")
for line in range(line("'<"), line("'>")) for line in range(line("'<"), line("'>"))
let pos = [line, col] let pos = [line, col]
@ -124,7 +124,7 @@ function! multiple_cursors#new(mode)
else else
" Came directly from visual mode " Came directly from visual mode
if s:cm.is_empty() if s:cm.is_empty()
call s:cm.reset(0) call s:cm.reset(0, 0)
if visualmode() ==# 'V' if visualmode() ==# 'V'
let left = [line('.'), 1] let left = [line('.'), 1]
@ -318,6 +318,7 @@ function! s:CursorManager.new()
\ 'virtualedit': &virtualedit, \ 'virtualedit': &virtualedit,
\ 'cursorline': &cursorline, \ 'cursorline': &cursorline,
\ 'lazyredraw': &lazyredraw, \ 'lazyredraw': &lazyredraw,
\ 'paste': &paste,
\ } \ }
" We save the window view when multicursor mode is entered " We save the window view when multicursor mode is entered
let obj.saved_winview = [] let obj.saved_winview = []
@ -327,7 +328,7 @@ function! s:CursorManager.new()
endfunction endfunction
" Clear all cursors and their highlights " Clear all cursors and their highlights
function! s:CursorManager.reset(restore_view) dict function! s:CursorManager.reset(restore_view, restore_setting) dict
if a:restore_view if a:restore_view
" Return the view back to the beginning " Return the view back to the beginning
if !empty(self.saved_winview) if !empty(self.saved_winview)
@ -357,7 +358,9 @@ function! s:CursorManager.reset(restore_view) dict
let self.saved_winview = [] let self.saved_winview = []
let self.start_from_find = 0 let self.start_from_find = 0
let s:char = '' let s:char = ''
if a:restore_setting
call self.restore_user_settings() call self.restore_user_settings()
endif
endfunction endfunction
" Returns 0 if it's not managing any cursors at the moment " Returns 0 if it's not managing any cursors at the moment
@ -513,10 +516,17 @@ endfunction
" where the real vim cursor is " where the real vim cursor is
" lazyredraw needs to be turned on to prevent jerky screen behavior with many " lazyredraw needs to be turned on to prevent jerky screen behavior with many
" cursors on screen " cursors on screen
" paste mode needs to be switched off since it turns off a bunch of features
" that's critical for the plugin to function
function! s:CursorManager.initialize() dict function! s:CursorManager.initialize() dict
let self.saved_settings['virtualedit'] = &virtualedit
let self.saved_settings['cursorline'] = &cursorline
let self.saved_settings['lazyredraw'] = &lazyredraw
let self.saved_settings['paste'] = &paste
let &virtualedit = "onemore" let &virtualedit = "onemore"
let &cursorline = 0 let &cursorline = 0
let &lazyredraw = 1 let &lazyredraw = 1
let &paste = 0
" We could have already saved the view from multiple_cursors#find " We could have already saved the view from multiple_cursors#find
if !self.start_from_find if !self.start_from_find
let self.saved_winview = winsaveview() let self.saved_winview = winsaveview()
@ -529,6 +539,7 @@ function! s:CursorManager.restore_user_settings() dict
let &virtualedit = self.saved_settings['virtualedit'] let &virtualedit = self.saved_settings['virtualedit']
let &cursorline = self.saved_settings['cursorline'] let &cursorline = self.saved_settings['cursorline']
let &lazyredraw = self.saved_settings['lazyredraw'] let &lazyredraw = self.saved_settings['lazyredraw']
let &paste = self.saved_settings['paste']
endif endif
endfunction endfunction
@ -742,7 +753,7 @@ function! s:feedkeys(keys)
endfunction endfunction
" Take the user input and apply it at every cursor " Take the user input and apply it at every cursor
function! s:process_user_inut() function! s:process_user_input()
" Grr this is frustrating. In Insert mode, between the feedkey call and here, " Grr this is frustrating. In Insert mode, between the feedkey call and here,
" the current position could actually CHANGE for some odd reason. Forcing a " the current position could actually CHANGE for some odd reason. Forcing a
" position reset here " position reset here
@ -876,7 +887,7 @@ function! s:exit()
let exit = 1 let exit = 1
endif endif
if exit if exit
call s:cm.reset(1) call s:cm.reset(1, 1)
return 1 return 1
endif endif
return 0 return 0

View File

@ -160,7 +160,6 @@ like the following in your vimrc: >
cursors is lost. This is a implementation decision to keep the input cursors is lost. This is a implementation decision to keep the input
perfectly synced in all locations, at the cost of potentially losing user perfectly synced in all locations, at the cost of potentially losing user
input. input.
- Performance in terminal vim degrades significantly with more cursors
- Select mode is not implemented - Select mode is not implemented
============================================================================== ==============================================================================

View File

@ -270,4 +270,19 @@ describe "Multiple Cursors" do
hello world hello world
EOF EOF
end end
specify "#set paste mode" do
before <<-EOF
hello
hello
EOF
type ':set paste<CR><C-n><C-n>cworld<Esc>:set nopaste<CR>'
after <<-EOF
world
world
EOF
end
end end

View File

@ -77,11 +77,10 @@ fun! snipMate#expandSnip(snip, col)
endif endif
endif endif
call setline(lnum, line.snipLines[0]) " Insert snippet with proper indentation
let indent = indent(lnum) + 1
" Autoindent snippet according to previous indentation call setline(lnum, line . snipLines[0])
let indent = matchend(line, '^.\{-}\ze\(\S\|$\)') + 1 call append(lnum, map(snipLines[1:], "empty(v:val) ? v:val : '" . strpart(line, 0, indent - 1) . "' . v:val"))
call append(lnum, map(snipLines[1:], "'".strpart(line, 0, indent - 1)."'.v:val"))
" Open any folds snippet expands into " Open any folds snippet expands into
if &fen | sil! exe lnum.','.(lnum + len(snipLines) - 1).'foldopen' | endif if &fen | sil! exe lnum.','.(lnum + len(snipLines) - 1).'foldopen' | endif
@ -391,7 +390,8 @@ endf
" if triggername is not set 'default' is assumed " if triggername is not set 'default' is assumed
fun! snipMate#ReadSnippetsFile(file) fun! snipMate#ReadSnippetsFile(file)
let result = [] let result = []
if !filereadable(a:file) | return result | endif let new_scopes = []
if !filereadable(a:file) | return [result, new_scopes] | endif
let r_guard = '^guard\s\+\zs.*' let r_guard = '^guard\s\+\zs.*'
let inSnip = 0 let inSnip = 0
let guard = 1 let guard = 1
@ -421,9 +421,12 @@ fun! snipMate#ReadSnippetsFile(file)
let trigger = strpart(trigger, 0, space - 1) let trigger = strpart(trigger, 0, space - 1)
endif endif
let content = '' let content = ''
elseif line[:6] == 'extends'
call extend(new_scopes, map(split(strpart(line, 8)),
\ "substitute(v:val, ',*$', '', '')"))
endif endif
endfor endfor
return result return [result, new_scopes]
endf endf
" adds scope aliases to list. " adds scope aliases to list.
@ -448,7 +451,14 @@ fun! s:AddScopeAliases(list)
endf endf
function! s:Glob(path, expr) function! s:Glob(path, expr)
return filter(split(globpath(a:path, a:expr), "\n"), 'filereadable(v:val)') let res = []
for p in split(a:path, ',')
let h = fnamemodify(a:expr, ':h')
if isdirectory(p . '/' . h)
call extend(res, split(glob(p . '/' . a:expr), "\n"))
endif
endfor
return filter(res, 'filereadable(v:val)')
endfunction endfunction
" returns dict of " returns dict of
@ -467,7 +477,7 @@ function! snipMate#GetSnippetFiles(mustExist, scopes, trigger)
let paths = join(funcref#Call(s:c.snippet_dirs), ',') let paths = join(funcref#Call(s:c.snippet_dirs), ',')
let result = {} let result = {}
let scopes = s:AddScopeAliases(a:scopes) let scopes = s:AddScopeAliases(a:scopes)
let trigger = escape(a:trigger, '{}*[]`') let trigger = escape(a:trigger, "*[]?{}`'$")
" collect existing files " collect existing files
for scope in scopes for scope in scopes
@ -490,7 +500,7 @@ function! snipMate#GetSnippetFiles(mustExist, scopes, trigger)
if !a:mustExist if !a:mustExist
for p in split(paths, ',') for p in split(paths, ',')
let p .= '/' . scope . '.snippets' let p .= '/snippets/' . scope . '.snippets'
let result[p] = get(result, p, {'exists': 0, 'type': 'snippets'}) let result[p] = get(result, p, {'exists': 0, 'type': 'snippets'})
endfor endfor
endif endif
@ -514,21 +524,27 @@ endf
" default triggers based on paths " default triggers based on paths
fun! snipMate#DefaultPool(scopes, trigger, result) fun! snipMate#DefaultPool(scopes, trigger, result)
let triggerR = substitute(a:trigger,'*','.*','g') let triggerR = substitute(a:trigger,'*','.*','g')
let extra_scopes = []
for [f,opts] in items(snipMate#GetSnippetFiles(1, a:scopes, a:trigger)) for [f,opts] in items(snipMate#GetSnippetFiles(1, a:scopes, a:trigger))
let opts.name_prefix = matchstr(f, '\v[^/]+\ze/snippets') . ' ' . opts.name_prefix let opts.name_prefix = matchstr(f, '\v[^/]+\ze/snippets') . ' ' . opts.name_prefix
if opts.type == 'snippets' if opts.type == 'snippets'
for [trigger, name, contents, guard] in cached_file_contents#CachedFileContents(f, s:c.read_snippets_cached, 0) let [snippets, extension] = cached_file_contents#CachedFileContents(f, s:c.read_snippets_cached, 0)
for [trigger, name, contents, guard] in snippets
if trigger !~ escape(triggerR,'~') | continue | endif if trigger !~ escape(triggerR,'~') | continue | endif
if snipMate#EvalGuard(guard) if snipMate#EvalGuard(guard)
call snipMate#SetByPath(a:result, [trigger, opts.name_prefix.' '.name], contents) call snipMate#SetByPath(a:result, [trigger, opts.name_prefix.' '.name], contents)
endif endif
endfor endfor
call extend(extra_scopes, extension)
elseif opts.type == 'snippet' elseif opts.type == 'snippet'
call snipMate#SetByPath(a:result, [opts.trigger, opts.name_prefix.' '.opts.name], funcref#Function('return readfile('.string(f).')')) call snipMate#SetByPath(a:result, [opts.trigger, opts.name_prefix.' '.opts.name], funcref#Function('return readfile('.string(f).')'))
else else
throw "unexpected" throw "unexpected"
endif endif
endfor endfor
if !empty(extra_scopes)
call snipMate#DefaultPool(extra_scopes, a:trigger, a:result)
endif
endf endf
" return a dict of snippets found in runtimepath matching trigger " return a dict of snippets found in runtimepath matching trigger

View File

@ -1,7 +1,6 @@
*snipMate.txt* Plugin for using TextMate-style snippets in Vim. *snipMate.txt* Plugin for using TextMate-style snippets in Vim.
snipMate *snippet* *snippets* *snipMate* snipMate *snippet* *snippets* *snipMate*
Last Change: December 27, 2009
|snipMate-installation| Installation |snipMate-installation| Installation
|snipMate-description| Description |snipMate-description| Description
@ -306,6 +305,15 @@ TextMates's functionality, use the |system()| function. E.g.: >
will insert the current date, assuming you are on a Unix system. Note that you will insert the current date, assuming you are on a Unix system. Note that you
can also (and should) use |strftime()| for this example. can also (and should) use |strftime()| for this example.
*snipMate-extends*
Borrowing from UltiSnips, .snippets files can also contain an extends
directive, for example: >
extends html, javascript, css
will tell SnipMate to also read html, javascript, and css snippets.
Filename([{expr}] [, {defaultText}]) *snipMate-filename* *Filename()* Filename([{expr}] [, {defaultText}]) *snipMate-filename* *Filename()*
Since the current filename is used often in snippets, a default function Since the current filename is used often in snippets, a default function
@ -420,6 +428,15 @@ Perhaps some of these features will be added in a later release.
============================================================================== ==============================================================================
CHANGELOG *snipMate-changelog* CHANGELOG *snipMate-changelog*
0.86 - 2013-06-15
-----------------
* Use more idiomatic <Plug> maps
* Fix disappearing variables bug (hpesoj)
* Fix cursor position bug when a variable is on the same line as the stop
* Fix undo point creation causing problems with Supertab
* Fix bug where SnipMate would use a typed trigger as a regular expression
0.85 - 2013-04-03 0.85 - 2013-04-03
----------------- -----------------

View File

@ -1,6 +1,6 @@
" File: snipMate.vim " File: snipMate.vim
" Author: Michael Sanders " Author: Michael Sanders
" Version: 0.85 " Version: 0.86
" Description: snipMate.vim implements some of TextMate's snippets features in " Description: snipMate.vim implements some of TextMate's snippets features in
" Vim. A snippet is a piece of often-typed text that you can " 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>". " insert into your document using a trigger word followed by a "<tab>".
@ -56,30 +56,15 @@ let s:snipMate['get_snippets'] = get(s:snipMate, 'get_snippets', funcref#Functio
" snippets. You can replace it with your own implementation. Defaults to all " snippets. You can replace it with your own implementation. Defaults to all
" directories in &rtp/snippets/* " directories in &rtp/snippets/*
let s:snipMate['snippet_dirs'] = get(s:snipMate, 'snippet_dirs', funcref#Function('return split(&runtimepath,",")')) let s:snipMate['snippet_dirs'] = get(s:snipMate, 'snippet_dirs', funcref#Function('return split(&runtimepath,",")'))
if type(s:snipMate['snippet_dirs']) == type([])
call map(s:snipMate['snippet_dirs'], 'expand(v:val)')
endif
" _ is default scope added always " _ is default scope added always
" "
" &ft honors multiple filetypes and syntax such as in set ft=html.javascript syntax=FOO " &ft honors multiple filetypes and syntax such as in set ft=html.javascript syntax=FOO
let s:snipMate['get_scopes'] = get(s:snipMate, 'get_scopes', funcref#Function('return split(&ft,"\\.")+[&syntax, "_"]')) let s:snipMate['get_scopes'] = get(s:snipMate, 'get_scopes', funcref#Function('return split(&ft,"\\.")+[&syntax, "_"]'))
if !exists('snippets_dir')
let snippets_dir = substitute(globpath(&rtp, 'snippets/'), "\n", ',', 'g')
endif
" Processes a single-snippet file; optionally add the name of the parent
" directory for a snippet with multiple matches.
fun! s:ProcessFile(file, ft, ...)
let keyword = fnamemodify(a:file, ':t:r')
if keyword == '' | return | endif
try
let text = join(readfile(a:file), "\n")
catch /E484/
echom "Error in snipMate.vim: couldn't read file: ".a:file
endtry
return a:0 ? MakeSnip(a:ft, a:1, text, keyword)
\ : MakeSnip(a:ft, keyword, text)
endf
" dummy for compatibility - will be removed " dummy for compatibility - will be removed
" moving to autoload to improve loading speed and debugging " moving to autoload to improve loading speed and debugging
fun! TriggerSnippet() fun! TriggerSnippet()

View File

@ -6,10 +6,11 @@ syn match tabStop '\$\d\+'
syn match snipEscape '\\\\\|\\`' syn match snipEscape '\\\\\|\\`'
syn match snipCommand '\%(\\\@<!\%(\\\\\)*\)\@<=`.\{-}\%(\\\@<!\%(\\\\\)*\)\@<=`' syn match snipCommand '\%(\\\@<!\%(\\\\\)*\)\@<=`.\{-}\%(\\\@<!\%(\\\\\)*\)\@<=`'
syn match snippet '^snippet.*' contains=multiSnipText,snipKeyword syn match snippet '^snippet.*' contains=multiSnipText,snipKeyword
syn match snippet '^extends.*' contains=snipKeyword
syn match snippet '^guard\s\+.*' contains=multiSnipText,snipKeyword syn match snippet '^guard\s\+.*' contains=multiSnipText,snipKeyword
syn match multiSnipText '\S\+ \zs.*' contained syn match multiSnipText '\S\+ \zs.*' contained
syn match snipKeyword '^snippet'me=s+8 contained syn match snipKeyword '^(snippet|extends)'me=s+8 contained
syn match snipError "^[^#s\t].*$" syn match snipError "^[^#se\t].*$"
hi link snippet Identifier hi link snippet Identifier
hi link snipComment Comment hi link snipComment Comment

View File

@ -10,6 +10,7 @@ Elliot Murphy
Eustaquio Rangel Eustaquio Rangel
Henrik Nyh Henrik Nyh
Honza Pokorny Honza Pokorny
Iuri Fernandes Queiroz
Jakub Nawalaniec Jakub Nawalaniec
James F. Herdman James F. Herdman
Jon Bernard Jon Bernard
@ -38,6 +39,7 @@ Dmitry Dementev
Travis Holton Travis Holton
Chrisyue Chrisyue
Erik Westrup Erik Westrup
Matt Deacalion Stevens
TODO: add contributors from github.com/SirVer/Ultisnip having contributed to TODO: add contributors from github.com/SirVer/Ultisnip having contributed to
github.com/SirVer/Ultisnip/UltiSnips/* files github.com/SirVer/Ultisnip/UltiSnips/* files

View File

@ -50,6 +50,49 @@ of the snippets by setting the "always_use_first_snippet" option to 1.
If you have VimL only (vim without python support) your best option is using If you have VimL only (vim without python support) your best option is using
garbas/vim-snipmate and cope with the minor bugs found in the engine. garbas/vim-snipmate and cope with the minor bugs found in the engine.
Policies / for contributors
===========================
Some snippets are useful for almost all languages, so let's try to have the same
triggers for them:
```
if : if without else
ife: if $1 else $2
eif : else if ($1) { .. }
el : else ..
```
If you're not satisfied with these defaults, open a ticket that we implement
aliasing. Then you can remap "else" to "el" or the like.
Don't add stupid placeholder default texts like
```
if (${1:condition}){
${2:some code here}
}
```
instead use:
```
if (${1}){
${2}
}
```
Exception: Functions which are used less often, such as Vim's matchall(), matchstr()
functions which case hints may be helpful to remember order. In the VimL case
get vim-dev plugin which has function completion
Thus for conditions (while, if ..) and block bodies just use ${N} - Thanks
Open questions:
What about one line if ee then .. else .. vs if \n .. then \n ... \n else \n .. ?
What about wh(ile), which trigger?
Discuss at: https://github.com/honza/vim-snippets/issues/230
Related repositories Related repositories
==================== ====================
We also encourage people to maintain sets of snippets for particular use cases We also encourage people to maintain sets of snippets for particular use cases
@ -63,10 +106,11 @@ so that all users can benefit from them. People can list their snippet reposito
Installation using VAM: "github:rbonvall/snipmate-snippets-bib" Installation using VAM: "github:rbonvall/snipmate-snippets-bib"
## If you believe in the success of vim-snipmate Future - ideas - examples
then you may also want to have a look at [vim-git-wiki](http://github.com/MarcWeber/vim-git-wiki). =========================
If you contribute to this git based wiki editable by Vim we have a chance [overview snippet engines](http://vim-wiki.mawercer.de/wiki/topic/text-snippets-skeletons-templates.html)
of making it official at www.vim.org. If you have ideas you can add them to that list of "snippet engine features by example".
Historical notes Historical notes
================ ================
@ -86,19 +130,23 @@ add snippets/ruby-1.9.snippets (1.9 only)
then configure github.com/garbas/vim-snipmate this way: then configure github.com/garbas/vim-snipmate this way:
let g:snipMate = {}
let g:snipMate.scope_aliases = {} ```vim
let g:snipMate.scope_aliases['ruby'] = 'ruby,ruby-rails,ruby-1.9' let g:snipMate = {}
let g:snipMate.scope_aliases = {}
let g:snipMate.scope_aliases['ruby'] = 'ruby,ruby-rails,ruby-1.9'
```
or github.com/MarcWeber/UltiSnips this way: or github.com/MarcWeber/UltiSnips this way:
let g:UltiSnips = {} ```vim
let g:UltiSnips = {}
let g:UltiSnips.snipmate_ft_filter = { let g:UltiSnips.snipmate_ft_filter = {
\ 'default' : {'filetypes': ["FILETYPE"] }, \ 'default' : {'filetypes': ["FILETYPE"] },
\ 'ruby' : {'filetypes': ["ruby", "ruby-rails", "ruby-1.9"] }, \ 'ruby' : {'filetypes': ["ruby", "ruby-rails", "ruby-1.9"] },
```
If it happens that you work on a project requiring ruby-1.8 snippets instead, If it happens that you work on a project requiring ruby-1.8 snippets instead,
consider using vim-addon-local-vimrc and override the filetypes. consider using vim-addon-local-vimrc and override the filetypes.
@ -129,6 +177,8 @@ vim-snippets is not like the "linux kernel".
* Ruby - [taq](http://github.com/taq) * Ruby - [taq](http://github.com/taq)
* PHP - [chrisyue](http://github.com/chrisyue) * PHP - [chrisyue](http://github.com/chrisyue)
* Scala - [gorodinskiy](https://github.com/gorodinskiy) * Scala - [gorodinskiy](https://github.com/gorodinskiy)
* Falcon - [steveno](https://github.com/steveno)
* Elixir - [iurifq](https://github.com/iurifq)
Contributing notes Contributing notes
------------------ ------------------

View File

@ -1,75 +1,83 @@
# From the TextMate bundle # From the TextMate bundle
# with some modification
snippet fun "Function" b snippet fun "Function" b
${1:name} = (${2:args}) -> ${1:name} = `!p snip.rv = "(" if t[2] else ""`${2:args}`!p snip.rv = ") " if t[2] else ""`->
${0:# body...} ${0:# body...}
endsnippet endsnippet
snippet bfun "Function (bound)" b snippet bfun "Function (bound)" i
${1:(${2:args}) }=> `!p snip.rv = "(" if t[1] else ""`${1:args}`!p snip.rv = ") " if t[1] else ""`=>`!p snip.rv = " " if t[2] and not t[2].startswith("\n") else ""`${2:expr}
${0:# body...}
endsnippet endsnippet
snippet if "If" b snippet if "If"
if ${1:condition} if ${1:condition}
${0:# body...} ${0:# body...}
endsnippet endsnippet
snippet ife "If .. Else" b snippet ife "If .. Else"
if ${1:condition} if ${1:condition}
${2:# body...} ${2:# body...}
else else
${3:# body...} ${3:# body...}
endsnippet endsnippet
snippet elif "Else if" b snippet eif "Else if" b
else if ${1:condition} else if ${1:condition}
${0:# body...} ${0:# body...}
endsnippet endsnippet
snippet ifte "Ternary if" b snippet ifte "Ternary if"
if ${1:condition} then ${2:value} else ${3:other} if ${1:condition} then ${2:value} else ${3:other}
endsnippet endsnippet
snippet unl "Unless" b snippet unl "Unless"
${1:action} unless ${2:condition} ${1:action} unless ${2:condition}
endsnippet endsnippet
snippet fora "Array Comprehension" b snippet fora "Array Comprehension"
for ${1:name} in ${2:array} for ${1:name} in ${2:array}
${0:# body...} ${0:# body...}
endsnippet endsnippet
snippet foro "Object Comprehension" b snippet foro "Object Comprehension"
for ${1:key}, ${2:value} of ${3:Object} for ${1:key}, ${2:value} of ${3:Object}
${0:# body...} ${0:# body...}
endsnippet endsnippet
snippet forr "Range Comprehension (inclusive)" b snippet forr "Range Comprehension (inclusive)"
for ${1:name} in [${2:start}..${3:finish}]${4: by ${5:step}} for ${1:name} in [${2:start}..${3:finish}]`!p snip.rv = " by " if t[4] else ""`${4:step}
${0:# body...} ${0:# body...}
endsnippet endsnippet
snippet forrex "Range Comprehension (exclusive)" b snippet forrex "Range Comprehension (exclusive)"
for ${1:name} in [${2:start}...${3:finish}]${4: by ${5:step}} for ${1:name} in [${2:start}...${3:finish}]`!p snip.rv = " by " if t[4] else ""`${4:step}
${0:# body...} ${0:# body...}
endsnippet endsnippet
snippet swi "Switch" b snippet swi "Switch"
switch ${1:object} switch ${1:object}
when ${2:value} when ${2:value}
${0:# body...} ${3:# body...}
else
$0
endsnippet
snippet swit "Switch when .. then"
switch ${1:object}
when ${2:condition}`!p snip.rv = " then " if t[3] else ""`${3:value}
else`!p snip.rv = " " if t[4] and not t[4].startswith("\n") else ""`${4:value}
endsnippet endsnippet
snippet cla "Class" b snippet cla "Class" b
class ${1:ClassName}${2: extends ${3:Ancestor}} class ${1:ClassName}`!p snip.rv = " extends " if t[2] else ""`${2:Ancestor}
${4:constructor: (${5:args}) -> ${3:constructor:`!p snip.rv = " (" if t[4] else ""`${4:args}`!p snip.rv = ")" if t[4] else ""` ->
${6:# body...}} ${5:# body...}}
$7 $0
endsnippet endsnippet
snippet try "Try .. Catch" b snippet try "Try .. Catch"
try try
$1 $1
catch ${2:error} catch ${2:error}
@ -80,7 +88,7 @@ snippet req "Require" b
${1/^'?(\w+)'?$/\L$1\E/} = require(${1:'${2:sys}'}) ${1/^'?(\w+)'?$/\L$1\E/} = require(${1:'${2:sys}'})
endsnippet endsnippet
snippet # "Interpolated Code" snippet # "Interpolated Code" i
#{$1}$0 #{$1}$0
endsnippet endsnippet

View File

@ -126,7 +126,7 @@ else
} }
endsnippet endsnippet
snippet elif "else if (elif)" b snippet eif "else if (elif)" b
else if(${1:/*condition*/}) else if(${1:/*condition*/})
{ {
${VISUAL}${0:/*code*/} ${VISUAL}${0:/*code*/}
@ -576,7 +576,7 @@ snippet module "New module (module)" b
// (See accompanying file LICENSE_1_0.txt or copy at // (See accompanying file LICENSE_1_0.txt or copy at
// http://www.boost.org/LICENSE_1_0.txt) // http://www.boost.org/LICENSE_1_0.txt)
module ${2}.`!v Filename('$1', 'name')`; module ${2}.`!v vim_snippets#Filename('$1', 'name')`;
${3} ${3}

View File

@ -76,7 +76,7 @@ snippet if
{% endif %} {% endif %}
endsnippet endsnippet
snippet else snippet el
{% else %} {% else %}
${1} ${1}
endsnippet endsnippet

View File

@ -263,7 +263,7 @@ snippet st "submit_tag"
`!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`submit_tag "${1:Save changes}"${2:, :id => "${3:submit}"}${4:, :name => "${5:$3}"}${6:, :class => "${7:form_$3}"}${8:, :disabled => ${9:false}}${10:, :disable_with => "${11:Please wait...}"}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)` `!p textmate_var('TM_RAILS_TEMPLATE_START_RUBY_EXPR', snip)`submit_tag "${1:Save changes}"${2:, :id => "${3:submit}"}${4:, :name => "${5:$3}"}${6:, :class => "${7:form_$3}"}${8:, :disabled => ${9:false}}${10:, :disable_with => "${11:Please wait...}"}`!p textmate_var('TM_RAILS_TEMPLATE_END_RUBY_EXPR', snip)`
endsnippet endsnippet
snippet else "else (ERB)" snippet el "else (ERB)"
<% else %> <% else %>
endsnippet endsnippet

View File

@ -1,13 +1,13 @@
snippet if "if ... then ... else ..." snippet ife "if ... then ... else ..."
if ${1:condition} if ${1:condition}
then ${2:expression} then ${2:expression}
else ${3:expression} else ${3:expression}
endsnippet endsnippet
snippet case "case ... of ..." snippet case "case ... of ..."
case ${1:expression} of case ${1} of
${2:pattern} -> ${3:expression} ${2} -> ${3}
${4:pattern} -> ${5:expression} ${4} -> ${5}
endsnippet endsnippet
snippet :: "Type signature" snippet :: "Type signature"

View File

@ -0,0 +1,31 @@
# more can be found in snippets/html_minimal.snippets
# these UltiSnips override snippets because nested placeholders are being used
snippet id
id="${1}"${2}
endsnippet
snippet idn
id="${1}" name="${2:$1}"
endsnippet
snippet label_and_input
<label for="${2:$1}">${1}</label>
<input type="${3:text}" name="${4:$2}"${5: id="${6:$2}"} value="${7}" />${8}
endsnippet
snippet input
<input type="${1:text}" value="${2}" name="${3}"${4: id="${5:$3}}/>${7}
endsnippet
snippet submit
<input type="submit" value="${2}" ${3}/>${7}
endsnippet
snippet textarea
<textarea name="$2"${3: id="$4"}>$5</textarea>
endsnippet
snippet img
<img src="$1"${2: alt="$3"}/>
endsnippet

View File

@ -59,7 +59,7 @@ default:
$0 $0
endsnippet endsnippet
snippet elif "else if" b snippet eif "else if" b
else if ($1)`!p nl(snip)`{ else if ($1)`!p nl(snip)`{
$0 $0
} }

View File

@ -50,12 +50,19 @@ function ${1:function_name} (${2:argument}) {
} }
endsnippet endsnippet
# for one line if .. else you usually use a ? b : c
snippet ife "if ___ else" snippet ife "if ___ else"
if (${1:true}) {$0} else{}; if (${1}) {
{$2}
} else {
{$3}
};
endsnippet endsnippet
snippet if "if" snippet if "if"
if (${1:true}) {$0}; if (${1}) {
{$2}
};
endsnippet endsnippet
snippet timeout "setTimeout function" snippet timeout "setTimeout function"

View File

@ -4,17 +4,17 @@ endsnippet
snippet open "open" snippet open "open"
let open ${1:module} in let open ${1:module} in
${2:e} ${2}
endsnippet endsnippet
snippet try "try" snippet try "try"
try ${1:e} try ${1}
with ${2:Not_found} -> ${3:()} with ${2:Not_found} -> ${3:()}
endsnippet endsnippet
snippet ref "ref" snippet ref "ref"
let ${1:name} = ref ${2:val} in let ${1} = ref ${2} in
${3:e} ${3}
endsnippet endsnippet
snippet matchl "pattern match on a list" snippet matchl "pattern match on a list"
@ -24,88 +24,83 @@ match ${1:list} with
endsnippet endsnippet
snippet matcho "pattern match on an option type" snippet matcho "pattern match on an option type"
match ${1:x} with match ${1} with
| Some(${2:y}) -> ${3:()} | Some(${2}) -> ${3:()}
| None -> ${4:()} | None -> ${4:()}
endsnippet endsnippet
snippet fun "anonymous function" snippet fun "anonymous function"
(fun ${1:x} -> ${2:x}) (fun ${1} -> ${2})
endsnippet endsnippet
snippet cc "commment" snippet cc "commment"
(* ${1:comment} *) (* ${1} *)
endsnippet endsnippet
snippet let "let .. in binding" snippet let "let .. in binding"
let ${1:x} = ${2:v} in let ${1} = ${2} in
${3:e} ${3}
endsnippet endsnippet
snippet lr "let rec" snippet lr "let rec"
let rec ${1:f} = let rec ${1} =
${2:expr} ${2}
endsnippet endsnippet
snippet if "if" snippet ife "if"
if ${1:(* condition *)} then if ${1} then
${2:(* A *)} ${2}
else else
${3:(* B *)} ${3}
endsnippet endsnippet
snippet If "If" snippet if "If"
if ${1:(* condition *)} then if ${1} then
${2:(* A *)} ${2}
endsnippet endsnippet
snippet while "while" snippet while "while"
while ${1:(* condition *)} do while ${1} do
${2:(* A *)} ${2}
done done
endsnippet endsnippet
snippet for "for" snippet for "for"
for ${1:i} = ${2:1} to ${3:10} do for ${1:i} = ${2:1} to ${3:10} do
${4:(* BODY *)} ${4}
done done
endsnippet endsnippet
snippet match "match" snippet match "match"
match ${1:(* e1 *)} with match ${1} with
| ${2:p} -> ${3:e2} | ${2} -> ${3}
endsnippet
snippet Match "match"
match ${1:(* e1 *)} with
| ${2:p} -> ${3:e2}
endsnippet endsnippet
snippet class "class" snippet class "class"
class ${1:name} = object class ${1:name} = object
${2:methods} ${2}
end end
endsnippet endsnippet
snippet obj "obj" snippet obj "obj"
object object
${2:methods} ${2}
end end
endsnippet endsnippet
snippet Obj "object" snippet Obj "object"
object (self) object (self)
${2:methods} ${2}
end end
endsnippet endsnippet
snippet {{ "object functional update" snippet {{ "object functional update"
{< ${1:x} = ${2:y} >} {< ${1} = ${2} >}
endsnippet endsnippet
snippet beg "beg" snippet beg "beg"
begin begin
${1:block} ${1}${VISUAL}
end end
endsnippet endsnippet
@ -115,19 +110,19 @@ endsnippet
snippet mod "module - no signature" snippet mod "module - no signature"
module ${1:(* Name *)} = struct module ${1:(* Name *)} = struct
${2:(* BODY *)} ${2}
end end
endsnippet endsnippet
snippet Mod "module with signature" snippet Mod "module with signature"
module ${1:(* Name *)} : ${2:(* SIG *)} = struct module ${1:(* Name *)} : ${2:(* SIG *)} = struct
${3:(* BODY *)} ${3}
end end
endsnippet endsnippet
snippet sig "anonymous signature" snippet sig "anonymous signature"
sig sig
${2:(* BODY *)} ${2}
end end
endsnippet endsnippet
@ -137,32 +132,32 @@ endsnippet
snippet func "define functor - no signature" snippet func "define functor - no signature"
module ${1:M} (${2:Arg} : ${3:ARG}) = struct module ${1:M} (${2:Arg} : ${3:ARG}) = struct
${4:(* BODY *)} ${4}
end end
endsnippet endsnippet
snippet Func "define functor - with signature" snippet Func "define functor - with signature"
module ${1:M} (${2:Arg} : ${3:ARG}) : ${4:SIG} = struct module ${1:M} (${2:Arg} : ${3:ARG}) : ${4:SIG} = struct
${5:(* BODY *)} ${5}
end end
endsnippet endsnippet
snippet mot "Declare module signature" snippet mot "Declare module signature"
module type ${1:(* Name *)} = sig module type ${1:(* Name *)} = sig
${2:(* BODY *)} ${2}
end end
endsnippet endsnippet
snippet module "Module with anonymous signature" snippet module "Module with anonymous signature"
module ${1:(* Name *)} : sig module ${1:(* Name *)} : sig
${2:(* SIGNATURE *)} ${2}
end = struct end = struct
${3:(* BODY *)} ${3}
end end
endsnippet endsnippet
snippet oo "odoc" snippet oo "odoc"
(** ${1:odoc} *) (** ${1} *)
endsnippet endsnippet
snippet qt "inline qtest" snippet qt "inline qtest"

View File

@ -11,8 +11,8 @@ endsnippet
snippet do "do" snippet do "do"
do { do {
${2:// code... } ${2}
} while (${1:/* condition */});" } while (${1});"
endsnippet endsnippet
snippet doc_f "doc_f" snippet doc_f "doc_f"
@ -37,21 +37,21 @@ interface ${1:someClass}
} // END interface $1" } // END interface $1"
endsnippet endsnippet
snippet else "else" snippet el "else"
else { else {
${1:// code...} ${1}
} }
endsnippet endsnippet
snippet for "for" snippet for "for"
for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) { for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {
${4:// code...} ${4}
} }
endsnippet endsnippet
snippet foreachk "foreachk" snippet foreachk "foreachk"
foreach ($${1:variable} as $${2:key} => $${3:value}){ foreach ($${1:variable} as $${2:key} => $${3:value}){
${4:// code...} ${4}
} }
endsnippet endsnippet
@ -60,8 +60,8 @@ $_GET['${1}']${2}
endsnippet endsnippet
snippet if "if" snippet if "if"
if (${1:/* condition */}) { if (${1}) {
${2:// code...} ${2}
} }
endsnippet endsnippet
@ -210,9 +210,9 @@ endsnippet
snippet ife "if else" snippet ife "if else"
if (${1:/* condition */}) { if (${1:/* condition */}) {
${2:// code...} ${2}
} else { } else {
${3:// code...} ${3}
} }
$0 $0
endsnippet endsnippet
@ -227,7 +227,7 @@ class $1
{ {
public function ${3:__construct}(${4:$options}) public function ${3:__construct}(${4:$options})
{ {
${4:// code} ${4}
} }
} }
$0 $0

View File

@ -1,61 +1,314 @@
# -*- coding: utf-8 -*-
########################################################################### ###########################################################################
# General Stuff # # General Stuff #
########################################################################### ###########################################################################
global !p
import vim
from os import path as ospath
from string import Template
import re
from collections import Counter
#http://docutils.sourceforge.net/docs/ref/rst/roles.html
TEXT_ROLES = ['emphasis','literal','code','math',
'pep-reference','rfc-reference',
'strong','subscript','superscript',
'title-reference','raw']
TEXT_ROLES_REGEX = r'\.\.\srole::?\s(w+)'
#http://docutils.sourceforge.net/docs/ref/rst/directives.html#specific-admonitions
SPECIFIC_ADMONITIONS = ["attention", "caution", "danger",
"error", "hint", "important", "note",
"tip", "warning"]
#http://docutils.sourceforge.net/docs/ref/rst/directives.html
DIRECTIVES = ['topic','sidebar','math','epigraph',
'parsed-literal','code','highlights',
'pull-quote','compound','container',
'list-table','class','sectnum',
'role','default-role','unicode',
'raw']
NONE_CONTENT_DIRECTIVES = ['rubric', 'contents', 'header',
'footer', 'date', 'include', 'title']
INCLUDABLE_DIRECTIVES = ['image', 'figure', 'include']
# CJK chars
# http://stackoverflow.com/questions/2718196/find-all-chinese-text-in-a-string-using-python-and-regex
CJK_RE = re.compile(u'[⺀-⺙⺛-⻳⼀-⿕々〇〡-〩〸-〺〻㐀-䶵一-鿃豈-鶴侮-頻並-龎]', re.UNICODE)
def has_cjk(char):
"""
Detect char contains CJK character
:param char: characters needs to be detect
"""
try:
CJK_RE.finditer(char).next()
except StopIteration:
return False
else:
return True
def real_filename(filename):
"""peal extension name off if possible
# i.e. "foo.bar.png will return "foo.bar"
"""
return ospath.splitext(filename)[0]
def check_file_exist(rst_path, relative_path):
"""
For RST file, it can just include files as relative path.
:param rst_path: absolute path to rst file
:param relative_path: path related to rst file
:return: relative file's absolute path if file exist
"""
abs_path = ospath.join(ospath.dirname(rst_path), relative_path)
if ospath.isfile(abs_path):
return abs_path
def rst_char_len(char):
"""
return len of string which fit in rst
For instance:chinese "我" decode as only one character,
However, the rst interpreter needs 2 "=" instead of 1.
:param: char needs to be count
"""
return len(re.findall(r'[^\u4e00-\u9fff\s]', char))+len(char)
def make_items(times, leading='+'):
"""
make lines with leading char multitimes
:param: times, how many times you need
:param: leading, leading character
"""
times = int(times)
if leading == 1:
msg = ""
for x in xrange(1, times+1):
msg += "%s. Item\n" % x
return msg
else:
return ("%s Item\n" % leading) * times
def look_up_directives(regex, fpath):
"""
find all directive args in given file
:param: regex, the regex that needs to match
:param: path, to path to rst file
:return: list, empty list if nothing match
"""
try:
with open(fpath) as source:
match = re.findall(regex, source.read())
except IOError:
match = []
return match
def get_popular_code_type():
"""
find most popular code type in the given rst
:param path: file to detect
:return: string, most popular code type in file
"""
buf = "".join(vim.current.buffer)
types = re.findall(r'[:|\.\.\s]code::?\s(\w+)', buf)
try:
popular_type = Counter(types).most_common()[0][0]
except IndexError:
popular_type = "lua" # Don't break default
return popular_type
def complete(t, opts):
"""
get options that start with t
:param t: query string
:param opts: list that needs to be completed
:return: a string that start with t
"""
msg = "({0})"
if t:
opts = [ m[len(t):] for m in opts if m.startswith(t) ]
if len(opts) == 1:
return opts[0]
if not len(opts):
msg = "{0}"
return msg.format("|".join(opts))
endglobal
snippet part "Part" b snippet part "Part" b
`!p snip.rv = len(t[1])*'#'` `!p snip.rv = rst_char_len(t[1])*'#'`
${1:Part name} ${1:Part name}
`!p snip.rv = len(t[1])*'#'` `!p snip.rv = rst_char_len(t[1])*'#'`
$0 $0
endsnippet endsnippet
snippet sec "Section" b snippet sec "Section" b
${1:Section name} ${1:Section name}
`!p snip.rv = len(t[1])*'='` `!p snip.rv = rst_char_len(t[1])*'='`
$0 $0
endsnippet endsnippet
snippet ssec "Subsection" b snippet ssec "Subsection" b
${1:Section name} ${1:Section name}
`!p snip.rv = len(t[1])*'-'` `!p snip.rv = rst_char_len(t[1])*'-'`
$0 $0
endsnippet endsnippet
snippet sssec "Subsubsection" b snippet sssec "Subsubsection" b
${1:Section name} ${1:Section name}
`!p snip.rv = len(t[1])*'^'` `!p snip.rv = rst_char_len(t[1])*'^'`
$0 $0
endsnippet endsnippet
snippet chap "Chapter" b snippet chap "Chapter" b
`!p snip.rv = len(t[1])*'*'` `!p snip.rv = rst_char_len(t[1])*'*'`
${1:Chapter name} ${1:Chapter name}
`!p snip.rv = len(t[1])*'*'` `!p snip.rv = rst_char_len(t[1])*'*'`
$0 $0
endsnippet endsnippet
snippet para "Paragraph" b snippet para "Paragraph" b
${1:Paragraph name} ${1:Paragraph name}
`!p snip.rv = len(t[1])*'"'` `!p snip.rv = rst_char_len(t[1])*'"'`
$0 $0
endsnippet endsnippet
snippet em "Emphasize string" i
`!p
# dirty but works with CJK charactor detection
if has_cjk(vim.current.line):
snip.rv ="\ "`*${1:${VISUAL:Em}}*`!p
if has_cjk(vim.current.line):
snip.rv ="\ "
else:
snip.rv = " "
`$0
endsnippet
snippet st "Strong string" i
`!p
if has_cjk(vim.current.line):
snip.rv ="\ "`**${1:${VISUAL:Strong}}**`!p
if has_cjk(vim.current.line):
snip.rv ="\ "
else:
snip.rv = " "
`$0
endsnippet
snippet "li(st)? (?P<num>\d+)" "List" br
$0
`!p
# usage: li 4<tab>
# which will extand into a unordered list contains 4 items
snip.rv = make_items(match.groupdict()['num'])
`
endsnippet
snippet "ol(st)? (?P<num>\d+)" "Order List" br
$0
`!p
# usage: ol 4<tab>
# which will extand into a ordered list contains 4 items
snip.rv = make_items(match.groupdict()['num'], 1)
`
endsnippet
########################################################################### ###########################################################################
# More Specialized Stuff. # # More Specialized Stuff. #
########################################################################### ###########################################################################
snippet cb "Code Block" b snippet cb "Code Block" b
.. code-block:: ${1:lua} .. code-block:: ${1:`!p snip.rv = get_popular_code_type()`}
${2:code} ${2:code}
$0 $0
endsnippet endsnippet
# match snippets :
# img, inc, fig
snippet id "Includable Directives" b
`!p
real_name=real_filename(ospath.basename(t[2]))
di=t[1][:2]
link=""
content=""
if di == 'im':
link = "|{0}|".format(real_name)
if di == 'fi':
content="""
:alt: {0}
{0}""".format(real_name)
`
..`!p snip.rv = " %s" % link if link else ""` $1`!p snip.rv=complete(t[1], INCLUDABLE_DIRECTIVES)`:: ${2:file}`!p if content:
snip.rv +=" "+content`
`!p
# Tip of whether file is exist in comment type
if not check_file_exist(path, t[2]):
snip.rv='.. FILE {0} does not exist'.format(t[2])
else:
snip.rv=""
`$0
endsnippet
snippet di "Directives" b
.. $1`!p snip.rv=complete(t[1], DIRECTIVES)`:: $2
${3:Content}
$0
endsnippet
snippet nd "None Content Directives" b
.. $1`!p snip.rv=complete(t[1], NONE_CONTENT_DIRECTIVES)`:: $2
$0
endsnippet
snippet sa "Specific Admonitions" b
.. $1`!p snip.rv =complete(t[1], SPECIFIC_ADMONITIONS)`::
${2:Content}
$0
endsnippet
#it will be trigger at start of line or after a word
snippet ro "Text Roles" w
\ :$1`!p snip.rv=complete(t[1],
TEXT_ROLES+look_up_directives(TEXT_ROLES_REGEX,
path))`:\`$2\`\
endsnippet
############
# Sphinx #
############
snippet sid "SideBar" b
.. sidebar:: ${1:SideBar Title}
${2:SideBar Content}
endsnippet
# vim:ft=snippets: # vim:ft=snippets:

View File

@ -25,7 +25,7 @@ endsnippet
snippet if "if <condition> ... end" snippet if "if <condition> ... end"
if ${1:condition} if ${1:condition}
${2:# TODO} ${2}
end end
endsnippet endsnippet
@ -33,9 +33,9 @@ endsnippet
snippet ife "if <condition> ... else ... end" snippet ife "if <condition> ... else ... end"
if ${1:condition} if ${1:condition}
${2:# TODO} ${2}
else else
${3:# TODO} ${3}
end end
endsnippet endsnippet
@ -43,11 +43,11 @@ endsnippet
snippet ifee "if <condition> ... elseif <condition> ... else ... end" snippet ifee "if <condition> ... elseif <condition> ... else ... end"
if ${1:condition} if ${1:condition}
${2:# TODO} ${2}
elsif ${3:condition} elsif ${3:condition}
${4:# TODO} ${4}
else else
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -55,7 +55,7 @@ endsnippet
snippet unless "unless <condition> ... end" snippet unless "unless <condition> ... end"
unless ${1:condition} unless ${1:condition}
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -63,9 +63,9 @@ endsnippet
snippet unlesse "unless <condition> ... else ... end" snippet unlesse "unless <condition> ... else ... end"
unless ${1:condition} unless ${1:condition}
${2:# TODO} ${2}
else else
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -73,11 +73,11 @@ endsnippet
snippet unlesee "unless <condition> ... elseif <condition> ... else ... end" snippet unlesee "unless <condition> ... elseif <condition> ... else ... end"
unless ${1:condition} unless ${1:condition}
${2:# TODO} ${2}
elsif ${3:condition} elsif ${3:condition}
${4:# TODO} ${4}
else else
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -85,7 +85,7 @@ endsnippet
snippet "\b(de)?f" "def <name>..." r snippet "\b(de)?f" "def <name>..." r
def ${1:function_name}${2: ${3:*args}} def ${1:function_name}${2: ${3:*args}}
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -93,7 +93,7 @@ endsnippet
snippet defi "def initialize ..." snippet defi "def initialize ..."
def initialize${1: ${2:*args}} def initialize${1: ${2:*args}}
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -101,23 +101,23 @@ endsnippet
snippet defr "def <name> ... rescue ..." snippet defr "def <name> ... rescue ..."
def ${1:function_name}${2: ${3:*args}} def ${1:function_name}${2: ${3:*args}}
${4:# TODO} ${4}
rescue rescue
${0:# TODO} ${0}
end end
endsnippet endsnippet
snippet For "(<from>..<to>).each { |<i>| <block> }" snippet For "(<from>..<to>).each { |<i>| <block> }"
(${1:from}..${2:to}).each { |${3:i}| ${4:# TODO} } (${1:from}..${2:to}).each { |${3:i}| ${4} }
endsnippet endsnippet
snippet for "(<from>..<to>).each do |<i>| <block> end" snippet for "(<from>..<to>).each do |<i>| <block> end"
(${1:from}..${2:to}).each do |${3:i}| (${1:from}..${2:to}).each do |${3:i}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -138,42 +138,42 @@ endsnippet
snippet "(\S+)\.Del(ete)?_?if" ".delete_if { |<key>,<value>| <block> }" r snippet "(\S+)\.Del(ete)?_?if" ".delete_if { |<key>,<value>| <block> }" r
`!p snip.rv=match.group(1)`.delete_if { |${1:key},${2:value}| ${3:# TODO} } `!p snip.rv=match.group(1)`.delete_if { |${1:key},${2:value}| ${3} }
endsnippet endsnippet
snippet "(\S+)\.del(ete)?_?if" ".delete_if do |<key>,<value>| <block> end" r snippet "(\S+)\.del(ete)?_?if" ".delete_if do |<key>,<value>| <block> end" r
`!p snip.rv=match.group(1)`.delete_if do |${1:key},${2:value}| `!p snip.rv=match.group(1)`.delete_if do |${1:key},${2:value}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
snippet "(\S+)\.Keep_?if" ".keep_if { |<key>,<value>| <block> }" r snippet "(\S+)\.Keep_?if" ".keep_if { |<key>,<value>| <block> }" r
`!p snip.rv=match.group(1)`.keep_if { |${1:key},${2:value}| ${3:# TODO} } `!p snip.rv=match.group(1)`.keep_if { |${1:key},${2:value}| ${3} }
endsnippet endsnippet
snippet "(\S+)\.keep_?if" ".keep_if do <key>,<value>| <block> end" r snippet "(\S+)\.keep_?if" ".keep_if do <key>,<value>| <block> end" r
`!p snip.rv=match.group(1)`.keep_if do |${1:key},${2:value}| `!p snip.rv=match.group(1)`.keep_if do |${1:key},${2:value}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
snippet "(\S+)\.Reject" ".reject { |<key>,<value>| <block> }" r snippet "(\S+)\.Reject" ".reject { |<key>,<value>| <block> }" r
`!p snip.rv=match.group(1)`.reject { |${1:key},${2:value}| ${3:# TODO} } `!p snip.rv=match.group(1)`.reject { |${1:key},${2:value}| ${3} }
endsnippet endsnippet
snippet "(\S+)\.reject" ".reject do <key>,<value>| <block> end" r snippet "(\S+)\.reject" ".reject do <key>,<value>| <block> end" r
`!p snip.rv=match.group(1)`.reject do |${1:key},${2:value}| `!p snip.rv=match.group(1)`.reject do |${1:key},${2:value}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -194,56 +194,56 @@ endsnippet
snippet "(\S+)\.Sort" ".sort { |<a>,<b>| <block> }" r snippet "(\S+)\.Sort" ".sort { |<a>,<b>| <block> }" r
`!p snip.rv=match.group(1)`.sort { |${1:a},${2:b}| ${3:# TODO} } `!p snip.rv=match.group(1)`.sort { |${1:a},${2:b}| ${3} }
endsnippet endsnippet
snippet "(\S+)\.sort" ".sort do |<a>,<b>| <block> end" r snippet "(\S+)\.sort" ".sort do |<a>,<b>| <block> end" r
`!p snip.rv=match.group(1)`.sort do |${1:a},${2:b}| `!p snip.rv=match.group(1)`.sort do |${1:a},${2:b}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
snippet "(\S+)\.Each_?k(ey)?" ".each_key { |<key>| <block> }" r snippet "(\S+)\.Each_?k(ey)?" ".each_key { |<key>| <block> }" r
`!p snip.rv=match.group(1)`.each_key { |${1:key}| ${2:# TODO} } `!p snip.rv=match.group(1)`.each_key { |${1:key}| ${2} }
endsnippet endsnippet
snippet "(\S+)\.each_?k(ey)?" ".each_key do |key| <block> end" r snippet "(\S+)\.each_?k(ey)?" ".each_key do |key| <block> end" r
`!p snip.rv=match.group(1)`.each_key do |${1:key}| `!p snip.rv=match.group(1)`.each_key do |${1:key}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
snippet "(\S+)\.Each_?val(ue)?" ".each_value { |<value>| <block> }" r snippet "(\S+)\.Each_?val(ue)?" ".each_value { |<value>| <block> }" r
`!p snip.rv=match.group(1)`.each_value { |${1:value}| ${2:# TODO} } `!p snip.rv=match.group(1)`.each_value { |${1:value}| ${2} }
endsnippet endsnippet
snippet "(\S+)\.each_?val(ue)?" ".each_value do |<value>| <block> end" r snippet "(\S+)\.each_?val(ue)?" ".each_value do |<value>| <block> end" r
`!p snip.rv=match.group(1)`.each_value do |${1:value}| `!p snip.rv=match.group(1)`.each_value do |${1:value}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
snippet Each "<elements>.each { |<element>| <block> }" snippet Each "<elements>.each { |<element>| <block> }"
${1:elements}.each { |${2:${1/s$//}}| ${3:# TODO} } ${1:elements}.each { |${2:${1/s$//}}| ${3} }
endsnippet endsnippet
snippet each "<elements>.each do |<element>| <block> end" snippet each "<elements>.each do |<element>| <block> end"
${1:elements}.each do |${2:${1/s$//}}| ${1:elements}.each do |${2:${1/s$//}}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -251,14 +251,14 @@ endsnippet
snippet each_?s(lice)? "<array>.each_slice(n) do |slice| <block> end" snippet each_?s(lice)? "<array>.each_slice(n) do |slice| <block> end"
each_slice(${1:2}) do |${2:slice}| each_slice(${1:2}) do |${2:slice}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
snippet Each_?s(lice)? "<array>.each_slice(n) { |slice| <block> }" snippet Each_?s(lice)? "<array>.each_slice(n) { |slice| <block> }"
each_slice(${1:2}) { |${2:slice}| ${3:# TODO} } each_slice(${1:2}) { |${2:slice}| ${3} }
endsnippet endsnippet
@ -273,7 +273,7 @@ try:
snip.rv = wmatch.group(1).lower() snip.rv = wmatch.group(1).lower()
except: except:
snip.rv = 'element' snip.rv = 'element'
`}| ${2:# TODO} } `}| ${2} }
endsnippet endsnippet
@ -288,7 +288,7 @@ try:
except: except:
snip.rv = 'element' snip.rv = 'element'
`}| `}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -303,7 +303,7 @@ try:
snip.rv = wmatch.group(1).lower() snip.rv = wmatch.group(1).lower()
except: except:
snip.rv = 'element' snip.rv = 'element'
`}| ${2:# TODO} } `}| ${2} }
endsnippet endsnippet
@ -318,7 +318,7 @@ try:
except: except:
snip.rv = 'element' snip.rv = 'element'
`}| `}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -333,7 +333,7 @@ try:
snip.rv = wmatch.group(1).lower() snip.rv = wmatch.group(1).lower()
except: except:
snip.rv = 'element' snip.rv = 'element'
`}| ${2:# TODO} } `}| ${2} }
endsnippet endsnippet
@ -348,7 +348,7 @@ try:
except: except:
snip.rv = 'element' snip.rv = 'element'
`}| `}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -364,7 +364,7 @@ try:
snip.rv = wmatch.group(1).lower() snip.rv = wmatch.group(1).lower()
except: except:
snip.rv = 'element' snip.rv = 'element'
`},${2:i}| ${3:# TODO} }$0 `},${2:i}| ${3} }$0
endsnippet endsnippet
@ -379,7 +379,7 @@ try:
except: except:
snip.rv = 'element' snip.rv = 'element'
`},${2:i}| `},${2:i}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -387,14 +387,14 @@ endsnippet
snippet "(\S+)\.Each_?p(air)?" ".each_pair { |<key>,<value>| <block> }" r snippet "(\S+)\.Each_?p(air)?" ".each_pair { |<key>,<value>| <block> }" r
`!p snip.rv=match.group(1)`.each_pair { |${1:key},${2:value}| ${3:# TODO} } `!p snip.rv=match.group(1)`.each_pair { |${1:key},${2:value}| ${3} }
endsnippet endsnippet
snippet "(\S+)\.each_?p(air)?" ".each_pair do |<key>,<value>| <block> end" r snippet "(\S+)\.each_?p(air)?" ".each_pair do |<key>,<value>| <block> end" r
`!p snip.rv=match.group(1)`.each_pair do |${1:key},${2:value}| `!p snip.rv=match.group(1)`.each_pair do |${1:key},${2:value}|
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -424,26 +424,24 @@ snippet "(\S+)\.Index" ".index do |item| ... end" r
end end
endsnippet endsnippet
# comments about do and dov see snippets/ruby.snippets
snippet do "do ... end" i
snippet do "do |<key>| ... end" i
do ${1:|${2:key}|}
$0
end
endsnippet
snippet Do "do ... end" i
do do
$0 $0
end end
endsnippet endsnippet
snippet dov "do |<key>| ... end" i
do |${0:v}|
$1
end
endsnippet
snippet until "until <expression> ... end" snippet until "until <expression> ... end"
until ${1:expression} until ${1:expression}
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -451,7 +449,7 @@ endsnippet
snippet Until "begin ... end until <expression>" snippet Until "begin ... end until <expression>"
begin begin
${0:# TODO} ${0}
end until ${1:expression} end until ${1:expression}
endsnippet endsnippet
@ -459,7 +457,7 @@ endsnippet
snippet while "while <expression> ... end" snippet while "while <expression> ... end"
while ${1:expression} while ${1:expression}
${0:# TODO} ${0}
end end
endsnippet endsnippet
@ -467,7 +465,7 @@ endsnippet
snippet While "begin ... end while <expression>" snippet While "begin ... end while <expression>"
begin begin
${0:# TODO} ${0}
end while ${1:expression} end while ${1:expression}
endsnippet endsnippet
@ -493,9 +491,9 @@ endsnippet
snippet begin "begin ... rescue ... end" snippet begin "begin ... rescue ... end"
begin begin
${1:# TODO} ${1}
rescue rescue
${0:# TODO} ${0}
end end
endsnippet endsnippet

View File

@ -16,14 +16,14 @@ foreach ${1:var} ${2:\$list} {
endsnippet endsnippet
snippet if "if... (if)" b snippet if "if... (if)" b
if {${1:condition}} { if {${1}} {
${2} ${2}
} }
endsnippet endsnippet
snippet proc "proc... (proc)" b snippet proc "proc... (proc)" b
proc ${1:name} {${2:args}} \ proc ${1} {${2}} \
{ {
${3} ${3}
} }
@ -41,7 +41,7 @@ switch ${1:-exact} -- ${2:\$var} {
endsnippet endsnippet
snippet while "while... (while)" b snippet while "while... (while)" b
while {${1:condition}} { while {${1}} {
${2} ${2}
} }

View File

@ -25,30 +25,30 @@ endsnippet
snippet f snippet f
fun ${1:function_name}(${2}) fun ${1:function_name}(${2})
${3:" code} ${3}
endf endf
endsnippet endsnippet
snippet for snippet for
for ${1:needle} in ${2:haystack} for ${1} in ${2}
${3:" code} ${3}
endfor endfor
endsnippet endsnippet
snippet wh snippet wh
while ${1:condition} while ${1}
${2:" code} ${2}
endw endw
endsnippet endsnippet
snippet if snippet if
if ${1:condition} if ${1}
${2:" code} ${2}
endif endif
endsnippet endsnippet
snippet ife snippet ife
if ${1:condition} if ${1}
${2} ${2}
else else
${3} ${3}

View File

@ -0,0 +1,27 @@
" this is well known Filename found in snipmate (and the other engines), but
" rewritten and documented :)
"
" optional arg1: string in which to replace '$1' by filename with extension
" and path dropped. Defaults to $1
" optional arg2: return this value if buffer has no filename
" But why not use the template in this case, too?
" Doesn't make sense to me
fun! vim_snippets#Filename(...)
let template = get(a:000, 0, "$1")
let arg2 = get(a:000, 1, "")
let basename = expand('%:t:r')
if basename == ''
return arg2
else
return substitute(template, '$1', basename, 'g')
endif
endf
" original code:
" 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

View File

@ -109,17 +109,17 @@ snippet try
# For Loop (same as c.snippet) # For Loop (same as c.snippet)
snippet for for (..) {..} snippet for for (..) {..}
for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) { for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {
${4:/* code */} ${4}
} }
# Custom For Loop # Custom For Loop
snippet forr snippet forr
for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) { for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {
${5:/* code */} ${5}
} }
# If Condition # If Condition
snippet if snippet if
if (${1:/* condition */}) { if (${1:/* condition */}) {
${2:/* code */} ${2}
} }
snippet el snippet el
else { else {
@ -131,7 +131,7 @@ snippet t
snippet fun snippet fun
function ${1:function_name}(${2})${3} function ${1:function_name}(${2})${3}
{ {
${4:/* code */} ${4}
} }
# FlxSprite (usefull when using the flixel library) # FlxSprite (usefull when using the flixel library)
snippet FlxSprite snippet FlxSprite
@ -144,13 +144,13 @@ snippet FlxSprite
public function $1(${3: X:Number, Y:Number}):void public function $1(${3: X:Number, Y:Number}):void
{ {
super(X,Y); super(X,Y);
${4: //code...} ${4}
} }
override public function update():void override public function update():void
{ {
super.update(); super.update();
${5: //code...} ${5}
} }
} }
} }

View File

@ -5,17 +5,17 @@ snippet if
snippet el snippet el
Else Else
${1} ${1}
snippet elif snippet eif
ElseIf ${1:condition} Then ElseIf ${1:condition} Then
${2:; True code} ${2:; True code}
# If/Else block # If/Else block
snippet ifel snippet ife
If ${1:condition} Then If ${1:condition} Then
${2:; True code} ${2:; True code}
Else Else
${3:; Else code} ${3:; Else code}
EndIf EndIf
# If/ElseIf/Else block # If/ElseIf/Else block - because there is eif this is not really neccessary
snippet ifelif snippet ifelif
If ${1:condition 1} Then If ${1:condition 1} Then
${2:; True code} ${2:; True code}

View File

@ -20,7 +20,7 @@ snippet inc
#include <${1:stdio}.h>${2} #include <${1:stdio}.h>${2}
# #include "..." # #include "..."
snippet Inc snippet Inc
#include "${1:`Filename("$1.h")`}"${2} #include "${1:`vim_snippets#Filename("$1.h")`}"${2}
# ifndef...define...endif # ifndef...define...endif
snippet ndef snippet ndef
#ifndef $1 #ifndef $1
@ -41,7 +41,7 @@ snippet #if
#endif #endif
# header include guard # header include guard
snippet once snippet once
#ifndef ${1:`toupper(Filename('$1_H', 'UNTITLED_H'))`} #ifndef ${1:`toupper(vim_snippets#Filename('$1_H', 'UNTITLED_H'))`}
#define $1 #define $1
@ -53,7 +53,7 @@ snippet once
# if # if
snippet if snippet if
if (${1:/* condition */}) { if (${1:/* condition */}) {
${2:/* code */} ${2}
}${3} }${3}
# else # else
snippet el snippet el
@ -63,8 +63,11 @@ snippet el
# else if # else if
snippet elif snippet elif
else if (${1:/* condition */}) { else if (${1:/* condition */}) {
${2:/* code */} ${2}
}${3} }${3}
# ifi
snippet ifi
if (${1:/* condition */}) ${2};${3}
# ternary # ternary
snippet t snippet t
${1:/* condition */} ? ${2:a} : ${3:b} ${1:/* condition */} ? ${2:a} : ${3:b}
@ -94,22 +97,22 @@ snippet case
# for # for
snippet for snippet for
for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) { for (${2:i} = 0; $2 < ${1:count}; $2${3:++}) {
${4:/* code */} ${4}
}${5} }${5}
# for (custom) # for (custom)
snippet forr snippet forr
for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) { for (${1:i} = ${2:0}; ${3:$1 < 10}; $1${4:++}) {
${5:/* code */} ${5}
}${6} }${6}
# while # while
snippet wh snippet wh
while (${1:/* condition */}) { while (${1:/* condition */}) {
${2:/* code */} ${2}
}${3} }${3}
# do... while # do... while
snippet do snippet do
do { do {
${2:/* code */} ${2}
} while (${1:/* condition */});${3} } while (${1:/* condition */});${3}
## ##
## Functions ## Functions
@ -117,7 +120,7 @@ snippet do
snippet fun snippet fun
${1:void} ${2:function_name}(${3}) ${1:void} ${2:function_name}(${3})
{ {
${4:/* code */} ${4}
}${5} }${5}
# function declaration # function declaration
snippet fund snippet fund
@ -129,14 +132,14 @@ snippet td
typedef ${1:int} ${2:MyCustomType};${3} typedef ${1:int} ${2:MyCustomType};${3}
# struct # struct
snippet st snippet st
struct ${1:`Filename('$1_t', 'name')`} { struct ${1:`vim_snippets#Filename('$1_t', 'name')`} {
${2:/* data */} ${2:/* data */}
}${3: /* optional variable list */};${4} }${3: /* optional variable list */};${4}
# typedef struct # typedef struct
snippet tds snippet tds
typedef struct ${2:_$1 }{ typedef struct ${2:_$1 }{
${3:/* data */} ${3:/* data */}
} ${1:`Filename('$1_t', 'name')`};${4} } ${1:`vim_snippets#Filename('$1_t', 'name')`};${4}
# typedef enum # typedef enum
snippet tde snippet tde
typedef enum { typedef enum {

View File

@ -35,19 +35,19 @@ snippet bfun
${2:# body...} ${2:# body...}
# Class # Class
snippet cla class .. snippet cla class ..
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
${2} ${2}
snippet cla class .. constructor: .. snippet cla class .. constructor: ..
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
constructor: (${2:args}) -> constructor: (${2:args}) ->
${3} ${3}
${4} ${4}
snippet cla class .. extends .. snippet cla class .. extends ..
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} extends ${2:ParentClass} class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} extends ${2:ParentClass}
${3} ${3}
snippet cla class .. extends .. constructor: .. snippet cla class .. extends .. constructor: ..
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} extends ${2:ParentClass} class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} extends ${2:ParentClass}
constructor: (${3:args}) -> constructor: (${3:args}) ->
${4} ${4}
@ -63,7 +63,7 @@ snippet ife
else else
${3:# body...} ${3:# body...}
# Else if # Else if
snippet elif snippet eif
else if ${1:condition} else if ${1:condition}
${2:# body...} ${2:# body...}
# Ternary If # Ternary If

View File

@ -68,7 +68,7 @@ snippet mu
## Class ## Class
# class # class
snippet cl snippet cl
class ${1:`Filename('$1', 'name')`} class ${1:`vim_snippets#Filename('$1', 'name')`}
{ {
public: public:
$1(${2}); $1(${2});
@ -79,12 +79,12 @@ snippet cl
}; };
# member function implementation # member function implementation
snippet mfun snippet mfun
${4:void} ${1:`Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) { ${4:void} ${1:`vim_snippets#Filename('$1', 'ClassName')`}::${2:memberFunction}(${3}) {
${5:/* code */} ${5}
} }
# namespace # namespace
snippet ns snippet ns
namespace ${1:`Filename('', 'my')`} { namespace ${1:`vim_snippets#Filename('', 'my')`} {
${2} ${2}
} /* namespace $1 */ } /* namespace $1 */
## ##
@ -100,13 +100,13 @@ snippet cin
# for i # for i
snippet fori snippet fori
for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) { for (int ${2:i} = 0; $2 < ${1:count}; $2${3:++}) {
${4:/* code */} ${4}
}${5} }${5}
# foreach # foreach
snippet fore snippet fore
for (${1:auto} ${2:i} : ${3:container}) { for (${1:auto} ${2:i} : ${3:container}) {
${4:/* code */} ${4}
}${5} }${5}
# iterator # iterator
snippet iter snippet iter
@ -123,9 +123,9 @@ snippet itera
## Lambdas ## Lambdas
# lamda (one line) # lamda (one line)
snippet ld snippet ld
[${1}](${2}){${3:/* code */}}${4} [${1}](${2}){${3}}${4}
# lambda (multi-line) # lambda (multi-line)
snippet lld snippet lld
[${1}](${2}){ [${1}](${2}){
${3:/* code */} ${3}
}${4} }${4}

View File

@ -116,49 +116,49 @@ snippet each
} }
# interfaces # interfaces
snippet interface snippet interface
public interface ${1:`Filename()`} { public interface ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
snippet if+ snippet if+
public interface ${1:`Filename()`} { public interface ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
# class bodies # class bodies
snippet class snippet class
public class ${1:`Filename()`} { public class ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
snippet cls snippet cls
${2:public} class ${1:`Filename()`} { ${2:public} class ${1:`vim_snippets#Filename()`} {
${3} ${3}
} }
snippet cls+ snippet cls+
public class ${1:`Filename()`} { public class ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
snippet cls+^ snippet cls+^
public static class ${1:`Filename()`} { public static class ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
snippet cls& snippet cls&
internal class ${1:`Filename()`} { internal class ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
snippet cls&^ snippet cls&^
internal static class ${1:`Filename()`} { internal static class ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
snippet cls| snippet cls|
protected class ${1:`Filename()`} { protected class ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
snippet cls|% snippet cls|%
protected abstract class ${1:`Filename()`} { protected abstract class ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
# constructor # constructor
snippet ctor snippet ctor
public ${1:`Filename()`}() { public ${1:`vim_snippets#Filename()`}() {
${2} ${2}
} }
# properties - auto properties by default. # properties - auto properties by default.
@ -342,7 +342,7 @@ snippet ms-
} }
# structure # structure
snippet struct snippet struct
public struct ${1:`Filename()`} { public struct ${1:`vim_snippets#Filename()`} {
${2} ${2}
} }
# enumeration # enumeration

View File

@ -9,7 +9,7 @@ snippet so
${2} ${2}
snippet main snippet main
static void main() { static void main() {
${1:/* code */} ${1}
} }
snippet st snippet st
static ${1} static ${1}
@ -22,9 +22,9 @@ snippet br
snippet th snippet th
throw ${1} throw ${1}
snippet cl snippet cl
class ${1:`Filename("", "untitled")`} ${2} class ${1:`vim_snippets#Filename("", "untitled")`} ${2}
snippet in snippet in
interface ${1:`Filename("", "untitled")`} ${2} interface ${1:`vim_snippets#Filename("", "untitled")`} ${2}
snippet imp snippet imp
implements ${1} implements ${1}
snippet ext snippet ext
@ -57,15 +57,15 @@ snippet for
} }
snippet fore snippet fore
for (final ${2:item} in ${1:itemList}) { for (final ${2:item} in ${1:itemList}) {
${3:/* code */} ${3}
} }
snippet wh snippet wh
while (${1:/* condition */}) { while (${1:/* condition */}) {
${2:/* code */} ${2}
} }
snippet dowh snippet dowh
do { do {
${2:/* code */} ${2}
} while (${1:/* condition */}); } while (${1:/* condition */});
snippet as snippet as
assert(${1:/* condition */}); assert(${1:/* condition */});

View File

@ -0,0 +1,122 @@
snippet do
do
${1}
end
snippet if if .. do .. end
if ${1} do
${2}
end
snippet if if .. do: ..
if ${1:condition}, do: ${2}
snippet ife if .. do .. else .. end
if ${1:condition} do
${2}
else
${3}
end
snippet ife if .. do: .. else:
if ${1:condition}, do: ${2}, else: ${3}
snippet unless unless .. do .. end
unless ${1} do
${2}
end
snippet unless unless .. do: ..
unless ${1:condition}, do: ${2}
snippet unlesse unless .. do .. else .. end
unless ${1:condition} do
${2}
else
${3}
end
snippet unlesse unless .. do: .. else:
unless ${1:condition}, do: ${2}, else: ${3}
snippet cond
cond do
${1} ->
${2}
end
snippet case
case ${1} do
${2} ->
${3}
end
snippet def
def ${1:name} do
${2}
end
snippet defim
defimpl ${1:protocol_name}, for: ${2:data_type} do
${3}
end
snippet defma
defmacro ${1:name} do
${2}
end
snippet defmo
defmodule ${1:module_name} do
${2}
end
snippet defp
defp ${1:name} do
${2}
end
snippet defpr
defprotocol ${1:name}, [${2:function}]
snippet defr
defrecord ${1:record_name}, ${2:fields}
snippet doc
@doc """
${1}
"""
snippet fn
fn(${1:args}) -> ${2} end
snippet mdoc
@moduledoc """
${1}
"""
snippet rec
receive do
${1} ->
${2}
end
snippet req
require ${1:module_name}
snippet imp
import ${1:module_name}
snippet ali
alias ${1:module_name}
snippet test
test "${1:test_name}" do
${2}
end
snippet try try .. rescue .. end
try do
${1}
rescue
${2} -> ${3}
end

View File

@ -1,6 +1,6 @@
# module and export all # module and export all
snippet mod snippet mod
-module(${1:`Filename('', 'my')`}). -module(${1:`vim_snippets#Filename('', 'my')`}).
-compile([export_all]). -compile([export_all]).
@ -66,7 +66,7 @@ snippet %p
%% @private %% @private
# OTP application # OTP application
snippet application snippet application
-module(${1:`Filename('', 'my')`}). -module(${1:`vim_snippets#Filename('', 'my')`}).
-behaviour(application). -behaviour(application).
@ -84,7 +84,7 @@ snippet application
ok. ok.
# OTP supervisor # OTP supervisor
snippet supervisor snippet supervisor
-module(${1:`Filename('', 'my')`}). -module(${1:`vim_snippets#Filename('', 'my')`}).
-behaviour(supervisor). -behaviour(supervisor).
@ -107,7 +107,7 @@ snippet supervisor
{ok, {RestartStrategy, Children}}. {ok, {RestartStrategy, Children}}.
# OTP gen_server # OTP gen_server
snippet gen_server snippet gen_server
-module(${1:`Filename('', 'my')`}). -module(${1:`vim_snippets#Filename('', 'my')`}).
-behaviour(gen_server). -behaviour(gen_server).
@ -157,4 +157,194 @@ snippet gen_server
%%%=================================================================== %%%===================================================================
%%% Internal functions %%% Internal functions
%%%=================================================================== %%%===================================================================
# common_test test_SUITE
snippet testsuite
-module(${1:`vim_snippets#Filename('', 'my')`}).
-include_lib("common_test/include/ct.hrl").
%% Test server callbacks
-export([suite/0, all/0, groups/0,
init_per_suite/1, end_per_suite/1,
init_per_group/2, end_per_group/2,
init_per_testcase/2, end_per_testcase/2]).
%% Test cases
-export([
]).
%%--------------------------------------------------------------------
%% COMMON TEST CALLBACK FUNCTIONS
%%--------------------------------------------------------------------
%%--------------------------------------------------------------------
%% Function: suite() -> Info
%%
%% Info = [tuple()]
%% List of key/value pairs.
%%
%% Description: Returns list of tuples to set default properties
%% for the suite.
%%
%% Note: The suite/0 function is only meant to be used to return
%% default data values, not perform any other operations.
%%--------------------------------------------------------------------
suite() ->
[{timetrap,{minutes,10}}].
%%--------------------------------------------------------------------
%% Function: init_per_suite(Config0) ->
%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1}
%%
%% Config0 = Config1 = [tuple()]
%% A list of key/value pairs, holding the test case configuration.
%% Reason = term()
%% The reason for skipping the suite.
%%
%% Description: Initialization before the suite.
%%
%% Note: This function is free to add any key/value pairs to the Config
%% variable, but should NOT alter/remove any existing entries.
%%--------------------------------------------------------------------
init_per_suite(Config) ->
Config.
%%--------------------------------------------------------------------
%% Function: end_per_suite(Config0) -> void() | {save_config,Config1}
%%
%% Config0 = Config1 = [tuple()]
%% A list of key/value pairs, holding the test case configuration.
%%
%% Description: Cleanup after the suite.
%%--------------------------------------------------------------------
end_per_suite(_Config) ->
ok.
%%--------------------------------------------------------------------
%% Function: init_per_group(GroupName, Config0) ->
%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1}
%%
%% GroupName = atom()
%% Name of the test case group that is about to run.
%% Config0 = Config1 = [tuple()]
%% A list of key/value pairs, holding configuration data for the group.
%% Reason = term()
%% The reason for skipping all test cases and subgroups in the group.
%%
%% Description: Initialization before each test case group.
%%--------------------------------------------------------------------
init_per_group(_GroupName, Config) ->
Config.
%%--------------------------------------------------------------------
%% Function: end_per_group(GroupName, Config0) ->
%% void() | {save_config,Config1}
%%
%% GroupName = atom()
%% Name of the test case group that is finished.
%% Config0 = Config1 = [tuple()]
%% A list of key/value pairs, holding configuration data for the group.
%%
%% Description: Cleanup after each test case group.
%%--------------------------------------------------------------------
end_per_group(_GroupName, _Config) ->
ok.
%%--------------------------------------------------------------------
%% Function: init_per_testcase(TestCase, Config0) ->
%% Config1 | {skip,Reason} | {skip_and_save,Reason,Config1}
%%
%% TestCase = atom()
%% Name of the test case that is about to run.
%% Config0 = Config1 = [tuple()]
%% A list of key/value pairs, holding the test case configuration.
%% Reason = term()
%% The reason for skipping the test case.
%%
%% Description: Initialization before each test case.
%%
%% Note: This function is free to add any key/value pairs to the Config
%% variable, but should NOT alter/remove any existing entries.
%%--------------------------------------------------------------------
init_per_testcase(_TestCase, Config) ->
Config.
%%--------------------------------------------------------------------
%% Function: end_per_testcase(TestCase, Config0) ->
%% void() | {save_config,Config1} | {fail,Reason}
%%
%% TestCase = atom()
%% Name of the test case that is finished.
%% Config0 = Config1 = [tuple()]
%% A list of key/value pairs, holding the test case configuration.
%% Reason = term()
%% The reason for failing the test case.
%%
%% Description: Cleanup after each test case.
%%--------------------------------------------------------------------
end_per_testcase(_TestCase, _Config) ->
ok.
%%--------------------------------------------------------------------
%% Function: groups() -> [Group]
%%
%% Group = {GroupName,Properties,GroupsAndTestCases}
%% GroupName = atom()
%% The name of the group.
%% Properties = [parallel | sequence | Shuffle | {RepeatType,N}]
%% Group properties that may be combined.
%% GroupsAndTestCases = [Group | {group,GroupName} | TestCase]
%% TestCase = atom()
%% The name of a test case.
%% Shuffle = shuffle | {shuffle,Seed}
%% To get cases executed in random order.
%% Seed = {integer(),integer(),integer()}
%% RepeatType = repeat | repeat_until_all_ok | repeat_until_all_fail |
%% repeat_until_any_ok | repeat_until_any_fail
%% To get execution of cases repeated.
%% N = integer() | forever
%%
%% Description: Returns a list of test case group definitions.
%%--------------------------------------------------------------------
groups() ->
[].
%%--------------------------------------------------------------------
%% Function: all() -> GroupsAndTestCases | {skip,Reason}
%%
%% GroupsAndTestCases = [{group,GroupName} | TestCase]
%% GroupName = atom()
%% Name of a test case group.
%% TestCase = atom()
%% Name of a test case.
%% Reason = term()
%% The reason for skipping all groups and test cases.
%%
%% Description: Returns the list of groups and test cases that
%% are to be executed.
%%--------------------------------------------------------------------
all() ->
[].
%%--------------------------------------------------------------------
%% TEST CASES
%%--------------------------------------------------------------------
%%--------------------------------------------------------------------
%% Function: TestCase(Config0) ->
%% ok | exit() | {skip,Reason} | {comment,Comment} |
%% {save_config,Config1} | {skip_and_save,Reason,Config1}
%%
%% Config0 = Config1 = [tuple()]
%% A list of key/value pairs, holding the test case configuration.
%% Reason = term()
%% The reason for skipping the test case.
%% Comment = term()
%% A comment about the test case that will be printed in the html log.
%%
%% Description: Test case function. (The name of it must be specified in
%% the all/0 list or in a test case group for the test case
%% to be executed).
%%--------------------------------------------------------------------

View File

@ -53,6 +53,8 @@ snippet ff
<%= form_for @${1:model} do |f| %> <%= form_for @${1:model} do |f| %>
${2} ${2}
<% end %> <% end %>
snippet ffi
<%= ${1:f}.input :${2:attribute} %>
snippet ffcb snippet ffcb
<%= ${1:f}.check_box :${2:attribute} %> <%= ${1:f}.check_box :${2:attribute} %>
snippet ffe snippet ffe
@ -111,3 +113,13 @@ snippet slt
<%= stylesheet_link_tag ${1::all}, :cache => ${2:true} %> <%= stylesheet_link_tag ${1::all}, :cache => ${2:true} %>
snippet sslt snippet sslt
<%= stylesheet_link_tag "${1}" %> <%= stylesheet_link_tag "${1}" %>
snippet if
<% if ${1} %>
${2}
<% end %>
snippet ife
<% if ${1} %>
${2}
<% else %>
${3}
<% end %>

View File

@ -8,7 +8,7 @@ snippet imp
# Function # Function
snippet fun snippet fun
function ${2:function_name}(${3}) function ${2:function_name}(${3})
${4:/* code */} ${4}
end end
# Class # Class
@ -20,21 +20,21 @@ snippet class
# If # If
snippet if snippet if
if ${1:condition} if ${1:condition}
${2:/* code */} ${2}
end end
# If else # If else
snippet ife snippet ife
if ${1:condition} if ${1:condition}
${2:/* code */} ${2}
else else
${1} ${1}
end end
# If else if # If else if
snippet elif snippet eif
elif ${1:condition} elif ${1:condition}
${2:/* code */} ${2}
# Switch case # Switch case
snippet switch snippet switch
@ -55,17 +55,17 @@ snippet select
# For/in Loop # For/in Loop
snippet forin snippet forin
for ${1:element} in ${2:container} for ${1:element} in ${2:container}
${3:/* code */} ${3}
end end
# For/to Loop # For/to Loop
snippet forto snippet forto
for ${1:lowerbound} to ${2:upperbound} for ${1:lowerbound} to ${2:upperbound}
${3:/* code */} ${3}
end end
# While Loop # While Loop
snippet while snippet while
while ${1:conidition} while ${1:conidition}
${2:/* code */} ${2}
end end

View File

@ -16,7 +16,7 @@ snippet ch
# case # case
snippet cs snippet cs
case ${1:value}: case ${1:value}:
${2:/* code */} ${2}
# const # const
snippet c snippet c
const ${1:NAME} = ${2:0} const ${1:NAME} = ${2:0}
@ -36,7 +36,7 @@ snippet df
snippet dfr snippet dfr
defer func() { defer func() {
if err := recover(); err != nil { if err := recover(); err != nil {
${1:/* code */} ${1}
} }
}() }()
# gpl # gpl
@ -78,8 +78,8 @@ snippet inf
# if condition # if condition
snippet if snippet if
if ${1:/* condition */} { if ${1:/* condition */} {
${2:/* code */} ${2}
}${2} }${3}
# else snippet # else snippet
snippet el snippet el
else { else {
@ -109,7 +109,7 @@ snippet f6
# if else # if else
snippet ie snippet ie
if ${1:/* condition */} { if ${1:/* condition */} {
${2:/* code */} ${2}
} else { } else {
${3} ${3}
} }
@ -117,25 +117,25 @@ snippet ie
# for loop # for loop
snippet fo snippet fo
for ${2:i} := 0; $2 < ${1:count}; $2${3:++} { for ${2:i} := 0; $2 < ${1:count}; $2${3:++} {
${4:/* code */} ${4}
} }
${5} ${5}
# for range loop # for range loop
snippet fr snippet fr
for ${1:k}, ${2:v} := range ${3} { for ${1:k}, ${2:v} := range ${3} {
${4:/* code */} ${4}
} }
${5} ${5}
# function simple # function simple
snippet fun snippet fun
func ${1:funcName}(${2}) ${3:error} { func ${1:funcName}(${2}) ${3:error} {
${4:/* code */} ${4}
} }
${5} ${5}
# function on receiver # function on receiver
snippet fum snippet fum
func (self ${1:type}) ${2:funcName}(${3}) ${4:error} { func (self ${1:type}) ${2:funcName}(${3}) ${4:error} {
${5:/* code */} ${5}
} }
${6} ${6}
# log printf # log printf
@ -153,7 +153,7 @@ snippet mp
# main() # main()
snippet main snippet main
func main() { func main() {
${1:/* code */} ${1}
} }
${2} ${2}
# new # new
@ -178,11 +178,11 @@ snippet rs
snippet sl snippet sl
select { select {
case ${1:v1} := <-${2:chan1} case ${1:v1} := <-${2:chan1}
${3:/* code */} ${3}
case ${4:v2} := <-${5:chan2} case ${4:v2} := <-${5:chan2}
${6:/* code */} ${6}
default: default:
${7:/* code */} ${7}
} }
# string # string
snippet sr snippet sr
@ -197,11 +197,11 @@ snippet st
snippet sw snippet sw
switch ${1:var} { switch ${1:var} {
case ${2:value1}: case ${2:value1}:
${3:/* code */} ${3}
case ${4:value2}: case ${4:value2}:
${5:/* code */} ${5}
default: default:
${6:/* code */} ${6}
} }
snippet sp snippet sp
fmt.Sprintf("%${1:s}", ${2:var})${3} fmt.Sprintf("%${1:s}", ${2:var})${3}

View File

@ -11,10 +11,20 @@ snippet ul
%li %li
${1:item} ${1:item}
%li %li
snippet =rp snippet rp
= render :partial => '${1:partial}' = render :partial => "${1:item}"
snippet =rpl snippet rpc
= render :partial => '${1:partial}', :locals => {} = render :partial => "${1:item}", :collection => ${2:@$1s}
snippet =rpc snippet rpl
= render :partial => '${1:partial}', :collection => @$1 = render :partial => "${1:item}", :locals => { :${2:$1} => ${3:@$1}
snippet rpo
= render :partial => "${1:item}", :object => ${2:@$1}
snippet ife
- if ${1:condition}
${2}
- else
${3}
snippet ifp
- if ${1:condition}.presence?
${2}

View File

@ -412,7 +412,7 @@ snippet head
<head> <head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`}</title> <title>${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
${2} ${2}
</head> </head>
snippet header snippet header
@ -450,7 +450,7 @@ snippet html5
<html> <html>
<head> <head>
<meta http-equiv="content-type" content="text/html; charset=utf-8" /> <meta http-equiv="content-type" content="text/html; charset=utf-8" />
<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`}</title> <title>${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
${2:meta} ${2:meta}
</head> </head>
<body> <body>
@ -730,6 +730,10 @@ snippet source
<source src="${1}" type="${2}" media="${3}" /> <source src="${1}" type="${2}" media="${3}" />
snippet span snippet span
<span>${1}</span> <span>${1}</span>
snippet span.
<span class="${1}">${2}</span>
snippet span#
<span id="${1}">${2}</span>
snippet strong snippet strong
<strong>${1}</strong> <strong>${1}</strong>
snippet style snippet style
@ -791,7 +795,7 @@ snippet thead
snippet time snippet time
<time datetime="${1}" pubdate="${2:$1}">${3:$1}</time> <time datetime="${1}" pubdate="${2:$1}">${3:$1}</time>
snippet title snippet title
<title>${1:`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`}</title> <title>${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`}</title>
snippet tr snippet tr
<tr> <tr>
${1} ${1}

View File

@ -0,0 +1,74 @@
# file containing most useful mappings only
# when editing this file please be aware that there is ZenCoding and sparkup
# html 5 is recommended from now on
snippet html5
<!doctype html>
<html>
<head>
<title>$2</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
$3
</head>
<body>
$4
</body>
</html>
# ==== TAGS
# you always need these:
snippet .
class="${1}"${2}
snippet n
name="${1}"${2}
snippet r
rel="${1}"${2}
snippet t
title="${1}"${2}
# not using # because id is faster to type
snippet id
id="${1}"${2}
snippet idn
id="${1}" name="${2:$1}"
snippet label_and_input
<label for="${2:$1}">${1}</label>
<input type="${3:text}" name="${4:$2}" id="${5:$2}" value="${6}" />${7}
# FORMS
# use idn . or n to add id
snippet input
<input type="${1:text}" value="${2}" ${3}/>${7}
snippet submit
<input type="submit" value="${2}" ${3}/>${7}
snippet textarea
<textarea $1>$2</textarea>
# if you need id or class use snippets above
snippet form
<form method="${1:post/get}" action="$2">
$3
</form>
# other tags
snippet br
<br/>
snippet a
<a href="#" $2>$3</a>
snippet img
<img src="$1" alt="$2"/>
# JS/CSS
snippet css_file
<link rel="stylesheet" href="${1:style.css}" type="text/css" media="${2:all}" />${3}
snippet css_block
<link rel="stylesheet" href="${1:style.css}" type="text/css" media="${2:all}">
</link>
snippet script_block
<script type="text/javascript" charset="utf-8">
</script>
snippet script_file
<script type="text/javascript" charset="utf-8">
</script>

View File

@ -47,10 +47,10 @@ snippet if
{% if ${1} %} {% if ${1} %}
${2} ${2}
{% endif %} {% endif %}
snippet else snippet el
{% else %} {% else %}
${1} ${1}
snippet elif snippet eif
{% elif ${1} %} {% elif ${1} %}
${2} ${2}
snippet ifchanged snippet ifchanged

View File

@ -27,9 +27,9 @@ snippet if
{% if ${1:condition} %} {% if ${1:condition} %}
${2} ${2}
{% end %} {% end %}
snippet elif snippet eif
{% elif ${1:condition} %} {% elif ${1:condition} %}
snippet else snippet el
{% else %} {% else %}
snippet import snippet import
{% import ${1:module} %} {% import ${1:module} %}

View File

@ -39,11 +39,11 @@ snippet j.u
## ##
## Class ## Class
snippet cl snippet cl
class ${1:`Filename("", "untitled")`} ${2} class ${1:`vim_snippets#Filename("", "untitled")`} ${2}
snippet in snippet in
interface ${1:`Filename("", "untitled")`} ${2:extends Parent}${3} interface ${1:`vim_snippets#Filename("", "untitled")`} ${2:extends Parent}${3}
snippet tc snippet tc
public class ${1:`Filename()`} extends ${2:TestCase} public class ${1:`vim_snippets#Filename()`} extends ${2:TestCase}
## ##
## Class Enhancements ## Class Enhancements
snippet ext snippet ext
@ -72,7 +72,7 @@ snippet def
${2} ${2}
snippet el snippet el
else else
snippet elif snippet eif
else if (${1}) ${2} else if (${1}) ${2}
snippet if snippet if
if (${1}) ${2} if (${1}) ${2}
@ -144,7 +144,7 @@ snippet @au
snippet @br snippet @br
@brief ${1:Description} @brief ${1:Description}
snippet @fi snippet @fi
@file ${1:`Filename()`}.java @file ${1:`vim_snippets#Filename()`}.java
snippet @pa snippet @pa
@param ${1:param} @param ${1:param}
snippet @re snippet @re
@ -171,7 +171,7 @@ snippet wh
## Main method ## Main method
snippet main snippet main
public static void main (String[] args) { public static void main (String[] args) {
${1:/* code */} ${1}
} }
## ##
## Print Methods ## Print Methods

View File

@ -260,7 +260,7 @@ snippet filter
${1:obj}.filter('${2:selector expression}')${3} ${1:obj}.filter('${2:selector expression}')${3}
snippet filtert snippet filtert
${1:obj}.filter(function (${2:index}) { ${1:obj}.filter(function (${2:index}) {
${3:// test code} ${3}
})${4} })${4}
snippet find snippet find
${1:obj}.find('${2:selector expression}')${3} ${1:obj}.find('${2:selector expression}')${3}
@ -291,7 +291,7 @@ snippet getscript
}); });
snippet grep snippet grep
$.grep(${1:array}, function (item, index) { $.grep(${1:array}, function (item, index) {
${2:// test code} ${2}
}${3:, true}); }${3:, true});
snippet hasc snippet hasc
${1:obj}.hasClass('${2:className}')${3} ${1:obj}.hasClass('${2:className}')${3}

View File

@ -17,7 +17,7 @@ snippet f
# Immediate function # Immediate function
snippet (f snippet (f
(function (${1}) { (function (${1}) {
${3:/* code */} ${3}
}(${2})); }(${2}));
# if # if
snippet if snippet if
@ -38,16 +38,16 @@ snippet ter
snippet switch snippet switch
switch (${1:expression}) { switch (${1:expression}) {
case '${3:case}': case '${3:case}':
${4:// code} ${4}
break; break;
${5} ${5}
default: default:
${2:// code} ${2}
} }
# case # case
snippet case snippet case
case '${1:case}': case '${1:case}':
${2:// code} ${2}
break; break;
${3} ${3}
# for (...) {...} # for (...) {...}
@ -63,19 +63,19 @@ snippet forr
# while (...) {...} # while (...) {...}
snippet wh snippet wh
while (${1:/* condition */}) { while (${1:/* condition */}) {
${2:/* code */} ${2}
} }
# try # try
snippet try snippet try
try { try {
${1:/* code */} ${1}
} catch (${2:e}) { } catch (${2:e}) {
${3:/* handle error */} ${3:/* handle error */}
} }
# do...while # do...while
snippet do snippet do
do { do {
${2:/* code */} ${2}
} while (${1:/* condition */}); } while (${1:/* condition */});
# Object Method # Object Method
snippet :f snippet :f
@ -124,10 +124,10 @@ snippet jsons
# self-defining function # self-defining function
snippet sdf snippet sdf
var ${1:function_name} = function (${2:argument}) { var ${1:function_name} = function (${2:argument}) {
${3:// initial code ...} ${3}
$1 = function ($2) { $1 = function ($2) {
${4:// main code} ${4}
}; };
}; };
# singleton # singleton
@ -150,7 +150,7 @@ snippet sing
// reset the constructor pointer // reset the constructor pointer
instance.constructor = $1; instance.constructor = $1;
${3:// code ...} ${3}
return instance; return instance;
} }

View File

@ -1,4 +1,4 @@
snippet ifeq snippet ifeq
ifeq (${1:cond0},${2:cond1}) ifeq (${1:cond0},${2:cond1})
${3:code} ${3}
endif endif

View File

@ -22,7 +22,7 @@ snippet if if
% if ${1:condition}: % if ${1:condition}:
${2:} ${2:}
% endif % endif
snippet if if/else snippet ife if/else
% if ${1:condition}: % if ${1:condition}:
${2:} ${2:}
% else: % else:

View File

@ -3,7 +3,7 @@ snippet Imp
#import <${1:Cocoa/Cocoa.h}>${2} #import <${1:Cocoa/Cocoa.h}>${2}
# #import "..." # #import "..."
snippet imp snippet imp
#import "${1:`Filename()`.h}"${2} #import "${1:`vim_snippets#Filename()`.h}"${2}
# @selector(...) # @selector(...)
snippet sel snippet sel
@selector(${1:method}:)${3} @selector(${1:method}:)${3}
@ -18,7 +18,7 @@ snippet log
NSLog(@"${1:%@}"${2});${3} NSLog(@"${1:%@}"${2});${3}
# Class # Class
snippet objc snippet objc
@interface ${1:`Filename('', 'someClass')`} : ${2:NSObject} @interface ${1:`vim_snippets#Filename('', 'someClass')`} : ${2:NSObject}
{ {
} }
@end @end
@ -28,33 +28,33 @@ snippet objc
@end @end
# Class Interface # Class Interface
snippet int snippet int
@interface ${1:`Filename('', 'someClass')`} : ${2:NSObject} @interface ${1:`vim_snippets#Filename('', 'someClass')`} : ${2:NSObject}
{${3} {${3}
} }
${4} ${4}
@end @end
snippet @interface snippet @interface
@interface ${1:`Filename('', 'someClass')`} : ${2:NSObject} @interface ${1:`vim_snippets#Filename('', 'someClass')`} : ${2:NSObject}
{${3} {${3}
} }
${4} ${4}
@end @end
# Class Implementation # Class Implementation
snippet impl snippet impl
@implementation ${1:`Filename('', 'someClass')`} @implementation ${1:`vim_snippets#Filename('', 'someClass')`}
${2} ${2}
@end @end
snippet @implementation snippet @implementation
@implementation ${1:`Filename('', 'someClass')`} @implementation ${1:`vim_snippets#Filename('', 'someClass')`}
${2} ${2}
@end @end
# Protocol # Protocol
snippet pro snippet pro
@protocol ${1:`Filename('$1Delegate', 'MyProtocol')`} ${2:<NSObject>} @protocol ${1:`vim_snippets#Filename('$1Delegate', 'MyProtocol')`} ${2:<NSObject>}
${3} ${3}
@end @end
snippet @protocol snippet @protocol
@protocol ${1:`Filename('$1Delegate', 'MyProtocol')`} ${2:<NSObject>} @protocol ${1:`vim_snippets#Filename('$1Delegate', 'MyProtocol')`} ${2:<NSObject>}
${3} ${3}
@end @end
# init Definition # init Definition
@ -87,7 +87,7 @@ snippet cat
@end @end
# Category Interface # Category Interface
snippet cath snippet cath
@interface ${1:`Filename('$1', 'NSObject')`} (${2:MyCategory}) @interface ${1:`vim_snippets#Filename('$1', 'NSObject')`} (${2:MyCategory})
${3} ${3}
@end @end
# Method # Method
@ -207,7 +207,7 @@ snippet arel
# autorelease pool # autorelease pool
snippet pool snippet pool
NSAutoreleasePool *${1:pool} = [[NSAutoreleasePool alloc] init]; NSAutoreleasePool *${1:pool} = [[NSAutoreleasePool alloc] init];
${2:/* code */} ${2}
[$1 drain]; [$1 drain];
# Throw an exception # Throw an exception
snippet except snippet except

View File

@ -8,31 +8,35 @@ snippet .
# Function # Function
snippet sub snippet sub
sub ${1:function_name} { sub ${1:function_name} {
${2:#body ...} ${2}
} }
# Conditional # Conditional
snippet if snippet if
if (${1}) { if (${1}) {
${2:# body...} ${2}
} }
# Conditional if..else # Conditional if..else
snippet ife snippet ife
if (${1}) { if (${1}) {
${2:# body...} ${2}
} }
else { else {
${3:# else...} ${3}
} }
# Conditional if..elsif..else # Conditional if..elsif..else
snippet ifee snippet ifee
if (${1}) { if (${1}) {
${2:# body...} ${2}
} }
elsif (${3}) { elsif (${3}) {
${4:# elsif...} ${4:# elsif...}
} }
else { else {
${5:# else...} ${5}
}
snippet eif
elsif (${1}) {
${2}
} }
# Conditional One-line # Conditional One-line
snippet xif snippet xif
@ -40,7 +44,7 @@ snippet xif
# Unless conditional # Unless conditional
snippet unless snippet unless
unless (${1}) { unless (${1}) {
${2:# body...} ${2}
} }
# Unless conditional One-line # Unless conditional One-line
snippet xunless snippet xunless
@ -57,7 +61,7 @@ snippet eval
# While Loop # While Loop
snippet wh snippet wh
while (${1}) { while (${1}) {
${2:# body...} ${2}
} }
# While Loop One-line # While Loop One-line
snippet xwh snippet xwh
@ -65,7 +69,7 @@ snippet xwh
# C-style For Loop # C-style For Loop
snippet cfor snippet cfor
for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) { for (my $${2:var} = 0; $$2 < ${1:count}; $$2${3:++}) {
${4:# body...} ${4}
} }
# For loop one-line # For loop one-line
snippet xfor snippet xfor
@ -73,14 +77,14 @@ snippet xfor
# Foreach Loop # Foreach Loop
snippet for snippet for
foreach my $${1:x} (@${2:array}) { foreach my $${1:x} (@${2:array}) {
${3:# body...} ${3}
} }
# Foreach Loop One-line # Foreach Loop One-line
snippet fore snippet fore
${1:expression} foreach @${2:array};${3} ${1:expression} foreach @${2:array};${3}
# Package # Package
snippet package snippet package
package ${1:`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`}; package ${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`};
${2} ${2}
@ -89,7 +93,7 @@ snippet package
__END__ __END__
# Package syntax perl >= 5.14 # Package syntax perl >= 5.14
snippet packagev514 snippet packagev514
package ${1:`substitute(Filename('', 'Page Title'), '^.', '\u&', '')`} ${2:0.99}; package ${1:`substitute(vim_snippets#Filename('', 'Page Title'), '^.', '\u&', '')`} ${2:0.99};
${3} ${3}
@ -127,7 +131,7 @@ snippet switch
# Anonymous subroutine # Anonymous subroutine
snippet asub snippet asub
sub { sub {
${1:# body } ${1}
} }
@ -135,7 +139,7 @@ snippet asub
# Begin block # Begin block
snippet begin snippet begin
BEGIN { BEGIN {
${1:# begin body} ${1}
} }
# call package function with some parameter # call package function with some parameter
@ -174,7 +178,7 @@ snippet given
# switch-like case # switch-like case
snippet when snippet when
when (${1:case}) { when (${1:case}) {
${2:# body} ${2}
} }
# hash slice # hash slice
@ -237,7 +241,7 @@ snippet subpod
=cut =cut
sub ${1:subroutine_name} { sub ${1:subroutine_name} {
${2:# body...} ${2}
} }
# Subroutine signature # Subroutine signature
snippet parg snippet parg
@ -318,7 +322,7 @@ snippet trunner
snippet tsub snippet tsub
sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) { sub t${1:number}_${2:test_case} :Test(${3:num_of_tests}) {
my $self = shift; my $self = shift;
${4:# body} ${4}
} }
@ -326,14 +330,14 @@ snippet tsub
snippet trsub snippet trsub
test ${1:test_name} => { description => '${2:Description of test.}'} => sub { test ${1:test_name} => { description => '${2:Description of test.}'} => sub {
my ($self) = @_; my ($self) = @_;
${3:# test code} ${3}
}; };
#prep test method #prep test method
snippet tprep snippet tprep
sub prep${1:number}_${2:test_case} :Test(startup) { sub prep${1:number}_${2:test_case} :Test(startup) {
my $self = shift; my $self = shift;
${4:# body} ${4}
} }
# cause failures to print stack trace # cause failures to print stack trace

View File

@ -28,12 +28,12 @@ snippet use
use ${1:Foo\Bar\Baz}; use ${1:Foo\Bar\Baz};
${2} ${2}
snippet c snippet c
class ${1:`Filename()`} class ${1:`vim_snippets#Filename()`}
{ {
${2} ${2}
} }
snippet i snippet i
interface ${1:`Filename()`} interface ${1:`vim_snippets#Filename()`}
{ {
${2} ${2}
} }
@ -57,7 +57,7 @@ snippet sm
* *
* @param ${2:$1} $$1 ${3:description} * @param ${2:$1} $$1 ${3:description}
* *
* @return ${4:`Filename()`} * @return ${4:`vim_snippets#Filename()`}
*/ */
${5:public} function set${6:$2}(${7:$2 }$$1) ${5:public} function set${6:$2}(${7:$2 }$$1)
{ {
@ -214,7 +214,7 @@ snippet interface
* @package ${3:default} * @package ${3:default}
* @author ${4:`g:snips_author`} * @author ${4:`g:snips_author`}
*/ */
interface ${1:`Filename()`} interface ${1:`vim_snippets#Filename()`}
{ {
${5} ${5}
} }
@ -223,7 +223,7 @@ snippet class
/** /**
* ${1} * ${1}
*/ */
class ${2:`Filename()`} class ${2:`vim_snippets#Filename()`}
{ {
${3} ${3}
/** /**
@ -231,13 +231,13 @@ snippet class
*/ */
${5:public} function ${6:__construct}(${7:argument}) ${5:public} function ${6:__construct}(${7:argument})
{ {
${8:// code...} ${8}
} }
} }
snippet nc snippet nc
namespace ${1:`substitute(substitute(expand("%:h"), '\v^\w+\/(\u)', '\1', ''), '\/', '\\\', 'g')`}; namespace ${1:`substitute(substitute(expand("%:h"), '\v^\w+\/(\u)', '\1', ''), '\/', '\\\', 'g')`};
${2:abstract }class ${3:`Filename()`} ${2:abstract }class ${3:`vim_snippets#Filename()`}
{ {
${4} ${4}
} }
@ -249,26 +249,26 @@ snippet def?
${1}defined('${2}')${3} ${1}defined('${2}')${3}
snippet wh snippet wh
while (${1:/* condition */}) { while (${1:/* condition */}) {
${2:// code...} ${2}
} }
# do ... while # do ... while
snippet do snippet do
do { do {
${2:// code... } ${2}
} while (${1:/* condition */}); } while (${1:/* condition */});
snippet if snippet if
if (${1:/* condition */}) { if (${1:/* condition */}) {
${2:// code...} ${2}
} }
snippet ifil snippet ifil
<?php if (${1:/* condition */}): ?> <?php if (${1:/* condition */}): ?>
${2:<!-- code... -->} ${2}
<?php endif; ?> <?php endif; ?>
snippet ife snippet ife
if (${1:/* condition */}) { if (${1:/* condition */}) {
${2:// code...} ${2}
} else { } else {
${3:// code...} ${3}
} }
${4} ${4}
snippet ifeil snippet ifeil
@ -278,35 +278,35 @@ snippet ifeil
${3:<!-- html... -->} ${3:<!-- html... -->}
<?php endif; ?> <?php endif; ?>
${4} ${4}
snippet else snippet el
else { else {
${1:// code...} ${1}
} }
snippet elseif snippet eif
elseif (${1:/* condition */}) { elseif (${1:/* condition */}) {
${2:// code...} ${2}
} }
snippet switch snippet switch
switch ($${1:variable}) { switch ($${1:variable}) {
case '${2:value}': case '${2:value}':
${3:// code...} ${3}
break; break;
${5} ${5}
default: default:
${4:// code...} ${4}
break; break;
} }
snippet case snippet case
case '${1:value}': case '${1:value}':
${2:// code...} ${2}
break;${3} break;${3}
snippet for snippet for
for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) { for ($${2:i} = 0; $$2 < ${1:count}; $$2${3:++}) {
${4: // code...} ${4}
} }
snippet foreach snippet foreach
foreach ($${1:variable} as $${2:value}) { foreach ($${1:variable} as $${2:value}) {
${3:// code...} ${3}
} }
snippet foreachil snippet foreachil
<?php foreach ($${1:variable} as $${2:value}): ?> <?php foreach ($${1:variable} as $${2:value}): ?>
@ -314,7 +314,7 @@ snippet foreachil
<?php endforeach; ?> <?php endforeach; ?>
snippet foreachk snippet foreachk
foreach ($${1:variable} as $${2:key} => $${3:value}) { foreach ($${1:variable} as $${2:key} => $${3:value}) {
${4:// code...} ${4}
} }
snippet foreachkil snippet foreachkil
<?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?> <?php foreach ($${1:variable} as $${2:key} => $${3:value}): ?>
@ -343,6 +343,8 @@ snippet vd
var_dump(${1}); var_dump(${1});
snippet vdd snippet vdd
var_dump(${1}); die(${2:}); var_dump(${1}); die(${2:});
snippet vdf
error_log(print_r($${1:foo}, true), 3, '${2:/tmp/debug.log}');${3}
snippet http_redirect snippet http_redirect
header ("HTTP/1.1 301 Moved Permanently"); header ("HTTP/1.1 301 Moved Permanently");
header ("Location: ".URL); header ("Location: ".URL);
@ -364,7 +366,7 @@ snippet gs
* *
* @param $2 $$1 ${5:description} * @param $2 $$1 ${5:description}
* *
* @return ${6:`Filename()`} * @return ${6:`vim_snippets#Filename()`}
*/ */
public function set$3(${7:$2 }$$1) public function set$3(${7:$2 }$$1)
{ {

View File

@ -65,7 +65,7 @@ snippet for
#loop while #loop while
snippet while snippet while
while (${1:/* condition */}) { while (${1:/* condition */}) {
${2:/* code */} ${2}
} }
#break #break
snippet break snippet break
@ -84,11 +84,11 @@ snippet default
snippet switch snippet switch
switch(${1:expression}) { switch(${1:expression}) {
case '${3:case}': case '${3:case}':
${4:// code} ${4}
break; break;
${5} ${5}
default: default:
${2:// code} ${2}
} }
#try #try
snippet try snippet try

View File

@ -5,11 +5,11 @@
# Language Constructs # Language Constructs
snippet class snippet class
class ${1:`Filename('', 'name')`} { class ${1:`vim_snippets#Filename('', 'name')`} {
${2} ${2}
} }
snippet node snippet node
node "${1:`Filename('', 'fqdn')`}" { node "${1:`vim_snippets#Filename('', 'fqdn')`}" {
${2} ${2}
} }
snippet case snippet case
@ -26,7 +26,7 @@ snippet if
if $${1:variable} { if $${1:variable} {
${2} ${2}
} }
snippet else snippet el
else { else {
${1} ${1}
} }

View File

@ -2,29 +2,33 @@ snippet #!
#!/usr/bin/env python #!/usr/bin/env python
snippet imp snippet imp
import ${1:module} import ${1:module}
snippet uni
def __unicode__(self):
${1:representation}
snippet from snippet from
from ${1:package} import ${2:module} from ${1:package} import ${2:module}
# Module Docstring # Module Docstring
snippet docs snippet docs
""" """
File: ${1:`Filename('$1.py', 'foo.py')`} File: ${1:`vim_snippets#Filename('$1.py', 'foo.py')`}
Author: `g:snips_author` Author: `g:snips_author`
Email: `g:snips_email` Email: `g:snips_email`
Github: `g:snips_github` Github: `g:snips_github`
Description: ${2} Description: ${2}
""" """
snippet wh snippet wh
while ${1:condition}: while ${1:condition}:
${2:# TODO: write code...} ${2}
# dowh - does the same as do...while in other languages # dowh - does the same as do...while in other languages
snippet dowh snippet dowh
while True: while True:
${1:# TODO: write code...} ${1}
if ${2:condition}: if ${2:condition}:
break break
snippet with snippet with
with ${1:expr} as ${2:var}: with ${1:expr} as ${2:var}:
${3:# TODO: write code...} ${3}
# New Class # New Class
snippet cl snippet cl
class ${1:ClassName}(${2:object}): class ${1:ClassName}(${2:object}):
@ -37,14 +41,14 @@ snippet cl
snippet def snippet def
def ${1:fname}(${2:`indent('.') ? 'self' : ''`}): def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):
"""${3:docstring for $1}""" """${3:docstring for $1}"""
${4:# TODO: write code...} ${4}
snippet deff snippet deff
def ${1:fname}(${2:`indent('.') ? 'self' : ''`}): def ${1:fname}(${2:`indent('.') ? 'self' : ''`}):
${3:# TODO: write code...} ${3}
# New Method # New Method
snippet defs snippet defs
def ${1:mname}(self, ${2:arg}): def ${1:mname}(self, ${2:arg}):
${3:# TODO: write code...} ${3}
# New Property # New Property
snippet property snippet property
def ${1:foo}(): def ${1:foo}():
@ -60,17 +64,17 @@ snippet property
# Ifs # Ifs
snippet if snippet if
if ${1:condition}: if ${1:condition}:
${2:# TODO: write code...} ${2}
snippet el snippet el
else: else:
${1:# TODO: write code...} ${1}
snippet ei snippet ei
elif ${1:condition}: elif ${1:condition}:
${2:# TODO: write code...} ${2}
# For # For
snippet for snippet for
for ${1:item} in ${2:items}: for ${1:item} in ${2:items}:
${3:# TODO: write code...} ${3}
# Encodes # Encodes
snippet cutf8 snippet cutf8
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
@ -79,38 +83,38 @@ snippet clatin1
snippet cascii snippet cascii
# -*- coding: ascii -*- # -*- coding: ascii -*-
# Lambda # Lambda
snippet lda snippet ld
${1:var} = lambda ${2:vars} : ${3:action} ${1:var} = lambda ${2:vars} : ${3:action}
snippet . snippet .
self. self.
snippet try Try/Except snippet try Try/Except
try: try:
${1:# TODO: write code...} ${1}
except ${2:Exception}, ${3:e}: except ${2:Exception}, ${3:e}:
${4:raise $3} ${4:raise $3}
snippet try Try/Except/Else snippet try Try/Except/Else
try: try:
${1:# TODO: write code...} ${1}
except ${2:Exception}, ${3:e}: except ${2:Exception}, ${3:e}:
${4:raise $3} ${4:raise $3}
else: else:
${5:# TODO: write code...} ${5}
snippet try Try/Except/Finally snippet try Try/Except/Finally
try: try:
${1:# TODO: write code...} ${1}
except ${2:Exception}, ${3:e}: except ${2:Exception}, ${3:e}:
${4:raise $3} ${4:raise $3}
finally: finally:
${5:# TODO: write code...} ${5}
snippet try Try/Except/Else/Finally snippet try Try/Except/Else/Finally
try: try:
${1:# TODO: write code...} ${1}
except ${2:Exception}, ${3:e}: except ${2:Exception}, ${3:e}:
${4:raise $3} ${4:raise $3}
else: else:
${5:# TODO: write code...} ${5}
finally: finally:
${6:# TODO: write code...} ${6}
# if __name__ == '__main__': # if __name__ == '__main__':
snippet ifmain snippet ifmain
if __name__ == '__main__': if __name__ == '__main__':
@ -127,6 +131,9 @@ snippet ipdb
# ipython debugger (pdbbb) # ipython debugger (pdbbb)
snippet pdbbb snippet pdbbb
import pdbpp; pdbpp.set_trace() import pdbpp; pdbpp.set_trace()
# python console debugger (pudb)
snippet pudb
import pudb; pudb.set_trace()
snippet pprint snippet pprint
import pprint; pprint.pprint(${1})${2} import pprint; pprint.pprint(${1})${2}
snippet " snippet "
@ -136,13 +143,13 @@ snippet "
# test function/method # test function/method
snippet test snippet test
def test_${1:description}(${2:`indent('.') ? 'self' : ''`}): def test_${1:description}(${2:`indent('.') ? 'self' : ''`}):
${3:# TODO: write code...} ${3}
# test case # test case
snippet testcase snippet testcase
class ${1:ExampleCase}(unittest.TestCase): class ${1:ExampleCase}(unittest.TestCase):
def test_${2:description}(self): def test_${2:description}(self):
${3:# TODO: write code...} ${3}
snippet fut snippet fut
from __future__ import ${1} from __future__ import ${1}
#getopt #getopt
@ -169,7 +176,8 @@ snippet glog
logger = logging.getLogger(${1:__name__}) logger = logging.getLogger(${1:__name__})
snippet le snippet le
logger.error(${1:msg}) logger.error(${1:msg})
snippet ld # conflict with lambda=ld, therefor we change into Logger.debuG
snippet lg
logger.debug(${1:msg}) logger.debug(${1:msg})
snippet lw snippet lw
logger.warning(${1:msg}) logger.warning(${1:msg})

View File

@ -12,24 +12,24 @@ snippet source
# conditionals # conditionals
snippet if snippet if
if (${1:condition}) { if (${1:condition}) {
${2:code} ${2}
} }
snippet el snippet el
else { else {
${1:code} ${1}
} }
snippet ei snippet ei
else if (${1:condition}) { else if (${1:condition}) {
${2:code} ${2}
} }
# functions # functions
snippet fun snippet fun
${1:name} = function (${2:variables}) { ${1:name} = function (${2:variables}) {
${3:code} ${3}
} }
snippet ret snippet ret
return(${1:code}) return(${1})
# dataframes, lists, etc # dataframes, lists, etc
snippet df snippet df

View File

@ -3,9 +3,9 @@
snippet : snippet :
:${1:field name}: ${2:field body} :${1:field name}: ${2:field body}
snippet * snippet *
*${1:Emphasis}* *${1:Emphasis}* ${2}
snippet ** snippet **
**${1:Strong emphasis}** **${1:Strong emphasis}** ${2}
snippet _ snippet _
\`${1:hyperlink-name}\`_ \`${1:hyperlink-name}\`_
.. _\`$1\`: ${2:link-block} .. _\`$1\`: ${2:link-block}
@ -17,6 +17,53 @@ snippet -
${1:Title} ${1:Title}
-----${2:-} -----${2:-}
${3} ${3}
#some directive
snippet img:
.. |${2:alias}| image:: ${1:img}
snippet fig:
.. figure:: ${1:img}
:alt: ${2:alter text}
$2
snippet cont: snippet cont:
.. contents:: .. contents::
${1:content}
snippet code:
.. code:: ${1:type}
${2:write some code}
snippet tip:
.. tip::
${1:my tips}
snippet not:
.. note::
${1:my notes}
snippet war:
.. warning::
${1:attention!}
snippet imp:
.. important::
${1:this is importatnt}
snippet att:
.. attention::
${1:hey!}
snippet dan:
.. danger::
${1:ah!}
snippet err:
.. error::
${1:Error occur}
snippet cau:
.. caution::
${1:Watch out!}
#Spinx only
snippet sid:
.. sidebar:: ${1:Title}
${2}
# CJK optimize, CJK has no space between charaters
snippet *c
\ *${1:Emphasis}*\ ${2}
snippet **c
\ **${1:Strong emphasis}**\ ${2}

View File

@ -16,6 +16,14 @@ snippet =b
=begin rdoc =begin rdoc
${1} ${1}
=end =end
snippet prot
protected
${1}
snippet priv
private
${1}
snippet y snippet y
:yields: ${1:arguments} :yields: ${1:arguments}
snippet rb snippet rb
@ -60,7 +68,7 @@ snippet ife
else else
${3} ${3}
end end
snippet elsif snippet eif
elsif ${1:condition} elsif ${1:condition}
${2} ${2}
snippet unless snippet unless
@ -80,23 +88,23 @@ snippet until
${2} ${2}
end end
snippet cla class .. end snippet cla class .. end
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
${2} ${2}
end end
snippet cla class .. initialize .. end snippet cla class .. initialize .. end
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
def initialize(${2:args}) def initialize(${2:args})
${3} ${3}
end end
end end
snippet cla class .. < ParentClass .. initialize .. end snippet cla class .. < ParentClass .. initialize .. end
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < ${2:ParentClass} class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < ${2:ParentClass}
def initialize(${3:args}) def initialize(${3:args})
${4} ${4}
end end
end end
snippet cla ClassName = Struct .. do .. end snippet cla ClassName = Struct .. do .. end
${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} = Struct.new(:${2:attr_names}) do ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} = Struct.new(:${2:attr_names}) do
def ${3:method_name} def ${3:method_name}
${4} ${4}
end end
@ -111,7 +119,7 @@ snippet cla class << self .. end
end end
# class .. < DelegateClass .. initialize .. end # class .. < DelegateClass .. initialize .. end
snippet cla- snippet cla-
class ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < DelegateClass(${2:ParentClass}) class ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} < DelegateClass(${2:ParentClass})
def initialize(${3:args}) def initialize(${3:args})
super(${4:del_obj}) super(${4:del_obj})
@ -119,17 +127,17 @@ snippet cla-
end end
end end
snippet mod module .. end snippet mod module .. end
module ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} module ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
${2} ${2}
end end
snippet mod module .. module_function .. end snippet mod module .. module_function .. end
module ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} module ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
module_function module_function
${2} ${2}
end end
snippet mod module .. ClassMethods .. end snippet mod module .. ClassMethods .. end
module ${1:`substitute(Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`} module ${1:`substitute(vim_snippets#Filename(), '\(_\|^\)\(.\)', '\u\2', 'g')`}
module ClassMethods module ClassMethods
${2} ${2}
end end
@ -156,6 +164,11 @@ snippet atp
attr_protected :${1:attr_names} attr_protected :${1:attr_names}
snippet ata snippet ata
attr_accessible :${1:attr_names} attr_accessible :${1:attr_names}
snippet ana
accepts_nested_attributes_for :${1:association}
# ivc == instance variable cache
snippet ivc
@${1:variable_name} ||= ${2:chached_value}
# include Enumerable # include Enumerable
snippet Enum snippet Enum
include Enumerable include Enumerable
@ -178,6 +191,11 @@ snippet defs
def self.${1:class_method_name} def self.${1:class_method_name}
${2} ${2}
end end
# def initialize
snippet definit
def initialize(${1:args})
${2}
end
# def method_missing # def method_missing
snippet defmm snippet defmm
def method_missing(meth, *args, &blk) def method_missing(meth, *args, &blk)
@ -309,6 +327,12 @@ snippet injd
inject(${1:init}) do |${2:mem}, ${3:var}| inject(${1:init}) do |${2:mem}, ${3:var}|
${4} ${4}
end end
snippet red
reduce(${1:init}) { |${2:mem}, ${3:var}| ${4} }
snippet redd
reduce(${1:init}) do |${2:mem}, ${3:var}|
${4}
end
snippet map snippet map
map { |${1:e}| ${2} } map { |${1:e}| ${2} }
snippet mapd snippet mapd
@ -389,13 +413,17 @@ snippet seld
end end
snippet lam snippet lam
lambda { |${1:args}| ${2} } lambda { |${1:args}| ${2} }
snippet doo # I'm pretty sure that ruby users expect do to expand to do .. end
snippet do
do do
${1} ${1}
end end
# this is for one or more variables. typing a ", " is that cheap that it may
# not be worth adding another snippet. should 0/1 placeholders change order?
# its a good idea to think about the var name, so use it first
snippet dov snippet dov
do |${1:variable}| do |${0:v}|
${2} ${1}
end end
snippet : snippet :
:${1:key} => ${2:"value"}${3} :${1:key} => ${2:"value"}${3}
@ -529,7 +557,7 @@ snippet clafn
snippet sinc snippet sinc
class << self; self end class << self; self end
snippet nam snippet nam
namespace :${1:`Filename()`} do namespace :${1:`vim_snippets#Filename()`} do
${2} ${2}
end end
snippet tas snippet tas
@ -572,8 +600,8 @@ snippet artp
snippet artpp snippet artpp
assert_redirected_to ${1:model}s_path assert_redirected_to ${1:model}s_path
snippet asd snippet asd
assert_difference "${1:Model}.${2:count}", $1 do assert_difference "${1:Model}.${2:count}", ${3:1} do
${3} ${4}
end end
snippet asnd snippet asnd
assert_no_difference "${1:Model}.${2:count}" do assert_no_difference "${1:Model}.${2:count}" do
@ -597,14 +625,14 @@ snippet defcreate
def create def create
@${1:model_class_name} = ${2:ModelClassName}.new(params[:$1]) @${1:model_class_name} = ${2:ModelClassName}.new(params[:$1])
respond_to do |wants| respond_to do |format|
if @$1.save if @$1.save
flash[:notice] = '$2 was successfully created.' flash[:notice] = '$2 was successfully created.'
wants.html { redirect_to(@$1) } format.html { redirect_to(@$1) }
wants.xml { render :xml => @$1, :status => :created, :location => @$1 } format.xml { render :xml => @$1, :status => :created, :location => @$1 }
else else
wants.html { render :action => "new" } format.html { render :action => "new" }
wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity } format.xml { render :xml => @$1.errors, :status => :unprocessable_entity }
end end
end end
end${3} end${3}
@ -613,9 +641,9 @@ snippet defdestroy
@${1:model_class_name} = ${2:ModelClassName}.find(params[:id]) @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])
@$1.destroy @$1.destroy
respond_to do |wants| respond_to do |format|
wants.html { redirect_to($1s_url) } format.html { redirect_to($1s_url) }
wants.xml { head :ok } format.xml { head :ok }
end end
end${3} end${3}
snippet defedit snippet defedit
@ -626,41 +654,41 @@ snippet defindex
def index def index
@${1:model_class_name} = ${2:ModelClassName}.all @${1:model_class_name} = ${2:ModelClassName}.all
respond_to do |wants| respond_to do |format|
wants.html # index.html.erb format.html # index.html.erb
wants.xml { render :xml => @$1s } format.xml { render :xml => @$1s }
end end
end${3} end${3}
snippet defnew snippet defnew
def new def new
@${1:model_class_name} = ${2:ModelClassName}.new @${1:model_class_name} = ${2:ModelClassName}.new
respond_to do |wants| respond_to do |format|
wants.html # new.html.erb format.html # new.html.erb
wants.xml { render :xml => @$1 } format.xml { render :xml => @$1 }
end end
end${3} end${3}
snippet defshow snippet defshow
def show def show
@${1:model_class_name} = ${2:ModelClassName}.find(params[:id]) @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])
respond_to do |wants| respond_to do |format|
wants.html # show.html.erb format.html # show.html.erb
wants.xml { render :xml => @$1 } format.xml { render :xml => @$1 }
end end
end${3} end${3}
snippet defupdate snippet defupdate
def update def update
@${1:model_class_name} = ${2:ModelClassName}.find(params[:id]) @${1:model_class_name} = ${2:ModelClassName}.find(params[:id])
respond_to do |wants| respond_to do |format|
if @$1.update_attributes(params[:$1]) if @$1.update_attributes(params[:$1])
flash[:notice] = '$2 was successfully updated.' flash[:notice] = '$2 was successfully updated.'
wants.html { redirect_to(@$1) } format.html { redirect_to(@$1) }
wants.xml { head :ok } format.xml { head :ok }
else else
wants.html { render :action => "edit" } format.html { render :action => "edit" }
wants.xml { render :xml => @$1.errors, :status => :unprocessable_entity } format.xml { render :xml => @$1.errors, :status => :unprocessable_entity }
end end
end end
end${3} end${3}
@ -733,8 +761,8 @@ snippet ra
snippet ral snippet ral
render :action => "${1:action}", :layout => "${2:layoutname}" render :action => "${1:action}", :layout => "${2:layoutname}"
snippet rest snippet rest
respond_to do |wants| respond_to do |format|
wants.${1:html} { ${2} } format.${1:html} { ${2} }
end end
snippet rf snippet rf
render :file => "${1:filepath}" render :file => "${1:filepath}"
@ -779,7 +807,7 @@ snippet ru
snippet rxml snippet rxml
render :xml => ${1:text to render} render :xml => ${1:text to render}
snippet sc snippet sc
scope :${1:name}, :where(:@${2:field} => ${3:value}) scope :${1:name}, -> { where(${2:field}: ${3:value}) }
snippet sl snippet sl
scope :${1:name}, lambda do |${2:value}| scope :${1:name}, lambda do |${2:value}|
where("${3:field = ?}", ${4:bind var}) where("${3:field = ?}", ${4:bind var})
@ -802,6 +830,85 @@ snippet sweeper
expire_page expire_page
end end
end end
snippet va validates_associated
validates_associated :${1:attribute}
snippet va validates .., :acceptance => true
validates :${1:terms}, :acceptance => true
snippet vc
validates :${1:attribute}, :confirmation => true
snippet ve
validates :${1:attribute}, :exclusion => { :in => ${2:%w( mov avi )} }
snippet vf
validates :${1:attribute}, :format => { :with => /${2:regex}/ }
snippet vi
validates :${1:attribute}, :inclusion => { :in => %w(${2: mov avi }) }
snippet vl
validates :${1:attribute}, :length => { :in => ${2:3}..${3:20} }
snippet vn
validates :${1:attribute}, :numericality => true
snippet vp
validates :${1:attribute}, :presence => true
snippet vu
validates :${1:attribute}, :uniqueness => true
snippet format
format.${1:js|xml|html} { ${2} }
snippet wc
where(${1:"conditions"}${2:, bind_var})
snippet wh
where(${1:field} => ${2:value})
snippet xdelete
xhr :delete, :${1:destroy}, :id => ${2:1}${3}
snippet xget
xhr :get, :${1:show}, :id => ${2:1}${3}
snippet xpost
xhr :post, :${1:create}, :${2:object} => { ${3} }
snippet xput
xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}
snippet test
test "should ${1:do something}" do
${2}
end
###########################
# migrations snippets #
###########################
snippet mac
add_column :${1:table_name}, :${2:column_name}, :${3:data_type}
snippet mai
add_index :${1:table_name}, :${2:column_name}
snippet mrc
remove_column :${1:table_name}, :${2:column_name}
snippet mrnc
rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}
snippet mcc
change_column :${1:table}, :${2:column}, :${3:type}
snippet mnc
t.${1:string} :${2:title}${3:, null: false}${4}
snippet mct
create_table :${1:table_name} do |t|
${2}
end
snippet migration class .. < ActiveRecord::Migration .. def up .. def down .. end
class ${1:class_name} < ActiveRecord::Migration
def up
${2}
end
def down
end
end
snippet migration class .. < ActiveRecord::Migration .. def change .. end
class ${1:class_name} < ActiveRecord::Migration
def change
${2}
end
end
snippet trc
t.remove :${1:column}
snippet tre
t.rename :${1:old_column_name}, :${2:new_column_name}
${3}
snippet tref
t.references :${1:model}
snippet tcb snippet tcb
t.boolean :${1:title} t.boolean :${1:title}
${2} ${2}
@ -847,98 +954,17 @@ snippet tcts
snippet tctss snippet tctss
t.timestamps t.timestamps
${1} ${1}
snippet va ##########################
validates_associated :${1:attribute} # Rspec snippets #
snippet vao ##########################
validates_acceptance_of :${1:terms}
snippet vc
validates_confirmation_of :${1:attribute}
snippet ve
validates_exclusion_of :${1:attribute}, :in => ${2:%w( mov avi )}
snippet vf
validates_format_of :${1:attribute}, :with => /${2:regex}/
snippet vi
validates_inclusion_of :${1:attribute}, :in => %w(${2: mov avi })
snippet vl
validates_length_of :${1:attribute}, :within => ${2:3}..${3:20}
snippet vn
validates_numericality_of :${1:attribute}
snippet vpo
validates_presence_of :${1:attribute}
snippet vu
validates_uniqueness_of :${1:attribute}
snippet wants
wants.${1:js|xml|html} { ${2} }
snippet wc
where(${1:"conditions"}${2:, bind_var})
snippet wh
where(${1:field} => ${2:value})
snippet xdelete
xhr :delete, :${1:destroy}, :id => ${2:1}${3}
snippet xget
xhr :get, :${1:show}, :id => ${2:1}${3}
snippet xpost
xhr :post, :${1:create}, :${2:object} => { ${3} }
snippet xput
xhr :put, :${1:update}, :id => ${2:1}, :${3:object} => { ${4} }${5}
snippet test
test "should ${1:do something}" do
${2}
end
#migrations
snippet mac
add_column :${1:table_name}, :${2:column_name}, :${3:data_type}
snippet mrc
remove_column :${1:table_name}, :${2:column_name}
snippet mrnc
rename_column :${1:table_name}, :${2:old_column_name}, :${3:new_column_name}
snippet mcc
change_column :${1:table}, :${2:column}, :${3:type}
snippet mnc
t.${1:string} :${2:title}${3:, null: false}${4}
snippet mct
create_table :${1:table_name} do |t|
${2}
end
snippet migration class .. < ActiveRecord::Migration .. def up .. def down .. end
class ${1:class_name} < ActiveRecord::Migration
def up
${2}
end
def down
end
end
snippet migration class .. < ActiveRecord::Migration .. def change .. end
class ${1:class_name} < ActiveRecord::Migration
def change
${2}
end
end
snippet trc
t.remove :${1:column}
snippet tre
t.rename :${1:old_column_name}, :${2:new_column_name}
${3}
snippet tref
t.references :${1:model}
#rspec
snippet it
it "${1:spec_name}" do
${2}
end
snippet itp
it "${1:spec_name}"
${2}
snippet its
its(:${1:method}) { should ${2} }
snippet itsn
its(:${1:method}) { should_not ${2} }
snippet desc snippet desc
describe ${1:class_name} do describe ${1:class_name} do
${2} ${2}
end end
snippet descm
describe "${1:#method}" do
${2:pending "Not implemented"}
end
snippet cont snippet cont
context "${1:message}" do context "${1:message}" do
${2} ${2}
@ -952,22 +978,101 @@ snippet aft
${2} ${2}
end end
snippet let snippet let
let(:${1:object}) ${2:block} let(:${1:object}) ${2}
snippet let! snippet let!
let!(:${1:object}) ${2:block} let!(:${1:object}) ${2}
snippet subj snippet subj
subject { ${1} } subject { ${1} }
snippet s.
subject.${1:method}
snippet spec snippet spec
specify { subject.${1} } specify { subject.${1} }
snippet exp snippet exp
expect(${1:object}).to ${2} expect { ${1:object} }.to ${2}
snippet btr snippet raise
be_true expect { ${1:object} }.to raise_error ${2:StandardError}, /${3:message_regex}/
snippet bfa
be_false
snippet shared snippet shared
shared_examples "${1:shared examples name}" ${2} shared_examples ${1:"shared examples name"}
snippet itb snippet ibl
it_behaves_like "${1:shared examples name}"${2} it_behaves_like ${1:"shared examples name"}
snippet ana snippet it
accepts_nested_attributes_for :${1:association} it "${1:spec_name}" do
${2}
end
snippet its
its(:${1:method}) { should ${2} }
snippet is
it { should ${1} }
snippet isn
it { should_not ${1} }
#ShouldaMatchers#ActionController
snippet isfp
it { should filter_param :${1:key} }
snippet isrt
it { should redirect_to ${1:url} }
snippet isrtp
it { should render_template ${1} }
snippet isrwl
it { should render_with_layout ${1} }
snippet isrf
it { should rescue_from ${1:exception} }
snippet isrw
it { should respond_with ${1:status} }
snippet isr
it { should route(:${1:method}, '${2:path}') }
snippet isss
it { should set_session :${1:key} }
snippet issf
it { should set_the_flash('${1}') }
#ShouldaMatchers#ActiveModel
snippet isama
it { should allow_mass_assignment_of :${1} }
snippet isav
it { should allow_value(${1}).for :${2} }
snippet isee
it { should ensure_exclusion_of :${1} }
snippet isei
it { should ensure_inclusion_of :${1} }
snippet isel
it { should ensure_length_of :${1} }
snippet isva
it { should validate_acceptance_of :${1} }
snippet isvc
it { should validate_confirmation_of :${1} }
snippet isvn
it { should validate_numericality_of :${1} }
snippet isvp
it { should validate_presence_of :${1} }
snippet isvu
it { should validate_uniqueness_of :${1} }
#ShouldaMatchers#ActiveRecord
snippet isana
it { should accept_nested_attributes_for :${1} }
snippet isbt
it { should belong_to :${1} }
snippet isbtcc
it { should belong_to(:${1}).counter_cache ${2:true} }
snippet ishbtm
it { should have_and_belong_to_many :${1} }
snippet isbv
it { should be_valid }${1}
snippet ishc
it { should have_db_column :${1} }
snippet ishi
it { should have_db_index :${1} }
snippet ishm
it { should have_many :${1} }
snippet ishmt
it { should have_many(:${1}).through :${2} }
snippet isho
it { should have_one :${1} }
snippet ishro
it { should have_readonly_attribute :${1} }
snippet iss
it { should serialize :${1} }
snippet isres
it { should respond_to :${1} }
snippet isresw
it { should respond_to(:${1}).with(${2}).arguments }
snippet super_call
${1:super_class}.instance_method(:${2:method}).bind(self).call

View File

@ -7,61 +7,65 @@
#if #if
snippet if snippet if
if(${1:obj}) { if(${1:obj}) {
${2:/* code */} ${2}
} }
#if not #if not
snippet ifn snippet ifn
if(!${1:obj}) { if(!${1:obj}) {
${2:/* code */} ${2}
} }
#if-else #if-else
snippet ifel snippet ife
if(${1:obj}) { if(${1:obj}) {
${2:/* code */} ${2}
} else { } else {
${3:/* code */} ${3}
} }
#if-else-if #if-else-if
snippet ifelif snippet ifelif
if(${1:obj}) { if(${1:obj}) {
${2:/* code */} ${2}
} else if(${3:obj}) { } else if(${3:obj}) {
${4:/* code */} ${4}
}
snippet eif
else if(${3:obj}) {
${4}
} }
#while loop #while loop
snippet while snippet while
while (${1:obj}) { while (${1:obj}) {
${2:/* code */} ${2}
} }
#for loop(classic) #for loop(classic)
snippet for snippet for
for (${1:item} <- ${2:obj}) { for (${1:item} <- ${2:obj}) {
${3:/* code */} ${3}
} }
#for loop(indexed) #for loop(indexed)
snippet fori snippet fori
for (${1:i} <- ${2:0} to ${3:obj}.length) { for (${1:i} <- ${2:0} to ${3:obj}.length) {
${4:/* code */} ${4}
} }
#exceptions #exceptions
snippet try snippet try
try { try {
${1:/* code */} ${1}
} catch { } catch {
case e: FileNotFoundException => ${2:/* code */} case e: FileNotFoundException => ${2}
case e: IOException => ${3:/* code */} case e: IOException => ${3}
} finally { } finally {
${4:/* code */} ${4}
} }
#match #match
snippet match snippet match
${1: obj} match { ${1: obj} match {
case ${2:e} => ${3:/* code */} case ${2:e} => ${3}
case _ => ${4:/* code */} case _ => ${4}
} }
#case #case
snippet case snippet case
case ${1:value} => ${2:/* code */} case ${1:value} => ${2}
############################ ############################
# methods and arguments # methods and arguments
# #
@ -82,9 +86,9 @@ snippet ovdef
override def ${1:name}(${2:arg}) = ${3:} override def ${1:name}(${2:arg}) = ${3:}
#first class function(see scalabook p 188) #first class function(see scalabook p 188)
snippet fcf snippet fcf
(${1:a}: ${2:T}) => $1 ${3:/* code */} (${1:a}: ${2:T}) => $1 ${3}
snippet => snippet =>
${1:name} => ${2:/* code */} ${1:name} => ${2}
#recursion #recursion
snippet rec snippet rec
def ${1:name}(${2:arg}) = def ${1:name}(${2:arg}) =
@ -196,11 +200,11 @@ snippet as
#scope() with one arg #scope() with one arg
snippet (a snippet (a
(${1:a} => ${2:/* code */}) (${1:a} => ${2})
#scope() with two args #scope() with two args
snippet {( snippet {(
{(${1:a},${2:b}) => {(${1:a},${2:b}) =>
${3:/* code */} ${3}
} }
#filter #filter
snippet filter snippet filter
@ -220,10 +224,10 @@ snippet fldr
#fold left operator(if u wanna reduce readability of ur code) #fold left operator(if u wanna reduce readability of ur code)
#use wildcard symbols #use wildcard symbols
snippet /: snippet /:
(${1:first}/:${2:name})(${3:/* code */}) (${1:first}/:${2:name})(${3})
#fold right operator #fold right operator
snippet :\ snippet :\
(${1:first}:\${2:name})(${3:/* code */}) (${1:first}:\${2:name})(${3})
#reduce left #reduce left
snippet redl snippet redl
${1:name}.reduceLeft[${2:T}] {( ${1:name}.reduceLeft[${2:T}] {(
@ -258,13 +262,13 @@ snippet athis
snippet abstract snippet abstract
abstract class ${1:name}${2:(arg)}${3: extends }${4: with} { abstract class ${1:name}${2:(arg)}${3: extends }${4: with} {
${5:override def toString = "$1"} ${5:override def toString = "$1"}
${6:/* code */} ${6}
} }
#class #class
snippet class snippet class
class ${1:name}${2:(arg)}${3: extends }${4: with} { class ${1:name}${2:(arg)}${3: extends }${4: with} {
${5:override def toString = "$1"} ${5:override def toString = "$1"}
${6:/* code */} ${6}
} }
#object #object
snippet object snippet object
@ -279,7 +283,7 @@ snippet ordered
class ${1:name}${2:(arg)} extends Ordered[$1] ${3: with} { class ${1:name}${2:(arg)} extends Ordered[$1] ${3: with} {
${4:override def toString = "$1"} ${4:override def toString = "$1"}
def compare(that: $1) = ${5:this - that} def compare(that: $1) = ${5:this - that}
${6:/* code */} ${6}
} }
#case class #case class
snippet casecl snippet casecl

View File

@ -80,7 +80,5 @@ snippet getopt
esac # --- end of case --- esac # --- end of case ---
done done
shift $(($OPTIND-1)) shift $(($OPTIND-1))
snippet root snippet root
if [ $(id -u) -ne 0 ]; then exec sudo $0; fi if [ $(id -u) -ne 0 ]; then exec sudo $0; fi

View File

@ -5,7 +5,7 @@ snippet #!
# Process # Process
snippet pro snippet pro
proc ${1:function_name} {${2:args}} { proc ${1:function_name} {${2:args}} {
${3:#body ...} ${3}
} }
#xif #xif
snippet xif snippet xif
@ -13,19 +13,23 @@ snippet xif
# Conditional # Conditional
snippet if snippet if
if {${1}} { if {${1}} {
${2:# body...} ${2}
} }
# Conditional if..else # Conditional if..else
snippet ife snippet ife
if {${1}} { if {${1}} {
${2:# body...} ${2}
} else { } else {
${3:# else...} ${3:# else...}
} }
snippet eif
elseif {${1}} {
${2}
}
# Conditional if..elsif..else # Conditional if..elsif..else
snippet ifee snippet ifee
if {${1}} { if {${1}} {
${2:# body...} ${2}
} elseif {${3}} { } elseif {${3}} {
${4:# elsif...} ${4:# elsif...}
} else { } else {
@ -42,17 +46,17 @@ snippet catch
# While Loop # While Loop
snippet wh snippet wh
while {${1}} { while {${1}} {
${2:# body...} ${2}
} }
# For Loop # For Loop
snippet for snippet for
for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} { for {set ${2:var} 0} {$$2 < ${1:count}} {${3:incr} $2} {
${4:# body...} ${4}
} }
# Foreach Loop # Foreach Loop
snippet fore snippet fore
foreach ${1:x} {${2:#list}} { foreach ${1:x} {${2:#list}} {
${3:# body...} ${3}
} }
# after ms script... # after ms script...
snippet af snippet af

View File

@ -1,16 +1,16 @@
#PREAMBLE #PREAMBLE
#newcommand #newcommand
snippet nc snippet nc
\newcommand{\${1:cmd}}[${2:opt}]{${3:realcmd}}${4} \newcommand{\${1:cmd}}[${2:opt}]{${3:realcmd}} ${4}
#usepackage #usepackage
snippet up snippet up
\usepackage[${1:[options}]{${2:package}} \usepackage[${1:options}]{${2:package}} ${3}
#newunicodechar #newunicodechar
snippet nuc snippet nuc
\newunicodechar{${1}}{${2:\ensuremath}${3:tex-substitute}}} \newunicodechar{${1}}{${2:\ensuremath}${3:tex-substitute}}} ${4}
#DeclareMathOperator #DeclareMathOperator
snippet dmo snippet dmo
\DeclareMathOperator{${1}}{${2}} \DeclareMathOperator{${1}}{${2}} ${3}
#DOCUMENT #DOCUMENT
# \begin{}...\end{} # \begin{}...\end{}
@ -26,7 +26,7 @@ snippet tab
snippet thm snippet thm
\begin[${1:author}]{${2:thm}} \begin[${1:author}]{${2:thm}}
${3} ${3}
\end{$1} \end{$2}
snippet center snippet center
\begin{center} \begin{center}
${1} ${1}
@ -56,6 +56,11 @@ snippet \
\[ \[
${1} ${1}
\] \]
# Equation array
snippet eqnarray
\begin{eqnarray}
${1}
\end{eqnarray}
# Enumerate # Enumerate
snippet enum snippet enum
\begin{enumerate} \begin{enumerate}
@ -66,11 +71,17 @@ snippet itemize
\begin{itemize} \begin{itemize}
\item ${1} \item ${1}
\end{itemize} \end{itemize}
snippet item
\item ${1}
# Description # Description
snippet desc snippet desc
\begin{description} \begin{description}
\item[${1}] ${2} \item[${1}] ${2}
\end{description} \end{description}
# Endless new item
snippet ]i
\item ${1}
${2:]i}
# Matrix # Matrix
snippet mat snippet mat
\begin{${1:p/b/v/V/B/small}matrix} \begin{${1:p/b/v/V/B/small}matrix}
@ -103,16 +114,31 @@ snippet sec
\section{${1:section name}} \section{${1:section name}}
\label{sec:${2:$1}} \label{sec:${2:$1}}
${3} ${3}
# Section without number
snippet sec*
\section*{${1:section name}}
\label{sec:${2:$1}}
${3}
# Sub Section # Sub Section
snippet sub snippet sub
\subsection{${1:subsection name}} \subsection{${1:subsection name}}
\label{sub:${2:$1}} \label{sub:${2:$1}}
${3} ${3}
# Sub Section without number
snippet sub*
\subsection*{${1:subsection name}}
\label{sub:${2:$1}}
${3}
# Sub Sub Section # Sub Sub Section
snippet subs snippet subs
\subsubsection{${1:subsubsection name}} \subsubsection{${1:subsubsection name}}
\label{ssub:${2:$1}} \label{ssub:${2:$1}}
${3} ${3}
# Sub Sub Section without number
snippet subs*
\subsubsection*{${1:subsubsection name}}
\label{ssub:${2:$1}}
${3}
# Paragraph # Paragraph
snippet par snippet par
\paragraph{${1:paragraph name}} \paragraph{${1:paragraph name}}
@ -123,6 +149,9 @@ snippet subp
\subparagraph{${1:subparagraph name}} \subparagraph{${1:subparagraph name}}
\label{subp:${2:$1}} \label{subp:${2:$1}}
${3} ${3}
snippet ni
\noindent
${1}
#References #References
snippet itd snippet itd
\item[${1:description}] ${2:item} \item[${1:description}] ${2:item}
@ -133,14 +162,21 @@ snippet table
snippet listing snippet listing
${1:Listing}~\ref{${2:list}}${3} ${1:Listing}~\ref{${2:list}}${3}
snippet section snippet section
${1:Section}~\ref{${2:sec:}}${3} ${1:Section}~\ref{sec:${2}} ${3}
snippet page snippet page
${1:page}~\pageref{${2}}${3} ${1:page}~\pageref{${2}} ${3}
snippet index snippet index
\index{${1:index}}${2} \index{${1:index}} ${2}
#Citations #Citations
snippet citen
\cite{$1} ${2}
# bibtex commands
snippet citep
\citep{$1} ${2}
snippet citet
\citet{$1} ${2}
snippet cite snippet cite
\cite[${1}]{${2}}${3} \cite[${1}]{${2}} ${3}
snippet fcite snippet fcite
\footcite[${1}]{${2}}${3} \footcite[${1}]{${2}}${3}
#Formating text: italic, bold, underline, small capital, emphase .. #Formating text: italic, bold, underline, small capital, emphase ..
@ -172,6 +208,7 @@ snippet fig
\caption{${3}} \caption{${3}}
\label{fig:${4}} \label{fig:${4}}
\end{figure} \end{figure}
${5}
snippet tikz snippet tikz
\begin{figure} \begin{figure}
\begin{center} \begin{center}
@ -182,10 +219,40 @@ snippet tikz
\caption{${3}} \caption{${3}}
\label{fig:${4}} \label{fig:${4}}
\end{figure} \end{figure}
${5}
#math #math
snippet stackrel snippet stackrel
\stackrel{${1:above}}{${2:below}} ${3} \stackrel{${1:above}}{${2:below}} ${3}
snippet frac snippet frac
\frac{${1:num}}{${2:denom}} \frac{${1:num}}{${2:denom}} ${3}
snippet sum snippet sum
\sum^{${1:n}}_{${2:i=1}}{${3}} \sum^{${1:n}}_{${2:i=1}} ${3}
snippet lim
\lim_{${1:x \to +\infty}} ${2}
snippet frame
\begin{frame}[<+->]
\frametitle{${1:title}}
${2}
\end{frame}
snippet block
\begin{block}{${1:title}}
${2}
\end{block}
snippet alert
\begin{alertblock}{${1:title}}
${2}
\end{alertblock}
snippet example
\begin{exampleblock}{${1:title}}
${2}
\end{exampleblock}
snippet col2
\begin{columns}
\begin{column}{0.5\textwidth}
${1}
\end{column}
\begin{column}{0.5\textwidth}
${2}
\end{column}
\end{columns}

View File

@ -4,13 +4,13 @@ snippet header
" Description: ${3} " Description: ${3}
${4:" Last Modified: `strftime("%B %d, %Y")`} ${4:" Last Modified: `strftime("%B %d, %Y")`}
snippet guard snippet guard
if exists('${1:did_`Filename()`}') || &cp${2: || version < 700} if exists('${1:did_`vim_snippets#Filename()`}') || &cp${2: || version < 700}
finish finish
endif endif
let $1 = 1${3} let $1 = 1${3}
snippet f snippet f
fun! ${1:`expand('%') =~ 'autoload' ? substitute(matchstr(expand('%:p'),'autoload/\zs.*\ze.vim'),'[/\\]','#','g').'#' : ''`}${2:function_name}(${3}) fun! ${1:`expand('%') =~ 'autoload' ? substitute(matchstr(expand('%:p'),'autoload/\zs.*\ze.vim'),'[/\\]','#','g').'#' : ''`}${2:function_name}(${3})
${4:" code} ${4}
endf endf
snippet t snippet t
try try
@ -19,19 +19,25 @@ snippet t
${3} ${3}
endtry endtry
snippet for snippet for
for ${1:needle} in ${2:haystack} for ${1} in ${2}
${3:" code} ${3}
endfor endfor
snippet forkv
for [${1},${2}] in items(${3})
${4}
unlet $1 $2
endfor
snippet wh snippet wh
while ${1:condition} while ${1}
${2:" code} ${2}
endw endw
snippet if snippet if
if ${1:condition} if ${1}
${2:" code} ${2}
endif endif
snippet ife snippet ife
if ${1:condition} if ${1}
${2} ${2}
else else
${3} ${3}

View File

@ -12,7 +12,7 @@ snippet ife
else else
${3:# statements} ${3:# statements}
fi fi
snippet elif snippet eif
elif ${1:condition} ; then elif ${1:condition} ; then
${2:# statements} ${2:# statements}
snippet for snippet for