PHP 8.2.30
Preview: cucumber.vim Size: 5.00 KB
/usr/share/vim/vim80/ftplugin/cucumber.vim

" Vim filetype plugin
" Language:	Cucumber
" Maintainer:	Tim Pope <vimNOSPAM@tpope.org>
" Last Change:	2016 Aug 29

" Only do this when not done yet for this buffer
if (exists("b:did_ftplugin"))
  finish
endif
let b:did_ftplugin = 1

let s:keepcpo= &cpo
set cpo&vim

setlocal formatoptions-=t formatoptions+=croql
setlocal comments=:# commentstring=#\ %s
setlocal omnifunc=CucumberComplete

let b:undo_ftplugin = "setl fo< com< cms< ofu<"

let b:cucumber_root = expand('%:p:h:s?.*[\/]\%(features\|stories\)\zs[\/].*??')
if !exists("b:cucumber_steps_glob")
  let b:cucumber_steps_glob = b:cucumber_root.'/**/*.rb'
endif

if !exists("g:no_plugin_maps") && !exists("g:no_cucumber_maps")
  cnoremap <SID>foldopen <Bar>if &foldopen =~# 'tag'<Bar>exe 'norm! zv'<Bar>endif
  nnoremap <silent> <script> <buffer> [<C-D>      :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
  nnoremap <silent> <script> <buffer> ]<C-D>      :<C-U>exe <SID>jump('edit',v:count)<SID>foldopen<CR>
  nnoremap <silent> <script> <buffer> <C-W>d      :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
  nnoremap <silent> <script> <buffer> <C-W><C-D>  :<C-U>exe <SID>jump('split',v:count)<SID>foldopen<CR>
  nnoremap <silent> <script> <buffer> [d          :<C-U>exe <SID>jump('pedit',v:count)<CR>
  nnoremap <silent> <script> <buffer> ]d          :<C-U>exe <SID>jump('pedit',v:count)<CR>
  let b:undo_ftplugin .=
        \ "|sil! nunmap <buffer> [<C-D>" .
        \ "|sil! nunmap <buffer> ]<C-D>" .
        \ "|sil! nunmap <buffer> <C-W>d" .
        \ "|sil! nunmap <buffer> <C-W><C-D>" .
        \ "|sil! nunmap <buffer> [d" .
        \ "|sil! nunmap <buffer> ]d"
endif

function! s:jump(command,count)
  let steps = s:steps('.')
  if len(steps) == 0 || len(steps) < a:count
    return 'echoerr "No matching step found"'
  elseif len(steps) > 1 && !a:count
    return 'echoerr "Multiple matching steps found"'
  else
    let c = a:count ? a:count-1 : 0
    return a:command.' +'.steps[c][1].' '.escape(steps[c][0],' %#')
  endif
endfunction

function! s:allsteps()
  let step_pattern = '\C^\s*\K\k*\>\s*(\=\s*\zs\S.\{-\}\ze\s*)\=\s*\%(do\|{\)\s*\%(|[^|]*|\s*\)\=\%($\|#\)'
  let steps = []
  for file in split(glob(b:cucumber_steps_glob),"\n")
    let lines = readfile(file)
    let num = 0
    for line in lines
      let num += 1
      if line =~ step_pattern
        let type = matchstr(line,'\w\+')
        let steps += [[file,num,type,matchstr(line,step_pattern)]]
      endif
    endfor
  endfor
  return steps
endfunction

function! s:steps(lnum)
  let c = match(getline(a:lnum), '\S') + 1
  while synIDattr(synID(a:lnum,c,1),'name') !~# '^$\|Region$'
    let c = c + 1
  endwhile
  let step = matchstr(getline(a:lnum)[c-1 : -1],'^\s*\zs.\{-\}\ze\s*$')
  return filter(s:allsteps(),'s:stepmatch(v:val[3],step)')
endfunction

function! s:stepmatch(receiver,target)
  if a:receiver =~ '^[''"].*[''"]$'
    let pattern = '^'.escape(substitute(a:receiver[1:-2],'$\w\+','(.*)','g'),'/').'$'
  elseif a:receiver =~ '^/.*/$'
    let pattern = a:receiver[1:-2]
  elseif a:receiver =~ '^%r..*.$'
    let pattern = escape(a:receiver[3:-2],'/')
  else
    return 0
  endif
  try
    let vimpattern = substitute(substitute(pattern,'\\\@<!(?:','%(','g'),'\\\@<!\*?','{-}','g')
    if a:target =~# '\v'.vimpattern
      return 1
    endif
  catch
  endtry
  if has("ruby") && pattern !~ '\\\@<!#{'
    ruby VIM.command("return #{if (begin; Kernel.eval('/'+VIM.evaluate('pattern')+'/'); rescue SyntaxError; end) === VIM.evaluate('a:target') then 1 else 0 end}")
  else
    return 0
  endif
