diff options
| author | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
|---|---|---|
| committer | Adam Stankiewicz <sheerun@sher.pl> | 2017-09-27 20:43:42 +0200 | 
| commit | 5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1 (patch) | |
| tree | 965ae5128797f3d42d78d02692e62d24a4596e19 /ftplugin/eiffel.vim | |
| parent | 8148255ef1c416f414c3a78405eff08fe149d16e (diff) | |
| download | vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.tar.gz vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.zip | |
Add syntax files from upstream vim repository
Diffstat (limited to 'ftplugin/eiffel.vim')
| -rw-r--r-- | ftplugin/eiffel.vim | 100 | 
1 files changed, 100 insertions, 0 deletions
| diff --git a/ftplugin/eiffel.vim b/ftplugin/eiffel.vim new file mode 100644 index 00000000..55dc9486 --- /dev/null +++ b/ftplugin/eiffel.vim @@ -0,0 +1,100 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	Eiffel +" Maintainer:	Doug Kearns <dougkearns@gmail.com> +" Last Change:	2010 Aug 29 + +if (exists("b:did_ftplugin")) +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=:-- +setlocal commentstring=--\ %s + +setlocal formatoptions-=t formatoptions+=croql + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") +  let b:browsefilter = "Eiffel Source Files (*.e)\t*.e\n" . +		     \ "Eiffel Control Files (*.ecf, *.ace, *.xace)\t*.ecf;*.ace;*.xace\n" . +		     \ "All Files (*.*)\t*.*\n" +endif + +if exists("loaded_matchit") && !exists("b:match_words") +  let b:match_ignorecase = 0 +  " Silly \%^ trick to match note at head of pair and in middle prevents +  " 'g%' wrapping from 'note' to 'end' +  let b:match_words = '\%^:' . +		  \	'\<\%(^note\|indexing\|class\|^obsolete\|inherit\|insert\|^create\|convert\|feature\|^invariant\)\>:' . +		  \   '^end\>,' . +		  \   '\<\%(do\|deferred\|external\|once\%(\s\+"\)\@!\|check\|debug\|if\|inspect\|from\|across\)\>:' . +		  \	'\%(\%(^\s\+\)\@<=\%(then\|until\|loop\)\|\%(then\|until\|loop\)\s\+[^ -]\|' . +		  \	'\<\%(ensure\%(\s\+then\)\=\|rescue\|_then\|elseif\|else\|when\|\s\@<=invariant\|_until\|_loop\|variant\|_as\|alias\)\>\):' . +		  \   '\s\@<=end\>' +  let b:match_skip = 's:\<eiffel\%(Comment\|String\|Operator\)\>' +  noremap  [% <Nop> +  noremap  ]% <Nop> +  vnoremap a% <Nop> +endif + +let b:undo_ftplugin = "setl fo< com< cms<" . +  \ "| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip" + +if !exists("g:no_plugin_maps") && !exists("g:no_eiffel_maps") +  function! s:DoMotion(pattern, count, flags) abort +    normal! m' +    for i in range(a:count) +      call search(a:pattern, a:flags) +    endfor +  endfunction + +  let sections = '^\%(note\|indexing\|' . +	     \	 '\%(\%(deferred\|expanded\|external\|frozen\)\s\+\)*class\|' . +	     \	 'obsolete\|inherit\|insert\|create\|convert\|feature\|' . +	     \	 'invariant\|end\)\>' + +  nnoremap <silent> <buffer> ]] :<C-U>call <SID>DoMotion(sections, v:count1, 'W')<CR> +  xnoremap <silent> <buffer> ]] :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(sections, v:count1, 'W')<CR> +  nnoremap <silent> <buffer> [[ :<C-U>call <SID>DoMotion(sections, v:count1, 'Wb')<CR> +  xnoremap <silent> <buffer> [[ :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(sections, v:count1, 'Wb')<CR> + +  function! s:DoFeatureMotion(count, flags) +    let view = winsaveview() +    call cursor(1, 1) +    let [features_start, _] = searchpos('^feature\>') +    call search('^\s\+\a') " find the first feature +    let spaces = indent(line('.')) +    let [features_end, _] = searchpos('^\%(invariant\|note\|end\)\>') +    call winrestview(view) +    call s:DoMotion('\%>' . features_start . 'l\%<' . features_end . 'l^\s*\%' . (spaces + 1) . 'v\zs\a', a:count, a:flags) +  endfunction + +  nnoremap <silent> <buffer> ]m :<C-U>call <SID>DoFeatureMotion(v:count1, 'W')<CR> +  xnoremap <silent> <buffer> ]m :<C-U>exe "normal! gv"<Bar>call <SID>DoFeatureMotion(v:count1, 'W')<CR> +  nnoremap <silent> <buffer> [m :<C-U>call <SID>DoFeatureMotion(v:count1, 'Wb')<CR> +  xnoremap <silent> <buffer> [m :<C-U>exe "normal! gv"<Bar>call <SID>DoFeatureMotion(v:count1, 'Wb')<CR> + +  let comment_block_start = '^\%(\s\+--.*\n\)\@<!\s\+--' +  let comment_block_end = '^\s\+--.*\n\%(\s\+--\)\@!' + +  nnoremap <silent> <buffer> ]- :<C-U>call <SID>DoMotion(comment_block_start, 1, 'W')<CR> +  xnoremap <silent> <buffer> ]- :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(comment_block_start, 1, 'W')<CR> +  nnoremap <silent> <buffer> [- :<C-U>call <SID>DoMotion(comment_block_end, 1, 'Wb')<CR> +  xnoremap <silent> <buffer> [- :<C-U>exe "normal! gv"<Bar>call <SID>DoMotion(comment_block_end, 1, 'Wb')<CR> + +  let b:undo_ftplugin = b:undo_ftplugin . +    \ "| silent! execute 'unmap <buffer> [[' | silent! execute 'unmap <buffer> ]]'" . +    \ "| silent! execute 'unmap <buffer> [m' | silent! execute 'unmap <buffer> ]m'" . +    \ "| silent! execute 'unmap <buffer> [-' | silent! execute 'unmap <buffer> ]-'" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: nowrap sw=2 sts=2 ts=8 + +endif | 