endfunction

function! s:bsub(target,pattern,replacement)
  return  substitute(a:target,'\C\\\@<!'.a:pattern,a:replacement,'g')
endfunction

function! CucumberComplete(findstart,base) abort
  let indent = indent('.')
  let group = synIDattr(synID(line('.'),indent+1,1),'name')
  let type = matchstr(group,'\Ccucumber\zs\%(Given\|When\|Then\)')
  let e = matchend(getline('.'),'^\s*\S\+\s')
  if type == '' || col('.') < col('$') || e < 0
    return -1
  endif
  if a:findstart
    return e
  endif
  let steps = []
  for step in s:allsteps()
    if step[2] ==# type
      if step[3] =~ '^[''"]'
        let steps += [step[3][1:-2]]
      elseif step[3] =~ '^/\^.*\$/$'
        let pattern = step[3][2:-3]
        let pattern = substitute(pattern,'\C^(?:|I )','I ','')
        let pattern = s:bsub(pattern,'\\[Sw]','w')
        let pattern = s:bsub(pattern,'\\d','1')
        let pattern = s:bsub(pattern,'\\[sWD]',' ')
        let pattern = s:bsub(pattern,'\[\^\\\="\]','_')
        let pattern = s:bsub(pattern,'[[:alnum:]. _-][?*]?\=','')
        let pattern = s:bsub(pattern,'\[\([^^]\).\{-\}\]','\1')
        let pattern = s:bsub(pattern,'+?\=','')
        let pattern = s:bsub(pattern,'(\([[:alnum:]. -]\{-\}\))','\1')
        let pattern = s:bsub(pattern,'\\\([[:punct:]]\)','\1')
        if pattern !~ '[\\()*?]'
          let steps += [pattern]
        endif
      endif
    endif
  endfor
  call filter(steps,'strpart(v:val,0,strlen(a:base)) ==# a:base')
  return sort(steps)
endfunction

let &cpo = s:keepcpo
unlet s:keepcpo

" vim:set sts=2 sw=2:

Directory Contents

Dirs: 0 × Files: 214

Name Size Perms Modified Actions
470 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
716 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
800 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.31 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
6.26 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
438 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.31 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
431 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
410 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.87 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
337 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
411 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
449 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
333 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
316 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
2.99 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.92 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
462 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
383 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
472 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
8.68 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.62 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.74 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
359 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
9.24 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.24 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
4.26 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
288 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
414 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
802 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
734 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.59 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
528 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
5.00 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
399 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
11.23 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.80 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
383 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
435 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
355 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
431 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
530 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
356 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
777 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
458 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.10 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.12 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.99 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
436 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.77 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.09 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
470 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.31 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
428 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.83 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
4.58 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
780 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
390 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
293 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.32 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
2.18 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
376 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.42 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
157 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
365 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
433 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
939 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
343 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
425 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.84 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.88 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
445 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
442 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
363 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.36 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
383 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
436 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.59 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
331 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
454 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1005 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.23 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.31 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.65 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.02 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
321 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
360 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.96 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
703 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
851 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
470 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
502 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
440 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
436 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.85 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
769 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
500 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
442 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
440 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.75 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
401 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.25 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
973 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
426 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.08 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
383 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
935 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
5.51 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
444 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.15 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
754 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.17 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
477 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.63 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
472 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
798 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.11 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
467 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
447 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
532 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
428 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.29 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
296 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
22.50 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.27 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
433 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
667 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
424 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
2.55 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
2.78 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
2.47 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
2.75 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
435 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.12 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1006 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
479 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
440 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
457 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
766 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
5.43 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
459 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
439 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
858 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
449 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
438 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
869 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
740 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
709 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
738 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.45 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
431 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.01 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
620 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.08 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
456 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
16.61 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
6.42 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
607 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
347 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.12 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.36 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
436 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
239 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
455 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
452 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
439 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.18 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.17 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
469 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
477 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
476 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
467 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
5.73 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
21.11 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
441 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
438 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.17 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
453 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
158 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
239 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1002 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.18 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
430 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.60 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
433 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
292 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
416 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
432 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
426 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
443 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.86 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.93 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.42 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
3.14 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
924 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
481 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.99 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
476 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.87 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
434 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
465 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
1.14 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
539 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
464 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download
5.26 KB lrw-r--r-- 2026-03-12 10:09:58
Edit Download
818 B lrw-r--r-- 2026-03-12 10:09:58
Edit Download

If ZipArchive is unavailable, a .tar will be created (no compression).