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 | |
| parent | 8148255ef1c416f414c3a78405eff08fe149d16e (diff) | |
| download | vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.tar.gz vim-polyglot-5b77877888162f4e415fe9a7b8c5e9fb5dfb6ee1.zip | |
Add syntax files from upstream vim repository
Diffstat (limited to 'ftplugin')
208 files changed, 10978 insertions, 0 deletions
| diff --git a/ftplugin/a2ps.vim b/ftplugin/a2ps.vim new file mode 100644 index 00000000..309766c9 --- /dev/null +++ b/ftplugin/a2ps.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             a2ps(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=:# commentstring=#\ %s include=^\\s*Include: +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/aap.vim b/ftplugin/aap.vim new file mode 100644 index 00000000..48e0d27d --- /dev/null +++ b/ftplugin/aap.vim @@ -0,0 +1,29 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Aap recipe +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2013 Apr 05 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Reset 'formatoptions', 'comments' and 'expandtab' to undo this plugin. +let b:undo_ftplugin = "setl fo< com< et<" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments. +setlocal comments=s:#\ -,m:#\ \ ,e:#,n:#,fb:- + +" Expand tabs to spaces to avoid trouble. +setlocal expandtab + +endif diff --git a/ftplugin/abap.vim b/ftplugin/abap.vim new file mode 100644 index 00000000..1da04c8b --- /dev/null +++ b/ftplugin/abap.vim @@ -0,0 +1,33 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	ABAP +" Author:	Steven Oliver <oliver.steven@gmail.com> +" Copyright:	Copyright (c) 2013 Steven Oliver +" License:	You may redistribute this under the same terms as Vim itself +" -------------------------------------------------------------------------- + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal softtabstop=2 shiftwidth=2 +setlocal suffixesadd=.abap + +" Windows allows you to filter the open file dialog +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "ABAP Source Files (*.abap)\t*.abap\n" . +                     \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: set sw=4 sts=4 et tw=80 : + +endif diff --git a/ftplugin/abaqus.vim b/ftplugin/abaqus.vim new file mode 100644 index 00000000..6a24aac4 --- /dev/null +++ b/ftplugin/abaqus.vim @@ -0,0 +1,101 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     Abaqus finite element input file (www.abaqus.com) +" Maintainer:   Carl Osterwisch <osterwischc@asme.org> +" Last Change:  2012 Apr 30 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") | finish | endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Save the compatibility options and temporarily switch to vim defaults +let s:cpo_save = &cpoptions +set cpoptions&vim + +" Set the format of the include file specification for Abaqus +" Used in :check gf ^wf [i and other commands +setlocal include=\\<\\cINPUT\\s*= + +" Remove characters up to the first = when evaluating filenames +setlocal includeexpr=substitute(v:fname,'.\\{-}=','','') + +" Remove comma from valid filename characters since it is used to +" separate keyword parameters +setlocal isfname-=, + +" Define format of comment lines (see 'formatoptions' for uses) +setlocal comments=:** +setlocal commentstring=**%s + +" Definitions start with a * and assign a NAME, NSET, or ELSET +" Used in [d ^wd and other commands +setlocal define=^\\*\\a.*\\c\\(NAME\\\|NSET\\\|ELSET\\)\\s*= + +" Abaqus keywords and identifiers may include a - character +setlocal iskeyword+=- + +let b:undo_ftplugin = "setlocal include< includeexpr< isfname<" +    \ . " comments< commentstring< define< iskeyword<" + +if has("folding") +    " Fold all lines that do not begin with * +    setlocal foldexpr=getline(v:lnum)[0]!=\"\*\" +    setlocal foldmethod=expr +    let b:undo_ftplugin .= " foldexpr< foldmethod<" +endif + +" Set the file browse filter (currently only supported under Win32 gui) +if has("gui_win32") && !exists("b:browsefilter") +    let b:browsefilter = "Abaqus Input Files (*.inp *.inc)\t*.inp;*.inc\n" . +    \ "Abaqus Results (*.dat)\t*.dat\n" . +    \ "Abaqus Messages (*.pre *.msg *.sta)\t*.pre;*.msg;*.sta\n" . +    \ "All Files (*.*)\t*.*\n" +    let b:undo_ftplugin .= "|unlet! b:browsefilter" +endif + +" Define patterns for the matchit plugin +if exists("loaded_matchit") && !exists("b:match_words") +    let b:match_ignorecase = 1 +    let b:match_words =  +    \ '\*part:\*end\s*part,' . +    \ '\*assembly:\*end\s*assembly,' . +    \ '\*instance:\*end\s*instance,' . +    \ '\*step:\*end\s*step' +    let b:undo_ftplugin .= "|unlet! b:match_ignorecase b:match_words" +endif + +" Define keys used to move [count] keywords backward or forward. +noremap <silent><buffer> [[ ?^\*\a<CR>:nohlsearch<CR> +noremap <silent><buffer> ]] /^\*\a<CR>:nohlsearch<CR> + +" Define key to toggle commenting of the current line or range +noremap <silent><buffer> <LocalLeader><LocalLeader>  +    \ :call <SID>Abaqus_ToggleComment()<CR>j +function! <SID>Abaqus_ToggleComment() range +    if strpart(getline(a:firstline), 0, 2) == "**" +        " Un-comment all lines in range +        silent execute a:firstline . ',' . a:lastline . 's/^\*\*//' +    else +        " Comment all lines in range +        silent execute a:firstline . ',' . a:lastline . 's/^/**/' +    endif +endfunction + +let b:undo_ftplugin .= "|unmap <buffer> [[|unmap <buffer> ]]" +    \ . "|unmap <buffer> <LocalLeader><LocalLeader>" + +" Undo must be done in nocompatible mode for <LocalLeader>. +let b:undo_ftplugin = "let s:cpo_save = &cpoptions|" +    \ . "set cpoptions&vim|" +    \ . b:undo_ftplugin +    \ . "|let &cpoptions = s:cpo_save" +    \ . "|unlet s:cpo_save" + +" Restore saved compatibility options +let &cpoptions = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/ada.vim b/ftplugin/ada.vim new file mode 100644 index 00000000..b48fa0c4 --- /dev/null +++ b/ftplugin/ada.vim @@ -0,0 +1,214 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +"------------------------------------------------------------------------------ +"  Description: Perform Ada specific completion & tagging. +"     Language: Ada (2005) +"	   $Id: ada.vim 887 2008-07-08 14:29:01Z krischik $ +"   Maintainer: Martin Krischik <krischik@users.sourceforge.net> +"		Taylor Venable <taylor@metasyntax.net> +"		Neil Bird <neil@fnxweb.com> +"      $Author: krischik $ +"	 $Date: 2008-07-08 16:29:01 +0200 (Di, 08 Jul 2008) $ +"      Version: 4.6 with patch from David Bürgin +"    $Revision: 887 $ +"     $HeadURL: https://gnuada.svn.sourceforge.net/svnroot/gnuada/trunk/tools/vim/ftplugin/ada.vim $ +"      History: 24.05.2006 MK Unified Headers +"		26.05.2006 MK ' should not be in iskeyword. +"		16.07.2006 MK Ada-Mode as vim-ball +"		02.10.2006 MK Better folding. +"		15.10.2006 MK Bram's suggestion for runtime integration +"               05.11.2006 MK Bram suggested not to use include protection for +"                             autoload +"		05.11.2006 MK Bram suggested to save on spaces +"		08.07.2007 TV fix default compiler problems. +"    Help Page: ft-ada-plugin +"------------------------------------------------------------------------------ +" Provides mapping overrides for tag jumping that figure out the current +" Ada object and tag jump to that, not the 'simple' vim word. +" Similarly allows <Ctrl-N> matching of full-length ada entities from tags. +"------------------------------------------------------------------------------ + +" Only do this when not done yet for this buffer +if exists ("b:did_ftplugin") || version < 700 +   finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 45 + +" +" Temporarily set cpoptions to ensure the script loads OK +" +let s:cpoptions = &cpoptions +set cpoptions-=C + +" Section: Comments  {{{1 +" +setlocal comments=O:--,:--\ \  +setlocal commentstring=--\ \ %s +setlocal complete=.,w,b,u,t,i + +" Section: case	     {{{1 +" +setlocal nosmartcase +setlocal ignorecase + +" Section: formatoptions {{{1 +" +setlocal formatoptions+=ron + +" Section: Tagging {{{1 +" +if exists ("g:ada_extended_tagging") +   " Make local tag mappings for this buffer (if not already set) +   if g:ada_extended_tagging == 'jump' +      if mapcheck('<C-]>','n') == '' +	 nnoremap <unique> <buffer> <C-]>    :call ada#Jump_Tag ('', 'tjump')<cr> +      endif +      if mapcheck('g<C-]>','n') == '' +	 nnoremap <unique> <buffer> g<C-]>   :call ada#Jump_Tag ('','stjump')<cr> +      endif +   elseif g:ada_extended_tagging == 'list' +      if mapcheck('<C-]>','n') == '' +	 nnoremap <unique> <buffer> <C-]>    :call ada#List_Tag ()<cr> +      endif +      if mapcheck('g<C-]>','n') == '' +	 nnoremap <unique> <buffer> g<C-]>   :call ada#List_Tag ()<cr> +      endif +   endif +endif + +" Section: Completion {{{1 +" +setlocal completefunc=ada#User_Complete +setlocal omnifunc=adacomplete#Complete + +if exists ("g:ada_extended_completion") +   if mapcheck ('<C-N>','i') == '' +      inoremap <unique> <buffer> <C-N> <C-R>=ada#Completion("\<lt>C-N>")<cr> +   endif +   if mapcheck ('<C-P>','i') == '' +      inoremap <unique> <buffer> <C-P> <C-R>=ada#Completion("\<lt>C-P>")<cr> +   endif +   if mapcheck ('<C-X><C-]>','i') == '' +      inoremap <unique> <buffer> <C-X><C-]> <C-R>=<SID>ada#Completion("\<lt>C-X>\<lt>C-]>")<cr> +   endif +   if mapcheck ('<bs>','i') == '' +      inoremap <silent> <unique> <buffer> <bs> <C-R>=ada#Insert_Backspace ()<cr> +   endif +endif + +" Section: Matchit {{{1 +" +" Only do this when not done yet for this buffer & matchit is used +" +if !exists ("b:match_words")  && +  \ exists ("loaded_matchit") +   " +   " The following lines enable the macros/matchit.vim plugin for +   " Ada-specific extended matching with the % key. +   " +   let s:notend      = '\%(\<end\s\+\)\@<!' +   let b:match_words = +      \ s:notend . '\<if\>:\<elsif\>:\<else\>:\<end\>\s\+\<if\>,' . +      \ s:notend . '\<case\>:\<when\>:\<end\>\s\+\<case\>,' . +      \ '\%(\<while\>.*\|\<for\>.*\|'.s:notend.'\)\<loop\>:\<end\>\s\+\<loop\>,' . +      \ '\%(\<do\>\|\<begin\>\):\<exception\>:\<end\>\s*\%($\|[;A-Z]\),' . +      \ s:notend . '\<record\>:\<end\>\s\+\<record\>' +endif + + +" Section: Compiler {{{1 +" +if ! exists("g:ada_default_compiler") +   if has("vms") +      let g:ada_default_compiler = 'decada' +   else +      let g:ada_default_compiler = 'gnat' +   endif +endif + +if ! exists("current_compiler")			|| +   \ current_compiler != g:ada_default_compiler +   execute "compiler " . g:ada_default_compiler +endif + +" Section: Folding {{{1 +" +if exists("g:ada_folding") +   if g:ada_folding[0] == 'i' +      setlocal foldmethod=indent +      setlocal foldignore=-- +      setlocal foldnestmax=5 +   elseif g:ada_folding[0] == 'g' +      setlocal foldmethod=expr +      setlocal foldexpr=ada#Pretty_Print_Folding(v:lnum) +   elseif g:ada_folding[0] == 's' +      setlocal foldmethod=syntax +   endif +   setlocal tabstop=8 +   setlocal softtabstop=3 +   setlocal shiftwidth=3 +endif + +" Section: Abbrev {{{1 +" +if exists("g:ada_abbrev") +   iabbrev ret	return +   iabbrev proc procedure +   iabbrev pack package +   iabbrev func function +endif + +" Section: Commands, Mapping, Menus {{{1 +" +call ada#Map_Popup ( +   \ 'Tag.List', +   \  'l', +   \ 'call ada#List_Tag ()') +call ada#Map_Popup ( +   \'Tag.Jump', +   \'j', +   \'call ada#Jump_Tag ()') +call ada#Map_Menu ( +   \'Tag.Create File', +   \':AdaTagFile', +   \'call ada#Create_Tags (''file'')') +call ada#Map_Menu ( +   \'Tag.Create Dir', +   \':AdaTagDir', +   \'call ada#Create_Tags (''dir'')') + +call ada#Map_Menu ( +   \'Highlight.Toggle Space Errors', +   \ ':AdaSpaces', +   \'call ada#Switch_Syntax_Option (''space_errors'')') +call ada#Map_Menu ( +   \'Highlight.Toggle Lines Errors', +   \ ':AdaLines', +   \'call ada#Switch_Syntax_Option (''line_errors'')') +call ada#Map_Menu ( +   \'Highlight.Toggle Rainbow Color', +   \ ':AdaRainbow', +   \'call ada#Switch_Syntax_Option (''rainbow_color'')') +call ada#Map_Menu ( +   \'Highlight.Toggle Standard Types', +   \ ':AdaTypes', +   \'call ada#Switch_Syntax_Option (''standard_types'')') + +" 1}}} +" Reset cpoptions +let &cpoptions = s:cpoptions +unlet s:cpoptions + +finish " 1}}} + +"------------------------------------------------------------------------------ +"   Copyright (C) 2006	Martin Krischik +" +"   Vim is Charityware - see ":help license" or uganda.txt for licence details. +"------------------------------------------------------------------------------ +" vim: textwidth=78 nowrap tabstop=8 shiftwidth=3 softtabstop=3 noexpandtab +" vim: foldmethod=marker + +endif diff --git a/ftplugin/alsaconf.vim b/ftplugin/alsaconf.vim new file mode 100644 index 00000000..a09c6b53 --- /dev/null +++ b/ftplugin/alsaconf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             alsaconf(8) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/ant.vim b/ftplugin/ant.vim new file mode 100644 index 00000000..b0a26bc8 --- /dev/null +++ b/ftplugin/ant.vim @@ -0,0 +1,48 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	ant +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . +	    \	     "All Files (*.*)\t*.*\n" + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show Ant-related files. +if has("gui_win32") +    let b:browsefilter = "Build Files (build.xml)\tbuild.xml\n" . +		\	 "Java Files (*.java)\t*.java\n" . +		\	 "Properties Files (*.prop*)\t*.prop*\n" . +		\	 "Manifest Files (*.mf)\t*.mf\n" . +		\	 s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/arch.vim b/ftplugin/arch.vim new file mode 100644 index 00000000..44410cf6 --- /dev/null +++ b/ftplugin/arch.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             GNU Arch inventory file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/art.vim b/ftplugin/art.vim new file mode 100644 index 00000000..b40e99fd --- /dev/null +++ b/ftplugin/art.vim @@ -0,0 +1,19 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:      ART-IM and ART*Enterprise +" Maintainer:    Dorai Sitaram <ds26@gte.com> +" URL:		 http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html +" Last Change:   Apr 2, 2003 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +run ftplugin/lisp.vim + +setl lw-=if +setl lw+=def-art-fun,deffacts,defglobal,defrule,defschema,for,schema,while + +endif diff --git a/ftplugin/aspvbs.vim b/ftplugin/aspvbs.vim new file mode 100644 index 00000000..881e579c --- /dev/null +++ b/ftplugin/aspvbs.vim @@ -0,0 +1,64 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	aspvbs +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "HTML Files (*.html, *.htm)\t*.htm*\n" . +	    \	     "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif +if exists("b:match_words") +    let s:match_words = b:match_words +endif + +" ASP:  Active Server Pages (with Visual Basic Script) +" thanks to Gontran BAERTS +if exists("loaded_matchit") +  let s:notend = '\%(\<end\s\+\)\@<!' +  let b:match_ignorecase = 1 +  let b:match_words = +  \ s:notend . '\<if\>\%(.\{-}then\s\+\w\)\@!:\<elseif\>:^\s*\<else\>:\<end\s\+\<if\>,' . +  \ s:notend . '\<select\s\+case\>:\<case\>:\<case\s\+else\>:\<end\s\+select\>,' . +  \ '^\s*\<sub\>:\<end\s\+sub\>,' . +  \ '^\s*\<function\>:\<end\s\+function\>,' . +  \ '\<class\>:\<end\s\+class\>,' . +  \ '^\s*\<do\>:\<loop\>,' . +  \ '^\s*\<for\>:\<next\>,' . +  \ '\<while\>:\<wend\>,' . +  \ s:match_words +endif + +" Change the :browse e filter to primarily show ASP-related files. +if has("gui_win32") +    let  b:browsefilter="ASP Files (*.asp)\t*.asp\n" . s:browsefilter +endif + +let b:undo_ftplugin = "unlet! b:match_words b:match_ignorecase b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/automake.vim b/ftplugin/automake.vim new file mode 100644 index 00000000..bf443d7e --- /dev/null +++ b/ftplugin/automake.vim @@ -0,0 +1,20 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Automake +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +runtime! ftplugin/make.vim ftplugin/make_*.vim ftplugin/make/*.vim + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/awk.vim b/ftplugin/awk.vim new file mode 100644 index 00000000..76b2b66e --- /dev/null +++ b/ftplugin/awk.vim @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	awk, nawk, gawk, mawk +" Maintainer:	Antonio Colombo <azc100@gmail.com> +" Last Change:	2017 Feb 17 + +" This plugin was prepared by Mark Sikora + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl commentstring<" + +setlocal commentstring=#\ %s + +endif diff --git a/ftplugin/bdf.vim b/ftplugin/bdf.vim new file mode 100644 index 00000000..cc1005d5 --- /dev/null +++ b/ftplugin/bdf.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             BDF font definition +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=b:COMMENT commentstring=COMMENT\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/bst.vim b/ftplugin/bst.vim new file mode 100644 index 00000000..163b1007 --- /dev/null +++ b/ftplugin/bst.vim @@ -0,0 +1,19 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	bst +" Author:	Tim Pope <vimNOSPAM@tpope.info> +" $Id: bst.vim,v 1.1 2007/05/05 17:37:57 vimboss Exp $ + +if exists("b:did_ftplugin") +    finish +endif +let b:did_ftplugin = 1 + +setlocal commentstring=%\ %s +setlocal comments=:% +setlocal fo-=t fo+=croql + +let b:undo_ftplugin = "setlocal com< cms< fo<" + +endif diff --git a/ftplugin/btm.vim b/ftplugin/btm.vim new file mode 100644 index 00000000..09b473d5 --- /dev/null +++ b/ftplugin/btm.vim @@ -0,0 +1,16 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	BTM +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2004 Jul 06 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Behaves just like dosbatch +runtime! ftplugin/dosbatch.vim ftplugin/dosbatch_*.vim ftplugin/dosbatch/*.vim + +endif diff --git a/ftplugin/bzl.vim b/ftplugin/bzl.vim new file mode 100644 index 00000000..a8cfdc4b --- /dev/null +++ b/ftplugin/bzl.vim @@ -0,0 +1,98 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Bazel (http://bazel.io) +" Maintainer:	David Barnett (https://github.com/google/vim-ft-bzl) +" Last Change:	2015 Aug 11 + +"" +" @section Introduction, intro +" Core settings for the bzl filetype, used for BUILD and *.bzl files for the +" Bazel build system (http://bazel.io/). + +if exists('b:did_ftplugin') +  finish +endif + + +" Vim 7.4.051 has opinionated settings in ftplugin/python.vim that try to force +" PEP8 conventions on every python file, but these conflict with Google's +" indentation guidelines. As a workaround, we explicitly source the system +" ftplugin, but save indentation settings beforehand and restore them after. +let s:save_expandtab = &l:expandtab +let s:save_shiftwidth = &l:shiftwidth +let s:save_softtabstop = &l:softtabstop +let s:save_tabstop = &l:tabstop + +" NOTE: Vim versions before 7.3.511 had a ftplugin/python.vim that was broken +" for compatible mode. +let s:save_cpo = &cpo +set cpo&vim + +" Load base python ftplugin (also defines b:did_ftplugin). +source $VIMRUNTIME/ftplugin/python.vim + +" NOTE: Vim versions before 7.4.104 and later set this in ftplugin/python.vim. +setlocal comments=b:#,fb:- + +" Restore pre-existing indentation settings. +let &l:expandtab = s:save_expandtab +let &l:shiftwidth = s:save_shiftwidth +let &l:softtabstop = s:save_softtabstop +let &l:tabstop = s:save_tabstop + +setlocal formatoptions-=t + +" Make gf work with imports in BUILD files. +setlocal includeexpr=substitute(v:fname,'//','','') + +" Enable syntax-based folding, if specified. +if get(g:, 'ft_bzl_fold', 0) +  setlocal foldmethod=syntax +  setlocal foldtext=BzlFoldText() +endif + +if exists('*BzlFoldText') +  finish +endif + +function BzlFoldText() abort +  let l:start_num = nextnonblank(v:foldstart) +  let l:end_num = prevnonblank(v:foldend) + +  if l:end_num <= l:start_num + 1 +    " If the fold is empty, don't print anything for the contents. +    let l:content = '' +  else +    " Otherwise look for something matching the content regex. +    " And if nothing matches, print an ellipsis. +    let l:content = '...' +    for l:line in getline(l:start_num + 1, l:end_num - 1) +      let l:content_match = matchstr(l:line, '\m\C^\s*name = \zs.*\ze,$') +      if !empty(l:content_match) +        let l:content = l:content_match +        break +      endif +    endfor +  endif + +  " Enclose content with start and end +  let l:start_text = getline(l:start_num) +  let l:end_text = substitute(getline(l:end_num), '^\s*', '', '') +  let l:text = l:start_text . ' ' . l:content . ' ' . l:end_text + +  " Compute the available width for the displayed text. +  let l:width = winwidth(0) - &foldcolumn - (&number ? &numberwidth : 0) +  let l:lines_folded = ' ' . string(1 + v:foldend - v:foldstart) . ' lines' + +  " Expand tabs, truncate, pad, and concatenate +  let l:text = substitute(l:text, '\t', repeat(' ', &tabstop), 'g') +  let l:text = strpart(l:text, 0, l:width - len(l:lines_folded)) +  let l:padding = repeat(' ', l:width - len(l:lines_folded) - len(l:text)) +  return l:text . l:padding . l:lines_folded +endfunction + +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/c.vim b/ftplugin/c.vim new file mode 100644 index 00000000..06c6b777 --- /dev/null +++ b/ftplugin/c.vim @@ -0,0 +1,68 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	C +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2016 Jun 12 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< com< ofu< | if has('vms') | setl isk< | endif" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set completion with CTRL-X CTRL-O to autoloaded function. +if exists('&ofu') +  setlocal ofu=ccomplete#Complete +endif + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +" In VMS C keywords contain '$' characters. +if has("vms") +  setlocal iskeyword+=$ +endif + +" When the matchit plugin is loaded, this makes the % command skip parens and +" braces in comments. +let b:match_words = &matchpairs . ',^\s*#\s*if\(\|def\|ndef\)\>:^\s*#\s*elif\>:^\s*#\s*else\>:^\s*#\s*endif\>' +let b:match_skip = 's:comment\|string\|character\|special' + +" Win32 can filter files in the browse dialog +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") +  if &ft == "cpp" +    let b:browsefilter = "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . +	  \ "C Header Files (*.h)\t*.h\n" . +	  \ "C Source Files (*.c)\t*.c\n" . +	  \ "All Files (*.*)\t*.*\n" +  elseif &ft == "ch" +    let b:browsefilter = "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . +	  \ "C Header Files (*.h)\t*.h\n" . +	  \ "C Source Files (*.c)\t*.c\n" . +	  \ "All Files (*.*)\t*.*\n" +  else +    let b:browsefilter = "C Source Files (*.c)\t*.c\n" . +	  \ "C Header Files (*.h)\t*.h\n" . +	  \ "Ch Source Files (*.ch *.chf)\t*.ch;*.chf\n" . +	  \ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . +	  \ "All Files (*.*)\t*.*\n" +  endif +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/calendar.vim b/ftplugin/calendar.vim new file mode 100644 index 00000000..a765d83f --- /dev/null +++ b/ftplugin/calendar.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             calendar(1) input file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=s1:/*,mb:*,ex:*/ commentstring& include& +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/cdrdaoconf.vim b/ftplugin/cdrdaoconf.vim new file mode 100644 index 00000000..caafe2ea --- /dev/null +++ b/ftplugin/cdrdaoconf.vim @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2007-12-04 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/ch.vim b/ftplugin/ch.vim new file mode 100644 index 00000000..41145d1b --- /dev/null +++ b/ftplugin/ch.vim @@ -0,0 +1,21 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     Ch +" Maintainer:   SoftIntegration, Inc. <info@softintegration.com> +" URL:		http://www.softintegration.com/download/vim/ftplugin/ch.vim +" Last change:	2004 May 16 +"		Created based on cpp.vim +" +" Ch is a C/C++ interpreter with many high level extensions +" + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Behaves just like C +runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim + +endif diff --git a/ftplugin/changelog.vim b/ftplugin/changelog.vim new file mode 100644 index 00000000..dd02344d --- /dev/null +++ b/ftplugin/changelog.vim @@ -0,0 +1,305 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             generic Changelog file +" Maintainer:           Martin Florian <marfl@posteo.de> +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2015-10-25 +" Variables: +"   g:changelog_timeformat (deprecated: use g:changelog_dateformat instead) - +"       description: the timeformat used in ChangeLog entries. +"       default: "%Y-%m-%d". +"   g:changelog_dateformat - +"       description: the format sent to strftime() to generate a date string. +"       default: "%Y-%m-%d". +"   g:changelog_username - +"       description: the username to use in ChangeLog entries +"       default: try to deduce it from environment variables and system files. +" Local Mappings: +"   <Leader>o - +"       adds a new changelog entry for the current user for the current date. +" Global Mappings: +"   <Leader>o - +"       switches to the ChangeLog buffer opened for the current directory, or +"       opens it in a new buffer if it exists in the current directory.  Then +"       it does the same as the local <Leader>o described above. +" Notes: +"   run 'runtime ftplugin/changelog.vim' to enable the global mapping for +"   changelog files. +" TODO: +"  should we perhaps open the ChangeLog file even if it doesn't exist already? +"  Problem is that you might end up with ChangeLog files all over the place. + +" If 'filetype' isn't "changelog", we must have been to add ChangeLog opener +if &filetype == 'changelog' +  if exists('b:did_ftplugin') +    finish +  endif +  let b:did_ftplugin = 1 + +  let s:cpo_save = &cpo +  set cpo&vim + +  " Set up the format used for dates. +  if !exists('g:changelog_dateformat') +    if exists('g:changelog_timeformat') +      let g:changelog_dateformat = g:changelog_timeformat +    else +      let g:changelog_dateformat = "%Y-%m-%d" +    endif +  endif + +  function! s:username() +    if exists('g:changelog_username') +      return g:changelog_username +    elseif $EMAIL != "" +      return $EMAIL +    elseif $EMAIL_ADDRESS != "" +      return $EMAIL_ADDRESS +    endif +     +    let login = s:login() +    return printf('%s <%s@%s>', s:name(login), login, s:hostname()) +  endfunction + +  function! s:login() +    return s:trimmed_system_with_default('whoami', 'unknown') +  endfunction + +  function! s:trimmed_system_with_default(command, default) +    return s:first_line(s:system_with_default(a:command, a:default)) +  endfunction + +  function! s:system_with_default(command, default) +    let output = system(a:command) +    if v:shell_error +      return default +    endif +    return output +  endfunction + +  function! s:first_line(string) +    return substitute(a:string, '\n.*$', "", "") +  endfunction + +  function! s:name(login) +    for name in [s:gecos_name(a:login), $NAME, s:capitalize(a:login)] +      if name != "" +        return name +      endif +    endfor +  endfunction + +  function! s:gecos_name(login) +    for line in s:try_reading_file('/etc/passwd') +      if line =~ '^' . a:login . ':' +        return substitute(s:passwd_field(line, 5), '&', s:capitalize(a:login), "") +      endif +    endfor +    return "" +  endfunction + +  function! s:try_reading_file(path) +    try +      return readfile(a:path) +    catch +      return [] +    endtry +  endfunction + +  function! s:passwd_field(line, field) +    let fields = split(a:line, ':', 1) +    if len(fields) < a:field +      return "" +    endif +    return fields[a:field - 1] +  endfunction + +  function! s:capitalize(word) +    return toupper(a:word[0]) . strpart(a:word, 1) +  endfunction + +  function! s:hostname() +    return s:trimmed_system_with_default('hostname', 'localhost') +  endfunction + +  " Format used for new date entries. +  if !exists('g:changelog_new_date_format') +    let g:changelog_new_date_format = "%d  %u\n\n\t* %p%c\n\n" +  endif + +  " Format used for new entries to current date entry. +  if !exists('g:changelog_new_entry_format') +    let g:changelog_new_entry_format = "\t* %p%c" +  endif + +  " Regular expression used to find a given date entry. +  if !exists('g:changelog_date_entry_search') +    let g:changelog_date_entry_search = '^\s*%d\_s*%u' +  endif + +  " Regular expression used to find the end of a date entry +  if !exists('g:changelog_date_end_entry_search') +    let g:changelog_date_end_entry_search = '^\s*$' +  endif + + +  " Substitutes specific items in new date-entry formats and search strings. +  " Can be done with substitute of course, but unclean, and need \@! then. +  function! s:substitute_items(str, date, user, prefix) +    let str = a:str +    let middles = {'%': '%', 'd': a:date, 'u': a:user, 'p': a:prefix, 'c': '{cursor}'} +    let i = stridx(str, '%') +    while i != -1 +      let inc = 0 +      if has_key(middles, str[i + 1]) +        let mid = middles[str[i + 1]] +        let str = strpart(str, 0, i) . mid . strpart(str, i + 2) +        let inc = strlen(mid) - 1 +      endif +      let i = stridx(str, '%', i + 1 + inc) +    endwhile +    return str +  endfunction + +  " Position the cursor once we've done all the funky substitution. +  function! s:position_cursor() +    if search('{cursor}') > 0 +      let lnum = line('.') +      let line = getline(lnum) +      let cursor = stridx(line, '{cursor}') +      call setline(lnum, substitute(line, '{cursor}', '', '')) +    endif +    startinsert +  endfunction + +  " Internal function to create a new entry in the ChangeLog. +  function! s:new_changelog_entry(prefix) +    " Deal with 'paste' option. +    let save_paste = &paste +    let &paste = 1 +    call cursor(1, 1) +    " Look for an entry for today by our user. +    let date = strftime(g:changelog_dateformat) +    let search = s:substitute_items(g:changelog_date_entry_search, date, +                                  \ s:username(), a:prefix) +    if search(search) > 0 +      " Ok, now we look for the end of the date entry, and add an entry. +      call cursor(nextnonblank(line('.') + 1), 1) +      if search(g:changelog_date_end_entry_search, 'W') > 0 +	let p = (line('.') == line('$')) ? line('.') : line('.') - 1 +      else +        let p = line('.') +      endif +      let ls = split(s:substitute_items(g:changelog_new_entry_format, '', '', a:prefix), +                   \ '\n') +      call append(p, ls) +      call cursor(p + 1, 1) +    else +      " Flag for removing empty lines at end of new ChangeLogs. +      let remove_empty = line('$') == 1 + +      " No entry today, so create a date-user header and insert an entry. +      let todays_entry = s:substitute_items(g:changelog_new_date_format, +                                          \ date, s:username(), a:prefix) +      " Make sure we have a cursor positioning. +      if stridx(todays_entry, '{cursor}') == -1 +        let todays_entry = todays_entry . '{cursor}' +      endif + +      " Now do the work. +      call append(0, split(todays_entry, '\n')) + +      " Remove empty lines at end of file. +      if remove_empty +        $-/^\s*$/-1,$delete +      endif + +      " Reposition cursor once we're done. +      call cursor(1, 1) +    endif + +    call s:position_cursor() + +    " And reset 'paste' option +    let &paste = save_paste +  endfunction + +  if exists(":NewChangelogEntry") != 2 +    nnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR> +    xnoremap <buffer> <silent> <Leader>o :<C-u>call <SID>new_changelog_entry('')<CR> +    command! -nargs=0 NewChangelogEntry call s:new_changelog_entry('') +  endif + +  let b:undo_ftplugin = "setl com< fo< et< ai<" + +  setlocal comments= +  setlocal formatoptions+=t +  setlocal noexpandtab +  setlocal autoindent + +  if &textwidth == 0 +    setlocal textwidth=78 +    let b:undo_ftplugin .= " tw<" +  endif + +  let &cpo = s:cpo_save +  unlet s:cpo_save +else +  let s:cpo_save = &cpo +  set cpo&vim + +  " Add the Changelog opening mapping +  nnoremap <silent> <Leader>o :call <SID>open_changelog()<CR> + +  function! s:open_changelog() +    let path = expand('%:p:h') +    if exists('b:changelog_path') +      let changelog = b:changelog_path +    else +      if exists('b:changelog_name') +        let name = b:changelog_name +      else +        let name = 'ChangeLog' +      endif +      while isdirectory(path) +        let changelog = path . '/' . name +        if filereadable(changelog) +          break +        endif +        let parent = substitute(path, '/\+[^/]*$', "", "") +        if path == parent +          break +        endif +        let path = parent +      endwhile +    endif +    if !filereadable(changelog) +      return +    endif + +    if exists('b:changelog_entry_prefix') +      let prefix = call(b:changelog_entry_prefix, []) +    else +      let prefix = substitute(strpart(expand('%:p'), strlen(path)), '^/\+', "", "") +    endif + +    let buf = bufnr(changelog) +    if buf != -1 +      if bufwinnr(buf) != -1 +        execute bufwinnr(buf) . 'wincmd w' +      else +        execute 'sbuffer' buf +      endif +    else +      execute 'split' fnameescape(changelog) +    endif + +    call s:new_changelog_entry(prefix) +  endfunction + +  let &cpo = s:cpo_save +  unlet s:cpo_save +endif + +endif diff --git a/ftplugin/clojure.vim b/ftplugin/clojure.vim index 4568d46e..2bbbf849 100644 --- a/ftplugin/clojure.vim +++ b/ftplugin/clojure.vim @@ -1,3 +1,102 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     Clojure +" Author:       Meikel Brandmeyer <mb@kotka.de> +" +" Maintainer:   Sung Pae <self@sungpae.com> +" URL:          https://github.com/guns/vim-clojure-static +" License:      Same as Vim +" Last Change:  18 July 2016 + +if exists("b:did_ftplugin") +	finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = 'setlocal iskeyword< define< formatoptions< comments< commentstring< lispwords<' + +setlocal iskeyword+=?,-,*,!,+,/,=,<,>,.,:,$ + +" There will be false positives, but this is better than missing the whole set +" of user-defined def* definitions. +setlocal define=\\v[(/]def(ault)@!\\S* + +" Remove 't' from 'formatoptions' to avoid auto-wrapping code. +setlocal formatoptions-=t + +" Lisp comments are routinely nested (e.g. ;;; SECTION HEADING) +setlocal comments=n:; +setlocal commentstring=;\ %s + +" Specially indented symbols from clojure.core and clojure.test. +" +" Clojure symbols are indented in the defn style when they: +" +"   * Define vars and anonymous functions +"   * Create new lexical scopes or scopes with altered environments +"   * Create conditional branches from a predicate function or value +" +" The arglists for these functions are generally in the form of [x & body]; +" Functions that accept a flat list of forms do not treat the first argument +" specially and hence are not indented specially. +" +" -*- LISPWORDS -*- +" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-011/clj/src/vim_clojure_static/generate.clj +setlocal lispwords=as->,binding,bound-fn,case,catch,cond->,cond->>,condp,def,definline,definterface,defmacro,defmethod,defmulti,defn,defn-,defonce,defprotocol,defrecord,defstruct,deftest,deftest-,deftype,doseq,dotimes,doto,extend,extend-protocol,extend-type,fn,for,if,if-let,if-not,if-some,let,letfn,locking,loop,ns,proxy,reify,set-test,testing,when,when-first,when-let,when-not,when-some,while,with-bindings,with-in-str,with-local-vars,with-open,with-precision,with-redefs,with-redefs-fn,with-test + +" Provide insert mode completions for special forms and clojure.core. As +" 'omnifunc' is set by popular Clojure REPL client plugins, we also set +" 'completefunc' so that the user has some form of completion available when +" 'omnifunc' is set and no REPL connection exists. +for s:setting in ['omnifunc', 'completefunc'] +	if exists('&' . s:setting) && empty(eval('&' . s:setting)) +		execute 'setlocal ' . s:setting . '=clojurecomplete#Complete' +		let b:undo_ftplugin .= ' | setlocal ' . s:setting . '<' +	endif +endfor + +" Take all directories of the CLOJURE_SOURCE_DIRS environment variable +" and add them to the path option. +" +" This is a legacy option for VimClojure users. +if exists('$CLOJURE_SOURCE_DIRS') +	for s:dir in split($CLOJURE_SOURCE_DIRS, (has("win32") || has("win64")) ? ';' : ':') +		let s:dir = fnameescape(s:dir) +		" Whitespace escaping for Windows +		let s:dir = substitute(s:dir, '\', '\\\\', 'g') +		let s:dir = substitute(s:dir, '\ ', '\\ ', 'g') +		execute "setlocal path+=" . s:dir . "/**" +	endfor +	let b:undo_ftplugin .= ' | setlocal path<' +endif + +" Skip brackets in ignored syntax regions when using the % command +if exists('loaded_matchit') +	let b:match_words = &matchpairs +	let b:match_skip = 's:comment\|string\|regex\|character' +	let b:undo_ftplugin .= ' | unlet! b:match_words b:match_skip' +endif + +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") +	let b:browsefilter = "Clojure Source Files (*.clj)\t*.clj\n" . +	                   \ "ClojureScript Source Files (*.cljs)\t*.cljs\n" . +	                   \ "Java Source Files (*.java)\t*.java\n" . +	                   \ "All Files (*.*)\t*.*\n" +	let b:undo_ftplugin .= ' | unlet! b:browsefilter' +endif + +let &cpo = s:cpo_save + +unlet! s:cpo_save s:setting s:dir + +" vim:sts=8:sw=8:ts=8:noet + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'clojure') == -1  " Vim filetype plugin file diff --git a/ftplugin/cobol.vim b/ftplugin/cobol.vim new file mode 100644 index 00000000..a72cc1ca --- /dev/null +++ b/ftplugin/cobol.vim @@ -0,0 +1,271 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	cobol +" Author:	Tim Pope <vimNOSPAM@tpope.info> +" Last Update:	By ZyX: use shiftwidth() + +" Insert mode mappings: <C-T> <C-D> <Tab> +" Normal mode mappings: < > << >> [[ ]] [] ][ +" Visual mode mappings: < > + +if exists("b:did_ftplugin") +    finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal commentstring=\ \ \ \ \ \ *%s +setlocal comments=:* +setlocal fo+=croqlt +setlocal expandtab +setlocal textwidth=72 + +" matchit support +if exists("loaded_matchit") +    let s:ordot = '\|\ze\.\%( \@=\|$\)' +    let b:match_ignorecase=1 +    "let b:match_skip = 'getline(".") =~ "^.\\{6\\}[*/C]"' +    let b:match_words= +    \ '\$if\>:$else\>:\$endif\>,' . +    \ '[$-]\@<!\<if\>:\<\%(then\|else\)\>:\<end-if\>'.s:ordot.',' . +    \ '-\@<!\<perform\s\+\%(\d\+\s\+times\|until\|varying\|with\s\+test\)\>:\<end-perform\>'.s:ordot . ',' . +    \ '-\@<!\<\%(search\|evaluate\)\>:\<\%(when\)\>:\<end-\%(search\|evaluate\)\>' .s:ordot . ',' . +    \ '-\@<!\<\%(add\|compute\|divide\|multiply\|subtract\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(not\s\+\)\=on\s\+size\s\+error\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=on\s\+size\s\+error\>:\<end-\%(add\|compute\|divide\|multiply\|subtract\)\>' .s:ordot . ',' . +    \ '-\@<!\<\%(string\|unstring\|accept\|display\|call\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(not\s\+\)\=on\s\+\%(overflow\|exception\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=on\s\+\%(overflow\|exception\)\>:\<end-\%(string\|unstring\|accept\|display\|call\)\>' .s:ordot . ',' . +    \ '-\@<!\<\%(delete\|rewrite\|start\|write\|read\)\>\%(.*\(\%$\|\%(\n\%(\%(\s*\|.\{6\}\)[*/].*\n\)*\)\=\s*\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>\)\)\@=:\%(\<not\s\+\)\@<!\<\%(not\s\+\)\=\%(invalid\s\+key\|at\s\+end\|no\s\+data\|at\s\+end-of-page\)\>:\<end-\%(delete\|rewrite\|start\|write\|read\)\>' .s:ordot +endif + +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "COBOL Source Files (*.cbl, *.cob)\t*.cbl;*.cob;*.lib\n". +		     \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setlocal com< cms< fo< et< tw<" . +            \ " | unlet! b:browsefilter b:match_words b:match_ignorecase b:match_skip" +if !exists("g:no_plugin_maps") && !exists("g:no_cobol_maps") +    let b:undo_ftplugin = b:undo_ftplugin . +            \ " | sil! exe 'nunmap <buffer> <'" . +            \ " | sil! exe 'nunmap <buffer> >'" . +            \ " | sil! exe 'nunmap <buffer> <<'" . +            \ " | sil! exe 'nunmap <buffer> >>'" . +            \ " | sil! exe 'vunmap <buffer> <'" . +            \ " | sil! exe 'vunmap <buffer> >'" . +            \ " | sil! exe 'iunmap <buffer> <C-D>'" . +            \ " | sil! exe 'iunmap <buffer> <C-T>'" . +            \ " | sil! exe 'iunmap <buffer> <Tab>'" . +            \ " | sil! exe 'nunmap <buffer> <Plug>Traditional'" . +            \ " | sil! exe 'nunmap <buffer> <Plug>Comment'" . +            \ " | sil! exe 'nunmap <buffer> <Plug>DeComment'" . +            \ " | sil! exe 'vunmap <buffer> <Plug>VisualTraditional'" . +            \ " | sil! exe 'vunmap <buffer> <Plug>VisualComment'" . +            \ " | sil! exe 'iunmap <buffer> <Plug>VisualDeComment'" . +            \ " | sil! exe 'unmap  <buffer> [['" . +            \ " | sil! exe 'unmap  <buffer> ]]'" . +            \ " | sil! exe 'unmap  <buffer> []'" . +            \ " | sil! exe 'unmap  <buffer> ]['" +endif + +if !exists("g:no_plugin_maps") && !exists("g:no_cobol_maps") +    if version >= 700 +        nnoremap <silent> <buffer> > :set opfunc=<SID>IncreaseFunc<CR>g@ +        nnoremap <silent> <buffer> < :set opfunc=<SID>DecreaseFunc<CR>g@ +    endif +    nnoremap <silent> <buffer> >> :call CobolIndentBlock(1)<CR> +    nnoremap <silent> <buffer> << :call CobolIndentBlock(-1)<CR> +    vnoremap <silent> <buffer> > :call CobolIndentBlock(v:count1)<CR> +    vnoremap <silent> <buffer> < :call CobolIndentBlock(-v:count1)<CR> +    inoremap <silent> <buffer> <C-T> <C-R>=<SID>IncreaseIndent()<CR><C-R>=<SID>RestoreShiftwidth()<CR> +    inoremap <silent> <buffer> <C-D> <C-R>=<SID>DecreaseIndent()<CR><C-R>=<SID>RestoreShiftwidth()<CR> +    if !maparg("<Tab>","i") +        inoremap <silent> <buffer> <Tab> <C-R>=<SID>Tab()<CR><C-R>=<SID>RestoreShiftwidth()<CR> +    endif +    noremap <silent> <buffer> [[ m':call search('\c^\%(\s*\<Bar>.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\<Bar>section\)\s*\.','bW')<CR> +    noremap <silent> <buffer> ]] m':call search('\c^\%(\s*\<Bar>.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\<Bar>section\)\.','W')<CR> +    noremap <silent> <buffer> [] m':call <SID>toend('b')<CR> +    noremap <silent> <buffer> ][ m':call <SID>toend('')<CR> +    " For EnhancedCommentify +    noremap <silent> <buffer> <Plug>Traditional      :call <SID>Comment('t')<CR> +    noremap <silent> <buffer> <Plug>Comment          :call <SID>Comment('c')<CR> +    noremap <silent> <buffer> <Plug>DeComment        :call <SID>Comment('u')<CR> +    noremap <silent> <buffer> <Plug>VisualTraditional :'<,'>call <SID>Comment('t')<CR> +    noremap <silent> <buffer> <Plug>VisualComment     :'<,'>call <SID>Comment('c')<CR> +    noremap <silent> <buffer> <Plug>VisualDeComment   :'<,'>call <SID>Comment('u')<CR> +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +if exists("g:did_cobol_ftplugin_functions") +    finish +endif +let g:did_cobol_ftplugin_functions = 1 + +function! s:repeat(str,count) +    let i = 0 +    let ret = "" +    while i < a:count +        let ret = ret . a:str +        let i = i + 1 +    endwhile +    return ret +endfunction + +function! s:increase(...) +    let lnum = '.' +    let sw = shiftwidth() +    let i = a:0 ? a:1 : indent(lnum) +    if i >= 11 +        return sw - (i - 11) % sw +    elseif i >= 7 +        return 11-i +    elseif i == 6 +        return 1 +    else +        return 6-i +    endif +endfunction + +function! s:decrease(...) +    let lnum = '.' +    let sw = shiftwidth() +    let i = indent(a:0 ? a:1 : lnum) +    if i >= 11 + sw +        return 1 + (i + 12) % sw +    elseif i > 11 +        return i-11 +    elseif i > 7 +        return i-7 +    elseif i == 7 +        return 1 +    else +        return i +    endif +endfunction + +function! CobolIndentBlock(shift) +    let head = strpart(getline('.'),0,7) +    let tail = strpart(getline('.'),7) +    let indent = match(tail,'[^ ]') +    let sw = shiftwidth() +    let shift = a:shift +    if shift > 0 +        if indent < 4 +            let tail = s:repeat(" ",4-indent).tail +            let shift = shift - 1 +        endif +        let tail = s:repeat(" ",shift*sw).tail +        let shift = 0 +    elseif shift < 0 +        if (indent-4) > -shift * sw +            let tail = strpart(tail,-shift * sw) +        elseif (indent-4) > (-shift-1) * sw +            let tail = strpart(tail,indent - 4) +        else +            let tail = strpart(tail,indent) +        endif +    endif +    call setline('.',head.tail) +endfunction + +function! s:IncreaseFunc(type) +    '[,']call CobolIndentBlock(1) +endfunction + +function! s:DecreaseFunc(type) +    '[,']call CobolIndentBlock(-1) +endfunction + +function! s:IncreaseIndent() +    let c = "\<C-T>" +    if exists("*InsertCtrlTWrapper") +        let key = InsertCtrlTWrapper() +        if key != c +            return key +        endif +    endif +    let interval = s:increase() +    let b:cobol_shiftwidth = &shiftwidth +    let &shiftwidth = 1 +    let lastchar = strpart(getline('.'),col('.')-2,1) +    if lastchar == '0' || lastchar == '^' +        return "\<BS>".lastchar.c +    else +        return s:repeat(c,interval) +    endif +endfunction + +function! s:DecreaseIndent() +    let c = "\<C-D>" +    if exists("*InsertCtrlDWrapper") +        " I hack Ctrl-D to delete when not at the end of the line. +        let key = InsertCtrlDWrapper() +        if key != c +            return key +        endif +    endif +    let interval = s:decrease() +    let b:cobol_shiftwidth = &shiftwidth +    let &shiftwidth = 1 +    return s:repeat(c,interval) +endfunction + +function! s:RestoreShiftwidth() +    if exists("b:cobol_shiftwidth") +        let &shiftwidth=b:cobol_shiftwidth +        unlet b:cobol_shiftwidth +    endif +    return "" +endfunction + +function! s:Tab() +    if (strpart(getline('.'),0,col('.')-1) =~ '^\s*$' && &sta) +        return s:IncreaseIndent() +    " &softtabstop < 0: &softtabstop follows &shiftwidth +    elseif (&sts < 0 || &sts == shiftwidth()) && &sts != 8 && &et +        return s:repeat(" ",s:increase(col('.')-1)) +    else +        return "\<Tab>" +    endif +endfunction + +function! s:Comment(arg) +    " For EnhancedCommentify +    let line = getline('.') +    if (line =~ '^.\{6\}[*/C]' || a:arg == 'c') && a:arg != 'u' +        let line = substitute(line,'^.\{6\}\zs.',' ','') +    else +        let line = substitute(line,'^.\{6\}\zs.','*','') +    endif +    call setline('.',line) +endfunction + +function! s:toend(direction) +    let ignore = '^\(\s*\|.\{6\}\)\%([*/]\|\s*$\)' +    let keep = line('.') +    keepjumps + +    while line('.') < line('$') && getline('.') =~ ignore +        keepjumps + +    endwhile +    let res = search('\c^\%(\s*\|.\{6\}\s\+\)\zs[A-Za-z0-9-]\+\s\+\%(division\|section\)\s*\.',a:direction.'W') +    if a:direction != 'b' && !res +        let res = line('$') +        keepjumps $ +    elseif res +        keepjumps - +    endif +    if res +        while line('.') > 1 && getline('.') =~ ignore +            keepjumps - +        endwhile +        if line('.') == 1 && getline('.') =~ ignore +            exe "keepjumps ".keep +        endif +    else +        exe "keepjumps ".keep +    endif +endfunction + +endif diff --git a/ftplugin/conf.vim b/ftplugin/conf.vim new file mode 100644 index 00000000..c82b7470 --- /dev/null +++ b/ftplugin/conf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             generic configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/config.vim b/ftplugin/config.vim new file mode 100644 index 00000000..f0238bca --- /dev/null +++ b/ftplugin/config.vim @@ -0,0 +1,46 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	config +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "Bourne Shell Files (*.sh)\t*.sh\n" . +	    \	 "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/sh.vim ftplugin/sh_*.vim ftplugin/sh/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show configure-related files. +if has("gui_win32") +    let  b:browsefilter="Configure Scripts (configure.*, config.*)\tconfigure*;config.*\n" . +		\	s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . b:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/context.vim b/ftplugin/context.vim new file mode 100644 index 00000000..25459928 --- /dev/null +++ b/ftplugin/context.vim @@ -0,0 +1,106 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:           ConTeXt typesetting engine +" Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com> +" Former Maintainers: Nikolai Weibull <now@bitwi.se> +" Latest Revision:    2016 Oct 30 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +if !exists('current_compiler') +  compiler context +endif + +let b:undo_ftplugin = "setl com< cms< def< inc< sua< fo< ofu<" +      \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" + +setlocal comments=b:%D,b:%C,b:%M,:% commentstring=%\ %s formatoptions+=tjcroql2 +if get(b:, 'context_metapost', get(g:, 'context_metapost', 1)) +  setlocal omnifunc=contextcomplete#Complete +  let g:omni_syntax_group_include_context = 'mf\w\+,mp\w\+' +  let g:omni_syntax_group_exclude_context = 'mfTodoComment' +endif + +let &l:define='\\\%([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\=' +        \ .     'def\|\\font\|\\\%(future\)\=let' +        \ . '\|\\new\%(count\|dimen\|skip\|muskip\|box\|toks\|read\|write' +        \ .     '\|fam\|insert\|if\)' + +let &l:include = '^\s*\\\%(input\|component\|product\|project\|environment\)' + +setlocal suffixesadd=.tex + +if exists("loaded_matchit") +  let b:match_ignorecase = 0 +  let b:match_skip = 'r:\\\@<!\%(\\\\\)*%' +  let b:match_words = '(:),\[:],{:},\\(:\\),\\\[:\\],' . +        \ '\\start\(\a\+\):\\stop\1' +endif + +let s:context_regex = { +      \ 'beginsection' : '\\\%(start\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>', +      \ 'endsection'   : '\\\%(stop\)\=\%(\%(sub\)*section\|\%(sub\)*subject\|chapter\|part\|component\|product\|title\)\>', +      \ 'beginblock'   : '\\\%(start\|setup\|define\)', +      \ 'endblock'     : '\\\%(stop\|setup\|define\)' +      \ } + +function! s:move_around(count, what, flags, visual) +  if a:visual +    exe "normal! gv" +  endif +  call search(s:context_regex[a:what], a:flags.'s') " 's' sets previous context mark +  call map(range(2, a:count), 'search(s:context_regex[a:what], a:flags)') +endfunction + +" Move around macros. +nnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:false) <CR> +vnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:true)  <CR> +nnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W",  v:false) <CR> +vnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W",  v:true)  <CR> +nnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection",   "bW", v:false) <CR> +vnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection",   "bW", v:true)  <CR> +nnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection",   "W",  v:false) <CR> +vnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection",   "W",  v:true)  <CR> +nnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock",   "bW", v:false) <CR> +vnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock",   "bW", v:true)  <CR> +nnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock",     "W",  v:false) <CR> +vnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock",     "W",  v:true)  <CR> + +" Other useful mappings +if get(g:, 'context_mappings', 1) +  let s:tp_regex = '?^$\|^\s*\\\(item\|start\|stop\|blank\|\%(sub\)*section\|chapter\|\%(sub\)*subject\|title\|part\)' + +  fun! s:tp() +    call cursor(search(s:tp_regex, 'bcW') + 1, 1) +    normal! V +    call cursor(search(s:tp_regex, 'W') - 1, 1) +  endf + +  " Reflow paragraphs with commands like gqtp ("gq TeX paragraph") +  onoremap <silent><buffer> tp :<c-u>call <sid>tp()<cr> +  " Select TeX paragraph +  vnoremap <silent><buffer> tp <esc>:<c-u>call <sid>tp()<cr> + +  " $...$ text object +  onoremap <silent><buffer> i$ :<c-u>normal! T$vt$<cr> +  onoremap <silent><buffer> a$ :<c-u>normal! F$vf$<cr> +  vnoremap <buffer> i$ T$ot$ +  vnoremap <buffer> a$ F$of$ +endif + +" Commands for asynchronous typesetting +command! -buffer -nargs=? -complete=file ConTeXt          call context#typeset(<q-args>) +command!         -nargs=0                ConTeXtJobStatus call context#job_status() +command!         -nargs=0                ConTeXtStopJobs  call context#stop_jobs() + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/cpp.vim b/ftplugin/cpp.vim new file mode 100644 index 00000000..8f291364 --- /dev/null +++ b/ftplugin/cpp.vim @@ -0,0 +1,16 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	C++ +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2001 Jan 15 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Behaves just like C +runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim + +endif diff --git a/ftplugin/crm.vim b/ftplugin/crm.vim new file mode 100644 index 00000000..d0fa9dd2 --- /dev/null +++ b/ftplugin/crm.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             CRM114 +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/cs.vim b/ftplugin/cs.vim new file mode 100644 index 00000000..82354add --- /dev/null +++ b/ftplugin/cs.vim @@ -0,0 +1,33 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	C# +" Maintainer:	Johannes Zellner <johannes@zellner.org> +" Last Change:	Tue, 09 Mar 2004 14:09:33 CET + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 +let s:keepcpo= &cpo +set cpo&vim + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:///,:// + +if has("gui_win32") && !exists("b:browsefilter") +    let b:browsefilter = "C# Source Files (*.cs)\t*.cs\n" . +		       \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:keepcpo +unlet s:keepcpo + +endif diff --git a/ftplugin/csc.vim b/ftplugin/csc.vim new file mode 100644 index 00000000..31e77abb --- /dev/null +++ b/ftplugin/csc.vim @@ -0,0 +1,31 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	csc +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +if exists("loaded_matchit") +    let b:match_words= +	\ '\<fix\>:\<endfix\>,' . +	\ '\<if\>:\<else\%(if\)\=\>:\<endif\>,' . +	\ '\<!loopondimensions\>\|\<!looponselected\>:\<!endloop\>' +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:match_words" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/csh.vim b/ftplugin/csh.vim new file mode 100644 index 00000000..9a1050d7 --- /dev/null +++ b/ftplugin/csh.vim @@ -0,0 +1,52 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	csh +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal commentstring=#%s +setlocal formatoptions-=t +setlocal formatoptions+=crql + +" Csh:  thanks to Johannes Zellner +" - Both foreach and end must appear alone on separate lines. +" - The words else and endif must appear at the beginning of input lines; +"   the if must appear alone on its input line or after an else. +" - Each case label and the default label must appear at the start of a +"   line. +" - while and end must appear alone on their input lines. +if exists("loaded_matchit") +    let b:match_words = +      \ '^\s*\<if\>.*(.*).*\<then\>:'. +      \   '^\s*\<else\>\s\+\<if\>.*(.*).*\<then\>:^\s*\<else\>:'. +      \   '^\s*\<endif\>,'. +      \ '\%(^\s*\<foreach\>\s\+\S\+\|^s*\<while\>\).*(.*):'. +      \   '\<break\>:\<continue\>:^\s*\<end\>,'. +      \ '^\s*\<switch\>.*(.*):^\s*\<case\>\s\+:^\s*\<default\>:^\s*\<endsw\>' +endif + +" Change the :browse e filter to primarily show csh-related files. +if has("gui_win32") +    let  b:browsefilter="csh Scripts (*.csh)\t*.csh\n" . +		\	"All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< formatoptions<" . +		\     " | unlet! b:match_words b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/css.vim b/ftplugin/css.vim new file mode 100644 index 00000000..82eedf74 --- /dev/null +++ b/ftplugin/css.vim @@ -0,0 +1,27 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             CSS +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo< ofu<" + +setlocal comments=s1:/*,mb:*,ex:*/ commentstring& +setlocal formatoptions-=t formatoptions+=croql +setlocal omnifunc=csscomplete#CompleteCSS + +let &l:include = '^\s*@import\s\+\%(url(\)\=' + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/cucumber.vim b/ftplugin/cucumber.vim index 2b9fff04..c0cb8dcf 100644 --- a/ftplugin/cucumber.vim +++ b/ftplugin/cucumber.vim @@ -1,3 +1,157 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" 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: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'cucumber') == -1  " Vim filetype plugin diff --git a/ftplugin/cvsrc.vim b/ftplugin/cvsrc.vim new file mode 100644 index 00000000..27f211b1 --- /dev/null +++ b/ftplugin/cvsrc.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             cvs(1) RC file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments= commentstring= formatoptions-=tcroql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/debchangelog.vim b/ftplugin/debchangelog.vim new file mode 100644 index 00000000..a5a7f94a --- /dev/null +++ b/ftplugin/debchangelog.vim @@ -0,0 +1,387 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file (GUI menu, folding and completion) +" Language:     Debian Changelog +" Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> +" Former Maintainers:   Michael Piefel <piefel@informatik.hu-berlin.de> +"                       Stefano Zacchiroli <zack@debian.org> +" Last Change:  2014-01-31 +" License:      Vim License +" URL:          http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/debchangelog.vim + +" Bug completion requires apt-listbugs installed for Debian packages or +" python-launchpadlib installed for Ubuntu packages + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin=1 + +" {{{1 Local settings (do on every load) +if exists("g:debchangelog_fold_enable") +  setlocal foldmethod=expr +  setlocal foldexpr=DebGetChangelogFold(v:lnum) +  setlocal foldtext=DebChangelogFoldText() +endif + +" Debian changelogs are not supposed to have any other text width, +" so the user cannot override this setting +setlocal tw=78 +setlocal comments=f:*  + +" Clean unloading +let b:undo_ftplugin = "setlocal tw< comments< foldmethod< foldexpr< foldtext<" +" }}}1 + +if exists("g:did_changelog_ftplugin") +  finish +endif + +" Don't load another plugin (this is global) +let g:did_changelog_ftplugin = 1 + +" {{{1 GUI menu + +" Helper functions returning various data. +" Returns full name, either from $DEBFULLNAME or debianfullname. +" TODO Is there a way to determine name from anywhere else? +function <SID>FullName() +    if exists("$DEBFULLNAME") +	return $DEBFULLNAME +    elseif exists("g:debianfullname") +	return g:debianfullname +    else +	return "Your Name" +    endif +endfunction + +" Returns email address, from $DEBEMAIL, $EMAIL or debianemail. +function <SID>Email() +    if exists("$DEBEMAIL") +	return $DEBEMAIL +    elseif exists("$EMAIL") +	return $EMAIL +    elseif exists("g:debianemail") +	return g:debianemail +    else +	return "your@email.address" +    endif +endfunction + +" Returns date in RFC822 format. +function <SID>Date() +    let savelang = v:lc_time +    execute "language time C" +    let dateandtime = strftime("%a, %d %b %Y %X %z") +    execute "language time " . savelang +    return dateandtime +endfunction + +function <SID>WarnIfNotUnfinalised() +    if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 +	echohl WarningMsg +	echo "The entry has not been unfinalised before editing." +	echohl None +	return 1 +    endif +    return 0 +endfunction + +function <SID>Finalised() +    let savelinenum = line(".") +    normal 1G +    call search("^ -- ") +    if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 +	let returnvalue = 1 +    else +	let returnvalue = 0 +    endif +    execute savelinenum +    return returnvalue +endfunction + +" These functions implement the menus +function NewVersion() +    " The new entry is unfinalised and shall be changed +    amenu disable Changelog.New\ Version +    amenu enable Changelog.Add\ Entry +    amenu enable Changelog.Close\ Bug +    amenu enable Changelog.Set\ Distribution +    amenu enable Changelog.Set\ Urgency +    amenu disable Changelog.Unfinalise +    amenu enable Changelog.Finalise +    call append(0, substitute(getline(1), '-\([[:digit:]]\+\))', '-$$\1)', '')) +    call append(1, "") +    call append(2, "") +    call append(3, " -- ") +    call append(4, "") +    call Urgency("low") +    normal 1G0 +    call search(")") +    normal h +    normal  +    call setline(1, substitute(getline(1), '-\$\$', '-', '')) +    if exists("g:debchangelog_fold_enable") +        foldopen +    endif +    call AddEntry() +endfunction + +function AddEntry() +    normal 1G +    call search("^ -- ") +    normal kk +    call append(".", "  * ") +    normal jjj +    let warn=<SID>WarnIfNotUnfinalised() +    normal kk +    if warn +	echohl MoreMsg +	call input("Hit ENTER") +	echohl None +    endif +    startinsert! +endfunction + +function CloseBug() +    normal 1G +    call search("^ -- ") +    let warn=<SID>WarnIfNotUnfinalised() +    normal kk +    call append(".", "  *  (closes: #" . input("Bug number to close: ") . ")") +    normal j^ll +    startinsert +endfunction + +function Distribution(dist) +    call setline(1, substitute(getline(1), ')  *\%(UNRELEASED\|\l\+\);', ") " . a:dist . ";", "")) +endfunction + +function Urgency(urg) +    call setline(1, substitute(getline(1), "urgency=.*$", "urgency=" . a:urg, "")) +endfunction + +function <SID>UnfinaliseMenu() +    " This means the entry shall be changed +    amenu disable Changelog.New\ Version +    amenu enable Changelog.Add\ Entry +    amenu enable Changelog.Close\ Bug +    amenu enable Changelog.Set\ Distribution +    amenu enable Changelog.Set\ Urgency +    amenu disable Changelog.Unfinalise +    amenu enable Changelog.Finalise +endfunction + +function Unfinalise() +    call <SID>UnfinaliseMenu() +    normal 1G +    call search("^ -- ") +    call setline(".", " -- ") +endfunction + +function <SID>FinaliseMenu() +    " This means the entry should not be changed anymore +    amenu enable Changelog.New\ Version +    amenu disable Changelog.Add\ Entry +    amenu disable Changelog.Close\ Bug +    amenu disable Changelog.Set\ Distribution +    amenu disable Changelog.Set\ Urgency +    amenu enable Changelog.Unfinalise +    amenu disable Changelog.Finalise +endfunction + +function Finalise() +    call <SID>FinaliseMenu() +    normal 1G +    call search("^ -- ") +    call setline(".", " -- " . <SID>FullName() . " <" . <SID>Email() . ">  " . <SID>Date()) +endfunction + + +function <SID>MakeMenu() +    amenu &Changelog.&New\ Version			:call NewVersion()<CR> +    amenu Changelog.&Add\ Entry				:call AddEntry()<CR> +    amenu Changelog.&Close\ Bug				:call CloseBug()<CR> +    menu Changelog.-sep-				<nul> + +    amenu Changelog.Set\ &Distribution.&unstable	:call Distribution("unstable")<CR> +    amenu Changelog.Set\ Distribution.&frozen		:call Distribution("frozen")<CR> +    amenu Changelog.Set\ Distribution.&stable		:call Distribution("stable")<CR> +    menu Changelog.Set\ Distribution.-sep-		<nul> +    amenu Changelog.Set\ Distribution.frozen\ unstable	:call Distribution("frozen unstable")<CR> +    amenu Changelog.Set\ Distribution.stable\ unstable	:call Distribution("stable unstable")<CR> +    amenu Changelog.Set\ Distribution.stable\ frozen	:call Distribution("stable frozen")<CR> +    amenu Changelog.Set\ Distribution.stable\ frozen\ unstable	:call Distribution("stable frozen unstable")<CR> + +    amenu Changelog.Set\ &Urgency.&low			:call Urgency("low")<CR> +    amenu Changelog.Set\ Urgency.&medium		:call Urgency("medium")<CR> +    amenu Changelog.Set\ Urgency.&high			:call Urgency("high")<CR> + +    menu Changelog.-sep-				<nul> +    amenu Changelog.U&nfinalise				:call Unfinalise()<CR> +    amenu Changelog.&Finalise				:call Finalise()<CR> + +    if <SID>Finalised() +	call <SID>FinaliseMenu() +    else +	call <SID>UnfinaliseMenu() +    endif +endfunction + +augroup changelogMenu +au BufEnter * if &filetype == "debchangelog" | call <SID>MakeMenu() | endif +au BufLeave * if &filetype == "debchangelog" | silent! aunmenu Changelog | endif +augroup END + +" }}} +" {{{1 folding + +" look for an author name in the [zonestart zoneend] lines searching backward +function! s:getAuthor(zonestart, zoneend) +  let linepos = a:zoneend +  while linepos >= a:zonestart +    let line = getline(linepos) +    if line =~ '^ --' +      return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '') +    endif +    let linepos -= 1 +  endwhile +  return '[unknown]' +endfunction + +" Look for a package source name searching backward from the givenline and +" returns it. Return the empty string if the package name can't be found +function! DebGetPkgSrcName(lineno) +  let lineidx = a:lineno +  let pkgname = '' +  while lineidx > 0 +    let curline = getline(lineidx) +    if curline =~ '^\S' +      let pkgname = matchlist(curline, '^\(\S\+\).*$')[1] +      break +    endif +    let lineidx = lineidx - 1 +  endwhile +  return pkgname +endfunction + +function! DebChangelogFoldText() +  if v:folddashes == '-'  " changelog entry fold +    return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' ' +  endif +  return foldtext() +endfunction + +function! DebGetChangelogFold(lnum) +  let line = getline(a:lnum) +  if line =~ '^\w\+' +    return '>1' " beginning of a changelog entry +  endif +  if line =~ '^\s\+\[.*\]' +    return '>2' " beginning of an author-specific chunk +  endif +  if line =~ '^ --' +    return '1' +  endif +  return '=' +endfunction + +if exists("g:debchangelog_fold_enable") +  silent! foldopen!   " unfold the entry the cursor is on (usually the first one) +endif + +" }}} + +" {{{1 omnicompletion for Closes: # + +if !exists('g:debchangelog_listbugs_severities') +  let g:debchangelog_listbugs_severities = 'critical,grave,serious,important,normal,minor,wishlist' +endif + +fun! DebCompleteBugs(findstart, base) +  if a:findstart +    let line = getline('.') + +    " try to detect whether this is closes: or lp: +    let g:debchangelog_complete_mode = 'debbugs' +    let try_colidx = col('.') - 1 +    let colidx = -1 " default to no-completion-possible + +    while try_colidx > 0 && line[try_colidx - 1] =~ '\s\|\d\|#\|,\|:' +      let try_colidx = try_colidx - 1 +      if line[try_colidx] == '#' && colidx == -1 +        " found hash, where we complete from: +        let colidx = try_colidx +      elseif line[try_colidx] == ':' +        if try_colidx > 1 && strpart(line, try_colidx - 2, 3) =~ '\clp:' +          let g:debchangelog_complete_mode = 'lp' +        endif +        break +      endif +    endwhile +    return colidx +  else " return matches: +    let bug_lines = [] +    if g:debchangelog_complete_mode == 'lp' +      if ! has('python') +        echoerr 'vim must be built with Python support to use LP bug completion' +        return +      endif +      let pkgsrc = DebGetPkgSrcName(line('.')) +      python << EOF +import vim +try: +    from launchpadlib.launchpad import Launchpad +    from lazr.restfulclient.errors import HTTPError +    # login anonymously +    lp = Launchpad.login_anonymously('debchangelog.vim', 'production') +    ubuntu = lp.distributions['ubuntu'] +    try: +        sp = ubuntu.getSourcePackage(name=vim.eval('pkgsrc')) +        status = ('New', 'Incomplete', 'Confirmed', 'Triaged', +                  'In Progress', 'Fix Committed') +        tasklist = sp.searchTasks(status=status, order_by='id') +        liststr = '[' +        for task in tasklist: +            bug = task.bug +            liststr += "'#%d - %s'," % (bug.id, bug.title.replace('\'', '\'\'')) +        liststr += ']' +        vim.command('silent let bug_lines = %s' % liststr.encode('utf-8')) +    except HTTPError: +        pass +except ImportError: +    vim.command('echoerr \'python-launchpadlib >= 1.5.4 needs to be installed to use Launchpad bug completion\'') +EOF +    else +      if ! filereadable('/usr/sbin/apt-listbugs') +        echoerr 'apt-listbugs not found, you should install it to use Closes bug completion' +        return +      endif +      let pkgsrc = DebGetPkgSrcName(line('.')) +      let listbugs_output = system('/usr/sbin/apt-listbugs -s ' . g:debchangelog_listbugs_severities . ' list ' . pkgsrc . ' | grep "^ #" 2> /dev/null') +      let bug_lines = split(listbugs_output, '\n') +    endif +    let completions = [] +    for line in bug_lines +      let parts = matchlist(line, '^\s*\(#\S\+\)\s*-\s*\(.*\)$') +      " filter only those which match a:base: +      if parts[1] !~ "^" . a:base +        continue +      endif +      let completion = {} +      let completion['word'] = parts[1] +      let completion['menu'] = parts[2] +      let completion['info'] = parts[0] +      let completions += [completion] +    endfor +    return completions +  endif +endfun + +setlocal omnifunc=DebCompleteBugs + +" }}} + +" vim: set foldmethod=marker: + +endif diff --git a/ftplugin/debcontrol.vim b/ftplugin/debcontrol.vim new file mode 100644 index 00000000..8b55189b --- /dev/null +++ b/ftplugin/debcontrol.vim @@ -0,0 +1,74 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file (GUI menu and folding) +" Language:     Debian control files +" Maintainer:   Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> +" Former Maintainer:    Pierre Habouzit <madcoder@debian.org> +" Last Change:  2008-03-08 +" URL:          http://hg.debian.org/hg/pkg-vim/vim/raw-file/tip/runtime/ftplugin/debcontrol.vim + +" Do these settings once per buffer +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin=1 + +" {{{1 Local settings (do on every load) +if exists("g:debcontrol_fold_enable") +  setlocal foldmethod=expr +  setlocal foldexpr=DebControlFold(v:lnum) +  setlocal foldtext=DebControlFoldText() +endif +setlocal textwidth=0 + +" Clean unloading +let b:undo_ftplugin = "setlocal tw< foldmethod< foldexpr< foldtext<" + +" }}}1 + +" {{{1 folding + +function! s:getField(f, lnum) +  let line = getline(a:lnum) +  let fwdsteps = 0 +  while line !~ '^'.a:f.':' +    let fwdsteps += 1 +    let line = getline(a:lnum + fwdsteps) +    if line == '' +      return 'unknown' +    endif +  endwhile +  return substitute(line, '^'.a:f.': *', '', '') +endfunction + +function! DebControlFoldText() +  if v:folddashes == '-'  " debcontrol entry fold +    let type = substitute(getline(v:foldstart), ':.*', '', '') +    if type == 'Source' +      let ftext = substitute(foldtext(), ' *Source: *', ' ', '') +      return ftext . ' -- ' . s:getField('Maintainer', v:foldstart) . ' ' +    endif +    let arch  = s:getField('Architecture', v:foldstart) +    let ftext = substitute(foldtext(), ' *Package: *', ' [' . arch . '] ', '') +    return ftext . ': ' . s:getField('Description', v:foldstart) . ' ' +  endif +  return foldtext() +endfunction + +function! DebControlFold(l) + +  " This is for not merging blank lines around folds to them +  if getline(a:l) =~ '^Source:' +    return '>1' +  endif + +  if getline(a:l) =~ '^Package:' +    return '>1' +  endif + +  return '=' +endfunction + +" }}}1 + +endif diff --git a/ftplugin/denyhosts.vim b/ftplugin/denyhosts.vim new file mode 100644 index 00000000..caafe2ea --- /dev/null +++ b/ftplugin/denyhosts.vim @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2007-12-04 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/dictconf.vim b/ftplugin/dictconf.vim new file mode 100644 index 00000000..9a56e7cb --- /dev/null +++ b/ftplugin/dictconf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             dict(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/dictdconf.vim b/ftplugin/dictdconf.vim new file mode 100644 index 00000000..e83aa3c9 --- /dev/null +++ b/ftplugin/dictdconf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             dictd(8) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/diff.vim b/ftplugin/diff.vim new file mode 100644 index 00000000..cc2a10f6 --- /dev/null +++ b/ftplugin/diff.vim @@ -0,0 +1,19 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Diff +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2005 Jul 27 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl modeline<" + +" Don't use modelines in a diff, they apply to the diffed file +setlocal nomodeline + +endif diff --git a/ftplugin/dircolors.vim b/ftplugin/dircolors.vim new file mode 100644 index 00000000..75cd7eac --- /dev/null +++ b/ftplugin/dircolors.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             dircolors(1) input file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/docbk.vim b/ftplugin/docbk.vim new file mode 100644 index 00000000..9a9e7c9b --- /dev/null +++ b/ftplugin/docbk.vim @@ -0,0 +1,28 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	    DocBook +" Maintainer:	    Nikolai Weibull <now@bitwi.se> +" Latest Revision:  2012-04-25 + +if exists('b:did_ftplugin') +  finish +endif + +if !exists('b:docbk_type') +  if expand('%:e') == 'sgml' +    let b:docbk_type = 'sgml' +  else +    let b:docbk_type = 'xml' +  endif +endif + +if b:docbk_type == 'sgml' +  runtime! ftplugin/sgml.vim ftplugin/sgml_*.vim ftplugin/sgml/*.vim +else +  runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +endif + +let b:undo_ftplugin = "unlet! b:docbk_type" + +endif diff --git a/ftplugin/dockerfile.vim b/ftplugin/dockerfile.vim new file mode 100644 index 00000000..a736e552 --- /dev/null +++ b/ftplugin/dockerfile.vim @@ -0,0 +1,20 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	Dockerfile +" Maintainer:   Honza Pokorny <http://honza.ca> +" Last Change:	2014 Aug 29 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl commentstring<" + +setlocal commentstring=#\ %s + +endif diff --git a/ftplugin/dosbatch.vim b/ftplugin/dosbatch.vim new file mode 100644 index 00000000..8c89101f --- /dev/null +++ b/ftplugin/dosbatch.vim @@ -0,0 +1,34 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:    MS-DOS .bat files +" Maintainer:  Mike Williams <mrw@eandem.co.uk> +" Last Change: 8th May 2012 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" BAT comment formatting +setlocal comments=b:rem,b:@rem,b:REM,b:@REM,::: +setlocal formatoptions-=t formatoptions+=rol + +" Define patterns for the browse file filter +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "DOS Batch Files (*.bat, *.cmd)\t*.bat;*.cmd\nAll Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setlocal comments< formatoptions<" +    \ . "| unlet! b:browsefiler" + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/dosini.vim b/ftplugin/dosini.vim new file mode 100644 index 00000000..a0c1db92 --- /dev/null +++ b/ftplugin/dosini.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Configuration File (ini file) for MSDOS/MS Windows +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:; commentstring=;\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/dtd.vim b/ftplugin/dtd.vim new file mode 100644 index 00000000..e6c717e8 --- /dev/null +++ b/ftplugin/dtd.vim @@ -0,0 +1,44 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	dtd +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal commentstring=<!--%s--> +setlocal comments=s:<!--,m:\ \ \ \ \ ,e:--> + +setlocal formatoptions-=t +if !exists("g:ft_dtd_autocomment") || (g:ft_dtd_autocomment == 1) +    setlocal formatoptions+=croql +endif + +if exists("loaded_matchit") +    let b:match_words = '<!--:-->,<!:>' +endif + +" Change the :browse e filter to primarily show Java-related files. +if has("gui_win32") +    let  b:browsefilter="DTD Files (*.dtd)\t*.dtd\n" . +		\	"XML Files (*.xml)\t*.xml\n" . +		\	"All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions<" . +		\     " | unlet! b:matchwords b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/dtrace.vim b/ftplugin/dtrace.vim new file mode 100644 index 00000000..03bbda44 --- /dev/null +++ b/ftplugin/dtrace.vim @@ -0,0 +1,44 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Language: D script as described in "Solaris Dynamic Tracing Guide", +"           http://docs.sun.com/app/docs/doc/817-6223 +" Last Change: 2008/03/20 +" Version: 1.2 +" Maintainer: Nicolas Weber <nicolasweber@gmx.de> + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< com< cms< isk<" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/ + +" dtrace uses /* */ comments. Set this explicitly, just in case the user +" changed this (/*%s*/ is the default) +setlocal commentstring=/*%s*/ + +setlocal iskeyword+=@,$ + +" When the matchit plugin is loaded, this makes the % command skip parens and +" braces in comments. +let b:match_words = &matchpairs +let b:match_skip = 's:comment\|string\|character' + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif 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 diff --git a/ftplugin/elinks.vim b/ftplugin/elinks.vim new file mode 100644 index 00000000..fdd8daf2 --- /dev/null +++ b/ftplugin/elinks.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             elinks(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/erlang.vim b/ftplugin/erlang.vim new file mode 100644 index 00000000..ddf27709 --- /dev/null +++ b/ftplugin/erlang.vim @@ -0,0 +1,91 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim ftplugin file +" Language:     Erlang +" Author:       Oscar Hellström <oscar@oscarh.net> +" Contributors: Ricardo Catalinas Jiménez <jimenezrick@gmail.com> +"               Eduardo Lopez (http://github.com/tapichu) +" License:      Vim license +" Version:      2012/01/25 + +if exists('b:did_ftplugin') +	finish +else +	let b:did_ftplugin = 1 +endif + +if exists('s:did_function_definitions') +	call s:SetErlangOptions() +	finish +else +	let s:did_function_definitions = 1 +endif + +let s:cpo_save = &cpo +set cpo&vim + +if !exists('g:erlang_keywordprg') +	let g:erlang_keywordprg = 'erl -man' +endif + +if !exists('g:erlang_folding') +	let g:erlang_folding = 0 +endif + +let s:erlang_fun_begin = '^\a\w*(.*$' +let s:erlang_fun_end   = '^[^%]*\.\s*\(%.*\)\?$' + +function s:SetErlangOptions() +	if g:erlang_folding +		setlocal foldmethod=expr +		setlocal foldexpr=GetErlangFold(v:lnum) +		setlocal foldtext=ErlangFoldText() +	endif + +	setlocal comments=:%%%,:%%,:% +	setlocal commentstring=%%s + +	setlocal formatoptions+=ro +	let &l:keywordprg = g:erlang_keywordprg +endfunction + +function GetErlangFold(lnum) +	let lnum = a:lnum +	let line = getline(lnum) + +	if line =~ s:erlang_fun_end +		return '<1' +	endif + +	if line =~ s:erlang_fun_begin && foldlevel(lnum - 1) == 1 +		return '1' +	endif + +	if line =~ s:erlang_fun_begin +		return '>1' +	endif + +	return '=' +endfunction + +function ErlangFoldText() +	let line    = getline(v:foldstart) +	let foldlen = v:foldend - v:foldstart + 1 +	let lines   = ' ' . foldlen . ' lines: ' . substitute(line, "[\ \t]*", '', '') +	if foldlen < 10 +		let lines = ' ' . lines +	endif +	let retval = '+' . v:folddashes . lines + +	return retval +endfunction + +call s:SetErlangOptions() + +let b:undo_ftplugin = "setlocal foldmethod< foldexpr< foldtext<" +	\ . " comments< commentstring< formatoptions<" + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/eruby.vim b/ftplugin/eruby.vim index bf380e8a..3e3b1c31 100644 --- a/ftplugin/eruby.vim +++ b/ftplugin/eruby.vim @@ -1,3 +1,109 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:		eRuby +" Maintainer:		Tim Pope <vimNOSPAM@tpope.org> +" URL:			https://github.com/vim-ruby/vim-ruby +" Release Coordinator:	Doug Kearns <dougkearns@gmail.com> + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "All Files (*.*)\t*.*\n" +let s:match_words = "" + +if !exists("g:eruby_default_subtype") +  let g:eruby_default_subtype = "html" +endif + +if &filetype =~ '^eruby\.' +  let b:eruby_subtype = matchstr(&filetype,'^eruby\.\zs\w\+') +elseif !exists("b:eruby_subtype") +  let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") +  let b:eruby_subtype = matchstr(s:lines,'eruby_subtype=\zs\w\+') +  if b:eruby_subtype == '' +    let b:eruby_subtype = matchstr(substitute(expand("%:t"),'\c\%(\.erb\|\.eruby\|\.erubis\)\+$','',''),'\.\zs\w\+\%(\ze+\w\+\)\=$') +  endif +  if b:eruby_subtype == 'rhtml' +    let b:eruby_subtype = 'html' +  elseif b:eruby_subtype == 'rb' +    let b:eruby_subtype = 'ruby' +  elseif b:eruby_subtype == 'yml' +    let b:eruby_subtype = 'yaml' +  elseif b:eruby_subtype == 'js' +    let b:eruby_subtype = 'javascript' +  elseif b:eruby_subtype == 'txt' +    " Conventional; not a real file type +    let b:eruby_subtype = 'text' +  elseif b:eruby_subtype == '' +    let b:eruby_subtype = g:eruby_default_subtype +  endif +endif + +if exists("b:eruby_subtype") && b:eruby_subtype != '' +  exe "runtime! ftplugin/".b:eruby_subtype.".vim ftplugin/".b:eruby_subtype."_*.vim ftplugin/".b:eruby_subtype."/*.vim" +else +  runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +endif +unlet! b:did_ftplugin + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +  let s:undo_ftplugin = b:undo_ftplugin +  unlet b:undo_ftplugin +endif +if exists("b:browsefilter") +  let s:browsefilter = b:browsefilter +  unlet b:browsefilter +endif +if exists("b:match_words") +  let s:match_words = b:match_words +  unlet b:match_words +endif + +runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim +let b:did_ftplugin = 1 + +" Combine the new set of values with those previously included. +if exists("b:undo_ftplugin") +  let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin +endif +if exists ("b:browsefilter") +  let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter +endif +if exists("b:match_words") +  let s:match_words = b:match_words . ',' . s:match_words +endif + +" Change the browse dialog on Win32 to show mainly eRuby-related files +if has("gui_win32") +  let b:browsefilter="eRuby Files (*.erb, *.rhtml)\t*.erb;*.rhtml\n" . s:browsefilter +endif + +" Load the combined list of match_words for matchit.vim +if exists("loaded_matchit") +  let b:match_words = s:match_words +endif + +" TODO: comments= +setlocal commentstring=<%#%s%> + +let b:undo_ftplugin = "setl cms< " +      \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim: nowrap sw=2 sts=2 ts=8: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1  " Vim filetype plugin diff --git a/ftplugin/eterm.vim b/ftplugin/eterm.vim new file mode 100644 index 00000000..5d5ad004 --- /dev/null +++ b/ftplugin/eterm.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             eterm(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=:# commentstring=#\ %s include=^\\s*include +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/falcon.vim b/ftplugin/falcon.vim new file mode 100644 index 00000000..1e59f3c0 --- /dev/null +++ b/ftplugin/falcon.vim @@ -0,0 +1,52 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     Falcon +" Author:       Steven Oliver <oliver.steven@gmail.com> +" Copyright:    Copyright (c) 2009-2013 Steven Oliver +" License:      You may redistribute this under the same terms as Vim itself +" -------------------------------------------------------------------------- + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal softtabstop=4 shiftwidth=4 fileencoding=utf-8 +setlocal suffixesadd=.fal,.ftd + +" Matchit support +if exists("loaded_matchit") && !exists("b:match_words") +  let b:match_ignorecase = 0 + +  let b:match_words = +	\ '\<\%(if\|case\|while\|until\|for\|do\|class\)\>=\@!' . +	\ ':' . +	\ '\<\%(else\|elsif\|when\)\>' . +	\ ':' . +	\ '\<end\>' . +	\ ',{:},\[:\],(:)' +endif + +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +" Windows allows you to filter the open file dialog +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "Falcon Source Files (*.fal *.ftd)\t*.fal;*.ftd\n" . +                     \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setlocal tabstop< shiftwidth< expandtab< fileencoding<" +	\ . " suffixesadd< comments<" +	\ . "| unlet! b:browsefiler" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: set sw=4 sts=4 et tw=80 : + +endif diff --git a/ftplugin/fetchmail.vim b/ftplugin/fetchmail.vim new file mode 100644 index 00000000..2c9315ba --- /dev/null +++ b/ftplugin/fetchmail.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             fetchmail(1) RC File +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/flexwiki.vim b/ftplugin/flexwiki.vim new file mode 100644 index 00000000..10660ead --- /dev/null +++ b/ftplugin/flexwiki.vim @@ -0,0 +1,63 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     FlexWiki, http://www.flexwiki.com/ +" Maintainer:   George V. Reilly  <george@reilly.org> +" Home:         http://www.georgevreilly.com/vim/flexwiki/ +" Other Home:   http://www.vim.org/scripts/script.php?script_id=1529 +" Author:       George V. Reilly +" Filenames:    *.wiki +" Last Change: Wed Apr 26 11:00 PM 2006 P +" Version:      0.3 + +if exists("b:did_ftplugin") +  finish +endif + +let b:did_ftplugin = 1  " Don't load another plugin for this buffer + +" Reset the following options to undo this plugin. +let b:undo_ftplugin = "setl tw< wrap< lbr< et< ts< fenc< bomb< ff<" + +" Allow lines of unlimited length. Do NOT want automatic linebreaks, +" as a newline starts a new paragraph in FlexWiki. +setlocal textwidth=0 +" Wrap long lines, rather than using horizontal scrolling. +setlocal wrap +" Wrap at a character in 'breakat' rather than at last char on screen +setlocal linebreak +" Don't transform <TAB> characters into spaces, as they are significant +" at the beginning of the line for numbered and bulleted lists. +setlocal noexpandtab +" 4-char tabstops, per flexwiki.el +setlocal tabstop=4 +" Save *.wiki files in UTF-8 +setlocal fileencoding=utf-8 +" Add the UTF-8 Byte Order Mark to the beginning of the file +setlocal bomb +" Save <EOL>s as \n, not \r\n +setlocal fileformat=unix + +if exists("g:flexwiki_maps") +  " Move up and down by display lines, to account for screen wrapping +  " of very long lines +  nmap <buffer> <Up>   gk +  nmap <buffer> k      gk +  vmap <buffer> <Up>   gk +  vmap <buffer> k      gk + +  nmap <buffer> <Down> gj +  nmap <buffer> j      gj +  vmap <buffer> <Down> gj +  vmap <buffer> j      gj + +  " for earlier versions - for when 'wrap' is set +  imap <buffer> <S-Down>   <C-o>gj +  imap <buffer> <S-Up>     <C-o>gk +  if v:version >= 700 +      imap <buffer> <Down>   <C-o>gj +      imap <buffer> <Up>     <C-o>gk +  endif +endif + +endif diff --git a/ftplugin/fortran.vim b/ftplugin/fortran.vim new file mode 100644 index 00000000..ebb5f4f2 --- /dev/null +++ b/ftplugin/fortran.vim @@ -0,0 +1,136 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim settings file +" Language:	Fortran 2008 (and older: Fortran 2003, 95, 90, 77, 66) +" Version:	0.50 +" Last Change:	2015 Nov. 30 +" Maintainer:	Ajit J. Thakkar <ajit@unb.ca>; <http://www2.unb.ca/~ajit/> +" Usage:	For instructions, do :help fortran-plugin from Vim +" Credits: +" Useful suggestions were made by Stefano Zacchiroli, Hendrik Merx, Ben +" Fritz, and David Barnett. + +" Only do these settings when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +let s:cposet=&cpoptions +set cpoptions&vim + +" Don't do other file type settings for this buffer +let b:did_ftplugin = 1 + +" Determine whether this is a fixed or free format source file +" if this hasn't been done yet using the priority: +" buffer-local value +" > global value +" > file extension as in Intel ifort, gcc (gfortran), NAG, Pathscale, and Cray compilers +if !exists("b:fortran_fixed_source") +  if exists("fortran_free_source") +    " User guarantees free source form +    let b:fortran_fixed_source = 0 +  elseif exists("fortran_fixed_source") +    " User guarantees fixed source form +    let b:fortran_fixed_source = 1 +  elseif expand("%:e") ==? "f\<90\|95\|03\|08\>" +    " Free-form file extension defaults as in Intel ifort, gcc(gfortran), NAG, Pathscale, and Cray compilers +    let b:fortran_fixed_source = 0 +  elseif expand("%:e") ==? "f\|f77\|for" +    " Fixed-form file extension defaults +    let b:fortran_fixed_source = 1 +  else +    " Modern fortran still allows both fixed and free source form +    " Assume fixed source form unless signs of free source form +    " are detected in the first five columns of the first s:lmax lines. +    " Detection becomes more accurate and time-consuming if more lines +    " are checked. Increase the limit below if you keep lots of comments at +    " the very top of each file and you have a fast computer. +    let s:lmax = 500 +    if ( s:lmax > line("$") ) +      let s:lmax = line("$") +    endif +    let b:fortran_fixed_source = 1 +    let s:ln=1 +    while s:ln <= s:lmax +      let s:test = strpart(getline(s:ln),0,5) +      if s:test !~ '^[Cc*]' && s:test !~ '^ *[!#]' && s:test =~ '[^ 0-9\t]' && s:test !~ '^[ 0-9]*\t' +	let b:fortran_fixed_source = 0 +	break +      endif +      let s:ln = s:ln + 1 +    endwhile +    unlet! s:lmax s:ln s:test +  endif +endif + +" Set comments and textwidth according to source type +if (b:fortran_fixed_source == 1) +  setlocal comments=:!,:*,:C +  " Fixed format requires a textwidth of 72 for code +  setlocal tw=72 +  " If you need to add "&" on continued lines so that the code is +  " compatible with both free and fixed format, then you should do so +  " in column 73 and uncomment the next line +  " setlocal tw=73 +else +  setlocal comments=:! +  " Free format allows a textwidth of 132 +  setlocal tw=132 +endif + +" Set commentstring for foldmethod=marker +setlocal cms=!%s + +" Tabs are not a good idea in Fortran so the default is to expand tabs +if !exists("fortran_have_tabs") +  setlocal expandtab +endif + +" Set 'formatoptions' to break text lines +setlocal fo+=t + +setlocal include=^\\c#\\=\\s*include\\s\\+ +setlocal suffixesadd+=.f08,.f03,.f95,.f90,.for,.f,.F,.f77,.ftn,.fpp + +" Define patterns for the matchit plugin +if !exists("b:match_words") +  let s:notend = '\%(\<end\s\+\)\@<!' +  let s:notselect = '\%(\<select\s\+\)\@<!' +  let s:notelse = '\%(\<end\s\+\|\<else\s\+\)\@<!' +  let s:notprocedure = '\%(\s\+procedure\>\)\@!' +  let b:match_ignorecase = 1 +  let b:match_words = +    \ '(:),' . +    \ '\<select\s*case\>:' . s:notselect. '\<case\>:\<end\s*select\>,' . +    \ s:notelse . '\<if\s*(.\+)\s*then\>:' . +    \ '\<else\s*\%(if\s*(.\+)\s*then\)\=\>:\<end\s*if\>,'. +    \ 'do\s\+\(\d\+\):\%(^\s*\)\@<=\1\s,'. +    \ s:notend . '\<do\>:\<end\s*do\>,'. +    \ s:notelse . '\<where\>:\<elsewhere\>:\<end\s*where\>,'. +    \ s:notend . '\<type\s*[^(]:\<end\s*type\>,'. +    \ s:notend . '\<forall\>:\<end\s*forall\>,'. +    \ s:notend . '\<associate\>:\<end\s*associate\>,'. +    \ s:notend . '\<enum\>:\<end\s*enum\>,'. +    \ s:notend . '\<interface\>:\<end\s*interface\>,'. +    \ s:notend . '\<subroutine\>:\<end\s*subroutine\>,'. +    \ s:notend . '\<function\>:\<end\s*function\>,'. +    \ s:notend . '\<module\>' . s:notprocedure . ':\<end\s*module\>,'. +    \ s:notend . '\<program\>:\<end\s*program\>' +endif + +" File filters for :browse e +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "Fortran Files (*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn)\t*.f;*.for;*.f77;*.f90;*.f95;*.f03;*.f08;*.fpp;*.ftn\n" . +    \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl fo< com< tw< cms< et< inc< sua<" +	\ . "| unlet! b:match_ignorecase b:match_words b:browsefilter" + +let &cpoptions=s:cposet +unlet s:cposet + +" vim:sw=2 + +endif diff --git a/ftplugin/framescript.vim b/ftplugin/framescript.vim new file mode 100644 index 00000000..9d1d23a1 --- /dev/null +++ b/ftplugin/framescript.vim @@ -0,0 +1,34 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim ftplugin file +" Language:             FrameScript +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-19 + +let s:cpo_save = &cpo +set cpo&vim + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl com< cms< fo< inc< | unlet! b:matchwords" + +setlocal comments=s1:/*,mb:*,ex:*/,:// commentstring=/*\ %s\ */ +setlocal formatoptions-=t formatoptions+=croql +setlocal include=^\\s*<#Include + +if exists("loaded_matchit") +  let s:not_end = '\c\%(\<End\)\@<!' +  let b:match_words = +        \ s:not_end . '\<If\>:\c\<ElseIf\>:\c\<Else\>:\c\<EndIf\>,' . +        \ s:not_end . '\<Loop\>:\c\<EndLoop\>' . +        \ s:not_end . '\<Sub\>:\c\<EndSub\>' +  unlet s:not_end +endif + +let &cpo = s:cpo_save  +unlet s:cpo_save + +endif diff --git a/ftplugin/fvwm.vim b/ftplugin/fvwm.vim new file mode 100644 index 00000000..1fa73d99 --- /dev/null +++ b/ftplugin/fvwm.vim @@ -0,0 +1,18 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Created	: Tue 09 May 2006 02:07:31 PM CDT +" Modified	: Tue 09 May 2006 02:07:31 PM CDT +" Author	: Gautam Iyer <gi1242@users.sourceforge.net> +" Description	: ftplugin for fvwm config files + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +endif diff --git a/ftplugin/git.vim b/ftplugin/git.vim index 38b9493b..5c7dbc4a 100644 --- a/ftplugin/git.vim +++ b/ftplugin/git.vim @@ -1,3 +1,48 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	generic git output +" 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 + +if !exists('b:git_dir') +  if expand('%:p') =~# '[\/]\.git[\/]modules[\/]' +    " Stay out of the way +  elseif expand('%:p') =~# '[\/]\.git[\/]worktrees' +    let b:git_dir = matchstr(expand('%:p'),'.*\.git[\/]worktrees[\/][^\/]\+\>') +  elseif expand('%:p') =~# '\.git\>' +    let b:git_dir = matchstr(expand('%:p'),'.*\.git\>') +  elseif $GIT_DIR != '' +    let b:git_dir = $GIT_DIR +  endif +  if (has('win32') || has('win64')) && exists('b:git_dir') +    let b:git_dir = substitute(b:git_dir,'\\','/','g') +  endif +endif + +if exists('*shellescape') && exists('b:git_dir') && b:git_dir != '' +  if b:git_dir =~# '/\.git$' " Not a bare repository +    let &l:path = escape(fnamemodify(b:git_dir,':h'),'\, ').','.&l:path +  endif +  let &l:path = escape(b:git_dir,'\, ').','.&l:path +  let &l:keywordprg = 'git --git-dir='.shellescape(b:git_dir).' show' +else +  setlocal keywordprg=git\ show +endif +if has('gui_running') +  let &l:keywordprg = substitute(&l:keywordprg,'^git\>','git --no-pager','') +endif + +setlocal includeexpr=substitute(v:fname,'^[^/]\\+/','','') +let b:undo_ftplugin = "setl keywordprg< path< includeexpr<" + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1  " Vim filetype plugin diff --git a/ftplugin/gitcommit.vim b/ftplugin/gitcommit.vim index dc6a581a..7b41a2dd 100644 --- a/ftplugin/gitcommit.vim +++ b/ftplugin/gitcommit.vim @@ -1,3 +1,71 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	git commit file +" 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 + +runtime! ftplugin/git.vim +let b:did_ftplugin = 1 + +setlocal comments=:# commentstring=#\ %s +setlocal nomodeline tabstop=8 formatoptions+=tl textwidth=72 +setlocal formatoptions-=c formatoptions-=r formatoptions-=o formatoptions-=q +let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions< tw< com< cms<' + +if exists("g:no_gitcommit_commands") || v:version < 700 +  finish +endif + +if !exists("b:git_dir") +  let b:git_dir = expand("%:p:h") +endif + +command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>) + +let b:undo_ftplugin = b:undo_ftplugin . "|delc DiffGitCached" + +function! s:diffcomplete(A,L,P) +  let args = "" +  if a:P <= match(a:L." -- "," -- ")+3 +    let args = args . "-p\n--stat\n--shortstat\n--summary\n--patch-with-stat\n--no-renames\n-B\n-M\n-C\n" +  end +  if exists("b:git_dir") && a:A !~ '^-' +    let tree = fnamemodify(b:git_dir,':h') +    if strpart(getcwd(),0,strlen(tree)) == tree +      let args = args."\n".system("git diff --cached --name-only") +    endif +  endif +  return args +endfunction + +function! s:gitdiffcached(bang,gitdir,...) +  let tree = fnamemodify(a:gitdir,':h') +  let name = tempname() +  let git = "git" +  if strpart(getcwd(),0,strlen(tree)) != tree +    let git .= " --git-dir=".(exists("*shellescape") ? shellescape(a:gitdir) : '"'.a:gitdir.'"') +  endif +  if a:0 +    let extra = join(map(copy(a:000),exists("*shellescape") ? 'shellescape(v:val)' : "'\"'.v:val.'\"'")) +  else +    let extra = "-p --stat=".&columns +  endif +  call system(git." diff --cached --no-color --no-ext-diff ".extra." > ".(exists("*shellescape") ? shellescape(name) : name)) +  exe "pedit ".(exists("*fnameescape") ? fnameescape(name) : name) +  wincmd P +  let b:git_dir = a:gitdir +  command! -bang -bar -buffer -complete=custom,s:diffcomplete -nargs=* DiffGitCached :call s:gitdiffcached(<bang>0,b:git_dir,<f-args>) +  nnoremap <buffer> <silent> q :q<CR> +  setlocal buftype=nowrite nobuflisted noswapfile nomodifiable filetype=git +endfunction + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1  " Vim filetype plugin diff --git a/ftplugin/gitconfig.vim b/ftplugin/gitconfig.vim index 23282522..07ba59d4 100644 --- a/ftplugin/gitconfig.vim +++ b/ftplugin/gitconfig.vim @@ -1,3 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	git config file +" Maintainer:	Tim Pope <vimNOSPAM@tpope.org> +" Last Change:	2009 Dec 24 + +" Only do this when not done yet for this buffer +if (exists("b:did_ftplugin")) +  finish +endif +let b:did_ftplugin = 1 + +setlocal formatoptions-=t formatoptions+=croql +setlocal comments=:#,:; commentstring=;\ %s + +let b:undo_ftplugin = "setl fo< com< cms<" + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1  " Vim filetype plugin diff --git a/ftplugin/gitrebase.vim b/ftplugin/gitrebase.vim index 032aba31..46ac97b4 100644 --- a/ftplugin/gitrebase.vim +++ b/ftplugin/gitrebase.vim @@ -1,3 +1,51 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	git rebase --interactive +" 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 + +runtime! ftplugin/git.vim +let b:did_ftplugin = 1 + +setlocal comments=:# commentstring=#\ %s formatoptions-=t +setlocal nomodeline +if !exists("b:undo_ftplugin") +  let b:undo_ftplugin = "" +endif +let b:undo_ftplugin = b:undo_ftplugin."|setl com< cms< fo< ml<" + +function! s:choose(word) +  s/^\(\w\+\>\)\=\(\s*\)\ze\x\{4,40\}\>/\=(strlen(submatch(1)) == 1 ? a:word[0] : a:word) . substitute(submatch(2),'^$',' ','')/e +endfunction + +function! s:cycle() +  call s:choose(get({'s':'edit','p':'squash','e':'reword','r':'fixup'},getline('.')[0],'pick')) +endfunction + +command! -buffer -bar Pick   :call s:choose('pick') +command! -buffer -bar Squash :call s:choose('squash') +command! -buffer -bar Edit   :call s:choose('edit') +command! -buffer -bar Reword :call s:choose('reword') +command! -buffer -bar Fixup  :call s:choose('fixup') +command! -buffer -bar Cycle  :call s:cycle() +" The above are more useful when they are mapped; for example: +"nnoremap <buffer> <silent> S :Cycle<CR> + +if exists("g:no_plugin_maps") || exists("g:no_gitrebase_maps") +  finish +endif + +nnoremap <buffer> <expr> K col('.') < 7 && expand('<Lt>cword>') =~ '\X' && getline('.') =~ '^\w\+\s\+\x\+\>' ? 'wK' : 'K' + +let b:undo_ftplugin = b:undo_ftplugin . "|nunmap <buffer> K" + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1  " Vim filetype plugin diff --git a/ftplugin/gitsendemail.vim b/ftplugin/gitsendemail.vim index 69e0360e..36e809a7 100644 --- a/ftplugin/gitsendemail.vim +++ b/ftplugin/gitsendemail.vim @@ -1,3 +1,13 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	git send-email message +" Maintainer:	Tim Pope <vimNOSPAM@tpope.org> +" Last Change:	2009 Dec 24 + +runtime! ftplugin/mail.vim + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'git') == -1  " Vim filetype plugin diff --git a/ftplugin/go.vim b/ftplugin/go.vim new file mode 100644 index 00000000..3e3f3d2b --- /dev/null +++ b/ftplugin/go.vim @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Go +" Maintainer:	David Barnett (https://github.com/google/vim-ft-go) +" Last Change:	2014 Aug 16 + +if exists('b:did_ftplugin') +  finish +endif +let b:did_ftplugin = 1 + +setlocal formatoptions-=t + +setlocal comments=s1:/*,mb:*,ex:*/,:// +setlocal commentstring=//\ %s + +let b:undo_ftplugin = 'setl fo< com< cms<' + +" vim: sw=2 sts=2 et + +endif diff --git a/ftplugin/gpg.vim b/ftplugin/gpg.vim new file mode 100644 index 00000000..4a1cb983 --- /dev/null +++ b/ftplugin/gpg.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             gpg(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/gprof.vim b/ftplugin/gprof.vim new file mode 100644 index 00000000..50f1e84a --- /dev/null +++ b/ftplugin/gprof.vim @@ -0,0 +1,36 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Language:    gprof +" Maintainer:  Dominique Pelle <dominique.pelle@gmail.com> +" Last Change: 2013 Jun 09 + +" When cursor is on one line of the gprof call graph, +" calling this function jumps to this function in the call graph. +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin=1 + +fun! <SID>GprofJumpToFunctionIndex() +  let l:line = getline('.') +  if l:line =~ '[\d\+\]$' +    " We're in a line in the call graph. +    norm! $y% +    call search('^' . escape(@", '[]'), 'sw') +    norm! zz +  elseif l:line =~ '^\(\s\+[0-9\.]\+\)\{3}\s\+' +    " We're in line in the flat profile. +    norm! 55|eby$ +    call search('^\[\d\+\].*\d\s\+' .  escape(@", '[]*.') . '\>', 'sW') +    norm! zz +  endif +endfun + +" Pressing <C-]> on a line in the gprof flat profile or in +" the call graph, jumps to the corresponding function inside +" the flat profile. +map <buffer> <silent> <C-]> :call <SID>GprofJumpToFunctionIndex()<CR> + +" vim:sw=2 fdm=indent + +endif diff --git a/ftplugin/groovy.vim b/ftplugin/groovy.vim new file mode 100644 index 00000000..f188d8d1 --- /dev/null +++ b/ftplugin/groovy.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	groovy +" Maintainer:	Justin M. Keyes <justinkz@gmail.com> +" Last Change:	2016 May 22 + +if exists('b:did_ftplugin') +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = 'setlocal commentstring<' + +setlocal commentstring=//%s + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/group.vim b/ftplugin/group.vim new file mode 100644 index 00000000..5c2c9ed9 --- /dev/null +++ b/ftplugin/group.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             group(5) user group file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments= commentstring= formatoptions-=tcroq formatoptions+=l + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/grub.vim b/ftplugin/grub.vim new file mode 100644 index 00000000..21600380 --- /dev/null +++ b/ftplugin/grub.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             grub(8) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/haml.vim b/ftplugin/haml.vim index 86df1d87..4aa69fc4 100644 --- a/ftplugin/haml.vim +++ b/ftplugin/haml.vim @@ -1,3 +1,76 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	Haml +" 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 s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +unlet! b:did_ftplugin +set matchpairs-=<:> + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +  let s:undo_ftplugin = b:undo_ftplugin +  unlet b:undo_ftplugin +endif +if exists("b:browsefilter") +  let s:browsefilter = b:browsefilter +  unlet b:browsefilter +endif +if exists("b:match_words") +  let s:match_words = b:match_words +  unlet b:match_words +endif + +runtime! ftplugin/ruby.vim ftplugin/ruby_*.vim ftplugin/ruby/*.vim +let b:did_ftplugin = 1 + +" Combine the new set of values with those previously included. +if exists("b:undo_ftplugin") +  let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin +endif +if exists ("b:browsefilter") +  let s:browsefilter = substitute(b:browsefilter,'\cAll Files (\*\.\*)\t\*\.\*\n','','') . s:browsefilter +endif +if exists("b:match_words") +  let s:match_words = b:match_words . ',' . s:match_words +endif + +" Change the browse dialog on Win32 to show mainly Haml-related files +if has("gui_win32") +  let b:browsefilter="Haml Files (*.haml)\t*.haml\nSass Files (*.sass)\t*.sass\n" . s:browsefilter +endif + +" Load the combined list of match_words for matchit.vim +if exists("loaded_matchit") +  let b:match_words = s:match_words +endif + +setlocal comments= commentstring=-#\ %s + +let b:undo_ftplugin = "setl cms< com< " +      \ " | unlet! b:browsefilter b:match_words | " . s:undo_ftplugin + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:set sw=2: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haml') == -1  " Vim filetype plugin diff --git a/ftplugin/hamster.vim b/ftplugin/hamster.vim new file mode 100644 index 00000000..5c7e9916 --- /dev/null +++ b/ftplugin/hamster.vim @@ -0,0 +1,66 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:    Hamster Script +" Version:     2.0.6.0 +" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com> +" Last Change: 2017 Mar 18 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl fo< com< tw< commentstring<" +	\ . "| unlet! b:match_ignorecase b:match_words b:match_skip" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Use the # sign for comments +setlocal comments=:# + +" Format comments to be up to 78 characters long +if &tw == 0 +  setlocal tw=78 +endif + +" Comments start with a double quote +setlocal commentstring=#%s + +" Move around functions. +noremap <silent><buffer> [[ :call search('^\s*sub\>', "bW")<CR> +noremap <silent><buffer> ]] :call search('^\s*sub\>', "W")<CR> +noremap <silent><buffer> [] :call search('^\s*endsub\>', "bW")<CR> +noremap <silent><buffer> ][ :call search('^\s*endsub\>', "W")<CR> + +" Move around comments +noremap <silent><buffer> ]# :call search('^\s*#\@!', "W")<CR> +noremap <silent><buffer> [# :call search('^\s*#\@!', "bW")<CR> + +" Let the matchit plugin know what items can be matched. +if exists("loaded_matchit") +  let b:match_ignorecase = 0 +  let b:match_words = +	\ '\<sub\>:\<return\>:\<endsub\>,' . +        \ '\<do\|while\|repeat\|for\>:\<break\>:\<continue\>:\<loop\|endwhile\|until\|endfor\>,' . +	\ '\<if\>:\<else\%[if]\>:\<endif\>'  + +  " Ignore ":syntax region" commands, the 'end' argument clobbers if-endif +  " let b:match_skip = 'getline(".") =~ "^\\s*sy\\%[ntax]\\s\\+region" || +  "	\ synIDattr(synID(line("."),col("."),1),"name") =~? "comment\\|string"' +endif + +setlocal ignorecase +let &cpo = s:cpo_save +unlet s:cpo_save +setlocal cpo+=M		" makes \%( match \) + +endif diff --git a/ftplugin/haskell.vim b/ftplugin/haskell.vim index b1028620..8694e6cc 100644 --- a/ftplugin/haskell.vim +++ b/ftplugin/haskell.vim @@ -1,3 +1,27 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Haskell +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'haskell') == -1  if exists("g:loaded_haskellvim_haskell") diff --git a/ftplugin/help.vim b/ftplugin/help.vim new file mode 100644 index 00000000..758d3956 --- /dev/null +++ b/ftplugin/help.vim @@ -0,0 +1,26 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Vim help file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl fo< tw< cole< cocu<" + +setlocal formatoptions+=tcroql textwidth=78 +if has("conceal") +  setlocal cole=2 cocu=nc +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/hgcommit.vim b/ftplugin/hgcommit.vim new file mode 100644 index 00000000..01d3c643 --- /dev/null +++ b/ftplugin/hgcommit.vim @@ -0,0 +1,20 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	hg (Mercurial) commit file +" Maintainer:	Ken Takata <kentkt at csc dot jp> +" Last Change:	2016 Jan 6 +" Filenames:	hg-editor-*.txt +" License:	VIM License +" URL:		https://github.com/k-takata/hg-vim + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +setlocal nomodeline + +let b:undo_ftplugin = 'setl modeline<' + +endif diff --git a/ftplugin/hog.vim b/ftplugin/hog.vim new file mode 100644 index 00000000..c9c494f7 --- /dev/null +++ b/ftplugin/hog.vim @@ -0,0 +1,43 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:     hog (snort.conf) +" Maintainer: . Victor Roemer, <vroemer@badsec.org>. +" Last Change:  Mar 1, 2013 + +if exists("b:did_ftplugin") +    finish +endif +let b:did_ftplugin = 1 + +let s:undo_ftplugin = "setl fo< com< cms< def< inc<" + +let s:cpo_save = &cpo +set cpo&vim + +setlocal formatoptions=croq +setlocal comments=:# +setlocal commentstring=\c#\ %s +setlocal define=\c^\s\{-}var +setlocal include=\c^\s\{-}include + +" Move around configurations  +let s:hog_keyword_match = '\c^\s*\<\(preprocessor\\|config\\|output\\|include\\|ipvar\\|portvar\\|var\\|dynamicpreprocessor\\|' .  +                        \ 'dynamicengine\\|dynamicdetection\\|activate\\|alert\\|drop\\|block\\|dynamic\\|log\\|pass\\|reject\\|sdrop\\|sblock\)\>' + +exec "nnoremap <buffer><silent> ]] :call search('" . s:hog_keyword_match . "', 'W' )<CR>" +exec "nnoremap <buffer><silent> [[ :call search('" . s:hog_keyword_match . "', 'bW' )<CR>" + +if exists("loaded_matchit") +    let b:match_words = +                  \ '^\s*\<\%(preprocessor\|config\|output\|include\|ipvar\|portvar' .  +                  \ '\|var\|dynamicpreprocessor\|dynamicengine\|dynamicdetection' .  +                  \ '\|activate\|alert\|drop\|block\|dynamic\|log\|pass\|reject' .  +                  \ '\|sdrop\|sblock\>\):$,\::\,:;' +    let b:match_skip = 'r:\\.\{-}$\|^\s*#.\{-}$\|^\s*$' +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/hostconf.vim b/ftplugin/hostconf.vim new file mode 100644 index 00000000..caafe2ea --- /dev/null +++ b/ftplugin/hostconf.vim @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2007-12-04 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/hostsaccess.vim b/ftplugin/hostsaccess.vim new file mode 100644 index 00000000..760679fc --- /dev/null +++ b/ftplugin/hostsaccess.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             hosts_access(5) control file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/html.vim b/ftplugin/html.vim index 782d4015..ce54f2e3 100644 --- a/ftplugin/html.vim +++ b/ftplugin/html.vim @@ -1,3 +1,58 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	html +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal matchpairs+=<:> +setlocal commentstring=<!--%s--> +setlocal comments=s:<!--,m:\ \ \ \ ,e:--> + +if exists("g:ft_html_autocomment") && (g:ft_html_autocomment == 1) +    setlocal formatoptions-=t formatoptions+=croql +endif + +if exists('&omnifunc') +  setlocal omnifunc=htmlcomplete#CompleteTags +  call htmlcomplete#DetectOmniFlavor() +endif + +" HTML:  thanks to Johannes Zellner and Benji Fisher. +if exists("loaded_matchit") +    let b:match_ignorecase = 1 +    let b:match_words = '<:>,' . +    \ '<\@<=[ou]l\>[^>]*\%(>\|$\):<\@<=li\>:<\@<=/[ou]l>,' . +    \ '<\@<=dl\>[^>]*\%(>\|$\):<\@<=d[td]\>:<\@<=/dl>,' . +    \ '<\@<=\([^/][^ \t>]*\)[^>]*\%(>\|$\):<\@<=/\1>' +endif + +" Change the :browse e filter to primarily show HTML-related files. +if has("gui_win32") +    let  b:browsefilter="HTML Files (*.html,*.htm)\t*.htm;*.html\n" . +		\	"JavaScript Files (*.js)\t*.js\n" . +		\	"Cascading StyleSheets (*.css)\t*.css\n" . +		\	"All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< matchpairs< omnifunc< comments< formatoptions<" . +    \	" | unlet! b:match_ignorecase b:match_skip b:match_words b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'html5') == -1  " Maintainer:  	othree <othree@gmail.com> diff --git a/ftplugin/htmldjango.vim b/ftplugin/htmldjango.vim new file mode 100644 index 00000000..249d6924 --- /dev/null +++ b/ftplugin/htmldjango.vim @@ -0,0 +1,17 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Django HTML template +" Maintainer:	Dave Hodder <dmh@dmh.org.uk> +" Last Change:	2007 Jan 25 + +" Only use this filetype plugin when no other was loaded. +if exists("b:did_ftplugin") +  finish +endif + +" Use HTML and Django template ftplugins. +runtime! ftplugin/html.vim +runtime! ftplugin/django.vim + +endif diff --git a/ftplugin/indent.vim b/ftplugin/indent.vim new file mode 100644 index 00000000..87f8bb48 --- /dev/null +++ b/ftplugin/indent.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             indent(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=s1:/*,mb:*,ex:*/ commentstring& +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/initex.vim b/ftplugin/initex.vim new file mode 100644 index 00000000..f1a8b992 --- /dev/null +++ b/ftplugin/initex.vim @@ -0,0 +1,43 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" filetype plugin for TeX and variants +" Language:     TeX (ft=initex) +" Maintainer:   Benji Fisher, Ph.D. <benji@member.AMS.org> +" Version:	1.0 +" Last Change:	Wed 19 Apr 2006 + +" Only do this when not done yet for this buffer. +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer. +let b:did_ftplugin = 1 + +" Avoid problems if running in 'compatible' mode. +let s:save_cpo = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< define< include< sua<" + +" Set 'comments' to format dashed lists in comments +setlocal com=sO:%\ -,mO:%\ \ ,eO:%%,:% + +" Set 'commentstring' to recognize the % comment character: +" (Thanks to Ajit Thakkar.) +setlocal cms=%%s + +" Allow "[d" to be used to find a macro definition: +let &l:define='\\\([egx]\|char\|mathchar\|count\|dimen\|muskip\|skip\|toks\)\=' +	\ .	'def\|\\font\|\\\(future\)\=let' + +" Tell Vim to recognize \input bar : +let &l:include = '\\input' +setlocal suffixesadd=.tex + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:sts=2:sw=2: + +endif diff --git a/ftplugin/ishd.vim b/ftplugin/ishd.vim new file mode 100644 index 00000000..1e34c9ba --- /dev/null +++ b/ftplugin/ishd.vim @@ -0,0 +1,37 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	InstallShield (ft=ishd) +" Maintainer:	Johannes Zellner <johannes@zellner.org> +" Last Change:	Sat, 24 May 2003 11:55:36 CEST + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +setlocal foldmethod=syntax + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +" matchit support +if exists("loaded_matchit") +    let b:match_ignorecase=0 +    let b:match_words= +    \ '\%(^\s*\)\@<=\<function\>\s\+[^()]\+\s*(:\%(^\s*\)\@<=\<begin\>\s*$:\%(^\s*\)\@<=\<return\>:\%(^\s*\)\@<=\<end\>\s*;\s*$,' . +    \ '\%(^\s*\)\@<=\<repeat\>\s*$:\%(^\s*\)\@<=\<until\>\s\+.\{-}\s*;\s*$,' . +    \ '\%(^\s*\)\@<=\<switch\>\s*(.\{-}):\%(^\s*\)\@<=\<\%(case\|default\)\>:\%(^\s*\)\@<=\<endswitch\>\s*;\s*$,' . +    \ '\%(^\s*\)\@<=\<while\>\s*(.\{-}):\%(^\s*\)\@<=\<endwhile\>\s*;\s*$,' . +    \ '\%(^\s*\)\@<=\<for\>.\{-}\<\%(to\|downto\)\>:\%(^\s*\)\@<=\<endfor\>\s*;\s*$,' . +    \ '\%(^\s*\)\@<=\<if\>\s*(.\{-})\s*then:\%(^\s*\)\@<=\<else\s*if\>\s*([^)]*)\s*then:\%(^\s*\)\@<=\<else\>:\%(^\s*\)\@<=\<endif\>\s*;\s*$' +endif + +if has("gui_win32") && !exists("b:browsefilter") +    let b:browsefilter = "InstallShield Files (*.rul)\t*.rul\n" . +		       \ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/j.vim b/ftplugin/j.vim new file mode 100644 index 00000000..935a5c46 --- /dev/null +++ b/ftplugin/j.vim @@ -0,0 +1,85 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	J +" Maintainer:	David Bürgin <676c7473@gmail.com> +" URL:		https://github.com/glts/vim-j +" Last Change:	2015-09-27 + +if exists('b:did_ftplugin') +  finish +endif +let b:did_ftplugin = 1 + +let s:save_cpo = &cpo +set cpo&vim + +setlocal iskeyword=48-57,A-Z,a-z,_ +setlocal comments=:NB. +setlocal commentstring=NB.\ %s +setlocal formatoptions-=t +setlocal matchpairs=(:) +setlocal path-=/usr/include + +" Includes. To make the shorthand form "require 'web/cgi'" work, double the +" last path component. Also strip off leading folder names like "~addons/". +setlocal include=\\v^\\s*(load\|require)\\s*'\\zs\\f+\\ze' +setlocal includeexpr=substitute(substitute(tr(v:fname,'\\','/'),'\\v^[^~][^/.]*(/[^/.]+)$','&\\1',''),'\\v^\\~[^/]+/','','') +setlocal suffixesadd=.ijs + +let b:undo_ftplugin = 'setlocal matchpairs< formatoptions< commentstring< comments< iskeyword< path< include< includeexpr< suffixesadd<' + +" Section movement with ]] ][ [[ []. The start/end patterns below are amended +" inside the function in order to avoid matching on the current cursor line. +let s:sectionstart = '\%(\s*Note\|.\{-}\<\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(:\s*0\|def\s\+0\|define\)\)\>.*' +let s:sectionend = '\s*)\s*' + +function! s:SearchSection(end, backwards, visualmode) abort +  if a:visualmode !=# '' +    normal! gv +  endif +  let l:flags = a:backwards ? 'bsW' : 'sW' +  if a:end +    call search('^' . s:sectionend . (a:backwards ? '\n\_.\{-}\%#' : '$'), l:flags) +  else +    call search('^' . s:sectionstart . (a:backwards ? '\n\_.\{-}\%#' : '$'), l:flags) +  endif +endfunction + +noremap <buffer> <silent> ]] :<C-U>call <SID>SearchSection(0, 0, '')<CR> +xnoremap <buffer> <silent> ]] :<C-U>call <SID>SearchSection(0, 0, visualmode())<CR> +sunmap <buffer> ]] +noremap <buffer> <silent> ][ :<C-U>call <SID>SearchSection(1, 0, '')<CR> +xnoremap <buffer> <silent> ][ :<C-U>call <SID>SearchSection(1, 0, visualmode())<CR> +sunmap <buffer> ][ +noremap <buffer> <silent> [[ :<C-U>call <SID>SearchSection(0, 1, '')<CR> +xnoremap <buffer> <silent> [[ :<C-U>call <SID>SearchSection(0, 1, visualmode())<CR> +sunmap <buffer> [[ +noremap <buffer> <silent> [] :<C-U>call <SID>SearchSection(1, 1, '')<CR> +xnoremap <buffer> <silent> [] :<C-U>call <SID>SearchSection(1, 1, visualmode())<CR> +sunmap <buffer> [] + +let b:undo_ftplugin .= ' | silent! execute "unmap <buffer> ]]"' +                   \ . ' | silent! execute "unmap <buffer> ]["' +                   \ . ' | silent! execute "unmap <buffer> [["' +                   \ . ' | silent! execute "unmap <buffer> []"' + +" Browse dialog filter on Windows (see ":help browsefilter") +if has('gui_win32') && !exists('b:browsefilter') +  let b:browsefilter = "J Script Files (*.ijs)\t*.ijs\n" +                   \ . "All Files (*.*)\t*.*\n" +  let b:undo_ftplugin .= ' | unlet! b:browsefilter' +endif + +" Enhanced "%" matching (see ":help matchit") +if exists('loaded_matchit') && !exists('b:match_words') +  let b:match_ignorecase = 0 +  let b:match_words = '^\%(\s*Note\|.\{-}\<\%([0-4]\|13\|noun\|adverb\|conjunction\|verb\|monad\|dyad\)\s\+\%(\:\s*0\|def\s\+0\|define\)\)\>:^\s*\:\s*$:^\s*)\s*$' +                  \ . ',\<\%(for\%(_\a\k*\)\=\|if\|select\|try\|whil\%(e\|st\)\)\.:\<\%(case\|catch[dt]\=\|else\%(if\)\=\|fcase\)\.:\<end\.' +  let b:undo_ftplugin .= ' | unlet! b:match_ignorecase b:match_words' +endif + +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/java.vim b/ftplugin/java.vim new file mode 100644 index 00000000..89aeddea --- /dev/null +++ b/ftplugin/java.vim @@ -0,0 +1,55 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Java +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Change:  2012 Mar 11 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" For filename completion, prefer the .java extension over the .class +" extension. +set suffixes+=.class + +" Enable gf on import statements.  Convert . in the package +" name to / and append .java to the name, then search the path. +setlocal includeexpr=substitute(v:fname,'\\.','/','g') +setlocal suffixesadd=.java +if exists("g:ftplugin_java_source_path") +    let &l:path=g:ftplugin_java_source_path . ',' . &l:path +endif + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal formatoptions-=t formatoptions+=croql + +" Set 'comments' to format dashed lists in comments. Behaves just like C. +setlocal comments& comments^=sO:*\ -,mO:*\ \ ,exO:*/ + +setlocal commentstring=//%s + +" Change the :browse e filter to primarily show Java-related files. +if has("gui_win32") +    let  b:browsefilter="Java Files (*.java)\t*.java\n" . +		\	"Properties Files (*.prop*)\t*.prop*\n" . +		\	"Manifest Files (*.mf)\t*.mf\n" . +		\	"All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal suffixes< suffixesadd<" . +		\     " formatoptions< comments< commentstring< path< includeexpr<" . +		\     " | unlet! b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/javascript.vim b/ftplugin/javascript.vim new file mode 100644 index 00000000..5f517abc --- /dev/null +++ b/ftplugin/javascript.vim @@ -0,0 +1,42 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Javascript +" Maintainer:	Doug Kearns <dougkearns@gmail.com> +" Last Change:  2008 Jun 15 +" URL:		http://gus.gscit.monash.edu.au/~djkea2/vim/ftplugin/javascript.vim + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo-=C + +" Set 'formatoptions' to break comment lines but not other lines, +" " and insert the comment leader when hitting <CR> or using "o". +setlocal formatoptions-=t formatoptions+=croql + +" Set completion with CTRL-X CTRL-O to autoloaded function. +if exists('&ofu') +    setlocal omnifunc=javascriptcomplete#CompleteJS +endif + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +setlocal commentstring=//%s + +" Change the :browse e filter to primarily show Java-related files. +if has("gui_win32") +    let  b:browsefilter="Javascript Files (*.js)\t*.js\n" . +		\	"All Files (*.*)\t*.*\n" +endif +        +let b:undo_ftplugin = "setl fo< ofu< com< cms<"  + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/jproperties.vim b/ftplugin/jproperties.vim new file mode 100644 index 00000000..1cd9ba66 --- /dev/null +++ b/ftplugin/jproperties.vim @@ -0,0 +1,19 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	Java properties file +" Maintainer:	David Bürgin <676c7473@gmail.com> +" Last Change:	2013-11-19 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +setlocal formatoptions-=t +setlocal comments=:#,:! +setlocal commentstring=#\ %s + +let b:undo_ftplugin = "setl cms< com< fo<" + +endif diff --git a/ftplugin/json.vim b/ftplugin/json.vim index 3f4adccd..344f814a 100644 --- a/ftplugin/json.vim +++ b/ftplugin/json.vim @@ -1,3 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:		JSON +" Maintainer:		David Barnett <daviebdawg+vim@gmail.com> +" Last Change:		2014 Jul 16 + +if exists('b:did_ftplugin') +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = 'setlocal formatoptions< comments< commentstring<' + +setlocal formatoptions-=t + +" JSON has no comments. +setlocal comments= +setlocal commentstring= + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'json') == -1  " Vim syntax file diff --git a/ftplugin/jsp.vim b/ftplugin/jsp.vim new file mode 100644 index 00000000..a1c51a8f --- /dev/null +++ b/ftplugin/jsp.vim @@ -0,0 +1,71 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	jsp +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "Java Files (*.java)\t*.java\n" . +	    \	 "HTML Files (*.html, *.htm)\t*.html;*.htm\n" . +	    \	 "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +unlet b:did_ftplugin + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +    unlet b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +    unlet b:browsefilter +endif +if exists("b:match_words") +    let s:match_words = b:match_words +    unlet b:match_words +endif + +runtime! ftplugin/java.vim ftplugin/java_*.vim ftplugin/java/*.vim +let b:did_ftplugin = 1 + +" Combine the new set of values with those previously included. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin +endif +if exists ("b:browsefilter") +    let s:browsefilter = b:browsefilter . s:browsefilter +endif +if exists("b:match_words") +    let s:match_words = b:match_words . ',' . s:match_words +endif + +" Load the combined list of match_words for matchit.vim +if exists("loaded_matchit") +    let b:match_words = s:match_words +endif + +" Change the :browse e filter to primarily show JSP-related files. +if has("gui_win32") +    let  b:browsefilter="JSP Files (*.jsp)\t*.jsp\n" . s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter b:match_words | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/kconfig.vim b/ftplugin/kconfig.vim new file mode 100644 index 00000000..17968fd1 --- /dev/null +++ b/ftplugin/kconfig.vim @@ -0,0 +1,31 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Vim syntax file +" Maintainer:           Christian Brabandt <cb@256bit.org> +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2015-05-29 +" License:              Vim (see :h license) +" Repository:		https://github.com/chrisbra/vim-kconfig + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +" For matchit.vim +if exists("loaded_matchit") +  let b:match_words = '^\<menu\>:\<endmenu\>,^\<if\>:\<endif\>,^\<choice\>:\<endchoice\>' +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/kwt.vim b/ftplugin/kwt.vim new file mode 100644 index 00000000..a90c6cef --- /dev/null +++ b/ftplugin/kwt.vim @@ -0,0 +1,36 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Kimwitu++ +" Maintainer:	Michael Piefel <entwurf@piefel.de> +" Last Change:	10 March 2012 + +" Behaves almost like C++ +runtime! ftplugin/cpp.vim ftplugin/cpp_*.vim ftplugin/cpp/*.vim + +let s:cpo_save = &cpo +set cpo&vim + +" Limit the browser to related files +if has("gui_win32") && !exists("b:browsefilter") +    let b:browsefilter = "Kimwitu/Kimwitu++ Files (*.k)\t*.k\n" . +		\ "Lex/Flex Files (*.l)\t*.l\n" . +		\ "Yacc/Bison Files (*.y)\t*.y\n" . +		\ "All Files (*.*)\t*.*\n" +endif + +" Set the errorformat for the Kimwitu++ compiler +set efm+=kc%.%#:\ error\ at\ %f:%l:\ %m + +if exists("b:undo_ftplugin") +    let b:undo_ftplugin = b:undo_ftplugin . " | setlocal efm<" +	\ . "| unlet! b:browsefiler" +else +    let b:undo_ftplugin = "setlocal efm<" +	\ . "| unlet! b:browsefiler" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/ld.vim b/ftplugin/ld.vim new file mode 100644 index 00000000..ae4ed06d --- /dev/null +++ b/ftplugin/ld.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             ld(1) script +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=s1:/*,mb:*,ex:*/ commentstring=/*%s*/ include=^\\s*INCLUDE +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/less.vim b/ftplugin/less.vim index 69b2b391..7b98eebe 100644 --- a/ftplugin/less.vim +++ b/ftplugin/less.vim @@ -1,3 +1,27 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	less +" Maintainer:	Alessandro Vioni <jenoma@gmail.com> +" URL: https://github.com/genoma/vim-less +" Last Change:	2014 November 24 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl cms< def< inc< inex< ofu< sua<" + +setlocal formatoptions-=t formatoptions+=croql + +setlocal comments=:// commentstring=//\ %s + +setlocal omnifunc=csscomplete#CompleteCSS +setlocal suffixesadd=.less + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'less') == -1  " Vim filetype plugin diff --git a/ftplugin/lftp.vim b/ftplugin/lftp.vim new file mode 100644 index 00000000..4b5b3fd0 --- /dev/null +++ b/ftplugin/lftp.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             lftp(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/libao.vim b/ftplugin/libao.vim new file mode 100644 index 00000000..d85f3520 --- /dev/null +++ b/ftplugin/libao.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             libao.conf(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/limits.vim b/ftplugin/limits.vim new file mode 100644 index 00000000..e3e2c82a --- /dev/null +++ b/ftplugin/limits.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             limits(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/liquid.vim b/ftplugin/liquid.vim index 34543367..5333a9b4 100644 --- a/ftplugin/liquid.vim +++ b/ftplugin/liquid.vim @@ -1,3 +1,68 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:     Liquid +" Maintainer:   Tim Pope <vimNOSPAM@tpope.org> +" Last Change:	2010 May 21 + +if exists('b:did_ftplugin') +  finish +endif + +if !exists('g:liquid_default_subtype') +  let g:liquid_default_subtype = 'html' +endif + +if !exists('b:liquid_subtype') +  let s:lines = getline(1)."\n".getline(2)."\n".getline(3)."\n".getline(4)."\n".getline(5)."\n".getline("$") +  let b:liquid_subtype = matchstr(s:lines,'liquid_subtype=\zs\w\+') +  if b:liquid_subtype == '' +    let b:liquid_subtype = matchstr(&filetype,'^liquid\.\zs\w\+') +  endif +  if b:liquid_subtype == '' +    let b:liquid_subtype = matchstr(substitute(expand('%:t'),'\c\%(\.liquid\)\+$','',''),'\.\zs\w\+$') +  endif +  if b:liquid_subtype == '' +    let b:liquid_subtype = g:liquid_default_subtype +  endif +endif + +if exists('b:liquid_subtype') && b:liquid_subtype != '' +  exe 'runtime! ftplugin/'.b:liquid_subtype.'.vim ftplugin/'.b:liquid_subtype.'_*.vim ftplugin/'.b:liquid_subtype.'/*.vim' +else +  runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +endif +let b:did_ftplugin = 1 + +if exists('b:undo_ftplugin') +  let b:undo_ftplugin .= '|' +else +  let b:undo_ftplugin = '' +endif +if exists('b:browsefilter') +  let b:browsefilter = "\n".b:browsefilter +else +  let b:browsefilter = '' +endif +if exists('b:match_words') +  let b:match_words .= ',' +elseif exists('loaded_matchit') +  let b:match_words = '' +endif + +if has('gui_win32') +  let b:browsefilter="Liquid Files (*.liquid)\t*.liquid" . b:browsefilter +endif + +if exists('loaded_matchit') +  let b:match_words .= '\<\%(if\w*\|unless\|case\)\>:\<\%(elsif\|else\|when\)\>:\<end\%(if\w*\|unless\|case\)\>,\<\%(for\|tablerow\)\>:\%({%\s*\)\@<=empty\>:\<end\%(for\|tablerow\)\>,<\(capture\|comment\|highlight\)\>:\<end\1\>' +endif + +setlocal commentstring={%\ comment\ %}%s{%\ endcomment\ %} + +let b:undo_ftplugin .= 'setl cms< | unlet! b:browsefilter b:match_words' + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'liquid') == -1  " Vim filetype plugin diff --git a/ftplugin/lisp.vim b/ftplugin/lisp.vim new file mode 100644 index 00000000..6c82c2f1 --- /dev/null +++ b/ftplugin/lisp.vim @@ -0,0 +1,30 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:      Lisp +" Maintainer:    Sergey Khorev <sergey.khorev@gmail.com> +" URL:		 http://sites.google.com/site/khorser/opensource/vim +" Original author:    Dorai Sitaram <ds26@gte.com> +" Original URL:		 http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html +" Last Change:   Oct 23, 2013 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +setl comments=:; +setl define=^\\s*(def\\k* +setl formatoptions-=t +setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94 +setl lisp +setl commentstring=;%s + +setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|# + +let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lisp< commentstring<" + +endif diff --git a/ftplugin/logcheck.vim b/ftplugin/logcheck.vim new file mode 100644 index 00000000..d69dc4d1 --- /dev/null +++ b/ftplugin/logcheck.vim @@ -0,0 +1,21 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:    Logcheck +" Maintainer:  Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> +" Last Change: 2012 Jan 15 +" License:     Vim License +" URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/logcheck.vim + +if exists("b:did_ftplugin") +    finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl fo<" + +" Do not hard-wrap non-comment lines since each line is a self-contained +" regular expression +setlocal formatoptions-=t + +endif diff --git a/ftplugin/loginaccess.vim b/ftplugin/loginaccess.vim new file mode 100644 index 00000000..7fb1bdfc --- /dev/null +++ b/ftplugin/loginaccess.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             login.access(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/logindefs.vim b/ftplugin/logindefs.vim new file mode 100644 index 00000000..bcb2b6ef --- /dev/null +++ b/ftplugin/logindefs.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             login.defs(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/logtalk.vim b/ftplugin/logtalk.vim new file mode 100644 index 00000000..fa42170f --- /dev/null +++ b/ftplugin/logtalk.vim @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Logtalk filetype plugin file +" Language:         Logtalk +" Maintainer:       Paulo Moura <pmoura@logtalk.org> +" Latest Revision:  2007-07-06 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl ts< sw< fdm< fdc< ai< dict<" + +"setlocal ts=4 +setlocal sw=4 +setlocal fdm=syntax +setlocal fdc=2 +setlocal autoindent +setlocal dict=$VIMRUNTIME/ftplugin/logtalk.dict + +endif diff --git a/ftplugin/lprolog.vim b/ftplugin/lprolog.vim new file mode 100644 index 00000000..669f8b05 --- /dev/null +++ b/ftplugin/lprolog.vim @@ -0,0 +1,41 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim settings file +" Language:     LambdaProlog (Teyjus) +" Maintainer:   Markus Mottl  <markus.mottl@gmail.com> +" URL:          http://www.ocaml.info/vim/ftplugin/lprolog.vim +" Last Change:  2006 Feb 05 +"               2001 Sep 16 - fixed 'no_mail_maps'-bug (MM) +"               2001 Sep 02 - initial release  (MM) + +" Only do these settings when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't do other file type settings for this buffer +let b:did_ftplugin = 1 + +" Error format +setlocal efm=%+A./%f:%l.%c:\ %m formatprg=fmt\ -w75\ -p\\% + +" Formatting of comments +setlocal formatprg=fmt\ -w75\ -p\\% + +" Add mappings, unless the user didn't want this. +if !exists("no_plugin_maps") && !exists("no_lprolog_maps") +  " Uncommenting +  if !hasmapto('<Plug>Comment') +    nmap <buffer> <LocalLeader>c <Plug>LUncomOn +    vmap <buffer> <LocalLeader>c <Plug>BUncomOn +    nmap <buffer> <LocalLeader>C <Plug>LUncomOff +    vmap <buffer> <LocalLeader>C <Plug>BUncomOff +  endif + +  nnoremap <buffer> <Plug>LUncomOn mz0i/* <ESC>$A */<ESC>`z +  nnoremap <buffer> <Plug>LUncomOff <ESC>:s/^\/\* \(.*\) \*\//\1/<CR> +  vnoremap <buffer> <Plug>BUncomOn <ESC>:'<,'><CR>`<O<ESC>0i/*<ESC>`>o<ESC>0i*/<ESC>`< +  vnoremap <buffer> <Plug>BUncomOff <ESC>:'<,'><CR>`<dd`>dd`< +endif + +endif diff --git a/ftplugin/lua.vim b/ftplugin/lua.vim new file mode 100644 index 00000000..51904b68 --- /dev/null +++ b/ftplugin/lua.vim @@ -0,0 +1,46 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file. +" Language:	Lua 4.0+ +" Maintainer:	Max Ischenko <mfi@ukr.net> +" Last Change:	2012 Mar 07 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" Set 'formatoptions' to break comment lines but not other lines, and insert +" the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +setlocal com=:-- +setlocal cms=--%s +setlocal suffixesadd=.lua + + +" The following lines enable the macros/matchit.vim plugin for +" extended matching with the % key. +if exists("loaded_matchit") + +  let b:match_ignorecase = 0 +  let b:match_words = +    \ '\<\%(do\|function\|if\)\>:' . +    \ '\<\%(return\|else\|elseif\)\>:' . +    \ '\<end\>,' . +    \ '\<repeat\>:\<until\>' + +endif " exists("loaded_matchit") + +let &cpo = s:cpo_save +unlet s:cpo_save + +let b:undo_ftplugin = "setlocal fo< com< cms< suffixesadd<" + +endif diff --git a/ftplugin/m4.vim b/ftplugin/m4.vim new file mode 100644 index 00000000..a9459208 --- /dev/null +++ b/ftplugin/m4.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             m4 +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:#,:dnl commentstring=dnl\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/mail.vim b/ftplugin/mail.vim new file mode 100644 index 00000000..f08ba657 --- /dev/null +++ b/ftplugin/mail.vim @@ -0,0 +1,42 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Mail +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2012 Nov 20 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl modeline< tw< fo< comments<" + +" Don't use modelines in e-mail messages, avoid trojan horses and nasty +" "jokes" (e.g., setting 'textwidth' to 5). +setlocal nomodeline + +" many people recommend keeping e-mail messages 72 chars wide +if &tw == 0 +  setlocal tw=72 +endif + +" Set 'formatoptions' to break text lines and keep the comment leader ">". +setlocal fo+=tcql + +" Add n:> to 'comments, in case it was removed elsewhere +setlocal comments+=n:> + +" Add mappings, unless the user doesn't want this. +if !exists("no_plugin_maps") && !exists("no_mail_maps") +  " Quote text by inserting "> " +  if !hasmapto('<Plug>MailQuote') +    vmap <buffer> <LocalLeader>q <Plug>MailQuote +    nmap <buffer> <LocalLeader>q <Plug>MailQuote +  endif +  vnoremap <buffer> <Plug>MailQuote :s/^/> /<CR>:noh<CR>`` +  nnoremap <buffer> <Plug>MailQuote :.,$s/^/> /<CR>:noh<CR>`` +endif + +endif diff --git a/ftplugin/mailaliases.vim b/ftplugin/mailaliases.vim new file mode 100644 index 00000000..01095df8 --- /dev/null +++ b/ftplugin/mailaliases.vim @@ -0,0 +1,22 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/mailcap.vim b/ftplugin/mailcap.vim new file mode 100644 index 00000000..258c76c9 --- /dev/null +++ b/ftplugin/mailcap.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Mailcap configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/make.vim b/ftplugin/make.vim new file mode 100644 index 00000000..be967c28 --- /dev/null +++ b/ftplugin/make.vim @@ -0,0 +1,37 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Make +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2013 Apr 22 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl et< sts< fo< com< cms< inc<" + +" Make sure a hard tab is used, required for most make programs +setlocal noexpandtab softtabstop=0 + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments +setlocal com=sO:#\ -,mO:#\ \ ,b:# + +" Set 'commentstring' to put the marker after a #. +setlocal commentstring=#\ %s + +" Including files. +let &l:include = '^\s*include' + +" For matchit.vim, suggested by Albert Netymk. +if exists("loaded_matchit") +  let b:match_words = '\<if\(n\)\=\(eq\|def\)\>:\<else\>:\<endif\>,\<define\>:\<endef\>' +endif + +endif diff --git a/ftplugin/man.vim b/ftplugin/man.vim new file mode 100644 index 00000000..a53bf202 --- /dev/null +++ b/ftplugin/man.vim @@ -0,0 +1,219 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	man +" Maintainer:	SungHyun Nam <goweol@gmail.com> +" Last Change: 	2017 Jan 18 + +" To make the ":Man" command available before editing a manual page, source +" this script from your startup vimrc file. + +" If 'filetype' isn't "man", we must have been called to only define ":Man". +if &filetype == "man" + +  " Only do this when not done yet for this buffer +  if exists("b:did_ftplugin") +    finish +  endif +  let b:did_ftplugin = 1 + +  " Ensure Vim is not recursively invoked (man-db does this) +  " when doing ctrl-[ on a man page reference. +  if exists("$MANPAGER") +    let $MANPAGER = "" +  endif + +  " allow dot and dash in manual page name. +  setlocal iskeyword+=\.,- + +  " Add mappings, unless the user didn't want this. +  if !exists("no_plugin_maps") && !exists("no_man_maps") +    if !hasmapto('<Plug>ManBS') +      nmap <buffer> <LocalLeader>h <Plug>ManBS +    endif +    nnoremap <buffer> <Plug>ManBS :%s/.\b//g<CR>:setl nomod<CR>'' + +    nnoremap <buffer> <c-]> :call <SID>PreGetPage(v:count)<CR> +    nnoremap <buffer> <c-t> :call <SID>PopPage()<CR> +    nnoremap <buffer> <silent> q :q<CR> +  endif + +  if exists('g:ft_man_folding_enable') && (g:ft_man_folding_enable == 1) +    setlocal foldmethod=indent foldnestmax=1 foldenable +  endif + +  let b:undo_ftplugin = "setlocal iskeyword<" + +endif + +if exists(":Man") != 2 +  com -nargs=+ Man call s:GetPage(<f-args>) +  nmap <Leader>K :call <SID>PreGetPage(0)<CR> +  nmap <Plug>ManPreGetPage :call <SID>PreGetPage(0)<CR> +endif + +" Define functions only once. +if !exists("s:man_tag_depth") + +let s:man_tag_depth = 0 + +let s:man_sect_arg = "" +let s:man_find_arg = "-w" +try +  if !has("win32") && $OSTYPE !~ 'cygwin\|linux' && system('uname -s') =~ "SunOS" && system('uname -r') =~ "^5" +    let s:man_sect_arg = "-s" +    let s:man_find_arg = "-l" +  endif +catch /E145:/ +  " Ignore the error in restricted mode +endtry + +func <SID>PreGetPage(cnt) +  if a:cnt == 0 +    let old_isk = &iskeyword +    if &ft == 'man' +      setl iskeyword+=(,) +    endif +    let str = expand("<cword>") +    let &l:iskeyword = old_isk +    let page = substitute(str, '(*\(\k\+\).*', '\1', '') +    let sect = substitute(str, '\(\k\+\)(\([^()]*\)).*', '\2', '') +    if match(sect, '^[0-9 ]\+$') == -1 +      let sect = "" +    endif +    if sect == page +      let sect = "" +    endif +  else +    let sect = a:cnt +    let page = expand("<cword>") +  endif +  call s:GetPage(sect, page) +endfunc + +func <SID>GetCmdArg(sect, page) +  if a:sect == '' +    return a:page +  endif +  return s:man_sect_arg.' '.a:sect.' '.a:page +endfunc + +func <SID>FindPage(sect, page) +  let where = system("man ".s:man_find_arg.' '.s:GetCmdArg(a:sect, a:page)) +  if where !~ "^/" +    if matchstr(where, " [^ ]*$") !~ "^ /" +      return 0 +    endif +  endif +  return 1 +endfunc + +func <SID>GetPage(...) +  if a:0 >= 2 +    let sect = a:1 +    let page = a:2 +  elseif a:0 >= 1 +    let sect = "" +    let page = a:1 +  else +    return +  endif + +  " To support:	    nmap K :Man <cword> +  if page == '<cword>' +    let page = expand('<cword>') +  endif + +  if sect != "" && s:FindPage(sect, page) == 0 +    let sect = "" +  endif +  if s:FindPage(sect, page) == 0 +    echo "\nCannot find a '".page."'." +    return +  endif +  exec "let s:man_tag_buf_".s:man_tag_depth." = ".bufnr("%") +  exec "let s:man_tag_lin_".s:man_tag_depth." = ".line(".") +  exec "let s:man_tag_col_".s:man_tag_depth." = ".col(".") +  let s:man_tag_depth = s:man_tag_depth + 1 + +  " Use an existing "man" window if it exists, otherwise open a new one. +  if &filetype != "man" +    let thiswin = winnr() +    exe "norm! \<C-W>b" +    if winnr() > 1 +      exe "norm! " . thiswin . "\<C-W>w" +      while 1 +	if &filetype == "man" +	  break +	endif +	exe "norm! \<C-W>w" +	if thiswin == winnr() +	  break +	endif +      endwhile +    endif +    if &filetype != "man" +      if exists("g:ft_man_open_mode") +        if g:ft_man_open_mode == "vert" +          vnew +        elseif g:ft_man_open_mode == "tab" +          tabnew +        else +          new +        endif +      else +        new +      endif +      setl nonu fdc=0 +    endif +  endif +  silent exec "edit $HOME/".page.".".sect."~" +  " Avoid warning for editing the dummy file twice +  setl buftype=nofile noswapfile + +  setl ma nonu nornu nofen +  silent exec "norm 1GdG" +  let unsetwidth = 0 +  if empty($MANWIDTH) +    let $MANWIDTH = winwidth(0) +    let unsetwidth = 1 +  endif +  silent exec "r !man ".s:GetCmdArg(sect, page)." | col -b" +  if unsetwidth +    let $MANWIDTH = '' +  endif +  " Remove blank lines from top and bottom. +  while getline(1) =~ '^\s*$' +    silent keepj norm ggdd +  endwhile +  while getline('$') =~ '^\s*$' +    silent keepj norm Gdd +  endwhile +  1 +  setl ft=man nomod +  setl bufhidden=hide +  setl nobuflisted +  setl noma +endfunc + +func <SID>PopPage() +  if s:man_tag_depth > 0 +    let s:man_tag_depth = s:man_tag_depth - 1 +    exec "let s:man_tag_buf=s:man_tag_buf_".s:man_tag_depth +    exec "let s:man_tag_lin=s:man_tag_lin_".s:man_tag_depth +    exec "let s:man_tag_col=s:man_tag_col_".s:man_tag_depth +    exec s:man_tag_buf."b" +    exec s:man_tag_lin +    exec "norm ".s:man_tag_col."|" +    exec "unlet s:man_tag_buf_".s:man_tag_depth +    exec "unlet s:man_tag_lin_".s:man_tag_depth +    exec "unlet s:man_tag_col_".s:man_tag_depth +    unlet s:man_tag_buf s:man_tag_lin s:man_tag_col +  endif +endfunc + +endif + +" vim: set sw=2 ts=8 noet: + +endif diff --git a/ftplugin/manconf.vim b/ftplugin/manconf.vim new file mode 100644 index 00000000..f71899b6 --- /dev/null +++ b/ftplugin/manconf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             man.conf(5) - man configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/markdown.vim b/ftplugin/markdown.vim new file mode 100644 index 00000000..9d36541f --- /dev/null +++ b/ftplugin/markdown.vim @@ -0,0 +1,54 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:		Markdown +" Maintainer:		Tim Pope <vimNOSPAM@tpope.org> +" Last Change:		2016 Aug 29 + +if exists("b:did_ftplugin") +  finish +endif + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim + +setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s +setlocal formatoptions+=tcqln formatoptions-=r formatoptions-=o +setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]: + +if exists('b:undo_ftplugin') +  let b:undo_ftplugin .= "|setl cms< com< fo< flp<" +else +  let b:undo_ftplugin = "setl cms< com< fo< flp<" +endif + +function! MarkdownFold() +  let line = getline(v:lnum) + +  " Regular headers +  let depth = match(line, '\(^#\+\)\@<=\( .*$\)\@=') +  if depth > 0 +    return ">" . depth +  endif + +  " Setext style headings +  let nextline = getline(v:lnum + 1) +  if (line =~ '^.\+$') && (nextline =~ '^=\+$') +    return ">1" +  endif + +  if (line =~ '^.\+$') && (nextline =~ '^-\+$') +    return ">2" +  endif + +  return "=" +endfunction + +if has("folding") && exists("g:markdown_folding") +  setlocal foldexpr=MarkdownFold() +  setlocal foldmethod=expr +  let b:undo_ftplugin .= " foldexpr< foldmethod<" +endif + +" vim:set sw=2: + +endif diff --git a/ftplugin/matlab.vim b/ftplugin/matlab.vim new file mode 100644 index 00000000..9a46dc72 --- /dev/null +++ b/ftplugin/matlab.vim @@ -0,0 +1,36 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	matlab +" Maintainer:	Jake Wasserman <jwasserman at gmail dot com> +" Last Changed: 2014 Dec 30 + +" Contributors: +" Charles Campbell + +if exists("b:did_ftplugin") +	finish +endif +let b:did_ftplugin = 1 + +let s:save_cpo = &cpo +set cpo-=C + +if exists("loaded_matchit") + let s:conditionalEnd = '\%(([^()]*\)\@!\<end\>\%([^()]*)\)\@!' + let b:match_words= +   \ '\<\%(if\|switch\|for\|while\)\>:\<\%(elseif\|case\|break\|continue\|else\|otherwise\)\>:'.s:conditionalEnd.','. +   \ '\<function\>:\<return\>:\<endfunction\>' + unlet s:conditionalEnd +endif + +setlocal suffixesadd=.m +setlocal suffixes+=.asv + +let b:undo_ftplugin = "setlocal suffixesadd< suffixes< " +	\ . "| unlet! b:match_words" + +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/mf.vim b/ftplugin/mf.vim new file mode 100644 index 00000000..971f6265 --- /dev/null +++ b/ftplugin/mf.vim @@ -0,0 +1,74 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:           METAFONT +" Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com> +" Former Maintainers: Nikolai Weibull <now@bitwi.se> +" Latest Revision:    2016 Oct 2 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo< sua< inc< def< ofu<" +      \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" + +setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=cjroql2 +setlocal suffixesadd=.mf +let &l:include = '\<input\>' +let &l:define = '\<\%(let\|newinternal\|interim\|def\|vardef\)\>\|\<\%(primary\|secondary\|tertiary\)def\>\s*[^ .]\+' +setlocal omnifunc=syntaxcomplete#Complete +let g:omni_syntax_group_include_mf = 'mf\w\+' +let g:omni_syntax_group_exclude_mf = 'mfTodoComment' + +let s:mp_regex = { +      \ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|beginchar\|beginlogochar\)\>', +      \ 'endsection'   : '^\s*\%(enddef\|endchar\)\>', +      \ 'beginblock'   : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>', +      \ 'endblock'     : '^\s*\%(endgroup\|fi\|endfor\)\>' +      \ } + +function! s:move_around(count, what, flags, visual) +  if a:visual +    exe "normal! gv" +  endif +  call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark +  call map(range(2, a:count), 'search(s:mp_regex[a:what], a:flags)') +endfunction + + +" Move around macros. +nnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:false) <CR> +vnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:true)  <CR> +nnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W",  v:false) <CR> +vnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W",  v:true)  <CR> +nnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection",   "bW", v:false) <CR> +vnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection",   "bW", v:true)  <CR> +nnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection",   "W",  v:false) <CR> +vnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection",   "W",  v:true)  <CR> +nnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock",   "bW", v:false) <CR> +vnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock",   "bW", v:true)  <CR> +nnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock",     "W",  v:false) <CR> +vnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock",     "W",  v:true)  <CR> + +if exists("loaded_matchit") +  let b:match_ignorecase = 0 +  let b:match_words = +        \ '\<if\>:\<else\%[if]\>:\<fi\>,' . +        \ '\<for\%(\|suffixes\|ever\)\>:\<exit\%(if\|unless\)\>:\<endfor\>,' . +        \ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' . +        \ '\<begingroup\>:\<endgroup\>,' . +        \ '\<begin\%(logo\)\?char\>:\<endchar\>' +  " Ignore comments and strings +  let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name") +        \ =~# "mf\\(Comment\\|String\\)$"' +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/modconf.vim b/ftplugin/modconf.vim new file mode 100644 index 00000000..6e454be9 --- /dev/null +++ b/ftplugin/modconf.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             modules.conf(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=:# commentstring=#\ %s include=^\\s*include +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/mp.vim b/ftplugin/mp.vim new file mode 100644 index 00000000..75ed03e7 --- /dev/null +++ b/ftplugin/mp.vim @@ -0,0 +1,86 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:           MetaPost +" Maintainer:         Nicola Vitacolonna <nvitacolonna@gmail.com> +" Former Maintainers: Nikolai Weibull <now@bitwi.se> +" Latest Revision:    2016 Oct 2 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo< sua< inc< def< ofu<" +      \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" + +setlocal comments=:% commentstring=%\ %s formatoptions-=t formatoptions+=cjroql2 +setlocal suffixesadd=.mp,.mpiv +let &l:include = '\<\%(input\|loadmodule\)\>' " loadmodule is in MetaFun +let &l:define = '\<\%(let\|newinternal\|interim\|def\|vardef\)\>\|\<\%(primary\|secondary\|tertiary\)def\>\s*[^ .]\+' +setlocal omnifunc=syntaxcomplete#Complete +let g:omni_syntax_group_include_mp = 'mf\w\+,mp\w\+' +let g:omni_syntax_group_exclude_mp = 'mfTodoComment' + +if exists(":FixBeginfigs") != 2 +  command -nargs=0 FixBeginfigs call s:fix_beginfigs() + +  function! s:fix_beginfigs() +    let i = 1 +    g/^beginfig(\d*);$/s//\='beginfig('.i.');'/ | let i = i + 1 +  endfunction +endif + +let s:mp_regex = { +      \ 'beginsection' : '^\s*\%(\%(\|var\|primary\|secondary\|tertiary\)def\|begin\%(fig\|char\|logochar\|glyph\|graph\)\)\>', +      \ 'endsection'   : '^\s*\%(enddef\|end\%(fig\|char\|glyph\|graph\)\)\>', +      \ 'beginblock'   : '^\s*\%(begingroup\|if\|for\%(\|suffixes\|ever\)\)\>', +      \ 'endblock'     : '^\s*\%(endgroup\|fi\|endfor\)\>' +      \ } + +function! s:move_around(count, what, flags, visual) +  if a:visual +    exe "normal! gv" +  endif +  call search(s:mp_regex[a:what], a:flags.'s') " 's' sets previous context mark +  call map(range(2, a:count), 'search(s:mp_regex[a:what], a:flags)') +endfunction + + +" Move around macros. +nnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:false) <CR> +vnoremap <silent><buffer> [[ :<C-U>call <SID>move_around(v:count1, "beginsection", "bW", v:true)  <CR> +nnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W",  v:false) <CR> +vnoremap <silent><buffer> ]] :<C-U>call <SID>move_around(v:count1, "beginsection", "W",  v:true)  <CR> +nnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection",   "bW", v:false) <CR> +vnoremap <silent><buffer> [] :<C-U>call <SID>move_around(v:count1, "endsection",   "bW", v:true)  <CR> +nnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection",   "W",  v:false) <CR> +vnoremap <silent><buffer> ][ :<C-U>call <SID>move_around(v:count1, "endsection",   "W",  v:true)  <CR> +nnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock",   "bW", v:false) <CR> +vnoremap <silent><buffer> [{ :<C-U>call <SID>move_around(v:count1, "beginblock",   "bW", v:true)  <CR> +nnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock",     "W",  v:false) <CR> +vnoremap <silent><buffer> ]} :<C-U>call <SID>move_around(v:count1, "endblock",     "W",  v:true)  <CR> + +if exists("loaded_matchit") +  let b:match_ignorecase = 0 +  let b:match_words = +        \ '\<if\>:\<else\%[if]\>:\<fi\>,' . +        \ '\<for\%(\|suffixes\|ever\)\>:\<exit\%(if\|unless\)\>:\<endfor\>,' . +        \ '\<\%(\|var\|primary\|secondary\|tertiary\)def\>:\<enddef\>,' . +        \ '\<beginfig\>:\<endfig\>,' . +        \ '\<begingroup\>:\<endgroup\>,' . +        \ '\<begin\%(logo\)\?char\>:\<endchar\>,' . +        \ '\<beginglyph\>:\<endglyph\>,' . +        \ '\<begingraph\>:\<endgraph\>' +  " Ignore comments and strings +  let b:match_skip = 'synIDattr(synID(line("."), col("."), 1), "name") +        \ =~# "^mf\\%(Comment\\|String\\|\\)$\\|^mpTeXinsert$"' +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/mplayerconf.vim b/ftplugin/mplayerconf.vim new file mode 100644 index 00000000..ce0033e6 --- /dev/null +++ b/ftplugin/mplayerconf.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             mplayer(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=:# commentstring=#\ %s include=^\\s*include +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/mrxvtrc.vim b/ftplugin/mrxvtrc.vim new file mode 100644 index 00000000..d7e3095d --- /dev/null +++ b/ftplugin/mrxvtrc.vim @@ -0,0 +1,26 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Created	: Wed 26 Apr 2006 01:20:53 AM CDT +" Modified	: Fri 28 Apr 2006 03:24:01 AM CDT +" Author	: Gautam Iyer <gi1242@users.sourceforge.net> +" Description	: ftplugin for mrxvtrc + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl com< cms< fo<" + +" Really any line that does not match an option is a comment. But use '!' for +" compatibility with x-defaults files, and "#" (preferred) for compatibility +" with all other config files. +" +" Comments beginning with "#" are preferred because Vim will not flag the +" first word as a spelling error if it is not capitalised. The '!' used as +" comment leaders makes Vim think that every comment line is a new sentence. + +setlocal comments=:!,:# commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +endif diff --git a/ftplugin/msmessages.vim b/ftplugin/msmessages.vim new file mode 100644 index 00000000..c65efbcf --- /dev/null +++ b/ftplugin/msmessages.vim @@ -0,0 +1,44 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	MS Message files (*.mc) +" Maintainer:	Kevin Locke <kwl7@cornell.edu> +" Last Change:	2008 April 09 +" Location:	http://kevinlocke.name/programs/vim/syntax/msmessages.vim + +" Based on c.vim + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< com< cms< | unlet! b:browsefilter" + +" Set 'formatoptions' to format all lines, including comments +setlocal fo-=ct fo+=roql + +" Comments includes both ";" which describes a "comment" which will be +" converted to C code and variants on "; //" which will remain comments +" in the generated C code +setlocal comments=:;,:;//,:;\ //,s:;\ /*\ ,m:;\ \ *\ ,e:;\ \ */ +setlocal commentstring=;\ //\ %s + +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "MS Message Files (*.mc)\t*.mc\n" . +	\ "Resource Files (*.rc)\t*.rc\n" . +	\ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/muttrc.vim b/ftplugin/muttrc.vim new file mode 100644 index 00000000..0044c448 --- /dev/null +++ b/ftplugin/muttrc.vim @@ -0,0 +1,26 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             mutt RC File +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2006-04-19 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=:# commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &l:include = '^\s*source\>' + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/nanorc.vim b/ftplugin/nanorc.vim new file mode 100644 index 00000000..fd0cc8fd --- /dev/null +++ b/ftplugin/nanorc.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             nanorc(5) - GNU nano configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/netrc.vim b/ftplugin/netrc.vim new file mode 100644 index 00000000..c817fbe1 --- /dev/null +++ b/ftplugin/netrc.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             netrc(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments= commentstring= formatoptions-=tcroq formatoptions+=l + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/nsis.vim b/ftplugin/nsis.vim new file mode 100644 index 00000000..d1400e77 --- /dev/null +++ b/ftplugin/nsis.vim @@ -0,0 +1,26 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim ftplugin file +" Language:             NSIS script +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +let s:cpo_save = &cpo +set cpo&vim + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl com< cms< fo< def< inc<" + +setlocal comments=s1:/*,mb:*,ex:*/,b:#,:; commentstring=;\ %s +setlocal formatoptions-=t formatoptions+=croql +setlocal define=^\\s*!define\\%(\\%(utc\\)\\=date\\|math\\)\\= +setlocal include=^\\s*!include\\%(/NONFATAL\\)\\= + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/objc.vim b/ftplugin/objc.vim index 409fb1a2..81bfcf67 100644 --- a/ftplugin/objc.vim +++ b/ftplugin/objc.vim @@ -1,3 +1,19 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Objective C +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2003 Jan 15 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Behaves just like C +runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'objc') == -1  " Use C++ style comment strings with commentary.vim diff --git a/ftplugin/ocaml.vim b/ftplugin/ocaml.vim index 87cd9ef4..f374a87e 100644 --- a/ftplugin/ocaml.vim +++ b/ftplugin/ocaml.vim @@ -1,3 +1,627 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Language:    OCaml +" Maintainer:  David Baelde        <firstname.name@ens-lyon.org> +"              Mike Leary          <leary@nwlink.com> +"              Markus Mottl        <markus.mottl@gmail.com> +"              Pierre Vittet       <pierre-vittet@pvittet.com> +"              Stefano Zacchiroli  <zack@bononia.it> +"              Vincent Aravantinos <firstname.name@imag.fr> +" URL:         http://www.ocaml.info/vim/ftplugin/ocaml.vim +" Last Change: +"              2013 Jul 26 - load default compiler settings (MM) +"              2013 Jul 24 - removed superfluous efm-setting (MM) +"              2013 Jul 22 - applied fixes supplied by Hirotaka Hamada (MM) +"              2013 Mar 15 - Improved error format (MM) + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin=1 + +" Use standard compiler settings unless user wants otherwise +if !exists("current_compiler") +  :compiler ocaml +endif + +" some macro +if exists('*fnameescape') +  function! s:Fnameescape(s) +    return fnameescape(a:s) +  endfun +else +  function! s:Fnameescape(s) +    return escape(a:s," \t\n*?[{`$\\%#'\"|!<") +  endfun +endif + +" Error handling -- helps moving where the compiler wants you to go +let s:cposet=&cpoptions +set cpo&vim + +" Add mappings, unless the user didn't want this. +if !exists("no_plugin_maps") && !exists("no_ocaml_maps") +  " (un)commenting +  if !hasmapto('<Plug>Comment') +    nmap <buffer> <LocalLeader>c <Plug>LUncomOn +    xmap <buffer> <LocalLeader>c <Plug>BUncomOn +    nmap <buffer> <LocalLeader>C <Plug>LUncomOff +    xmap <buffer> <LocalLeader>C <Plug>BUncomOff +  endif + +  nnoremap <buffer> <Plug>LUncomOn gI(* <End> *)<ESC> +  nnoremap <buffer> <Plug>LUncomOff :s/^(\* \(.*\) \*)/\1/<CR>:noh<CR> +  xnoremap <buffer> <Plug>BUncomOn <ESC>:'<,'><CR>`<O<ESC>0i(*<ESC>`>o<ESC>0i*)<ESC>`< +  xnoremap <buffer> <Plug>BUncomOff <ESC>:'<,'><CR>`<dd`>dd`< + +  nmap <buffer> <LocalLeader>s <Plug>OCamlSwitchEdit +  nmap <buffer> <LocalLeader>S <Plug>OCamlSwitchNewWin + +  nmap <buffer> <LocalLeader>t <Plug>OCamlPrintType +  xmap <buffer> <LocalLeader>t <Plug>OCamlPrintType +endif + +" Let % jump between structure elements (due to Issac Trotts) +let b:mw = '' +let b:mw = b:mw . ',\<let\>:\<and\>:\(\<in\>\|;;\)' +let b:mw = b:mw . ',\<if\>:\<then\>:\<else\>' +let b:mw = b:mw . ',\<\(for\|while\)\>:\<do\>:\<done\>,' +let b:mw = b:mw . ',\<\(object\|sig\|struct\|begin\)\>:\<end\>' +let b:mw = b:mw . ',\<\(match\|try\)\>:\<with\>' +let b:match_words = b:mw + +let b:match_ignorecase=0 + +" switching between interfaces (.mli) and implementations (.ml) +if !exists("g:did_ocaml_switch") +  let g:did_ocaml_switch = 1 +  nnoremap <Plug>OCamlSwitchEdit :<C-u>call OCaml_switch(0)<CR> +  nnoremap <Plug>OCamlSwitchNewWin :<C-u>call OCaml_switch(1)<CR> +  fun OCaml_switch(newwin) +    if (match(bufname(""), "\\.mli$") >= 0) +      let fname = s:Fnameescape(substitute(bufname(""), "\\.mli$", ".ml", "")) +      if (a:newwin == 1) +        exec "new " . fname +      else +        exec "arge " . fname +      endif +    elseif (match(bufname(""), "\\.ml$") >= 0) +      let fname = s:Fnameescape(bufname("")) . "i" +      if (a:newwin == 1) +        exec "new " . fname +      else +        exec "arge " . fname +      endif +    endif +  endfun +endif + +" Folding support + +" Get the modeline because folding depends on indentation +let s:s = line2byte(line('.'))+col('.')-1 +if search('^\s*(\*:o\?caml:') +  let s:modeline = getline(".") +else +  let s:modeline = "" +endif +if s:s > 0 +  exe 'goto' s:s +endif + +" Get the indentation params +let s:m = matchstr(s:modeline,'default\s*=\s*\d\+') +if s:m != "" +  let s:idef = matchstr(s:m,'\d\+') +elseif exists("g:omlet_indent") +  let s:idef = g:omlet_indent +else +  let s:idef = 2 +endif +let s:m = matchstr(s:modeline,'struct\s*=\s*\d\+') +if s:m != "" +  let s:i = matchstr(s:m,'\d\+') +elseif exists("g:omlet_indent_struct") +  let s:i = g:omlet_indent_struct +else +  let s:i = s:idef +endif + +" Set the folding method +if exists("g:ocaml_folding") +  setlocal foldmethod=expr +  setlocal foldexpr=OMLetFoldLevel(v:lnum) +endif + +let b:undo_ftplugin = "setlocal efm< foldmethod< foldexpr<" +	\ . "| unlet! b:mw b:match_words b:match_ignorecase" + + +" - Only definitions below, executed once ------------------------------------- + +if exists("*OMLetFoldLevel") +  finish +endif + +function s:topindent(lnum) +  let l = a:lnum +  while l > 0 +    if getline(l) =~ '\s*\%(\<struct\>\|\<sig\>\|\<object\>\)' +      return indent(l) +    endif +    let l = l-1 +  endwhile +  return -s:i +endfunction + +function OMLetFoldLevel(l) + +  " This is for not merging blank lines around folds to them +  if getline(a:l) !~ '\S' +    return -1 +  endif + +  " We start folds for modules, classes, and every toplevel definition +  if getline(a:l) =~ '^\s*\%(\<val\>\|\<module\>\|\<class\>\|\<type\>\|\<method\>\|\<initializer\>\|\<inherit\>\|\<exception\>\|\<external\>\)' +    exe 'return ">' (indent(a:l)/s:i)+1 '"' +  endif + +  " Toplevel let are detected thanks to the indentation +  if getline(a:l) =~ '^\s*let\>' && indent(a:l) == s:i+s:topindent(a:l) +    exe 'return ">' (indent(a:l)/s:i)+1 '"' +  endif + +  " We close fold on end which are associated to struct, sig or object. +  " We use syntax information to do that. +  if getline(a:l) =~ '^\s*end\>' && synIDattr(synID(a:l, indent(a:l)+1, 0), "name") != "ocamlKeyword" +    return (indent(a:l)/s:i)+1 +  endif + +  " Folds end on ;; +  if getline(a:l) =~ '^\s*;;' +    exe 'return "<' (indent(a:l)/s:i)+1 '"' +  endif + +  " Comments around folds aren't merged to them. +  if synIDattr(synID(a:l, indent(a:l)+1, 0), "name") == "ocamlComment" +    return -1 +  endif + +  return '=' +endfunction + +" Vim support for OCaml .annot files +" +" Last Change: 2007 Jul 17 +" Maintainer:  Vincent Aravantinos <vincent.aravantinos@gmail.com> +" License:     public domain +" +" Originally inspired by 'ocaml-dtypes.vim' by Stefano Zacchiroli. +" The source code is quite radically different for we not use python anymore. +" However this plugin should have the exact same behaviour, that's why the +" following lines are the quite exact copy of Stefano's original plugin : +" +" << +" Executing Ocaml_print_type(<mode>) function will display in the Vim bottom +" line(s) the type of an ocaml value getting it from the corresponding .annot +" file (if any).  If Vim is in visual mode, <mode> should be "visual" and the +" selected ocaml value correspond to the highlighted text, otherwise (<mode> +" can be anything else) it corresponds to the literal found at the current +" cursor position. +" +" Typing '<LocalLeader>t' (LocalLeader defaults to '\', see :h LocalLeader) +" will cause " Ocaml_print_type function to be invoked with the right +" argument depending on the current mode (visual or not). +" >> +" +" If you find something not matching this behaviour, please signal it. +" +" Differences are: +"   - no need for python support +"     + plus : more portable +"     + minus: no more lazy parsing, it looks very fast however +" +"   - ocamlbuild support, ie. +"     + the plugin finds the _build directory and looks for the +"       corresponding file inside; +"     + if the user decides to change the name of the _build directory thanks +"       to the '-build-dir' option of ocamlbuild, the plugin will manage in +"       most cases to find it out (most cases = if the source file has a unique +"       name among your whole project); +"     + if ocamlbuild is not used, the usual behaviour holds; ie. the .annot +"       file should be in the same directory as the source file; +"     + for vim plugin programmers: +"       the variable 'b:_build_dir' contains the inferred path to the build +"       directory, even if this one is not named '_build'. +" +" Bonus : +"   - latin1 accents are handled +"   - lists are handled, even on multiple lines, you don't need the visual mode +"     (the cursor must be on the first bracket) +"   - parenthesized expressions, arrays, and structures (ie. '(...)', '[|...|]', +"     and '{...}') are handled the same way + +  " Copied from Stefano's original plugin : +  " << +  "      .annot ocaml file representation +  " +  "      File format (copied verbatim from caml-types.el) +  " +  "      file ::= block * +  "      block ::= position <SP> position <LF> annotation * +  "      position ::= filename <SP> num <SP> num <SP> num +  "      annotation ::= keyword open-paren <LF> <SP> <SP> data <LF> close-paren +  " +  "      <SP> is a space character (ASCII 0x20) +  "      <LF> is a line-feed character (ASCII 0x0A) +  "      num is a sequence of decimal digits +  "      filename is a string with the lexical conventions of O'Caml +  "      open-paren is an open parenthesis (ASCII 0x28) +  "      close-paren is a closed parenthesis (ASCII 0x29) +  "      data is any sequence of characters where <LF> is always followed by +  "           at least two space characters. +  " +  "      - in each block, the two positions are respectively the start and the +  "        end of the range described by the block. +  "      - in a position, the filename is the name of the file, the first num +  "        is the line number, the second num is the offset of the beginning +  "        of the line, the third num is the offset of the position itself. +  "      - the char number within the line is the difference between the third +  "        and second nums. +  " +  "      For the moment, the only possible keyword is \"type\"." +  " >> + + +" 1. Finding the annotation file even if we use ocamlbuild + +    " In:  two strings representing paths +    " Out: one string representing the common prefix between the two paths +  function! s:Find_common_path (p1,p2) +    let temp = a:p2 +    while matchstr(a:p1,temp) == '' +      let temp = substitute(temp,'/[^/]*$','','') +    endwhile +    return temp +  endfun + +    " After call: +    " +    "  Following information have been put in s:annot_file_list, using +    "  annot_file_name name as key: +    " - annot_file_path : +    "                       path to the .annot file corresponding to the +    "                       source file (dealing with ocamlbuild stuff) +    " - _build_path: +    "                       path to the build directory even if this one is +    "                       not named '_build' +    " - date_of_last annot: +    "                       Set to 0 until we load the file. It contains the +    "                       date at which the file has been loaded. +  function! s:Locate_annotation() +    let annot_file_name = s:Fnameescape(expand('%:t:r')).'.annot' +    if !exists ("s:annot_file_list[annot_file_name]") +      silent exe 'cd' s:Fnameescape(expand('%:p:h')) +      " 1st case : the annot file is in the same directory as the buffer (no ocamlbuild) +      let annot_file_path = findfile(annot_file_name,'.') +      if annot_file_path != '' +        let annot_file_path = getcwd().'/'.annot_file_path +        let _build_path = '' +      else +        " 2nd case : the buffer and the _build directory are in the same directory +        "      .. +        "     /  \ +        "    /    \ +        " _build  .ml +        " +        let _build_path = finddir('_build','.') +        if _build_path != '' +          let _build_path = getcwd().'/'._build_path +          let annot_file_path           = findfile(annot_file_name,'_build') +          if annot_file_path != '' +            let annot_file_path = getcwd().'/'.annot_file_path +          endif +        else +          " 3rd case : the _build directory is in a directory higher in the file hierarchy +          "            (it can't be deeper by ocamlbuild requirements) +          "      .. +          "     /  \ +          "    /    \ +          " _build  ... +          "           \ +          "            \ +          "           .ml +          " +          let _build_path = finddir('_build',';') +          if _build_path != '' +            let project_path                = substitute(_build_path,'/_build$','','') +            let path_relative_to_project    = s:Fnameescape(substitute(expand('%:p:h'),project_path.'/','','')) +            let annot_file_path           = findfile(annot_file_name,project_path.'/_build/'.path_relative_to_project) +          else +            let annot_file_path = findfile(annot_file_name,'**') +            "4th case : what if the user decided to change the name of the _build directory ? +            "           -> we relax the constraints, it should work in most cases +            if annot_file_path != '' +              " 4a. we suppose the renamed _build directory is in the current directory +              let _build_path = matchstr(annot_file_path,'^[^/]*') +              if annot_file_path != '' +                let annot_file_path = getcwd().'/'.annot_file_path +                let _build_path     = getcwd().'/'._build_path +              endif +            else +              let annot_file_name = '' +              "(Pierre Vittet: I have commented 4b because this was chrashing +              "my vim (it produced infinite loop)) +              " +              " 4b. anarchy : the renamed _build directory may be higher in the hierarchy +              " this will work if the file for which we are looking annotations has a unique name in the whole project +              " if this is not the case, it may still work, but no warranty here +              "let annot_file_path = findfile(annot_file_name,'**;') +              "let project_path      = s:Find_common_path(annot_file_path,expand('%:p:h')) +              "let _build_path       = matchstr(annot_file_path,project_path.'/[^/]*') +            endif +          endif +        endif +      endif + +      if annot_file_path == '' +        throw 'E484: no annotation file found' +      endif + +      silent exe 'cd' '-' +      let s:annot_file_list[annot_file_name]= [annot_file_path, _build_path, 0] +    endif +  endfun + +  " This variable contain a dictionnary of list. Each element of the dictionnary +  " represent an annotation system. An annotation system is a list with : +  " - annotation file name as it's key +  " - annotation file path as first element of the contained list +  " - build path as second element of the contained list +  " - annot_file_last_mod (contain the date of .annot file) as third element +  let s:annot_file_list = {} + +" 2. Finding the type information in the annotation file + +  " a. The annotation file is opened in vim as a buffer that +  " should be (almost) invisible to the user. + +      " After call: +      " The current buffer is now the one containing the .annot file. +      " We manage to keep all this hidden to the user's eye. +    function! s:Enter_annotation_buffer(annot_file_path) +      let s:current_pos = getpos('.') +      let s:current_hidden = &l:hidden +      set hidden +      let s:current_buf = bufname('%') +      if bufloaded(a:annot_file_path) +        silent exe 'keepj keepalt' 'buffer' s:Fnameescape(a:annot_file_path) +      else +        silent exe 'keepj keepalt' 'view' s:Fnameescape(a:annot_file_path) +      endif +      call setpos(".", [0, 0 , 0 , 0]) +    endfun + +      " After call: +      "   The original buffer has been restored in the exact same state as before. +    function! s:Exit_annotation_buffer() +      silent exe 'keepj keepalt' 'buffer' s:Fnameescape(s:current_buf) +      let &l:hidden = s:current_hidden +      call setpos('.',s:current_pos) +    endfun + +      " After call: +      "   The annot file is loaded and assigned to a buffer. +      "   This also handles the modification date of the .annot file, eg. after a +      "   compilation (return an updated annot_file_list). +    function! s:Load_annotation(annot_file_name) +      let annot = s:annot_file_list[a:annot_file_name] +      let annot_file_path = annot[0] +      let annot_file_last_mod = 0 +      if exists("annot[2]") +        let annot_file_last_mod = annot[2] +      endif +      if bufloaded(annot_file_path) && annot_file_last_mod < getftime(annot_file_path) +        " if there is a more recent file +        let nr = bufnr(annot_file_path) +        silent exe 'keepj keepalt' 'bunload' nr +      endif +      if !bufloaded(annot_file_path) +        call s:Enter_annotation_buffer(annot_file_path) +        setlocal nobuflisted +        setlocal bufhidden=hide +        setlocal noswapfile +        setlocal buftype=nowrite +        call s:Exit_annotation_buffer() +        let annot[2] = getftime(annot_file_path) +        " List updated with the new date +        let s:annot_file_list[a:annot_file_name] = annot +      endif +    endfun + +  "b. 'search' and 'match' work to find the type information + +      "In:  - lin1,col1: postion of expression first char +      "     - lin2,col2: postion of expression last char +      "Out: - the pattern to be looked for to find the block +      " Must be called in the source buffer (use of line2byte) +    function! s:Block_pattern(lin1,lin2,col1,col2) +      let start_num1 = a:lin1 +      let start_num2 = line2byte(a:lin1) - 1 +      let start_num3 = start_num2 + a:col1 +      let path       = '"\(\\"\|[^"]\)\+"' +      let start_pos  = path.' '.start_num1.' '.start_num2.' '.start_num3 +      let end_num1   = a:lin2 +      let end_num2   = line2byte(a:lin2) - 1 +      let end_num3   = end_num2 + a:col2 +      let end_pos    = path.' '.end_num1.' '.end_num2.' '.end_num3 +      return '^'.start_pos.' '.end_pos."$" +      " rq: the '^' here is not totally correct regarding the annot file "grammar" +      " but currently the annotation file respects this, and it's a little bit faster with the '^'; +      " can be removed safely. +    endfun + +      "In: (the cursor position should be at the start of an annotation) +      "Out: the type information +      " Must be called in the annotation buffer (use of search) +    function! s:Match_data() +      " rq: idem as previously, in the following, the '^' at start of patterns is not necessary +      keepj while search('^type($','ce',line(".")) == 0 +        keepj if search('^.\{-}($','e') == 0 +          throw "no_annotation" +        endif +        keepj if searchpair('(','',')') == 0 +          throw "malformed_annot_file" +        endif +      endwhile +      let begin = line(".") + 1 +      keepj if searchpair('(','',')') == 0 +        throw "malformed_annot_file" +      endif +      let end = line(".") - 1 +      return join(getline(begin,end),"\n") +    endfun + +      "In:  the pattern to look for in order to match the block +      "Out: the type information (calls s:Match_data) +      " Should be called in the annotation buffer +    function! s:Extract_type_data(block_pattern, annot_file_name) +      let annot_file_path = s:annot_file_list[a:annot_file_name][0] +      call s:Enter_annotation_buffer(annot_file_path) +      try +        if search(a:block_pattern,'e') == 0 +          throw "no_annotation" +        endif +        call cursor(line(".") + 1,1) +        let annotation = s:Match_data() +      finally +        call s:Exit_annotation_buffer() +      endtry +      return annotation +    endfun + +  "c. link this stuff with what the user wants +  " ie. get the expression selected/under the cursor + +    let s:ocaml_word_char = '\w|[À-ÿ]|''' + +      "In:  the current mode (eg. "visual", "normal", etc.) +      "Out: the borders of the expression we are looking for the type +    function! s:Match_borders(mode) +      if a:mode == "visual" +        let cur = getpos(".") +        normal `< +        let col1 = col(".") +        let lin1 = line(".") +        normal `> +        let col2 = col(".") +        let lin2 = line(".") +        call cursor(cur[1],cur[2]) +        return [lin1,lin2,col1-1,col2] +      else +        let cursor_line = line(".") +        let cursor_col  = col(".") +        let line = getline('.') +        if line[cursor_col-1:cursor_col] == '[|' +          let [lin2,col2] = searchpairpos('\[|','','|\]','n') +          return [cursor_line,lin2,cursor_col-1,col2+1] +        elseif     line[cursor_col-1] == '[' +          let [lin2,col2] = searchpairpos('\[','','\]','n') +          return [cursor_line,lin2,cursor_col-1,col2] +        elseif line[cursor_col-1] == '(' +          let [lin2,col2] = searchpairpos('(','',')','n') +          return [cursor_line,lin2,cursor_col-1,col2] +        elseif line[cursor_col-1] == '{' +          let [lin2,col2] = searchpairpos('{','','}','n') +          return [cursor_line,lin2,cursor_col-1,col2] +        else +          let [lin1,col1] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','ncb') +          let [lin2,col2] = searchpos('\v%('.s:ocaml_word_char.'|\.)*','nce') +          if col1 == 0 || col2 == 0 +            throw "no_expression" +          endif +          return [cursor_line,cursor_line,col1-1,col2] +        endif +      endif +    endfun + +      "In:  the current mode (eg. "visual", "normal", etc.) +      "Out: the type information (calls s:Extract_type_data) +    function! s:Get_type(mode, annot_file_name) +      let [lin1,lin2,col1,col2] = s:Match_borders(a:mode) +      return s:Extract_type_data(s:Block_pattern(lin1,lin2,col1,col2), a:annot_file_name) +    endfun + +      "In: A string destined to be printed in the 'echo buffer'. It has line +      "break and 2 space at each line beginning. +      "Out: A string destined to be yanked, without space and double space. +    function s:unformat_ocaml_type(res) +      "Remove end of line. +      let res = substitute (a:res, "\n", "", "g" ) +      "remove double space +      let res =substitute(res , "  ", " ", "g") +      "remove space at begining of string. +      let res = substitute(res, "^ *", "", "g") +      return res +    endfunction + +  "d. main +      "In:         the current mode (eg. "visual", "normal", etc.) +      "After call: the type information is displayed +    if !exists("*Ocaml_get_type") +      function Ocaml_get_type(mode) +        let annot_file_name = s:Fnameescape(expand('%:t:r')).'.annot' +        call s:Locate_annotation() +        call s:Load_annotation(annot_file_name) +        let res = s:Get_type(a:mode, annot_file_name) +        " Copy result in the unnamed buffer +        let @" = s:unformat_ocaml_type(res) +        return res +      endfun +    endif + +    if !exists("*Ocaml_get_type_or_not") +      function Ocaml_get_type_or_not(mode) +        let t=reltime() +        try +          let res = Ocaml_get_type(a:mode) +          return res +        catch +          return "" +        endtry +      endfun +    endif + +    if !exists("*Ocaml_print_type") +      function Ocaml_print_type(mode) +        if expand("%:e") == "mli" +          echohl ErrorMsg | echo "No annotations for interface (.mli) files" | echohl None +          return +        endif +        try +          echo Ocaml_get_type(a:mode) +        catch /E484:/ +          echohl ErrorMsg | echo "No type annotations (.annot) file found" | echohl None +        catch /no_expression/ +          echohl ErrorMsg | echo "No expression found under the cursor" | echohl None +        catch /no_annotation/ +          echohl ErrorMsg | echo "No type annotation found for the given text" | echohl None +        catch /malformed_annot_file/ +          echohl ErrorMsg | echo "Malformed .annot file" | echohl None +        endtry +      endfun +    endif + +" Maps +  nnoremap <silent> <Plug>OCamlPrintType :<C-U>call Ocaml_print_type("normal")<CR> +  xnoremap <silent> <Plug>OCamlPrintType :<C-U>call Ocaml_print_type("visual")<CR>`< + +let &cpoptions=s:cposet +unlet s:cposet + +" vim:sw=2 fdm=indent + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ocaml') == -1  " Language:    OCaml diff --git a/ftplugin/occam.vim b/ftplugin/occam.vim new file mode 100644 index 00000000..64d57fd1 --- /dev/null +++ b/ftplugin/occam.vim @@ -0,0 +1,53 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	occam +" Copyright:	Christian Jacobsen <clj3@kent.ac.uk>, Mario Schweigler <ms44@kent.ac.uk> +" Maintainer:	Mario Schweigler <ms44@kent.ac.uk> +" Last Change:	23 April 2003 + +" 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 + +"{{{  Indent settings +" Set shift width for indent +setlocal shiftwidth=2 +" Set the tab key size to two spaces +setlocal softtabstop=2 +" Let tab keys always be expanded to spaces +setlocal expandtab +"}}} + +"{{{  Formatting +" Break comment lines and insert comment leader in this case +setlocal formatoptions-=t formatoptions+=cql +setlocal comments+=:-- +" Maximum length of comments is 78 +setlocal textwidth=78 +"}}} + +"{{{  File browsing filters +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "All Occam Files (*.occ *.inc)\t*.occ;*.inc\n" . +	\ "Occam Include Files (*.inc)\t*.inc\n" . +	\ "Occam Source Files (*.occ)\t*.occ\n" . +	\ "All Files (*.*)\t*.*\n" +endif +"}}} + +"{{{  Undo settings +let b:undo_ftplugin = "setlocal shiftwidth< softtabstop< expandtab<" +	\ . " formatoptions< comments< textwidth<" +	\ . "| unlet! b:browsefiler" +"}}} + +let &cpo = s:keepcpo +unlet s:keepcpo + +endif diff --git a/ftplugin/pamconf.vim b/ftplugin/pamconf.vim new file mode 100644 index 00000000..0d8dab2b --- /dev/null +++ b/ftplugin/pamconf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             pam(8) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/pascal.vim b/ftplugin/pascal.vim new file mode 100644 index 00000000..2349ddfc --- /dev/null +++ b/ftplugin/pascal.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	pascal +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 11 Apr 2011 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +if exists("loaded_matchit") +    let b:match_ignorecase = 1 " (pascal is case-insensitive) + +    let b:match_words = '\<\%(begin\|case\|record\|object\|try\)\>' +    let b:match_words .= ':\<^\s*\%(except\|finally\)\>:\<end\>' +    let b:match_words .= ',\<repeat\>:\<until\>' +    let b:match_words .= ',\<if\>:\<else\>' +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:match_words" + +endif diff --git a/ftplugin/passwd.vim b/ftplugin/passwd.vim new file mode 100644 index 00000000..28cd18a2 --- /dev/null +++ b/ftplugin/passwd.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             passwd(5) password file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments= commentstring= formatoptions-=tcroq formatoptions+=l + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/pdf.vim b/ftplugin/pdf.vim new file mode 100644 index 00000000..ae3083a5 --- /dev/null +++ b/ftplugin/pdf.vim @@ -0,0 +1,93 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	PDF +" Maintainer:	Tim Pope <vimNOSPAM@tpope.info> +" Last Change:	2007 Dec 16 + +if exists("b:did_ftplugin") +    finish +endif +let b:did_ftplugin = 1 + +setlocal commentstring=%%s +setlocal comments=:% +let b:undo_ftplugin = "setlocal cms< com< | unlet! b:match_words" + +if exists("g:loaded_matchit") +    let b:match_words = '\<\%(\d\+\s\+\d\+\s\+\)obj\>:\<endobj\>,\<stream$:\<endstream\>,\<xref\>:\<trailer\>,<<:>>' +endif + +if exists("g:no_plugin_maps") || exists("g:no_pdf_maps") || v:version < 700 +    finish +endif + +if !exists("b:pdf_tagstack") +    let b:pdf_tagstack = [] +endif + +let b:undo_ftplugin .= " | silent! nunmap <buffer> <C-]> | silent! nunmap <buffer> <C-T>" +nnoremap <silent><buffer> <C-]> :call <SID>Tag()<CR> +" Inline, so the error from an empty tag stack will be simple. +nnoremap <silent><buffer> <C-T> :if len(b:pdf_tagstack) > 0 <Bar> call setpos('.',remove(b:pdf_tagstack, -1)) <Bar> else <Bar> exe "norm! \<Lt>C-T>" <Bar> endif<CR> + +function! s:Tag() +    call add(b:pdf_tagstack,getpos('.')) +    if getline('.') =~ '^\d\+$' && getline(line('.')-1) == 'startxref' +	return s:dodigits(getline('.')) +    elseif getline('.') =~ '/Prev\s\+\d\+\>\%(\s\+\d\)\@!' && expand("<cword>") =~ '^\d\+$' +	return s:dodigits(expand("<cword>")) +    elseif getline('.') =~ '^\d\{10\} \d\{5\} ' +	return s:dodigits(matchstr(getline('.'),'^\d\+')) +    else +	let line = getline(".") +	let lastend = 0 +	let pat = '\<\d\+\s\+\d\+\s\+R\>' +	while lastend >= 0 +	    let beg = match(line,'\C'.pat,lastend) +	    let end = matchend(line,'\C'.pat,lastend) +	    if beg < col(".") && end >= col(".") +		return s:doobject(matchstr(line,'\C'.pat,lastend)) +	    endif +	    let lastend = end +	endwhile +	return s:notag() +    endif +endfunction + +function! s:doobject(string) +    let first = matchstr(a:string,'^\s*\zs\d\+') +    let second = matchstr(a:string,'^\s*\d\+\s\+\zs\d\+') +    norm! m' +    if first != '' && second != '' +	let oldline = line('.') +	let oldcol = col('.') +	1 +	if !search('^\s*'.first.'\s\+'.second.'\s\+obj\>') +	    exe oldline +	    exe 'norm! '.oldcol.'|' +	    return s:notag() +	endif +    endif +endfunction + +function! s:dodigits(digits) +    let digits = 0 + substitute(a:digits,'^0*','','') +    norm! m' +    if digits <= 0 +	norm! 1go +    else +	" Go one character before the destination and advance.  This method +	" lands us after a newline rather than before, if that is our target. +	exe "goto ".(digits)."|norm! 1 " +    endif +endfunction + +function! s:notag() +    silent! call remove(b:pdf_tagstack,-1) +    echohl ErrorMsg +    echo "E426: tag not found" +    echohl NONE +endfunction + +endif diff --git a/ftplugin/perl.vim b/ftplugin/perl.vim index e21f7df8..973a89da 100644 --- a/ftplugin/perl.vim +++ b/ftplugin/perl.vim @@ -1,3 +1,96 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:      Perl +" Maintainer:    vim-perl <vim-perl@googlegroups.com> +" Homepage:      http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change:   2015-02-09 + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal formatoptions-=t +setlocal formatoptions+=crqol +setlocal keywordprg=perldoc\ -f + +setlocal comments=:# +setlocal commentstring=#%s + +" Change the browse dialog on Win32 to show mainly Perl-related files +if has("gui_win32") +    let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . +		       \ "Perl Modules (*.pm)\t*.pm\n" . +		       \ "Perl Documentation Files (*.pod)\t*.pod\n" . +		       \ "All Files (*.*)\t*.*\n" +endif + +" Provided by Ned Konz <ned at bike-nomad dot com> +"--------------------------------------------- +setlocal include=\\<\\(use\\\|require\\)\\> +setlocal includeexpr=substitute(substitute(substitute(v:fname,'::','/','g'),'->\*','',''),'$','.pm','') +setlocal define=[^A-Za-z_] +setlocal iskeyword+=: + +" The following line changes a global variable but is necessary to make +" gf and similar commands work. Thanks to Andrew Pimlott for pointing +" out the problem. If this causes a problem for you, add an +" after/ftplugin/perl.vim file that contains +"       set isfname-=: +set isfname+=: + +" Set this once, globally. +if !exists("perlpath") +    if executable("perl") +      try +	if &shellxquote != '"' +	    let perlpath = system('perl -e "print join(q/,/,@INC)"') +	else +	    let perlpath = system("perl -e 'print join(q/,/,@INC)'") +	endif +	let perlpath = substitute(perlpath,',.$',',,','') +      catch /E145:/ +	let perlpath = ".,," +      endtry +    else +	" If we can't call perl to get its path, just default to using the +	" current directory and the directory of the current file. +	let perlpath = ".,," +    endif +endif + +" Append perlpath to the existing path value, if it is set.  Since we don't +" use += to do it because of the commas in perlpath, we have to handle the +" global / local settings, too. +if &l:path == "" +    if &g:path == "" +        let &l:path=perlpath +    else +        let &l:path=&g:path.",".perlpath +    endif +else +    let &l:path=&l:path.",".perlpath +endif +"--------------------------------------------- + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk< isf< kp< path<" . +	    \	      " | unlet! b:browsefilter" + +" proper matching for matchit plugin +let b:match_skip = 's:comment\|string\|perlQQ\|perlShellCommand\|perlHereDoc\|perlSubstitution\|perlTranslation\|perlMatch\|perlFormatField' +let b:match_words = '\<if\>:\<elsif\>:\<else\>' + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'perl') == -1  " Vim filetype plugin file diff --git a/ftplugin/perl6.vim b/ftplugin/perl6.vim new file mode 100644 index 00000000..a6929ad0 --- /dev/null +++ b/ftplugin/perl6.vim @@ -0,0 +1,81 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:      Perl 6 +" Maintainer:    vim-perl <vim-perl@googlegroups.com> +" Homepage:      http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change:   2013-07-21 +" Contributors:  Hinrik Örn Sigurðsson <hinrik.sig@gmail.com> +" +" Based on ftplugin/perl.vim by Dan Sharp <dwsharp at hotmail dot com> + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal formatoptions-=t +setlocal formatoptions+=crqol +setlocal keywordprg=p6doc + +setlocal comments=:# +setlocal commentstring=#%s + +" Change the browse dialog on Win32 to show mainly Perl-related files +if has("gui_win32") +    let b:browsefilter = "Perl Source Files (*.pl)\t*.pl\n" . +               \ "Perl Modules (*.pm)\t*.pm\n" . +               \ "Perl Documentation Files (*.pod)\t*.pod\n" . +               \ "All Files (*.*)\t*.*\n" +endif + +" Provided by Ned Konz <ned at bike-nomad dot com> +"--------------------------------------------- +setlocal include=\\<\\(use\\\|require\\)\\> +setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.pm','') +setlocal define=[^A-Za-z_] + +" The following line changes a global variable but is necessary to make +" gf and similar commands work. Thanks to Andrew Pimlott for pointing out +" the problem. If this causes a " problem for you, add an +" after/ftplugin/perl6.vim file that contains +"       set isfname-=: +set isfname+=: +setlocal iskeyword=48-57,_,A-Z,a-z,:,- + +" Set this once, globally. +if !exists("perlpath") +    if executable("perl6") +        try +            if &shellxquote != '"' +                let perlpath = system('perl6 -e  "@*INC.join(q/,/).say"') +            else +                let perlpath = system("perl6 -e  '@*INC.join(q/,/).say'") +            endif +            let perlpath = substitute(perlpath,',.$',',,','') +        catch /E145:/ +            let perlpath = ".,," +        endtry +    else +        " If we can't call perl to get its path, just default to using the +        " current directory and the directory of the current file. +        let perlpath = ".,," +    endif +endif + +let &l:path=perlpath +"--------------------------------------------- + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isk<" . +        \         " | unlet! b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/php.vim b/ftplugin/php.vim new file mode 100644 index 00000000..d8fc36ff --- /dev/null +++ b/ftplugin/php.vim @@ -0,0 +1,87 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	php +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:keepcpo= &cpo +set cpo&vim + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "HTML Files (*.html, *.htm)\t*.html;*.htm\n" . +	    \	     "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif +if exists("b:match_words") +    let s:match_words = b:match_words +endif +if exists("b:match_skip") +    unlet b:match_skip +endif + +" Change the :browse e filter to primarily show PHP-related files. +if has("gui_win32") +    let  b:browsefilter="PHP Files (*.php)\t*.php\n" . s:browsefilter +endif + +" ### +" Provided by Mikolaj Machowski <mikmach at wp dot pl> +setlocal include=\\\(require\\\|include\\\)\\\(_once\\\)\\\? +" Disabled changing 'iskeyword', it breaks a command such as "*" +" setlocal iskeyword+=$ + +if exists("loaded_matchit") +    let b:match_words = '<?php:?>,\<switch\>:\<endswitch\>,' . +		      \ '\<if\>:\<elseif\>:\<else\>:\<endif\>,' . +		      \ '\<while\>:\<endwhile\>,' . +		      \ '\<do\>:\<while\>,' . +		      \ '\<for\>:\<endfor\>,' . +		      \ '\<foreach\>:\<endforeach\>,' . +                      \ '(:),[:],{:},' . +		      \ s:match_words +endif +" ### + +if exists('&omnifunc') +  setlocal omnifunc=phpcomplete#CompletePHP +endif + +" Section jumping: [[ and ]] provided by Antony Scriven <adscriven at gmail dot com> +let s:function = '\(abstract\s\+\|final\s\+\|private\s\+\|protected\s\+\|public\s\+\|static\s\+\)*function' +let s:class = '\(abstract\s\+\|final\s\+\)*class' +let s:interface = 'interface' +let s:section = '\(.*\%#\)\@!\_^\s*\zs\('.s:function.'\|'.s:class.'\|'.s:interface.'\)' +exe 'nno <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>' +exe 'nno <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>' +exe 'ono <buffer> <silent> [[ ?' . escape(s:section, '|') . '?<CR>:nohls<CR>' +exe 'ono <buffer> <silent> ]] /' . escape(s:section, '|') . '/<CR>:nohls<CR>' + +setlocal commentstring=/*%s*/ + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< include< omnifunc<" . +	    \	      " | unlet! b:browsefilter b:match_words | " . +	    \	      s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:keepcpo +unlet s:keepcpo + +endif diff --git a/ftplugin/pinfo.vim b/ftplugin/pinfo.vim new file mode 100644 index 00000000..907bbdfe --- /dev/null +++ b/ftplugin/pinfo.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             pinfo(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/plaintex.vim b/ftplugin/plaintex.vim new file mode 100644 index 00000000..5c5aa7d4 --- /dev/null +++ b/ftplugin/plaintex.vim @@ -0,0 +1,41 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" plain TeX filetype plugin +" Language:     plain TeX (ft=plaintex) +" Maintainer:   Benji Fisher, Ph.D. <benji@member.AMS.org> +" Version:	1.1 +" Last Change:	Wed 19 Apr 2006 + +" Only do this when not done yet for this buffer. +if exists("b:did_ftplugin") +  finish +endif + +" Start with initex.  This will also define b:did_ftplugin and b:undo_ftplugin . +source $VIMRUNTIME/ftplugin/initex.vim + +" Avoid problems if running in 'compatible' mode. +let s:save_cpo = &cpo +set cpo&vim + +let b:undo_ftplugin .= "| unlet! b:match_ignorecase b:match_skip b:match_words" + +" Allow "[d" to be used to find a macro definition: +let &l:define .= '\|\\new\(count\|dimen\|skip\|muskip\|box\|toks\|read\|write' +	\ .	'\|fam\|insert\)' + +" The following lines enable the macros/matchit.vim plugin for +" extended matching with the % key. +" There is no default meaning for \(...\) etc., but many users define one. +if exists("loaded_matchit") +  let b:match_ignorecase = 0 +    \ | let b:match_skip = 'r:\\\@<!\%(\\\\\)*%' +    \ | let b:match_words = '(:),\[:],{:},\\(:\\),\\\[:\\],\\{:\\}' +endif " exists("loaded_matchit") + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:sts=2:sw=2: + +endif diff --git a/ftplugin/postscr.vim b/ftplugin/postscr.vim new file mode 100644 index 00000000..6bf00f18 --- /dev/null +++ b/ftplugin/postscr.vim @@ -0,0 +1,42 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	PostScript +" Maintainer:	Mike Williams <mrw@eandem.co.uk> +" Last Change:  24th April 2012 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" PS comment formatting +setlocal comments=b:% +setlocal formatoptions-=t formatoptions+=rol + +" Define patterns for the matchit macro +if !exists("b:match_words") +  let b:match_ignorecase = 0 +  let b:match_words = '<<:>>,\<begin\>:\<end\>,\<save\>:\<restore\>,\<gsave\>:\<grestore\>' +endif + +" Define patterns for the browse file filter +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "PostScript Files (*.ps)\t*.ps\n" . +    \ "EPS Files (*.eps)\t*.eps\n" . +    \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setlocal comments< formatoptions<" +    \ . "| unlet! b:browsefiler b:match_ignorecase b:match_words" + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/procmail.vim b/ftplugin/procmail.vim new file mode 100644 index 00000000..9c302b48 --- /dev/null +++ b/ftplugin/procmail.vim @@ -0,0 +1,25 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             procmail(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &l:include = '^\s*INCLUDERC\>' + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/prolog.vim b/ftplugin/prolog.vim new file mode 100644 index 00000000..a1c74d25 --- /dev/null +++ b/ftplugin/prolog.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Prolog +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=s1:/*,mb:*,ex:*/,:% commentstring=%\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/protocols.vim b/ftplugin/protocols.vim new file mode 100644 index 00000000..2bbb49ac --- /dev/null +++ b/ftplugin/protocols.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             protocols(5) - Internet protocols definition file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/pyrex.vim b/ftplugin/pyrex.vim new file mode 100644 index 00000000..2a0a5ec0 --- /dev/null +++ b/ftplugin/pyrex.vim @@ -0,0 +1,31 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Pyrex +" Maintainer:	Marco Barisione <marco.bari@people.it> +" URL:		http://marcobari.altervista.org/pyrex_vim.html +" Last Change:	2012 May 18 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif +let s:keepcpo= &cpo +set cpo&vim + +" Behaves just like Python +runtime! ftplugin/python.vim ftplugin/python_*.vim ftplugin/python/*.vim + +if has("gui_win32") && exists("b:browsefilter") +    let  b:browsefilter = "Pyrex files (*.pyx,*.pxd)\t*.pyx;*.pxd\n" . +			\ "Python Files (*.py)\t*.py\n" . +			\ "C Source Files (*.c)\t*.c\n" . +			\ "C Header Files (*.h)\t*.h\n" . +			\ "C++ Source Files (*.cpp *.c++)\t*.cpp;*.c++\n" . +			\ "All Files (*.*)\t*.*\n" +endif + +let &cpo = s:keepcpo +unlet s:keepcpo + +endif diff --git a/ftplugin/python.vim b/ftplugin/python.vim new file mode 100644 index 00000000..a625ba20 --- /dev/null +++ b/ftplugin/python.vim @@ -0,0 +1,92 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	python +" Maintainer:	James Sully <sullyj3@gmail.com> +" Previous Maintainer: Johannes Zellner <johannes@zellner.org> +" Last Change:	Tue, 09 October 2016 +" https://github.com/sullyj3/vim-ftplugin-python + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 +let s:keepcpo= &cpo +set cpo&vim + +setlocal cinkeys-=0# +setlocal indentkeys-=0# +setlocal include=^\\s*\\(from\\\|import\\) +setlocal includeexpr=substitute(v:fname,'\\.','/','g') +setlocal suffixesadd=.py +setlocal comments=b:#,fb:- +setlocal commentstring=#\ %s + +setlocal omnifunc=pythoncomplete#Complete + +set wildignore+=*.pyc + +let b:next_toplevel='\v%$\|^(class\|def\|async def)>' +let b:prev_toplevel='\v^(class\|def\|async def)>' +let b:next='\v%$\|^\s*(class\|def\|async def)>' +let b:prev='\v^\s*(class\|def\|async def)>' + +execute "nnoremap <silent> <buffer> ]] :call <SID>Python_jump('n', '". b:next_toplevel."', 'W')<cr>" +execute "nnoremap <silent> <buffer> [[ :call <SID>Python_jump('n', '". b:prev_toplevel."', 'Wb')<cr>" +execute "nnoremap <silent> <buffer> ]m :call <SID>Python_jump('n', '". b:next."', 'W')<cr>" +execute "nnoremap <silent> <buffer> [m :call <SID>Python_jump('n', '". b:prev."', 'Wb')<cr>" + +execute "onoremap <silent> <buffer> ]] :call <SID>Python_jump('o', '". b:next_toplevel."', 'W')<cr>" +execute "onoremap <silent> <buffer> [[ :call <SID>Python_jump('o', '". b:prev_toplevel."', 'Wb')<cr>" +execute "onoremap <silent> <buffer> ]m :call <SID>Python_jump('o', '". b:next."', 'W')<cr>" +execute "onoremap <silent> <buffer> [m :call <SID>Python_jump('o', '". b:prev."', 'Wb')<cr>" + +execute "xnoremap <silent> <buffer> ]] :call <SID>Python_jump('x', '". b:next_toplevel."', 'W')<cr>" +execute "xnoremap <silent> <buffer> [[ :call <SID>Python_jump('x', '". b:prev_toplevel."', 'Wb')<cr>" +execute "xnoremap <silent> <buffer> ]m :call <SID>Python_jump('x', '". b:next."', 'W')<cr>" +execute "xnoremap <silent> <buffer> [m :call <SID>Python_jump('x', '". b:prev."', 'Wb')<cr>" + +if !exists('*<SID>Python_jump') +  fun! <SID>Python_jump(mode, motion, flags) range +      if a:mode == 'x' +          normal! gv +      endif + +      normal! 0 + +      let cnt = v:count1 +      mark ' +      while cnt > 0 +          call search(a:motion, a:flags) +          let cnt = cnt - 1 +      endwhile + +      normal! ^ +  endfun +endif + +if has("browsefilter") && !exists("b:browsefilter") +    let b:browsefilter = "Python Files (*.py)\t*.py\n" . +                \ "All Files (*.*)\t*.*\n" +endif + +if !exists("g:python_recommended_style") || g:python_recommended_style != 0 +    " As suggested by PEP8. +    setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8 +endif + +" First time: try finding "pydoc". +if !exists('g:pydoc_executable') +    if executable('pydoc') +        let g:pydoc_executable = 1 +    else +        let g:pydoc_executable = 0 +    endif +endif +" If "pydoc" was found use it for keywordprg. +if g:pydoc_executable +    setlocal keywordprg=pydoc +endif + +let &cpo = s:keepcpo +unlet s:keepcpo + +endif diff --git a/ftplugin/qf.vim b/ftplugin/qf.vim new file mode 100644 index 00000000..724eb5da --- /dev/null +++ b/ftplugin/qf.vim @@ -0,0 +1,20 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     Vim's quickfix window +" Maintainer:   Lech Lorens <Lech.Lorens@gmail.com> +" Last Changed: 30 Apr 2012 + +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "set stl<" + +" Display the command that produced the list in the quickfix window: +setlocal stl=%t%{exists('w:quickfix_title')?\ '\ '.w:quickfix_title\ :\ ''}\ %=%-15(%l,%c%V%)\ %P + +endif diff --git a/ftplugin/quake.vim b/ftplugin/quake.vim new file mode 100644 index 00000000..f380bbf4 --- /dev/null +++ b/ftplugin/quake.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Quake[1-3] configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:// commentstring=//\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/r.vim b/ftplugin/r.vim index 599d3ce7..a1813bb6 100644 --- a/ftplugin/r.vim +++ b/ftplugin/r.vim @@ -1,3 +1,39 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language: R +" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com> +" Homepage: https://github.com/jalvesaq/R-Vim-runtime +" Last Change:	Tue Apr 07, 2015  04:38PM + +" Only do this when not yet done for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal iskeyword=@,48-57,_,. +setlocal formatoptions-=t +setlocal commentstring=#\ %s +setlocal comments=:#',:###,:##,:# + +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "R Source Files (*.R)\t*.R\n" . +        \ "Files that include R (*.Rnw *.Rd *.Rmd *.Rrst)\t*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . +        \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl cms< com< fo< isk< | unlet! b:browsefilter" + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'r-lang') == -1  " ftplugin for R files diff --git a/ftplugin/racc.vim b/ftplugin/racc.vim new file mode 100644 index 00000000..4623e866 --- /dev/null +++ b/ftplugin/racc.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Racc input file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/readline.vim b/ftplugin/readline.vim new file mode 100644 index 00000000..2c758d5a --- /dev/null +++ b/ftplugin/readline.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             readline(3) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/registry.vim b/ftplugin/registry.vim new file mode 100644 index 00000000..1636e20c --- /dev/null +++ b/ftplugin/registry.vim @@ -0,0 +1,40 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:         Windows Registry export with regedit (*.reg) +" Maintainer:       Cade Forester <ahx2323@gmail.com> +" Latest Revision:  2014-01-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = +  \ 'let b:browsefilter = "" | ' . +  \ 'setlocal ' . +  \    'comments< '. +  \    'commentstring< ' . +  \    'formatoptions< ' + + +if has( 'gui_win32' ) +\ && !exists( 'b:browsefilter' ) +   let b:browsefilter = +      \ 'registry files (*.reg)\t*.reg\n' . +      \ 'All files (*.*)\t*.*\n' +endif + +setlocal comments=:; +setlocal commentstring=;\ %s + +setlocal formatoptions-=t +setlocal formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/reva.vim b/ftplugin/reva.vim new file mode 100644 index 00000000..281844b6 --- /dev/null +++ b/ftplugin/reva.vim @@ -0,0 +1,29 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim ftplugin file +" Language:	Reva Forth +" Version:	7.1 +" Last Change:	2008/01/11 +" Maintainer:	Ron Aaron <ron@ronware.org> +" URL:		http://ronware.org/reva/ +" Filetypes:	*.rf *.frt  +" NOTE: 	Forth allows any non-whitespace in a name, so you need to do: +" 		setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 +" +" 		This goes with the syntax/reva.vim file. + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +setlocal sts=4 sw=4  +setlocal com=s1:/*,mb:*,ex:*/,:\|,:\\ +setlocal fo=tcrqol +setlocal matchpairs+=\::; +setlocal iskeyword=!,@,33-35,%,$,38-64,A-Z,91-96,a-z,123-126,128-255 + +endif diff --git a/ftplugin/rhelp.vim b/ftplugin/rhelp.vim index c73472d4..0c2139ad 100644 --- a/ftplugin/rhelp.vim +++ b/ftplugin/rhelp.vim @@ -1,3 +1,37 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language: R help file +" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com> +" Homepage: https://github.com/jalvesaq/R-Vim-runtime +" Last Change:	Tue Apr 07, 2015  04:37PM + +" Only do this when not yet done for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal iskeyword=@,48-57,_,. + +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . +        \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl isk< | unlet! b:browsefilter" + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: sw=2 + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'r-lang') == -1  " ftplugin for R help files diff --git a/ftplugin/rmd.vim b/ftplugin/rmd.vim new file mode 100644 index 00000000..347b4d18 --- /dev/null +++ b/ftplugin/rmd.vim @@ -0,0 +1,58 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language: R Markdown file +" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com> +" Homepage: https://github.com/jalvesaq/R-Vim-runtime +" Last Change:	Mon Jun 06, 2016  09:41PM +" Original work by Alex Zvoleff (adjusted from R help for rmd by Michel Kuhlmann) + +" Only do this when not yet done for this buffer +if exists("b:did_ftplugin") +  finish +endif + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim + +" Nvim-R plugin needs this +if exists("*CompleteR") +  if &omnifunc == "CompleteR" +    let b:rplugin_nonr_omnifunc = "" +  else +    let b:rplugin_nonr_omnifunc = &omnifunc +  endif +  set omnifunc=CompleteR +endif + +setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s +setlocal formatoptions+=tcqln +setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+ +setlocal iskeyword=@,48-57,_,. + +let s:cpo_save = &cpo +set cpo&vim + +" Enables pandoc if it is installed +unlet! b:did_ftplugin +runtime ftplugin/pandoc.vim + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . +        \ "All Files (*.*)\t*.*\n" +endif + +if exists('b:undo_ftplugin') +  let b:undo_ftplugin .= " | setl cms< com< fo< flp< isk< | unlet! b:browsefilter" +else +  let b:undo_ftplugin = "setl cms< com< fo< flp< isk< | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: sw=2 + +endif diff --git a/ftplugin/rnc.vim b/ftplugin/rnc.vim new file mode 100644 index 00000000..99c8f170 --- /dev/null +++ b/ftplugin/rnc.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Relax NG compact syntax +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/rnoweb.vim b/ftplugin/rnoweb.vim index 5ea2cdd6..b1970c48 100644 --- a/ftplugin/rnoweb.vim +++ b/ftplugin/rnoweb.vim @@ -1,3 +1,48 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language: Rnoweb +" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com> +" Homepage: https://github.com/jalvesaq/R-Vim-runtime +" Last Change:	Tue Apr 07, 2015  04:37PM + +" Only do this when not yet done for this buffer +if exists("b:did_ftplugin") +  finish +endif + +let s:cpo_save = &cpo +set cpo&vim + +runtime! ftplugin/tex.vim + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Enables Vim-Latex-Suite, LaTeX-Box if installed +runtime ftplugin/tex_*.vim + +setlocal iskeyword=@,48-57,_,. +setlocal suffixesadd=.bib,.tex +setlocal comments=b:%,b:#,b:##,b:###,b:#' + +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . +        \ "All Files (*.*)\t*.*\n" +endif + +if exists('b:undo_ftplugin') +  let b:undo_ftplugin .= " | setl isk< sua< com< | unlet! b:browsefilter" +else +  let b:undo_ftplugin = "setl isk< sua< com< | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: sw=2 + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'r-lang') == -1  " ftplugin for Sweave files containing both LaTeX and R code diff --git a/ftplugin/rpl.vim b/ftplugin/rpl.vim new file mode 100644 index 00000000..9e5d9f31 --- /dev/null +++ b/ftplugin/rpl.vim @@ -0,0 +1,26 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     RPL/2 +" Maintainer:   Joël BERTRAND <rpl2@free.fr> +" Last Change:	2012 Mar 07 +" Version: 		0.1 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +let b:undo_ftplugin = "setlocal fo< comments<" + +endif diff --git a/ftplugin/rrst.vim b/ftplugin/rrst.vim new file mode 100644 index 00000000..90fa3684 --- /dev/null +++ b/ftplugin/rrst.vim @@ -0,0 +1,42 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language: reStructuredText documentation format with R code +" Maintainer: Jakson Alves de Aquino <jalvesaq@gmail.com> +" Homepage: https://github.com/jalvesaq/R-Vim-runtime +" Last Change:	Tue Apr 07, 2015  04:38PM +" Original work by Alex Zvoleff + +" Only do this when not yet done for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s +setlocal formatoptions+=tcqln +setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+ +setlocal iskeyword=@,48-57,_,. + +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "R Source Files (*.R *.Rnw *.Rd *.Rmd *.Rrst)\t*.R;*.Rnw;*.Rd;*.Rmd;*.Rrst\n" . +        \ "All Files (*.*)\t*.*\n" +endif + +if exists('b:undo_ftplugin') +  let b:undo_ftplugin .= " | setl cms< com< fo< flp< isk< | unlet! b:browsefilter" +else +  let b:undo_ftplugin = "setl cms< com< fo< flp< isk< | unlet! b:browsefilter" +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: sw=2 + +endif diff --git a/ftplugin/rst.vim b/ftplugin/rst.vim new file mode 100644 index 00000000..aef9db17 --- /dev/null +++ b/ftplugin/rst.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             reStructuredText documentation format +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< et< fo<" + +setlocal comments=fb:.. commentstring=..\ %s expandtab +setlocal formatoptions+=tcroql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/ruby.vim b/ftplugin/ruby.vim index 9189730b..a553b816 100644 --- a/ftplugin/ruby.vim +++ b/ftplugin/ruby.vim @@ -1,3 +1,427 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:		Ruby +" Maintainer:		Tim Pope <vimNOSPAM@tpope.org> +" URL:			https://github.com/vim-ruby/vim-ruby +" Release Coordinator:  Doug Kearns <dougkearns@gmail.com> +" ---------------------------------------------------------------------------- + +if (exists("b:did_ftplugin")) +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +if has("gui_running") && !has("gui_win32") +  setlocal keywordprg=ri\ -T\ -f\ bs +else +  setlocal keywordprg=ri +endif + +" Matchit support +if exists("loaded_matchit") && !exists("b:match_words") +  let b:match_ignorecase = 0 + +  let b:match_words = +	\ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' . +	\ ':' . +	\ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' . +	\ ':' . +        \ '\%(^\|[^.\:@$]\)\@<=\<end\:\@!\>' . +	\ ',{:},\[:\],(:)' + +  let b:match_skip = +	\ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" . +	\ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" . +        \ "Regexp\\|RegexpDelimiter\\|" . +	\ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" . +	\ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" . +	\ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" . +	\ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'" +endif + +setlocal formatoptions-=t formatoptions+=croql + +setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\) +setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'\%(\.rb\)\=$','.rb','') +setlocal suffixesadd=.rb + +if exists("&ofu") && has("ruby") +  setlocal omnifunc=rubycomplete#Complete +endif + +" To activate, :set ballooneval +if has('balloon_eval') && exists('+balloonexpr') +  setlocal balloonexpr=RubyBalloonexpr() +endif + + +" TODO: +"setlocal define=^\\s*def + +setlocal comments=:# +setlocal commentstring=#\ %s + +if !exists('g:ruby_version_paths') +  let g:ruby_version_paths = {} +endif + +function! s:query_path(root) abort +  let code = "print $:.join %q{,}" +  if &shell =~# 'sh' +    let prefix = 'env PATH='.shellescape($PATH).' ' +  else +    let prefix = '' +  endif +  if &shellxquote == "'" +    let path_check = prefix.'ruby --disable-gems -e "' . code . '"' +  else +    let path_check = prefix."ruby --disable-gems -e '" . code . "'" +  endif + +  let cd = haslocaldir() ? 'lcd' : 'cd' +  let cwd = fnameescape(getcwd()) +  try +    exe cd fnameescape(a:root) +    let path = split(system(path_check),',') +    exe cd cwd +    return path +  finally +    exe cd cwd +  endtry +endfunction + +function! s:build_path(path) abort +  let path = join(map(copy(a:path), 'v:val ==# "." ? "" : v:val'), ',') +  if &g:path !~# '\v^\.%(,/%(usr|emx)/include)=,,$' +    let path = substitute(&g:path,',,$',',','') . ',' . path +  endif +  return path +endfunction + +if !exists('b:ruby_version') && !exists('g:ruby_path') && isdirectory(expand('%:p:h')) +  let s:version_file = findfile('.ruby-version', '.;') +  if !empty(s:version_file) && filereadable(s:version_file) +    let b:ruby_version = get(readfile(s:version_file, '', 1), '') +    if !has_key(g:ruby_version_paths, b:ruby_version) +      let g:ruby_version_paths[b:ruby_version] = s:query_path(fnamemodify(s:version_file, ':p:h')) +    endif +  endif +endif + +if exists("g:ruby_path") +  let s:ruby_path = type(g:ruby_path) == type([]) ? join(g:ruby_path, ',') : g:ruby_path +elseif has_key(g:ruby_version_paths, get(b:, 'ruby_version', '')) +  let s:ruby_paths = g:ruby_version_paths[b:ruby_version] +  let s:ruby_path = s:build_path(s:ruby_paths) +else +  if !exists('g:ruby_default_path') +    if has("ruby") && has("win32") +      ruby ::VIM::command( 'let g:ruby_default_path = split("%s",",")' % $:.join(%q{,}) ) +    elseif executable('ruby') +      let g:ruby_default_path = s:query_path($HOME) +    else +      let g:ruby_default_path = map(split($RUBYLIB,':'), 'v:val ==# "." ? "" : v:val') +    endif +  endif +  let s:ruby_paths = g:ruby_default_path +  let s:ruby_path = s:build_path(s:ruby_paths) +endif + +if stridx(&l:path, s:ruby_path) == -1 +  let &l:path = s:ruby_path +endif +if exists('s:ruby_paths') && stridx(&l:tags, join(map(copy(s:ruby_paths),'v:val."/tags"'),',')) == -1 +  let &l:tags = &tags . ',' . join(map(copy(s:ruby_paths),'v:val."/tags"'),',') +endif + +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") +  let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" . +                     \ "All Files (*.*)\t*.*\n" +endif + +let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< tags< kp<" +      \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip" +      \."| if exists('&ofu') && has('ruby') | setl ofu< | endif" +      \."| if has('balloon_eval') && exists('+bexpr') | setl bexpr< | endif" + +function! s:map(mode, flags, map) abort +  let from = matchstr(a:map, '\S\+') +  if empty(mapcheck(from, a:mode)) +    exe a:mode.'map' '<buffer>'.(a:0 ? a:1 : '') a:map +    let b:undo_ftplugin .= '|sil! '.a:mode.'unmap <buffer> '.from +  endif +endfunction + +cmap <buffer><script><expr> <Plug><cword> substitute(RubyCursorIdentifier(),'^$',"\022\027",'') +cmap <buffer><script><expr> <Plug><cfile> substitute(RubyCursorFile(),'^$',"\022\006",'') +let b:undo_ftplugin .= "| sil! cunmap <buffer> <Plug><cword>| sil! cunmap <buffer> <Plug><cfile>" + +if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") +  nmap <buffer><script> <SID>:  :<C-U> +  nmap <buffer><script> <SID>c: :<C-U><C-R>=v:count ? v:count : ''<CR> + +  nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','n')<CR> +  nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','n')<CR> +  nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','n')<CR> +  nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','n')<CR> +  xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','v')<CR> +  xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','v')<CR> +  xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','v')<CR> +  xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','v')<CR> + +  nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','n')<CR> +  nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','n')<CR> +  nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','n')<CR> +  nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','n')<CR> +  xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','v')<CR> +  xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','v')<CR> +  xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','v')<CR> +  xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','v')<CR> + +  let b:undo_ftplugin = b:undo_ftplugin +        \."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['" +        \."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'" + +  if maparg('im','x') == '' && maparg('im','o') == '' && maparg('am','x') == '' && maparg('am','o') == '' +    onoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR> +    onoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR> +    xnoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR> +    xnoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR> +    let b:undo_ftplugin = b:undo_ftplugin +          \."| sil! exe 'ounmap <buffer> im' | sil! exe 'ounmap <buffer> am'" +          \."| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'" +  endif + +  if maparg('iM','x') == '' && maparg('iM','o') == '' && maparg('aM','x') == '' && maparg('aM','o') == '' +    onoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR> +    onoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR> +    xnoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR> +    xnoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR> +    let b:undo_ftplugin = b:undo_ftplugin +          \."| sil! exe 'ounmap <buffer> iM' | sil! exe 'ounmap <buffer> aM'" +          \."| sil! exe 'xunmap <buffer> iM' | sil! exe 'xunmap <buffer> aM'" +  endif + +  call s:map('c', '', '<C-R><C-W> <Plug><cword>') +  call s:map('c', '', '<C-R><C-F> <Plug><cfile>') + +  cmap <buffer><script><expr> <SID>tagzv &foldopen =~# 'tag' ? '<Bar>norm! zv' : '' +  call s:map('n', '<silent>', '<C-]>       <SID>:exe  v:count1."tag <Plug><cword>"<SID>tagzv<CR>') +  call s:map('n', '<silent>', 'g<C-]>      <SID>:exe         "tjump <Plug><cword>"<SID>tagzv<CR>') +  call s:map('n', '<silent>', 'g]          <SID>:exe       "tselect <Plug><cword>"<SID>tagzv<CR>') +  call s:map('n', '<silent>', '<C-W>]      <SID>:exe v:count1."stag <Plug><cword>"<SID>tagzv<CR>') +  call s:map('n', '<silent>', '<C-W><C-]>  <SID>:exe v:count1."stag <Plug><cword>"<SID>tagzv<CR>') +  call s:map('n', '<silent>', '<C-W>g<C-]> <SID>:exe        "stjump <Plug><cword>"<SID>tagzv<CR>') +  call s:map('n', '<silent>', '<C-W>g]     <SID>:exe      "stselect <Plug><cword>"<SID>tagzv<CR>') +  call s:map('n', '<silent>', '<C-W>}      <SID>:exe v:count1."ptag <Plug><cword>"<CR>') +  call s:map('n', '<silent>', '<C-W>g}     <SID>:exe        "ptjump <Plug><cword>"<CR>') + +  call s:map('n', '<silent>', 'gf           <SID>c:find <Plug><cfile><CR>') +  call s:map('n', '<silent>', '<C-W>f      <SID>c:sfind <Plug><cfile><CR>') +  call s:map('n', '<silent>', '<C-W><C-F>  <SID>c:sfind <Plug><cfile><CR>') +  call s:map('n', '<silent>', '<C-W>gf   <SID>c:tabfind <Plug><cfile><CR>') +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +if exists("g:did_ruby_ftplugin_functions") +  finish +endif +let g:did_ruby_ftplugin_functions = 1 + +function! RubyBalloonexpr() abort +  if !exists('s:ri_found') +    let s:ri_found = executable('ri') +  endif +  if s:ri_found +    let line = getline(v:beval_lnum) +    let b = matchstr(strpart(line,0,v:beval_col),'\%(\w\|[:.]\)*$') +    let a = substitute(matchstr(strpart(line,v:beval_col),'^\w*\%([?!]\|\s*=\)\?'),'\s\+','','g') +    let str = b.a +    let before = strpart(line,0,v:beval_col-strlen(b)) +    let after  = strpart(line,v:beval_col+strlen(a)) +    if str =~ '^\.' +      let str = substitute(str,'^\.','#','g') +      if before =~ '\]\s*$' +        let str = 'Array'.str +      elseif before =~ '}\s*$' +        " False positives from blocks here +        let str = 'Hash'.str +      elseif before =~ "[\"'`]\\s*$" || before =~ '\$\d\+\s*$' +        let str = 'String'.str +      elseif before =~ '\$\d\+\.\d\+\s*$' +        let str = 'Float'.str +      elseif before =~ '\$\d\+\s*$' +        let str = 'Integer'.str +      elseif before =~ '/\s*$' +        let str = 'Regexp'.str +      else +        let str = substitute(str,'^#','.','') +      endif +    endif +    let str = substitute(str,'.*\.\s*to_f\s*\.\s*','Float#','') +    let str = substitute(str,'.*\.\s*to_i\%(nt\)\=\s*\.\s*','Integer#','') +    let str = substitute(str,'.*\.\s*to_s\%(tr\)\=\s*\.\s*','String#','') +    let str = substitute(str,'.*\.\s*to_sym\s*\.\s*','Symbol#','') +    let str = substitute(str,'.*\.\s*to_a\%(ry\)\=\s*\.\s*','Array#','') +    let str = substitute(str,'.*\.\s*to_proc\s*\.\s*','Proc#','') +    if str !~ '^\w' +      return '' +    endif +    silent! let res = substitute(system("ri -f rdoc -T \"".str.'"'),'\n$','','') +    if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method' +      return '' +    endif +    return res +  else +    return "" +  endif +endfunction + +function! s:searchsyn(pattern, syn, flags, mode) abort +  let cnt = v:count1 +  norm! m' +  if a:mode ==# 'v' +    norm! gv +  endif +  let i = 0 +  while i < cnt +    let i = i + 1 +    let line = line('.') +    let col  = col('.') +    let pos = search(a:pattern,'W'.a:flags) +    while pos != 0 && s:synname() !~# a:syn +      let pos = search(a:pattern,'W'.a:flags) +    endwhile +    if pos == 0 +      call cursor(line,col) +      return +    endif +  endwhile +endfunction + +function! s:synname() abort +  return synIDattr(synID(line('.'),col('.'),0),'name') +endfunction + +function! s:wrap_i(back,forward) abort +  execute 'norm k'.a:forward +  let line = line('.') +  execute 'norm '.a:back +  if line('.') == line - 1 +    return s:wrap_a(a:back,a:forward) +  endif +  execute 'norm jV'.a:forward.'k' +endfunction + +function! s:wrap_a(back,forward) abort +  execute 'norm '.a:forward +  if line('.') < line('$') && getline(line('.')+1) ==# '' +    let after = 1 +  endif +  execute 'norm '.a:back +  while getline(line('.')-1) =~# '^\s*#' && line('.') +    - +  endwhile +  if exists('after') +    execute 'norm V'.a:forward.'j' +  elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$' +    execute 'norm kV'.a:forward +  else +    execute 'norm V'.a:forward +  endif +endfunction + +function! RubyCursorIdentifier() abort +  let asciicode    = '\%(\w\|[]})\"'."'".']\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)' +  let number       = '\%(\%(\w\|[]})\"'."'".']\s*\)\@<!-\)\=\%(\<[[:digit:]_]\+\%(\.[[:digit:]_]\+\)\=\%([Ee][[:digit:]_]\+\)\=\>\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode +  let operator     = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)' +  let method       = '\%(\.[_a-zA-Z]\w*\s*=>\@!\|\<[_a-zA-Z]\w*\>[?!]\=\)' +  let global       = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)' +  let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)' +  let pattern      = '\C\s*\%('.number.'\|\%(:\@<!:\)\='.symbolizable.'\)' +  let [lnum, col]  = searchpos(pattern,'bcn',line('.')) +  let raw          = matchstr(getline('.')[col-1 : ],pattern) +  let stripped     = substitute(substitute(raw,'\s\+=$','=',''),'^\s*[:.]\=','','') +  return stripped == '' ? expand("<cword>") : stripped +endfunction + +function! RubyCursorFile() abort +  let isfname = &isfname +  try +    set isfname+=: +    let cfile = expand('<cfile>') +  finally +    let isfname = &isfname +  endtry +  let pre = matchstr(strpart(getline('.'), 0, col('.')-1), '.*\f\@<!') +  let post = matchstr(strpart(getline('.'), col('.')), '\f\@!.*') +  let ext = getline('.') =~# '^\s*\%(require\%(_relative\)\=\|autoload\)\>' && cfile !~# '\.rb$' ? '.rb' : '' +  if s:synname() ==# 'rubyConstant' +    let cfile = substitute(cfile,'\.\w\+[?!=]\=$','','') +    let cfile = substitute(cfile,'::','/','g') +    let cfile = substitute(cfile,'\(\u\+\)\(\u\l\)','\1_\2', 'g') +    let cfile = substitute(cfile,'\(\l\|\d\)\(\u\)','\1_\2', 'g') +    return tolower(cfile) . '.rb' +  elseif getline('.') =~# '^\s*require_relative\s*\(["'']\).*\1\s*$' +    let cfile = expand('%:p:h') . '/' . matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') . ext +  elseif getline('.') =~# '^\s*\%(require[( ]\|load[( ]\|autoload[( ]:\w\+,\)\s*\%(::\)\=File\.expand_path(\(["'']\)\.\./.*\1,\s*__FILE__)\s*$' +    let target = matchstr(getline('.'),'\(["'']\)\.\.\zs/.\{-\}\ze\1') +    let cfile = expand('%:p:h') . target . ext +  elseif getline('.') =~# '^\s*\%(require \|load \|autoload :\w\+,\)\s*\(["'']\).*\1\s*$' +    let cfile = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') . ext +  elseif pre.post =~# '\<File.expand_path[( ].*[''"]\{2\}, *__FILE__\>' && cfile =~# '^\.\.' +    let cfile = expand('%:p:h') . strpart(cfile, 2) +  else +    return substitute(cfile, '\C\v^(.*):(\d+)%(:in)=$', '+\2 \1', '') +  endif +  let cwdpat = '^\M' . substitute(getcwd(), '[\/]', '\\[\\/]', 'g').'\ze\[\/]' +  let cfile = substitute(cfile, cwdpat, '.', '') +  if fnameescape(cfile) !=# cfile +    return '+ '.fnameescape(cfile) +  else +    return cfile +  endif +endfunction + +" +" Instructions for enabling "matchit" support: +" +" 1. Look for the latest "matchit" plugin at +" +"         http://www.vim.org/scripts/script.php?script_id=39 +" +"    It is also packaged with Vim, in the $VIMRUNTIME/macros directory. +" +" 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc). +" +" 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin). +" +" 4. Ensure this file (ftplugin/ruby.vim) is installed. +" +" 5. Ensure you have this line in your $HOME/.vimrc: +"         filetype plugin on +" +" 6. Restart Vim and create the matchit documentation: +" +"         :helptags ~/.vim/doc +" +"    Now you can do ":help matchit", and you should be able to use "%" on Ruby +"    keywords.  Try ":echo b:match_words" to be sure. +" +" Thanks to Mark J. Reed for the instructions.  See ":help vimrc" for the +" locations of plugin directories, etc., as there are several options, and it +" differs on Windows.  Email gsinclair@soyabean.com.au if you need help. +" + +" vim: nowrap sw=2 sts=2 ts=8: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'ruby') == -1  " Vim filetype plugin diff --git a/ftplugin/rust.vim b/ftplugin/rust.vim index d1765d07..2386ace6 100644 --- a/ftplugin/rust.vim +++ b/ftplugin/rust.vim @@ -1,3 +1,204 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Language:     Rust +" Description:  Vim ftplugin for Rust +" Maintainer:   Chris Morgan <me@chrismorgan.info> +" Maintainer:   Kevin Ballard <kevin@sb.org> +" Last Change:  June 08, 2016 +" For bugs, patches and license go to https://github.com/rust-lang/rust.vim  + +if exists("b:did_ftplugin") +	finish +endif +let b:did_ftplugin = 1 + +let s:save_cpo = &cpo +set cpo&vim + +augroup rust.vim +autocmd! + +" Variables {{{1 + +" The rust source code at present seems to typically omit a leader on /*! +" comments, so we'll use that as our default, but make it easy to switch. +" This does not affect indentation at all (I tested it with and without +" leader), merely whether a leader is inserted by default or not. +if exists("g:rust_bang_comment_leader") && g:rust_bang_comment_leader != 0 +	" Why is the `,s0:/*,mb:\ ,ex:*/` there, you ask? I don't understand why, +	" but without it, */ gets indented one space even if there were no +	" leaders. I'm fairly sure that's a Vim bug. +	setlocal comments=s1:/*,mb:*,ex:*/,s0:/*,mb:\ ,ex:*/,:///,://!,:// +else +	setlocal comments=s0:/*!,m:\ ,ex:*/,s1:/*,mb:*,ex:*/,:///,://!,:// +endif +setlocal commentstring=//%s +setlocal formatoptions-=t formatoptions+=croqnl +" j was only added in 7.3.541, so stop complaints about its nonexistence +silent! setlocal formatoptions+=j + +" smartindent will be overridden by indentexpr if filetype indent is on, but +" otherwise it's better than nothing. +setlocal smartindent nocindent + +if !exists("g:rust_recommended_style") || g:rust_recommended_style != 0 +	setlocal tabstop=4 shiftwidth=4 softtabstop=4 expandtab +	setlocal textwidth=99 +endif + +" This includeexpr isn't perfect, but it's a good start +setlocal includeexpr=substitute(v:fname,'::','/','g') + +setlocal suffixesadd=.rs + +if exists("g:ftplugin_rust_source_path") +    let &l:path=g:ftplugin_rust_source_path . ',' . &l:path +endif + +if exists("g:loaded_delimitMate") +	if exists("b:delimitMate_excluded_regions") +		let b:rust_original_delimitMate_excluded_regions = b:delimitMate_excluded_regions +	endif + +	let s:delimitMate_extra_excluded_regions = ',rustLifetimeCandidate,rustGenericLifetimeCandidate' + +	" For this buffer, when delimitMate issues the `User delimitMate_map` +	" event in the autocommand system, add the above-defined extra excluded +	" regions to delimitMate's state, if they have not already been added. +	autocmd User <buffer> +		\ if expand('<afile>') ==# 'delimitMate_map' && match( +		\     delimitMate#Get("excluded_regions"), +		\     s:delimitMate_extra_excluded_regions) == -1 +		\|  let b:delimitMate_excluded_regions = +		\       delimitMate#Get("excluded_regions") +		\       . s:delimitMate_extra_excluded_regions +		\|endif + +	" For this buffer, when delimitMate issues the `User delimitMate_unmap` +	" event in the autocommand system, delete the above-defined extra excluded +	" regions from delimitMate's state (the deletion being idempotent and +	" having no effect if the extra excluded regions are not present in the +	" targeted part of delimitMate's state). +	autocmd User <buffer> +		\ if expand('<afile>') ==# 'delimitMate_unmap' +		\|  let b:delimitMate_excluded_regions = substitute( +		\       delimitMate#Get("excluded_regions"), +		\       '\C\V' . s:delimitMate_extra_excluded_regions, +		\       '', 'g') +		\|endif +endif + +if has("folding") && exists('g:rust_fold') && g:rust_fold != 0 +	let b:rust_set_foldmethod=1 +	setlocal foldmethod=syntax +	if g:rust_fold == 2 +		setlocal foldlevel< +	else +		setlocal foldlevel=99 +	endif +endif + +if has('conceal') && exists('g:rust_conceal') && g:rust_conceal != 0 +	let b:rust_set_conceallevel=1 +	setlocal conceallevel=2 +endif + +" Motion Commands {{{1 + +" Bind motion commands to support hanging indents +nnoremap <silent> <buffer> [[ :call rust#Jump('n', 'Back')<CR> +nnoremap <silent> <buffer> ]] :call rust#Jump('n', 'Forward')<CR> +xnoremap <silent> <buffer> [[ :call rust#Jump('v', 'Back')<CR> +xnoremap <silent> <buffer> ]] :call rust#Jump('v', 'Forward')<CR> +onoremap <silent> <buffer> [[ :call rust#Jump('o', 'Back')<CR> +onoremap <silent> <buffer> ]] :call rust#Jump('o', 'Forward')<CR> + +" Commands {{{1 + +" See |:RustRun| for docs +command! -nargs=* -complete=file -bang -buffer RustRun call rust#Run(<bang>0, <q-args>) + +" See |:RustExpand| for docs +command! -nargs=* -complete=customlist,rust#CompleteExpand -bang -buffer RustExpand call rust#Expand(<bang>0, <q-args>) + +" See |:RustEmitIr| for docs +command! -nargs=* -buffer RustEmitIr call rust#Emit("llvm-ir", <q-args>) + +" See |:RustEmitAsm| for docs +command! -nargs=* -buffer RustEmitAsm call rust#Emit("asm", <q-args>) + +" See |:RustPlay| for docs +command! -range=% RustPlay :call rust#Play(<count>, <line1>, <line2>, <f-args>) + +" See |:RustFmt| for docs +command! -buffer RustFmt call rustfmt#Format() + +" See |:RustFmtRange| for docs +command! -range -buffer RustFmtRange call rustfmt#FormatRange(<line1>, <line2>) + +" Mappings {{{1 + +" Bind ⌘R in MacVim to :RustRun +nnoremap <silent> <buffer> <D-r> :RustRun<CR> +" Bind ⌘⇧R in MacVim to :RustRun! pre-filled with the last args +nnoremap <buffer> <D-R> :RustRun! <C-r>=join(b:rust_last_rustc_args)<CR><C-\>erust#AppendCmdLine(' -- ' . join(b:rust_last_args))<CR> + +if !exists("b:rust_last_rustc_args") || !exists("b:rust_last_args") +	let b:rust_last_rustc_args = [] +	let b:rust_last_args = [] +endif + +" Cleanup {{{1 + +let b:undo_ftplugin = " +		\ setlocal formatoptions< comments< commentstring< includeexpr< suffixesadd< +		\|setlocal tabstop< shiftwidth< softtabstop< expandtab< textwidth< +		\|if exists('b:rust_original_delimitMate_excluded_regions') +		  \|let b:delimitMate_excluded_regions = b:rust_original_delimitMate_excluded_regions +		  \|unlet b:rust_original_delimitMate_excluded_regions +		\|else +		  \|unlet! b:delimitMate_excluded_regions +		\|endif +		\|if exists('b:rust_set_foldmethod') +		  \|setlocal foldmethod< foldlevel< +		  \|unlet b:rust_set_foldmethod +		\|endif +		\|if exists('b:rust_set_conceallevel') +		  \|setlocal conceallevel< +		  \|unlet b:rust_set_conceallevel +		\|endif +		\|unlet! b:rust_last_rustc_args b:rust_last_args +		\|delcommand RustRun +		\|delcommand RustExpand +		\|delcommand RustEmitIr +		\|delcommand RustEmitAsm +		\|delcommand RustPlay +		\|nunmap <buffer> <D-r> +		\|nunmap <buffer> <D-R> +		\|nunmap <buffer> [[ +		\|nunmap <buffer> ]] +		\|xunmap <buffer> [[ +		\|xunmap <buffer> ]] +		\|ounmap <buffer> [[ +		\|ounmap <buffer> ]] +		\|set matchpairs-=<:> +		\" + +" }}}1 + +" Code formatting on save +if get(g:, "rustfmt_autosave", 0) +	autocmd BufWritePre *.rs silent! call rustfmt#Format() +endif + +augroup END + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim: set noet sw=8 ts=8: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'rust') == -1  " Language:     Rust diff --git a/ftplugin/sass.vim b/ftplugin/sass.vim new file mode 100644 index 00000000..2668e9f0 --- /dev/null +++ b/ftplugin/sass.vim @@ -0,0 +1,27 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	Sass +" 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 b:undo_ftplugin = "setl com< cms< def< inc< inex< ofu< sua<" + +setlocal comments=:// +setlocal commentstring=//\ %s +setlocal define=^\\s*\\%(@mixin\\\|=\\) +setlocal includeexpr=substitute(v:fname,'\\%(.*/\\\|^\\)\\zs','_','') +setlocal omnifunc=csscomplete#CompleteCSS +setlocal suffixesadd=.sass,.scss,.css + +let &l:include = '^\s*@import\s\+\%(url(\)\=["'']\=' + +" vim:set sw=2: + +endif diff --git a/ftplugin/sbt.vim b/ftplugin/sbt.vim new file mode 100644 index 00000000..e719ee5b --- /dev/null +++ b/ftplugin/sbt.vim @@ -0,0 +1,19 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:     sbt +" Maintainer:   Steven Dobay <stevendobay at protonmail.com> +" License:      Same as Vim +" Last Change:  2017.04.30 +" ---------------------------------------------------------------------------- + +if exists('b:did_ftplugin') || &cp +  finish +endif + +let b:did_ftplugin = 1 + +runtime! ftplugin/scala.vim + + +endif diff --git a/ftplugin/scala.vim b/ftplugin/scala.vim index 026e20cd..249fc93d 100644 --- a/ftplugin/scala.vim +++ b/ftplugin/scala.vim @@ -1,3 +1,42 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Scala +" Maintainer:           Derek Wyatt +" URL:                  https://github.com/derekwyatt/vim-scala +" License:              Same as Vim +" Last Change:          02 August 2016 +" ---------------------------------------------------------------------------- + +if exists('b:did_ftplugin') || &cp +  finish +endif +let b:did_ftplugin = 1 + +" j is fairly new in Vim, so don't complain if it's not there +setlocal formatoptions-=t formatoptions+=croqnl +silent! setlocal formatoptions+=j + +" Just like c.vim, but additionally doesn't wrap text onto /** line when +" formatting. Doesn't bungle bulleted lists when formatting. +if get(g:, 'scala_scaladoc_indent', 0) +  setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s2:/**,mb:*,ex:*/,s1:/*,mb:*,ex:*/,:// +else +  setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/**,mb:*,ex:*/,s1:/*,mb:*,ex:*/,:// +endif +setlocal commentstring=//\ %s + +setlocal shiftwidth=2 softtabstop=2 expandtab + +setlocal include='^\s*import' +setlocal includeexpr='substitute(v:fname,"\\.","/","g")' + +setlocal path+=src/main/scala,src/test/scala +setlocal suffixesadd=.scala + +" vim:set sw=2 sts=2 ts=8 et: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scala') == -1  " Vim filetype plugin diff --git a/ftplugin/scheme.vim b/ftplugin/scheme.vim new file mode 100644 index 00000000..70923421 --- /dev/null +++ b/ftplugin/scheme.vim @@ -0,0 +1,49 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:      Scheme +" Maintainer:    Sergey Khorev <sergey.khorev@gmail.com> +" URL:		 http://sites.google.com/site/khorser/opensource/vim +" Original author:    Dorai Sitaram <ds26@gte.com> +" Original URL:		 http://www.ccs.neu.edu/~dorai/vimplugins/vimplugins.html +" Last Change:   Oct 23, 2013 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Copy-paste from ftplugin/lisp.vim +setl comments=:; +setl define=^\\s*(def\\k* +setl formatoptions-=t +setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94 +setl lisp +setl commentstring=;%s + +setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|# + +" Scheme-specific settings +if exists("b:is_mzscheme") || exists("is_mzscheme") +    " improve indenting +    setl iskeyword+=#,%,^ +    setl lispwords+=module,parameterize,let-values,let*-values,letrec-values +    setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case +    setl lispwords+=define-signature,unit,unit/sig,compund-unit/sig,define-values/invoke-unit/sig +endif + +if exists("b:is_chicken") || exists("is_chicken") +    " improve indenting +    setl iskeyword+=#,%,^ +    setl lispwords+=let-optionals,let-optionals*,declare +    setl lispwords+=let-values,let*-values,letrec-values +    setl lispwords+=define-values,opt-lambda,case-lambda,syntax-rules,with-syntax,syntax-case +    setl lispwords+=cond-expand,and-let*,foreign-lambda,foreign-lambda* +endif + +let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lispwords< lisp< commentstring<" + +endif diff --git a/ftplugin/screen.vim b/ftplugin/screen.vim new file mode 100644 index 00000000..5df4d9f3 --- /dev/null +++ b/ftplugin/screen.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             screen(1) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/scss.vim b/ftplugin/scss.vim index 55519c31..9d743032 100644 --- a/ftplugin/scss.vim +++ b/ftplugin/scss.vim @@ -1,3 +1,20 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	SCSS +" Maintainer:	Tim Pope <vimNOSPAM@tpope.org> +" Last Change:	2016 Aug 29 + +if exists("b:did_ftplugin") +  finish +endif + +runtime! ftplugin/sass.vim +setlocal comments=s1:/*,mb:*,ex:*/,:// + +" vim:set sw=2: + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'scss') == -1  if exists('b:did_indent') && b:did_indent diff --git a/ftplugin/sensors.vim b/ftplugin/sensors.vim new file mode 100644 index 00000000..c6b7e285 --- /dev/null +++ b/ftplugin/sensors.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             sensors.conf(5) - libsensors configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/services.vim b/ftplugin/services.vim new file mode 100644 index 00000000..78f2e03f --- /dev/null +++ b/ftplugin/services.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             services(5) - Internet network services list +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/setserial.vim b/ftplugin/setserial.vim new file mode 100644 index 00000000..8b68089a --- /dev/null +++ b/ftplugin/setserial.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             setserial(8) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/sgml.vim b/ftplugin/sgml.vim new file mode 100644 index 00000000..24e279a5 --- /dev/null +++ b/ftplugin/sgml.vim @@ -0,0 +1,44 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	sgml +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . +	    \	     "All Files (*.*)\t*.*\n" + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show xml-related files. +if has("gui_win32") +    let  b:browsefilter="SGML Files (*.sgml,*.sgm)\t*.sgm*\n" . s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/sh.vim b/ftplugin/sh.vim new file mode 100644 index 00000000..4a478fc4 --- /dev/null +++ b/ftplugin/sh.vim @@ -0,0 +1,43 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	sh +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal commentstring=#%s + +" Shell:  thanks to Johannes Zellner +if exists("loaded_matchit") +    let s:sol = '\%(;\s*\|^\s*\)\@<='  " start of line +    let b:match_words = +    \ s:sol.'if\>:' . s:sol.'elif\>:' . s:sol.'else\>:' . s:sol. 'fi\>,' . +    \ s:sol.'\%(for\|while\)\>:' . s:sol. 'done\>,' . +    \ s:sol.'case\>:' . s:sol. 'esac\>' +endif + +" Change the :browse e filter to primarily show shell-related files. +if has("gui_win32") +    let  b:browsefilter="Bourne Shell Scripts (*.sh)\t*.sh\n" . +		\	"Korn Shell Scripts (*.ksh)\t*.ksh\n" . +		\	"Bash Shell Scripts (*.bash)\t*.bash\n" . +		\	"All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal cms< | unlet! b:browsefilter b:match_words" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/sieve.vim b/ftplugin/sieve.vim new file mode 100644 index 00000000..367d7fdc --- /dev/null +++ b/ftplugin/sieve.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Sieve filtering language input file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=s1:/*,mb:*,ex:*/,:# commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/slpconf.vim b/ftplugin/slpconf.vim new file mode 100644 index 00000000..c96e2462 --- /dev/null +++ b/ftplugin/slpconf.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             RFC 2614 - An API for Service Location configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:#,:; commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/slpreg.vim b/ftplugin/slpreg.vim new file mode 100644 index 00000000..8a5a3d5f --- /dev/null +++ b/ftplugin/slpreg.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             RFC 2614 - An API for Service Location registration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:#,:; commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/slpspi.vim b/ftplugin/slpspi.vim new file mode 100644 index 00000000..c8820897 --- /dev/null +++ b/ftplugin/slpspi.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             RFC 2614 - An API for Service Location SPI file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:#,:; commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/spec.vim b/ftplugin/spec.vim new file mode 100644 index 00000000..2e9b9c8a --- /dev/null +++ b/ftplugin/spec.vim @@ -0,0 +1,214 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Plugin to update the %changelog section of RPM spec files +" Filename: spec.vim +" Maintainer: Igor Gnatenko i.gnatenko.brain@gmail.com +" Former Maintainer: Gustavo Niemeyer <niemeyer@conectiva.com> (until March 2014) +" Last Change: Mon Jun 01 21:15 MSK 2015 Igor Gnatenko + +if exists("b:did_ftplugin") +	finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +if !exists("no_plugin_maps") && !exists("no_spec_maps") +	if !hasmapto("<Plug>SpecChangelog") +		map <buffer> <LocalLeader>c <Plug>SpecChangelog +	endif +endif + +if !hasmapto("call <SID>SpecChangelog(\"\")<CR>") +       noremap <buffer> <unique> <script> <Plug>SpecChangelog :call <SID>SpecChangelog("")<CR> +endif + +if !exists("*s:GetRelVer") +	function! s:GetRelVer() +		if has('python') +python << PYEND +import sys, datetime, shutil, tempfile +import vim + +try: +    import rpm +except ImportError: +    pass +else: +    specfile = vim.current.buffer.name +    if specfile: +        rpm.delMacro("dist") +        spec = rpm.spec(specfile) +        headers = spec.sourceHeader +        version = headers["Version"] +        release = headers["Release"] +        vim.command("let ver = " + version) +        vim.command("let rel = " + release) +PYEND +		endif +	endfunction +endif + +if !exists("*s:SpecChangelog") +	function s:SpecChangelog(format) +		if strlen(a:format) == 0 +			if !exists("g:spec_chglog_format") +				let email = input("Name <email address>: ") +				let g:spec_chglog_format = "%a %b %d %Y " . l:email +				echo "\r" +			endif +			let format = g:spec_chglog_format +		else +			if !exists("g:spec_chglog_format") +				let g:spec_chglog_format = a:format +			endif +			let format = a:format +		endif +		let line = 0 +		let name = "" +		let ver = "" +		let rel = "" +		let nameline = -1 +		let verline = -1 +		let relline = -1 +		let chgline = -1 +		while (line <= line("$")) +			let linestr = getline(line) +			if (name == "" && linestr =~? '^Name:') +				let nameline = line +				let name = substitute(strpart(linestr,5), '^[	 ]*\([^ 	]\+\)[		]*$','\1','') +			elseif (ver == "" && linestr =~? '^Version:') +				let verline = line +				let ver = substitute(strpart(linestr,8), '^[	 ]*\([^ 	]\+\)[		]*$','\1','') +			elseif (rel == "" && linestr =~? '^Release:') +				let relline = line +				let rel = substitute(strpart(linestr,8), '^[	 ]*\([^ 	]\+\)[		]*$','\1','') +			elseif (linestr =~? '^%changelog') +				let chgline = line +				execute line +				break +			endif +			let line = line+1 +		endwhile +		if (nameline != -1 && verline != -1 && relline != -1) +			let include_release_info = exists("g:spec_chglog_release_info") +			let name = s:ParseRpmVars(name, nameline) +			let ver = s:ParseRpmVars(ver, verline) +			let rel = s:ParseRpmVars(rel, relline) +		else +			let include_release_info = 0 +		endif + +		call s:GetRelVer() + +		if (chgline == -1) +			let option = confirm("Can't find %changelog. Create one? ","&End of file\n&Here\n&Cancel",3) +			if (option == 1) +				call append(line("$"),"") +				call append(line("$"),"%changelog") +				execute line("$") +				let chgline = line(".") +			elseif (option == 2) +				call append(line("."),"%changelog") +				normal j +				chgline = line(".") +			endif +		endif +		if (chgline != -1) +			let tmptime = v:lc_time +			language time C +			let parsed_format = "* ".strftime(format)." - ".ver."-".rel +			execute "language time" tmptime +			let release_info = "+ ".name."-".ver."-".rel +			let wrong_format = 0 +			let wrong_release = 0 +			let insert_line = 0 +			if (getline(chgline+1) != parsed_format) +				let wrong_format = 1 +			endif +			if (include_release_info && getline(chgline+2) != release_info) +				let wrong_release = 1 +			endif +			if (wrong_format || wrong_release) +				if (include_release_info && !wrong_release && !exists("g:spec_chglog_never_increase_release")) +					let option = confirm("Increase release? ","&Yes\n&No",1) +					if (option == 1) +						execute relline +						normal  +						let rel = substitute(strpart(getline(relline),8), '^[	 ]*\([^ 	]\+\)[		]*$','\1','') +						let release_info = "+ ".name."-".ver."-".rel +					endif +				endif +				let n = 0 +				call append(chgline+n, parsed_format) +				if include_release_info +					let n = n + 1 +					call append(chgline+n, release_info) +				endif +				let n = n + 1 +				call append(chgline+n,"- ") +				let n = n + 1 +				call append(chgline+n,"") +				let insert_line = chgline+n +			else +				let line = chgline +				if !exists("g:spec_chglog_prepend") +					while !(getline(line+2) =~ '^\( *\|\*.*\)$') +						let line = line+1 +					endwhile +				endif +				call append(line+1,"- ") +				let insert_line = line+2 +			endif +			execute insert_line +			startinsert! +		endif +	endfunction +endif + +if !exists("*s:ParseRpmVars") +    function s:ParseRpmVars(str, strline) +	let end = -1 +	let ret = "" +	while (1) +		let start = match(a:str, "\%{", end+1) +		if (start == -1) +			let ret = ret . strpart(a:str, end+1) +			break +		endif +		let ret = ret . strpart(a:str, end+1, start-(end+1)) +		let end = match(a:str, "}", start) +		if (end == -1) +			let ret = ret . strpart(a:str, start) +			break +		endif +		let varname = strpart(a:str, start+2, end-(start+2)) +		execute a:strline +		let definestr = "^[ \t]*%(?:global|define)[ \t]\\+" . varname . "[ \t]\\+\\(.*\\)$" +		let linenum = search(definestr, "bW") +		if (linenum != -1) +			let ret = ret .  substitute(getline(linenum), definestr, "\\1", "") +		else +			let ret = ret . strpart(str, start, end+1-start) +		endif +	endwhile +	return ret +    endfunction +endif + +" The following lines, along with the macros/matchit.vim plugin, +" make it easy to navigate the different sections of a spec file +" with the % key (thanks to Max Ischenko). + +let b:match_ignorecase = 0 +let b:match_words = +  \ '^Name:^%description:^%clean:^%(?:auto)?setup:^%build:^%install:^%files:' . +  \ '^%package:^%preun:^%postun:^%changelog' + +let &cpo = s:cpo_save +unlet s:cpo_save + +let b:undo_ftplugin = "unlet! b:match_ignorecase b:match_words" + +endif diff --git a/ftplugin/sql.vim b/ftplugin/sql.vim new file mode 100644 index 00000000..2d5b1910 --- /dev/null +++ b/ftplugin/sql.vim @@ -0,0 +1,552 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" SQL filetype plugin file +" Language:    SQL (Common for Oracle, Microsoft SQL Server, Sybase) +" Version:     12.0 +" Maintainer:  David Fishburn <dfishburn dot vim at gmail dot com> +" Last Change: 2017 Mar 07 +" Download:    http://vim.sourceforge.net/script.php?script_id=454 + +" For more details please use: +"        :h sql.txt +" +" This file should only contain values that are common to all SQL languages +" Oracle, Microsoft SQL Server, Sybase ASA/ASE, MySQL, and so on +" If additional features are required create: +"        vimfiles/after/ftplugin/sql.vim (Windows) +"        .vim/after/ftplugin/sql.vim     (Unix) +" to override and add any of your own settings. + + +" This file also creates a command, SQLSetType, which allows you to change +" SQL dialects on the fly.  For example, if I open an Oracle SQL file, it +" is color highlighted appropriately.  If I open an Informix SQL file, it +" will still be highlighted according to Oracles settings.  By running: +"     :SQLSetType sqlinformix +" +" All files called sqlinformix.vim will be loaded from the indent and syntax +" directories.  This allows you to easily flip SQL dialects on a per file +" basis.  NOTE: you can also use completion: +"     :SQLSetType <tab> +" +" To change the default dialect, add the following to your vimrc: +"    let g:sql_type_default = 'sqlanywhere' +" +" This file also creates a command, SQLGetType, which allows you to +" determine what the current dialect is in use. +"     :SQLGetType +" +" History +" +" Version 12.0 (April 2013) +" +" NF: Added support for "BEGIN TRY ... END TRY ... BEGIN CATCH ... END CATCH +" BF: This plugin is designed to be used with other plugins to enable the  +"     SQL completion with Perl, Python, Java, ...  The loading mechanism  +"     was not checking if the SQL objects were created, which can lead to  +"     the plugin not loading the SQL support. +" +" Version 11.0 (May 2013) +" +" NF: Updated to use SyntaxComplete's new regex support for syntax groups. +" +" Version 10.0 (Dec 2012) +" +" NF: Changed all maps to use noremap instead of must map +" NF: Changed all visual maps to use xnoremap instead of vnoremap as they +"     should only be used in visual mode and not select mode. +" BF: Most of the maps were using doubled up backslashes before they were +"     changed to using the search() function, which meant they no longer +"     worked. +" +" Version 9.0 +" +" NF: Completes 'b:undo_ftplugin' +" BF: Correctly set cpoptions when creating script +" +" Version 8.0 +" +" NF: Improved the matchit plugin regex (Talek) +" +" Version 7.0 +" +" NF: Calls the sqlcomplete#ResetCacheSyntax() function when calling +"     SQLSetType. +" +" Version 6.0 +" +" NF: Adds the command SQLGetType +" +" Version 5.0 +" +" NF: Adds the ability to choose the keys to control SQL completion, just add +"     the following to your .vimrc: +"    let g:ftplugin_sql_omni_key       = '<C-C>' +"    let g:ftplugin_sql_omni_key_right = '<Right>' +"    let g:ftplugin_sql_omni_key_left  = '<Left>' +" +" BF: format-options - Auto-wrap comments using textwidth was turned off +"                      by mistake. + + +" Only do this when not done yet for this buffer +" This ftplugin can be used with other ftplugins.  So ensure loading +" happens if all elements of this plugin have not yet loaded. +if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql' +    finish +endif + +let s:save_cpo = &cpo +set cpo&vim + +" Disable autowrapping for code, but enable for comments +" t     Auto-wrap text using textwidth +" c     Auto-wrap comments using textwidth, inserting the current comment +"       leader automatically. +setlocal formatoptions-=t +setlocal formatoptions+=c + +" Functions/Commands to allow the user to change SQL syntax dialects +" through the use of :SQLSetType <tab> for completion. +" This works with both Vim 6 and 7. + +if !exists("*SQL_SetType") +    " NOTE: You cannot use function! since this file can be +    " sourced from within this function.  That will result in +    " an error reported by Vim. +    function SQL_GetList(ArgLead, CmdLine, CursorPos) + +        if !exists('s:sql_list') +            " Grab a list of files that contain "sql" in their names +            let list_indent   = globpath(&runtimepath, 'indent/*sql*') +            let list_syntax   = globpath(&runtimepath, 'syntax/*sql*') +            let list_ftplugin = globpath(&runtimepath, 'ftplugin/*sql*') + +            let sqls = "\n".list_indent."\n".list_syntax."\n".list_ftplugin."\n" + +            " Strip out everything (path info) but the filename +            " Regex +            "    From between two newline characters +            "    Non-greedily grab all characters +            "    Followed by a valid filename \w\+\.\w\+ (sql.vim) +            "    Followed by a newline, but do not include the newline +            " +            "    Replace it with just the filename (get rid of PATH) +            " +            "    Recursively, since there are many filenames that contain +            "    the word SQL in the indent, syntax and ftplugin directory +            let sqls = substitute( sqls, +                        \ '[\n]\%(.\{-}\)\(\w\+\.\w\+\)\n\@=', +                        \ '\1\n', +                        \ 'g' +                        \ ) + +            " Remove duplicates, since sqlanywhere.vim can exist in the +            " sytax, indent and ftplugin directory, yet we only want +            " to display the option once +            let index = match(sqls, '.\{-}\ze\n') +            while index > -1 +                " Get the first filename +                let file = matchstr(sqls, '.\{-}\ze\n', index) +                " Recursively replace any *other* occurrence of that +                " filename with nothing (ie remove it) +                let sqls = substitute(sqls, '\%>'.(index+strlen(file)).'c\<'.file.'\>\n', '', 'g') +                " Move on to the next filename +                let index = match(sqls, '.\{-}\ze\n', (index+strlen(file)+1)) +            endwhile + +            " Sort the list if using version 7 +            if v:version >= 700 +                let mylist = split(sqls, "\n") +                let mylist = sort(mylist) +                let sqls   = join(mylist, "\n") +            endif + +            let s:sql_list = sqls +        endif + +        return s:sql_list + +    endfunction + +    function SQL_SetType(name) + +        " User has decided to override default SQL scripts and +        " specify a vendor specific version +        " (ie Oracle, Informix, SQL Anywhere, ...) +        " So check for an remove any settings that prevent the +        " scripts from being executed, and then source the +        " appropriate Vim scripts. +        if exists("b:did_ftplugin") +            unlet b:did_ftplugin +        endif +        if exists("b:current_syntax") +            " echomsg 'SQLSetType - clearing syntax' +            syntax clear +            if exists("b:current_syntax") +                unlet b:current_syntax +            endif +        endif +        if exists("b:did_indent") +            " echomsg 'SQLSetType - clearing indent' +            unlet b:did_indent +            " Set these values to their defaults +            setlocal indentkeys& +            setlocal indentexpr& +        endif + +        " Ensure the name is in the correct format +        let new_sql_type = substitute(a:name, +                    \ '\s*\([^\.]\+\)\(\.\w\+\)\?', '\L\1', '') + +        " Do not specify a buffer local variable if it is +        " the default value +        if new_sql_type == 'sql' +            let new_sql_type = 'sqloracle' +        endif +        let b:sql_type_override = new_sql_type + +        " Remove any cached SQL since a new sytax will have different +        " items and groups +        if !exists('g:loaded_sql_completion') || g:loaded_sql_completion >= 100 +            call sqlcomplete#ResetCacheSyntax() +        endif + +        " Vim will automatically source the correct files if we +        " change the filetype.  You cannot do this with setfiletype +        " since that command will only execute if a filetype has +        " not already been set.  In this case we want to override +        " the existing filetype. +        let &filetype = 'sql' + +        if b:sql_compl_savefunc != "" +            " We are changing the filetype to SQL from some other filetype +            " which had OMNI completion defined.  We need to activate the +            " SQL completion plugin in order to cache some of the syntax items +            " while the syntax rules for SQL are active. +            call sqlcomplete#PreCacheSyntax() +        endif +    endfunction +    command! -nargs=* -complete=custom,SQL_GetList SQLSetType :call SQL_SetType(<q-args>) + +endif + +" Functions/Commands to allow the user determine current SQL syntax dialect +" This works with both Vim 6 and 7. + +if !exists("*SQL_GetType") +    function SQL_GetType() +        if exists('b:sql_type_override') +            echomsg "Current SQL dialect in use:".b:sql_type_override +        else +            echomsg "Current SQL dialect in use:".g:sql_type_default +        endif +    endfunction +    command! -nargs=0 SQLGetType :call SQL_GetType() +endif + +if exists("b:sql_type_override") +    " echo 'sourcing buffer ftplugin/'.b:sql_type_override.'.vim' +    if globpath(&runtimepath, 'ftplugin/'.b:sql_type_override.'.vim') != '' +        exec 'runtime ftplugin/'.b:sql_type_override.'.vim' +        " else +        "     echomsg 'ftplugin/'.b:sql_type_override.' not exist, using default' +    endif +elseif exists("g:sql_type_default") +    " echo 'sourcing global ftplugin/'.g:sql_type_default.'.vim' +    if globpath(&runtimepath, 'ftplugin/'.g:sql_type_default.'.vim') != '' +        exec 'runtime ftplugin/'.g:sql_type_default.'.vim' +        " else +        "     echomsg 'ftplugin/'.g:sql_type_default.'.vim not exist, using default' +    endif +endif + +" If the above runtime command succeeded, do not load the default settings +" as they should have already been loaded from a previous run. +if exists("b:did_ftplugin") && exists("b:current_ftplugin") && b:current_ftplugin == 'sql' +    finish +endif + +let b:undo_ftplugin = "setl comments< formatoptions< define< omnifunc<" . +            \ " | unlet! b:browsefilter b:match_words" + +" Don't load another plugin for this buffer +let b:did_ftplugin     = 1 +let b:current_ftplugin = 'sql' + +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") +    let b:browsefilter = "SQL Files (*.sql)\t*.sql\n" . +                \ "All Files (*.*)\t*.*\n" +endif + +" Some standard expressions for use with the matchit strings +let s:notend = '\%(\<end\s\+\)\@<!' +let s:when_no_matched_or_others = '\%(\<when\>\%(\s\+\%(\%(\<not\>\s\+\)\?<matched\>\)\|\<others\>\)\@!\)' +let s:or_replace = '\%(or\s\+replace\s\+\)\?' + +" Define patterns for the matchit macro +if !exists("b:match_words") +    " SQL is generally case insensitive +    let b:match_ignorecase = 1 + +    " Handle the following: +    " if +    " elseif | elsif +    " else [if] +    " end if +    " +    " [while condition] loop +    "     leave +    "     break +    "     continue +    "     exit +    " end loop +    " +    " for +    "     leave +    "     break +    "     continue +    "     exit +    " end loop +    " +    " do +    "     statements +    " doend +    " +    " case +    " when +    " when +    " default +    " end case +    " +    " merge +    " when not matched +    " when matched +    " +    " EXCEPTION +    " WHEN column_not_found THEN +    " WHEN OTHERS THEN +    " +    " begin try +    " end try +    " begin catch +    " end catch +    " +    " create[ or replace] procedure|function|event +    " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'. + +    " For ColdFusion support +    setlocal matchpairs+=<:> +    let b:match_words = &matchpairs . +                \ ',\%(\<begin\)\%(\s\+\%(try\|catch\)\>\)\@!:\<end\>\W*$,'. +                \ +                \ '\<begin\s\+try\>:'. +                \ '\<end\s\+try\>:'. +                \ '\<begin\s\+catch\>:'. +                \ '\<end\s\+catch\>,'. +                \ +                \ s:notend . '\<if\>:'. +                \ '\<elsif\>\|\<elseif\>\|\<else\>:'. +                \ '\<end\s\+if\>,'. +                \ +                \ '\(^\s*\)\@<=\(\<\%(do\|for\|while\|loop\)\>.*\):'. +                \ '\%(\<exit\>\|\<leave\>\|\<break\>\|\<continue\>\):'. +                \ '\%(\<doend\>\|\%(\<end\s\+\%(for\|while\|loop\>\)\)\),'. +                \ +                \ '\%('. s:notend . '\<case\>\):'. +                \ '\%('.s:when_no_matched_or_others.'\):'. +                \ '\%(\<when\s\+others\>\|\<end\s\+case\>\),' . +                \ +                \ '\<merge\>:' . +                \ '\<when\s\+not\s\+matched\>:' . +                \ '\<when\s\+matched\>,' . +                \ +                \ '\%(\<create\s\+' . s:or_replace . '\)\?'. +                \ '\%(function\|procedure\|event\):'. +                \ '\<returns\?\>' +    " \ '\<begin\>\|\<returns\?\>:'. +    " \ '\<end\>\(;\)\?\s*$' +    " \ '\<exception\>:'.s:when_no_matched_or_others. +    " \ ':\<when\s\+others\>,'. +    " +    " \ '\%(\<exception\>\|\%('. s:notend . '\<case\>\)\):'. +    " \ '\%(\<default\>\|'.s:when_no_matched_or_others.'\):'. +    " \ '\%(\%(\<when\s\+others\>\)\|\<end\s\+case\>\),' . +endif + +" Define how to find the macro definition of a variable using the various +" [d, [D, [_CTRL_D and so on features +" Match these values ignoring case +" ie  DECLARE varname INTEGER +let &l:define = '\c\<\(VARIABLE\|DECLARE\|IN\|OUT\|INOUT\)\>' + + +" Mappings to move to the next BEGIN ... END block +" \W - no characters or digits +nnoremap <buffer> <silent> ]] :call search('\c^\s*begin\>', 'W' )<CR> +nnoremap <buffer> <silent> [[ :call search('\c^\s*begin\>', 'bW' )<CR> +nnoremap <buffer> <silent> ][ :call search('\c^\s*end\W*$', 'W' )<CR> +nnoremap <buffer> <silent> [] :call search('\c^\s*end\W*$', 'bW' )<CR> +xnoremap <buffer> <silent> ]] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'W' )<CR> +xnoremap <buffer> <silent> [[ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*begin\>', 'bW' )<CR> +xnoremap <buffer> <silent> ][ :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'W' )<CR> +xnoremap <buffer> <silent> [] :<C-U>exec "normal! gv"<Bar>call search('\c^\s*end\W*$', 'bW' )<CR> + + +" By default only look for CREATE statements, but allow +" the user to override +if !exists('g:ftplugin_sql_statements') +    let g:ftplugin_sql_statements = 'create' +endif + +" Predefined SQL objects what are used by the below mappings using +" the ]} style maps. +" This global variable allows the users to override it's value +" from within their vimrc. +" Note, you cannot use \?, since these patterns can be used to search +" backwards, you must use \{,1} +if !exists('g:ftplugin_sql_objects') +    let g:ftplugin_sql_objects = 'function,procedure,event,' . +                \ '\(existing\\|global\s\+temporary\s\+\)\{,1}' . +                \ 'table,trigger' . +                \ ',schema,service,publication,database,datatype,domain' . +                \ ',index,subscription,synchronization,view,variable' +endif + +" Key to trigger SQL completion +if !exists('g:ftplugin_sql_omni_key') +    let g:ftplugin_sql_omni_key = '<C-C>' +endif +" Key to trigger drill into column list +if !exists('g:ftplugin_sql_omni_key_right') +    let g:ftplugin_sql_omni_key_right = '<Right>' +endif +" Key to trigger drill out of column list +if !exists('g:ftplugin_sql_omni_key_left') +    let g:ftplugin_sql_omni_key_left = '<Left>' +endif + +" Replace all ,'s with bars, except ones with numbers after them. +" This will most likely be a \{,1} string. +let s:ftplugin_sql_objects = +            \ '\c^\s*' . +            \ '\(\(' . +            \ substitute(g:ftplugin_sql_statements, ',\d\@!', '\\\\|', 'g') . +            \ '\)\s\+\(or\s\+replace\s\+\)\{,1}\)\{,1}' . +            \ '\<\(' . +            \ substitute(g:ftplugin_sql_objects, ',\d\@!', '\\\\|', 'g') . +            \ '\)\>' + +" Mappings to move to the next CREATE ... block +exec "nnoremap <buffer> <silent> ]} :call search('".s:ftplugin_sql_objects."', 'W')<CR>" +exec "nnoremap <buffer> <silent> [{ :call search('".s:ftplugin_sql_objects."', 'bW')<CR>" +" Could not figure out how to use a :call search() string in visual mode +" without it ending visual mode +" Unfortunately, this will add a entry to the search history +exec 'xnoremap <buffer> <silent> ]} /'.s:ftplugin_sql_objects.'<CR>' +exec 'xnoremap <buffer> <silent> [{ ?'.s:ftplugin_sql_objects.'<CR>' + +" Mappings to move to the next COMMENT +" +" Had to double the \ for the \| separator since this has a special +" meaning on maps +let b:comment_leader = '\(--\\|\/\/\\|\*\\|\/\*\\|\*\/\)' +" Find the start of the next comment +let b:comment_start  = '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. +            \ '\(\s*'.b:comment_leader.'\)' +" Find the end of the previous comment +let b:comment_end = '\(^\s*'.b:comment_leader.'.*\n\)'. +            \ '\(^\s*'.b:comment_leader.'\)\@!' +" Skip over the comment +let b:comment_jump_over  = "call search('". +            \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. +            \ "', 'W')" +let b:comment_skip_back  = "call search('". +            \ '^\(\s*'.b:comment_leader.'.*\n\)\@<!'. +            \ "', 'bW')" +" Move to the start and end of comments +exec 'nnoremap <silent><buffer> ]" :call search('."'".b:comment_start."'".', "W" )<CR>' +exec 'nnoremap <silent><buffer> [" :call search('."'".b:comment_end."'".', "W" )<CR>' +exec 'xnoremap <silent><buffer> ]" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_start."'".', "W" )<CR>' +exec 'xnoremap <silent><buffer> [" :<C-U>exec "normal! gv"<Bar>call search('."'".b:comment_end."'".', "W" )<CR>' + +" Comments can be of the form: +"   /* +"    * +"    */ +" or +"   -- +" or +"   // +setlocal comments=s1:/*,mb:*,ex:*/,:--,:// + +" Set completion with CTRL-X CTRL-O to autoloaded function. +if exists('&omnifunc') +    " Since the SQL completion plugin can be used in conjunction +    " with other completion filetypes it must record the previous +    " OMNI function prior to setting up the SQL OMNI function +    let b:sql_compl_savefunc = &omnifunc + +    " Source it to determine it's version +    runtime autoload/sqlcomplete.vim +    " This is used by the sqlcomplete.vim plugin +    " Source it for it's global functions +    runtime autoload/syntaxcomplete.vim + +    setlocal omnifunc=sqlcomplete#Complete +    " Prevent the intellisense plugin from loading +    let b:sql_vis = 1 +    if !exists('g:omni_sql_no_default_maps') +        let regex_extra = '' +        if exists('g:loaded_syntax_completion') && exists('g:loaded_sql_completion') +            if g:loaded_syntax_completion > 120 && g:loaded_sql_completion > 140 +                let regex_extra = '\\w*' +            endif +        endif +        " Static maps which use populate the completion list +        " using Vim's syntax highlighting rules +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'a <C-\><C-O>:call sqlcomplete#Map("syntax")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'k <C-\><C-O>:call sqlcomplete#Map("sqlKeyword'.regex_extra.'")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'f <C-\><C-O>:call sqlcomplete#Map("sqlFunction'.regex_extra.'")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'o <C-\><C-O>:call sqlcomplete#Map("sqlOption'.regex_extra.'")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'T <C-\><C-O>:call sqlcomplete#Map("sqlType'.regex_extra.'")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'s <C-\><C-O>:call sqlcomplete#Map("sqlStatement'.regex_extra.'")<CR><C-X><C-O>' +        " Dynamic maps which use populate the completion list +        " using the dbext.vim plugin +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'t <C-\><C-O>:call sqlcomplete#Map("table")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'p <C-\><C-O>:call sqlcomplete#Map("procedure")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'v <C-\><C-O>:call sqlcomplete#Map("view")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'c <C-\><C-O>:call sqlcomplete#Map("column")<CR><C-X><C-O>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'l <C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' +        " The next 3 maps are only to be used while the completion window is +        " active due to the <CR> at the beginning of the map +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'L <C-Y><C-\><C-O>:call sqlcomplete#Map("column_csv")<CR><C-X><C-O>' +        " <C-Right> is not recognized on most Unix systems, so only create +        " these additional maps on the Windows platform. +        " If you would like to use these maps, choose a different key and make +        " the same map in your vimrc. +        " if has('win32') +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_right.' <C-R>=sqlcomplete#DrillIntoTable()<CR>' +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key_left.'  <C-R>=sqlcomplete#DrillOutOfColumns()<CR>' +        " endif +        " Remove any cached items useful for schema changes +        exec 'inoremap <buffer> '.g:ftplugin_sql_omni_key.'R <C-\><C-O>:call sqlcomplete#Map("resetCache")<CR><C-X><C-O>' +    endif + +    if b:sql_compl_savefunc != "" +        " We are changing the filetype to SQL from some other filetype +        " which had OMNI completion defined.  We need to activate the +        " SQL completion plugin in order to cache some of the syntax items +        " while the syntax rules for SQL are active. +        call sqlcomplete#ResetCacheSyntax() +        call sqlcomplete#PreCacheSyntax() +    endif +endif + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:sw=4: + +endif diff --git a/ftplugin/sshconfig.vim b/ftplugin/sshconfig.vim new file mode 100644 index 00000000..924e80f8 --- /dev/null +++ b/ftplugin/sshconfig.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             OpenSSH client configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/sudoers.vim b/ftplugin/sudoers.vim new file mode 100644 index 00000000..07b6692d --- /dev/null +++ b/ftplugin/sudoers.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             sudoers(5) configuration files +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/svg.vim b/ftplugin/svg.vim new file mode 100644 index 00000000..6f68d00e --- /dev/null +++ b/ftplugin/svg.vim @@ -0,0 +1,44 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	svg +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . +	    \	     "All Files (*.*)\t*.*\n" + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show xml-related files. +if has("gui_win32") +    let  b:browsefilter="SVG Files (*.svg)\t*.svg\n" . s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/sysctl.vim b/ftplugin/sysctl.vim new file mode 100644 index 00000000..1abd6336 --- /dev/null +++ b/ftplugin/sysctl.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             sysctl.conf(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:;,:# commentstring=#\ %s +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/systemd.vim b/ftplugin/systemd.vim new file mode 100644 index 00000000..df14bdfe --- /dev/null +++ b/ftplugin/systemd.vim @@ -0,0 +1,11 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:  systemd.unit(5) + +if !exists('b:did_ftplugin') +  " Looks a lot like dosini files. +  runtime! ftplugin/dosini.vim +endif + +endif diff --git a/ftplugin/systemverilog.vim b/ftplugin/systemverilog.vim new file mode 100644 index 00000000..c30d71a7 --- /dev/null +++ b/ftplugin/systemverilog.vim @@ -0,0 +1,15 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:    SystemVerilog +" Maintainer:  kocha <kocha.lsifrontend@gmail.com> +" Last Change: 12-Aug-2013.  + +if exists("b:did_ftplugin") +  finish +endif + +" Behaves just like Verilog +runtime! ftplugin/verilog.vim + +endif diff --git a/ftplugin/tcl.vim b/ftplugin/tcl.vim new file mode 100644 index 00000000..8b994a07 --- /dev/null +++ b/ftplugin/tcl.vim @@ -0,0 +1,41 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:         Tcl +" Maintainer:       Robert L Hicks <sigzero@gmail.com> +" Latest Revision:  2009-05-01 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:cpo_save = &cpo +set cpo-=C + +setlocal comments=:# +setlocal commentstring=#%s +setlocal formatoptions+=croql + +" Change the browse dialog on Windows to show mainly Tcl-related files +if has("gui_win32") +    let b:browsefilter = "Tcl Source Files (.tcl)\t*.tcl\n" . +                \ "Tcl Test Files (.test)\t*.test\n" . +                \ "All Files (*.*)\t*.*\n" +endif + +"----------------------------------------------------------------------------- + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp<" . +	    \	      " | unlet! b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:cpo_save +unlet s:cpo_save + +" vim: set et ts=4 sw=4 tw=78: + +endif diff --git a/ftplugin/tcsh.vim b/ftplugin/tcsh.vim new file mode 100644 index 00000000..7f8ddd4a --- /dev/null +++ b/ftplugin/tcsh.vim @@ -0,0 +1,44 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	tcsh +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "csh Files (*.csh)\t*.csh\n" . +	    \	     "All Files (*.*)\t*.*\n" + +runtime! ftplugin/csh.vim ftplugin/csh_*.vim ftplugin/csh/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show tcsh-related files. +if has("gui_win32") +    let  b:browsefilter="tcsh Scripts (*.tcsh)\t*.tcsh\n" . s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/terminfo.vim b/ftplugin/terminfo.vim new file mode 100644 index 00000000..3fb83d49 --- /dev/null +++ b/ftplugin/terminfo.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             terminfo(5) definition +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/tex.vim b/ftplugin/tex.vim new file mode 100644 index 00000000..c2ce76b0 --- /dev/null +++ b/ftplugin/tex.vim @@ -0,0 +1,50 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" LaTeX filetype plugin +" Language:     LaTeX (ft=tex) +" Maintainer:   Benji Fisher, Ph.D. <benji@member.AMS.org> +" Version:	1.4 +" Last Change:	Wed 19 Apr 2006 +"  URL:		http://www.vim.org/script.php?script_id=411 + +" Only do this when not done yet for this buffer. +if exists("b:did_ftplugin") +  finish +endif + +" Start with plain TeX.  This will also define b:did_ftplugin . +source $VIMRUNTIME/ftplugin/plaintex.vim + +" Avoid problems if running in 'compatible' mode. +let s:save_cpo = &cpo +set cpo&vim + +let b:undo_ftplugin .= "| setl inex<" + +" Allow "[d" to be used to find a macro definition: +" Recognize plain TeX \def as well as LaTeX \newcommand and \renewcommand . +" I may as well add the AMS-LaTeX DeclareMathOperator as well. +let &l:define .= '\|\\\(re\)\=new\(boolean\|command\|counter\|environment\|font' +	\ . '\|if\|length\|savebox\|theorem\(style\)\=\)\s*\*\=\s*{\=' +	\ . '\|DeclareMathOperator\s*{\=\s*' + +" Tell Vim how to recognize LaTeX \include{foo} and plain \input bar : +let &l:include .= '\|\\include{' +" On some file systems, "{" and "}" are inluded in 'isfname'.  In case the +" TeX file has \include{fname} (LaTeX only), strip everything except "fname". +let &l:includeexpr = "substitute(v:fname, '^.\\{-}{\\|}.*', '', 'g')" + +" The following lines enable the macros/matchit.vim plugin for +" extended matching with the % key. +" ftplugin/plaintex.vim already defines b:match_skip and b:match_ignorecase +" and matches \(, \), \[, \], \{, and \} . +if exists("loaded_matchit") +  let b:match_words .= ',\\begin\s*\({\a\+\*\=}\):\\end\s*\1' +endif " exists("loaded_matchit") + +let &cpo = s:save_cpo +unlet s:save_cpo + +" vim:sts=2:sw=2: + +endif diff --git a/ftplugin/text.vim b/ftplugin/text.vim new file mode 100644 index 00000000..573ddd05 --- /dev/null +++ b/ftplugin/text.vim @@ -0,0 +1,21 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:		Text +" Maintainer:		David Barnett <daviebdawg+vim@gmail.com> +" Last Change:		2014 Jul 09 + +if exists('b:did_ftplugin') +  finish +endif +let b:did_ftplugin = 1 + +let b:undo_ftplugin = 'setlocal comments< commentstring<' + +" We intentionally don't set formatoptions-=t since text should wrap as text. + +" Pseudo comment leaders to indent bulleted lists. +setlocal comments=fb:-,fb:* +setlocal commentstring= + +endif diff --git a/ftplugin/tmux.vim b/ftplugin/tmux.vim index fa2ae587..215df273 100644 --- a/ftplugin/tmux.vim +++ b/ftplugin/tmux.vim @@ -1,3 +1,19 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language: 	tmux(1) configuration file +" URL: 		https://github.com/ericpruitt/tmux.vim/ +" Maintainer: 	Eric Pruitt <eric.pruitt@gmail.com> +" Last Changed: 2017 Mar 10 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +setlocal commentstring=#\ %s + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'tmux') == -1  setlocal commentstring=#\ %s diff --git a/ftplugin/treetop.vim b/ftplugin/treetop.vim new file mode 100644 index 00000000..2a3d6e13 --- /dev/null +++ b/ftplugin/treetop.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Treetop +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2011-03-14 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +setlocal comments=b:# commentstring=#\ %s formatoptions-=tcroq formatoptions+=l + +let b:undo_ftplugin = "setl com< cms< fo<" + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/tt2html.vim b/ftplugin/tt2html.vim index d0f02885..eddb3236 100644 --- a/ftplugin/tt2html.vim +++ b/ftplugin/tt2html.vim @@ -1,3 +1,20 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Language:      TT2 embedded with HTML +" Maintainer:    vim-perl <vim-perl@googlegroups.com> +" Homepage:      http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change:   2013-07-21 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +    finish +endif + +" Just use the HTML plugin for now. +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'perl') == -1  " Language:      TT2 embedded with HTML diff --git a/ftplugin/udevconf.vim b/ftplugin/udevconf.vim new file mode 100644 index 00000000..4e45f67d --- /dev/null +++ b/ftplugin/udevconf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             udev(8) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/udevperm.vim b/ftplugin/udevperm.vim new file mode 100644 index 00000000..f2aa2c01 --- /dev/null +++ b/ftplugin/udevperm.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             udev(8) permissions file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/udevrules.vim b/ftplugin/udevrules.vim new file mode 100644 index 00000000..c8cb2477 --- /dev/null +++ b/ftplugin/udevrules.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             udev(8) rules file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/updatedb.vim b/ftplugin/updatedb.vim new file mode 100644 index 00000000..caf2200d --- /dev/null +++ b/ftplugin/updatedb.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             updatedb.conf(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/vb.vim b/ftplugin/vb.vim new file mode 100644 index 00000000..42642ef9 --- /dev/null +++ b/ftplugin/vb.vim @@ -0,0 +1,49 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	VisualBasic (ft=vb) +" Maintainer:	Johannes Zellner <johannes@zellner.org> +" Last Change:	Thu, 22 Nov 2001 12:56:14 W. Europe Standard Time + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +setlocal com=sr:'\ -,mb:'\ \ ,el:'\ \ ,:' + +" we need this wrapper, as call doesn't allow a count +fun! <SID>VbSearch(pattern, flags) +    let cnt = v:count1 +    while cnt > 0 +	call search(a:pattern, a:flags) +	let cnt = cnt - 1 +    endwhile +endfun + +let s:cpo_save = &cpo +set cpo&vim + +" NOTE the double escaping \\| +nnoremap <buffer> <silent> [[ :call <SID>VbSearch('^\s*\(\(private\|public\)\s\+\)\=\(function\\|sub\)', 'bW')<cr> +nnoremap <buffer> <silent> ]] :call <SID>VbSearch('^\s*\(\(private\|public\)\s\+\)\=\(function\\|sub\)', 'W')<cr> +nnoremap <buffer> <silent> [] :call <SID>VbSearch('^\s*\<end\>\s\+\(function\\|sub\)', 'bW')<cr> +nnoremap <buffer> <silent> ][ :call <SID>VbSearch('^\s*\<end\>\s\+\(function\\|sub\)', 'W')<cr> + +" matchit support +if exists("loaded_matchit") +    let b:match_ignorecase=1 +    let b:match_words= +    \ '\%(^\s*\)\@<=\<if\>.*\<then\>\s*$:\%(^\s*\)\@<=\<else\>:\%(^\s*\)\@<=\<elseif\>:\%(^\s*\)\@<=\<end\>\s\+\<if\>,' . +    \ '\%(^\s*\)\@<=\<for\>:\%(^\s*\)\@<=\<next\>,' . +    \ '\%(^\s*\)\@<=\<while\>:\%(^\s*\)\@<=\<wend\>,' . +    \ '\%(^\s*\)\@<=\<do\>:\%(^\s*\)\@<=\<loop\>\s\+\<while\>,' . +    \ '\%(^\s*\)\@<=\<select\>\s\+\<case\>:\%(^\s*\)\@<=\<case\>:\%(^\s*\)\@<=\<end\>\s\+\<select\>,' . +    \ '\%(^\s*\)\@<=\<enum\>:\%(^\s*\)\@<=\<end\>\s\<enum\>,' . +    \ '\%(^\s*\)\@<=\<with\>:\%(^\s*\)\@<=\<end\>\s\<with\>,' . +    \ '\%(^\s*\)\@<=\%(\<\%(private\|public\)\>\s\+\)\=\<function\>\s\+\([^ \t(]\+\):\%(^\s*\)\@<=\<\1\>\s*=:\%(^\s*\)\@<=\<end\>\s\+\<function\>,' . +    \ '\%(^\s*\)\@<=\%(\<\%(private\|public\)\>\s\+\)\=\<sub\>\s\+:\%(^\s*\)\@<=\<end\>\s\+\<sub\>' +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/verilog.vim b/ftplugin/verilog.vim new file mode 100644 index 00000000..3f7100e2 --- /dev/null +++ b/ftplugin/verilog.vim @@ -0,0 +1,70 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Verilog HDL +" Maintainer:	Chih-Tsun Huang <cthuang@cs.nthu.edu.tw> +" Last Change:	2017 Aug 25 by Chih-Tsun Huang +" URL:	    	http://www.cs.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim +" +" Credits: +"   Suggestions for improvement, bug reports by +"     Shao <shaominghai2005@163.com> + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Set 'cpoptions' to allow line continuations +let s:cpo_save = &cpo +set cpo&vim + +" Undo the plugin effect +let b:undo_ftplugin = "setlocal fo< com< tw<" +    \ . "| unlet! b:browsefilter b:match_ignorecase b:match_words" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croqlm1 + +" Set 'comments' to format dashed lists in comments. +setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +" Format comments to be up to 78 characters long +if &textwidth == 0  +  setlocal tw=78 +endif + +" Win32 can filter files in the browse dialog +if has("gui_win32") && !exists("b:browsefilter") +  let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" . +	\ "All Files (*.*)\t*.*\n" +endif + +" Let the matchit plugin know what items can be matched. +if exists("loaded_matchit") +  let b:match_ignorecase=0 +  let b:match_words= +    \ '\<begin\>:\<end\>,' . +    \ '\<case\>\|\<casex\>\|\<casez\>:\<endcase\>,' . +    \ '\<module\>:\<endmodule\>,' . +    \ '\<if\>:`\@<!\<else\>,' . +    \ '\<function\>:\<endfunction\>,' . +    \ '`ifn\?def\>:`elsif\>:`else\>:`endif\>,' . +    \ '\<task\>:\<endtask\>,' . +    \ '\<specify\>:\<endspecify\>,' . +    \ '\<config\>:\<endconfig\>,' . +    \ '\<generate\>:\<endgenerate\>,' . +    \ '\<fork\>:\<join\>,' . +    \ '\<primitive\>:\<endprimitive\>,' . +    \ '\<table\>:\<endtable\>' +endif + +" Reset 'cpoptions' back to the user's setting +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/vhdl.vim b/ftplugin/vhdl.vim new file mode 100644 index 00000000..e1c8c348 --- /dev/null +++ b/ftplugin/vhdl.vim @@ -0,0 +1,92 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" VHDL filetype plugin +" Language:    VHDL +" Maintainer:  R.Shankar <shankar.pec?gmail.com> +" Modified By: Gerald Lai <laigera+vim?gmail.com> +" Last Change: 2011 Dec 11 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +"setlocal fo-=t fo+=croqlm1 + +" Set 'comments' to format dashed lists in comments. +"setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// + +" Format comments to be up to 78 characters long +"setlocal tw=75 + +" Win32 can filter files in the browse dialog +"if has("gui_win32") && !exists("b:browsefilter") +"  let b:browsefilter = "Verilog Source Files (*.v)\t*.v\n" . +"   \ "All Files (*.*)\t*.*\n" +"endif + +" Let the matchit plugin know what items can be matched. +if ! exists("b:match_words")  &&  exists("loaded_matchit") +  let b:match_ignorecase=1 +  let s:notend = '\%(\<end\s\+\)\@<!' +  let b:match_words = +    \ s:notend.'\<if\>:\<elsif\>:\<else\>:\<end\s\+if\>,'. +    \ s:notend.'\<case\>:\<when\>:\<end\s\+case\>,'. +    \ s:notend.'\<loop\>:\<end\s\+loop\>,'. +    \ s:notend.'\<for\>:\<end\s\+for\>,'. +    \ s:notend.'\<generate\>:\<end\s\+generate\>,'. +    \ s:notend.'\<record\>:\<end\s\+record\>,'. +    \ s:notend.'\<units\>:\<end\s\+units\>,'. +    \ s:notend.'\<process\>:\<end\s\+process\>,'. +    \ s:notend.'\<block\>:\<end\s\+block\>,'. +    \ s:notend.'\<function\>:\<end\s\+function\>,'. +    \ s:notend.'\<entity\>:\<end\s\+entity\>,'. +    \ s:notend.'\<component\>:\<end\s\+component\>,'. +    \ s:notend.'\<architecture\>:\<end\s\+architecture\>,'. +    \ s:notend.'\<package\>:\<end\s\+package\>,'. +    \ s:notend.'\<procedure\>:\<end\s\+procedure\>,'. +    \ s:notend.'\<configuration\>:\<end\s\+configuration\>' +endif + +" count repeat +function! <SID>CountWrapper(cmd) +  let i = v:count1 +  if a:cmd[0] == ":" +    while i > 0 +      execute a:cmd +      let i = i - 1 +    endwhile +  else +    execute "normal! gv\<Esc>" +    execute "normal ".i.a:cmd +    let curcol = col(".") +    let curline = line(".") +    normal! gv +    call cursor(curline, curcol) +  endif +endfunction + +" explore motion +" keywords: "architecture", "block", "configuration", "component", "entity", "function", "package", "procedure", "process", "record", "units" +let b:vhdl_explore = '\%(architecture\|block\|configuration\|component\|entity\|function\|package\|procedure\|process\|record\|units\)' +noremap  <buffer><silent>[[ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR> +noremap  <buffer><silent>]] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\%(\\<end\\s\\+\\)\\@<!\\<".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR> +noremap  <buffer><silent>[] :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%^","bW")')<CR> +noremap  <buffer><silent>][ :<C-u>cal <SID>CountWrapper(':cal search("\\%(--.*\\)\\@<!\\<end\\s\\+".b:vhdl_explore."\\>\\c\\<Bar>\\%$","W")')<CR> +vnoremap <buffer><silent>[[ :<C-u>cal <SID>CountWrapper('[[')<CR> +vnoremap <buffer><silent>]] :<C-u>cal <SID>CountWrapper(']]')<CR> +vnoremap <buffer><silent>[] :<C-u>cal <SID>CountWrapper('[]')<CR> +vnoremap <buffer><silent>][ :<C-u>cal <SID>CountWrapper('][')<CR> + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/vim.vim b/ftplugin/vim.vim new file mode 100644 index 00000000..b3b64747 --- /dev/null +++ b/ftplugin/vim.vim @@ -0,0 +1,81 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin +" Language:	Vim +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2014 Sep 07 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< isk< com< tw< commentstring<" +	\ . "| unlet! b:match_ignorecase b:match_words b:match_skip" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" To allow tag lookup via CTRL-] for autoload functions, '#' must be a +" keyword character.  E.g., for netrw#Nread(). +setlocal isk+=# + +" Set 'comments' to format dashed lists in comments +setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\" + +" Format comments to be up to 78 characters long +if &tw == 0 +  setlocal tw=78 +endif + +" Comments start with a double quote +setlocal commentstring=\"%s + +" Move around functions. +nnoremap <silent><buffer> [[ m':call search('^\s*fu\%[nction]\>', "bW")<CR> +vnoremap <silent><buffer> [[ m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "bW")<CR> +nnoremap <silent><buffer> ]] m':call search('^\s*fu\%[nction]\>', "W")<CR> +vnoremap <silent><buffer> ]] m':<C-U>exe "normal! gv"<Bar>call search('^\s*fu\%[nction]\>', "W")<CR> +nnoremap <silent><buffer> [] m':call search('^\s*endf*\%[unction]\>', "bW")<CR> +vnoremap <silent><buffer> [] m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "bW")<CR> +nnoremap <silent><buffer> ][ m':call search('^\s*endf*\%[unction]\>', "W")<CR> +vnoremap <silent><buffer> ][ m':<C-U>exe "normal! gv"<Bar>call search('^\s*endf*\%[unction]\>', "W")<CR> + +" Move around comments +nnoremap <silent><buffer> ]" :call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR> +vnoremap <silent><buffer> ]" :<C-U>exe "normal! gv"<Bar>call search('^\(\s*".*\n\)\@<!\(\s*"\)', "W")<CR> +nnoremap <silent><buffer> [" :call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR> +vnoremap <silent><buffer> [" :<C-U>exe "normal! gv"<Bar>call search('\%(^\s*".*\n\)\%(^\s*"\)\@!', "bW")<CR> + +" Let the matchit plugin know what items can be matched. +if exists("loaded_matchit") +  let b:match_ignorecase = 0 +  let b:match_words = +	\ '\<fu\%[nction]\>:\<retu\%[rn]\>:\<endf\%[unction]\>,' . + 	\ '\<\(wh\%[ile]\|for\)\>:\<brea\%[k]\>:\<con\%[tinue]\>:\<end\(w\%[hile]\|fo\%[r]\)\>,' . +	\ '\<if\>:\<el\%[seif]\>:\<en\%[dif]\>,' . +	\ '\<try\>:\<cat\%[ch]\>:\<fina\%[lly]\>:\<endt\%[ry]\>,' . +	\ '\<aug\%[roup]\s\+\%(END\>\)\@!\S:\<aug\%[roup]\s\+END\>,' . +	\ '(:)' +  " Ignore syntax region commands and settings, any 'en*' would clobber +  " if-endif. +  " - set spl=de,en +  " - au! FileType javascript syntax region foldBraces start=/{/ end=/}/ … +  let b:match_skip = 'synIDattr(synID(line("."),col("."),1),"name") +        \ =~? "comment\\|string\\|vimSynReg\\|vimSet"' +endif + +let &cpo = s:cpo_save +unlet s:cpo_save + +" removed this, because 'cpoptions' is a global option. +" setlocal cpo+=M		" makes \%( match \) + +endif diff --git a/ftplugin/vroom.vim b/ftplugin/vroom.vim new file mode 100644 index 00000000..6403c7cd --- /dev/null +++ b/ftplugin/vroom.vim @@ -0,0 +1,39 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Vroom (vim testing and executable documentation) +" Maintainer:	David Barnett (https://github.com/google/vim-ft-vroom) +" Last Change:	2014 Jul 23 + +if exists('b:did_ftplugin') +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo-=C + + +let b:undo_ftplugin = 'setlocal formatoptions< shiftwidth< softtabstop<' . +    \ ' expandtab< iskeyword< comments< commentstring<' + +setlocal formatoptions-=t + +" The vroom interpreter doesn't accept anything but 2-space indent. +setlocal shiftwidth=2 +setlocal softtabstop=2 +setlocal expandtab + +" To allow tag lookup and autocomplete for whole autoload functions, '#' must be +" a keyword character. This also conforms to the behavior of ftplugin/vim.vim. +setlocal iskeyword+=# + +" Vroom files have no comments (text is inert documentation unless indented). +setlocal comments= +setlocal commentstring= + + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/xdefaults.vim b/ftplugin/xdefaults.vim new file mode 100644 index 00000000..4a7509f0 --- /dev/null +++ b/ftplugin/xdefaults.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             X resources files like ~/.Xdefaults (xrdb) +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=s1:/*,mb:*,ex:*/,:! commentstring& inc& +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/xf86conf.vim b/ftplugin/xf86conf.vim new file mode 100644 index 00000000..6fe3cb88 --- /dev/null +++ b/ftplugin/xf86conf.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             XFree86 Configuration File +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/xhtml.vim b/ftplugin/xhtml.vim new file mode 100644 index 00000000..d4ffa0ac --- /dev/null +++ b/ftplugin/xhtml.vim @@ -0,0 +1,71 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	xhtml +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "HTML Files (*.html, *.htm)\t*.html;*.htm\n" . +	    \	     "XML Files (*.xml)\t*.xml\n" . +	    \	     "All Files (*.*)\t*.*\n" +let s:match_words = "" + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +unlet b:did_ftplugin + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +    unlet b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +    unlet b:browsefilter +endif +if exists("b:match_words") +    let s:match_words = b:match_words +    unlet b:match_words +endif + +runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +let b:did_ftplugin = 1 + +" Combine the new set of values with those previously included. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin . " | " . s:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter . s:browsefilter +endif +if exists("b:match_words") +    let s:match_words = b:match_words . "," . s:match_words +endif + +" Load the combined list of match_words for matchit.vim +if exists("loaded_matchit") +    let b:match_words = s:match_words +endif + +" Change the :browse e filter to primarily show tcsh-related files. +if has("gui_win32") +    let  b:browsefilter="XHTML files (*.xhtml, *.xhtm)\t*.xhtml;*.xhtm\n" . s:browsefilter +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "unlet! b:browsefilter b:match_words | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/xinetd.vim b/ftplugin/xinetd.vim new file mode 100644 index 00000000..95ff7d47 --- /dev/null +++ b/ftplugin/xinetd.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             xinetd.conf(5) configuration file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< inc< fo<" + +setlocal comments=:# commentstring=#\ %s include=^\\s*include +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/xml.vim b/ftplugin/xml.vim new file mode 100644 index 00000000..f8d3c9fa --- /dev/null +++ b/ftplugin/xml.vim @@ -0,0 +1,68 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	xml +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +setlocal commentstring=<!--%s--> +setlocal comments=s:<!--,m:\ \ \ \ \ ,e:--> + +setlocal formatoptions-=t +if !exists("g:ft_xml_autocomment") || (g:ft_xml_autocomment == 1) +    setlocal formatoptions+=croql +endif + + +" XML:  thanks to Johannes Zellner and Akbar Ibrahim +" - case sensitive +" - don't match empty tags <fred/> +" - match <!--, --> style comments (but not --, --) +" - match <!, > inlined dtd's. This is not perfect, as it +"   gets confused for example by +"       <!ENTITY gt ">"> +if exists("loaded_matchit") +    let b:match_ignorecase=0 +    let b:match_words = +     \  '<:>,' . +     \  '<\@<=!\[CDATA\[:]]>,'. +     \  '<\@<=!--:-->,'. +     \  '<\@<=?\k\+:?>,'. +     \  '<\@<=\([^ \t>/]\+\)\%(\s\+[^>]*\%([^/]>\|$\)\|>\|$\):<\@<=/\1>,'. +     \  '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>' +endif + +" +" For Omni completion, by Mikolaj Machowski. +if exists('&ofu') +  setlocal ofu=xmlcomplete#CompleteTags +endif +command! -nargs=+ XMLns call xmlcomplete#CreateConnection(<f-args>) +command! -nargs=? XMLent call xmlcomplete#CreateEntConnection(<f-args>) + + +" Change the :browse e filter to primarily show xml-related files. +if has("gui_win32") +    let  b:browsefilter="XML Files (*.xml)\t*.xml\n" . +		\	"DTD Files (*.dtd)\t*.dtd\n" . +		\	"All Files (*.*)\t*.*\n" +endif + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions<" . +		\     " | unlet! b:match_ignorecase b:match_words b:browsefilter" + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/xmodmap.vim b/ftplugin/xmodmap.vim new file mode 100644 index 00000000..c40611c5 --- /dev/null +++ b/ftplugin/xmodmap.vim @@ -0,0 +1,23 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             xmodmap(1) definition file +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:! commentstring=!\ %s formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/xs.vim b/ftplugin/xs.vim index ef365dc1..95b1022b 100644 --- a/ftplugin/xs.vim +++ b/ftplugin/xs.vim @@ -1,3 +1,21 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:      XS (Perl extension interface language) +" Maintainer:    vim-perl <vim-perl@googlegroups.com> +" Homepage:      http://github.com/vim-perl/vim-perl +" Bugs/requests: http://github.com/vim-perl/vim-perl/issues +" Last Change:   2013-07-21 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +    finish +endif + +" Just use the C plugin for now. +runtime! ftplugin/c.vim ftplugin/c_*.vim ftplugin/c/*.vim + +endif  if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'perl') == -1  " Vim filetype plugin file diff --git a/ftplugin/xsd.vim b/ftplugin/xsd.vim new file mode 100644 index 00000000..5786d9f0 --- /dev/null +++ b/ftplugin/xsd.vim @@ -0,0 +1,43 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	xsd +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +" Make sure the continuation lines below do not cause problems in +" compatibility mode. +let s:save_cpo = &cpo +set cpo-=C + +" Define some defaults in case the included ftplugins don't set them. +let s:undo_ftplugin = "" +let s:browsefilter = "XML Files (*.xml)\t*.xml\n" . +	    \	     "All Files (*.*)\t*.*\n" + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim +let b:did_ftplugin = 1 + +" Override our defaults if these were set by an included ftplugin. +if exists("b:undo_ftplugin") +    let s:undo_ftplugin = b:undo_ftplugin +endif +if exists("b:browsefilter") +    let s:browsefilter = b:browsefilter +endif + +" Change the :browse e filter to primarily show xsd-related files. +if has("gui_win32") +    let  b:browsefilter="XSD Files (*.xsd)\t*.xsd\n" . s:browsefilter +endif + +let b:undo_ftplugin = "unlet! b:browsefilter | " . s:undo_ftplugin + +" Restore the saved compatibility options. +let &cpo = s:save_cpo +unlet s:save_cpo + +endif diff --git a/ftplugin/xslt.vim b/ftplugin/xslt.vim new file mode 100644 index 00000000..a3d9c95b --- /dev/null +++ b/ftplugin/xslt.vim @@ -0,0 +1,20 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	xslt +" Maintainer:	Dan Sharp <dwsharp at users dot sourceforge dot net> +" Last Changed: 20 Jan 2009 +" URL:		http://dwsharp.users.sourceforge.net/vim/ftplugin + +if exists("b:did_ftplugin") | finish | endif + +runtime! ftplugin/xml.vim ftplugin/xml_*.vim ftplugin/xml/*.vim + +let b:did_ftplugin = 1 + +" Change the :browse e filter to primarily show xsd-related files. +if has("gui_win32") && exists("b:browsefilter") +    let  b:browsefilter="XSLT Files (*.xsl,*.xslt)\t*.xsl;*.xslt\n" . b:browsefilter +endif + +endif diff --git a/ftplugin/yaml.vim b/ftplugin/yaml.vim new file mode 100644 index 00000000..53cc2e75 --- /dev/null +++ b/ftplugin/yaml.vim @@ -0,0 +1,24 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             YAML (YAML Ain't Markup Language) +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2008-07-09 + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< et< fo<" + +setlocal comments=:# commentstring=#\ %s expandtab +setlocal formatoptions-=t formatoptions+=croql + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/zimbu.vim b/ftplugin/zimbu.vim new file mode 100644 index 00000000..7095c2fb --- /dev/null +++ b/ftplugin/zimbu.vim @@ -0,0 +1,155 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:	Zimbu +" Maintainer:	Bram Moolenaar <Bram@vim.org> +" Last Change:	2012 Sep 08 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") +  finish +endif + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +" Using line continuation here. +let s:cpo_save = &cpo +set cpo-=C + +let b:undo_ftplugin = "setl fo< com< ofu< efm< tw< et< sts< sw< | if has('vms') | setl isk< | endif" + +" Set 'formatoptions' to break comment lines but not other lines, +" and insert the comment leader when hitting <CR> or using "o". +setlocal fo-=t fo+=croql + +" Set completion with CTRL-X CTRL-O to autoloaded function. +if exists('&ofu') +  setlocal ofu=ccomplete#Complete +endif + +" Set 'comments' to format dashed lists in comments. +" And to keep Zudocu comment characters. +setlocal comments=sO:#\ -,mO:#\ \ ,:#=,:#-,:#%,:# + +setlocal errorformat^=%f\ line\ %l\ col\ %c:\ %m,ERROR:\ %m + +" When the matchit plugin is loaded, this makes the % command skip parens and +" braces in comments. +let b:match_words = '\(^\s*\)\@<=\(MODULE\|CLASS\|INTERFACE\|BITS\|ENUM\|SHARED\|FUNC\|REPLACE\|DEFINE\|PROC\|EQUAL\|MAIN\|IF\|GENERATE_IF\|WHILE\|REPEAT\|WITH\|DO\|FOR\|SWITCH\|TRY\)\>\|{\s*$:\(^\s*\)\@<=\(ELSE\|ELSEIF\|GENERATE_ELSE\|GENERATE_ELSEIF\|CATCH\|FINALLY\)\>:\(^\s*\)\@<=\(}\|\<UNTIL\>\)' + +let b:match_skip = 's:comment\|string\|zimbuchar' + +setlocal tw=78 +setlocal et sts=2 sw=2 + +" Does replace when a dot, space or closing brace is typed. +func! GCUpperDot(what) +  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != '.' && v:char != ')' && v:char != '}' && v:char != ',' +    " no space or dot after the typed text +    let g:got_char = v:char +    return a:what +  endif +  return GCUpperCommon(a:what) +endfunc + +" Does not replace when a dot is typed. +func! GCUpper(what) +  if v:char != ' ' && v:char != "\r" && v:char != "\x1b" && v:char != ')' && v:char != ',' +    " no space or other "terminating" character after the typed text +    let g:got_char = v:char +    return a:what +  endif +  return GCUpperCommon(a:what) +endfunc + +" Only replaces when a space is typed. +func! GCUpperSpace(what) +  if v:char != ' ' +    " no space after the typed text +    let g:got_char = v:char +    return a:what +  endif +  return GCUpperCommon(a:what) +endfunc + +func! GCUpperCommon(what) +  let col = col(".") - strlen(a:what) +  if col > 1 && getline('.')[col - 2] != ' ' +    " no space before the typed text +    let g:got_char = 999 +    return a:what +  endif +  let synName = synIDattr(synID(line("."), col(".") - 2, 1), "name") +  if synName =~ 'Comment\|String\|zimbuCregion\|\<c' +    " inside a comment or C code +    let g:got_char = 777 +    return a:what +  endif +    let g:got_char = 1111 +  return toupper(a:what) +endfunc + +iabbr <buffer> <expr> alias GCUpperSpace("alias") +iabbr <buffer> <expr> arg GCUpperDot("arg") +iabbr <buffer> <expr> break GCUpper("break") +iabbr <buffer> <expr> case GCUpperSpace("case") +iabbr <buffer> <expr> catch GCUpperSpace("catch") +iabbr <buffer> <expr> check GCUpperDot("check") +iabbr <buffer> <expr> class GCUpperSpace("class") +iabbr <buffer> <expr> interface GCUpperSpace("interface") +iabbr <buffer> <expr> implements GCUpperSpace("implements") +iabbr <buffer> <expr> shared GCUpperSpace("shared") +iabbr <buffer> <expr> continue GCUpper("continue") +iabbr <buffer> <expr> default GCUpper("default") +iabbr <buffer> <expr> extends GCUpper("extends") +iabbr <buffer> <expr> do GCUpper("do") +iabbr <buffer> <expr> else GCUpper("else") +iabbr <buffer> <expr> elseif GCUpperSpace("elseif") +iabbr <buffer> <expr> enum GCUpperSpace("enum") +iabbr <buffer> <expr> exit GCUpper("exit") +iabbr <buffer> <expr> false GCUpper("false") +iabbr <buffer> <expr> fail GCUpper("fail") +iabbr <buffer> <expr> finally GCUpper("finally") +iabbr <buffer> <expr> for GCUpperSpace("for") +iabbr <buffer> <expr> func GCUpperSpace("func") +iabbr <buffer> <expr> if GCUpperSpace("if") +iabbr <buffer> <expr> import GCUpperSpace("import") +iabbr <buffer> <expr> in GCUpperSpace("in") +iabbr <buffer> <expr> io GCUpperDot("io") +iabbr <buffer> <expr> main GCUpper("main") +iabbr <buffer> <expr> module GCUpperSpace("module") +iabbr <buffer> <expr> new GCUpper("new") +iabbr <buffer> <expr> nil GCUpper("nil") +iabbr <buffer> <expr> ok GCUpper("ok") +iabbr <buffer> <expr> proc GCUpperSpace("proc") +iabbr <buffer> <expr> proceed GCUpper("proceed") +iabbr <buffer> <expr> return GCUpper("return") +iabbr <buffer> <expr> step GCUpperSpace("step") +iabbr <buffer> <expr> switch GCUpperSpace("switch") +iabbr <buffer> <expr> sys GCUpperDot("sys") +iabbr <buffer> <expr> this GCUpperDot("this") +iabbr <buffer> <expr> throw GCUpperSpace("throw") +iabbr <buffer> <expr> try GCUpper("try") +iabbr <buffer> <expr> to GCUpperSpace("to") +iabbr <buffer> <expr> true GCUpper("true") +iabbr <buffer> <expr> until GCUpperSpace("until") +iabbr <buffer> <expr> while GCUpperSpace("while") +iabbr <buffer> <expr> repeat GCUpper("repeat") + +nnoremap <silent> <buffer> [[ m`:call ZimbuGoStartBlock()<CR> +nnoremap <silent> <buffer> ]] m`:call ZimbuGoEndBlock()<CR> + +" Using a function makes sure the search pattern is restored +func! ZimbuGoStartBlock() +  ?^\s*\(FUNC\|PROC\|MAIN\|ENUM\|CLASS\|INTERFACE\)\> +endfunc +func! ZimbuGoEndBlock() +  /^\s*\(FUNC\|PROC\|MAIN\|ENUM\|CLASS\|INTERFACE\)\> +endfunc + + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif diff --git a/ftplugin/zsh.vim b/ftplugin/zsh.vim new file mode 100644 index 00000000..03e039bd --- /dev/null +++ b/ftplugin/zsh.vim @@ -0,0 +1,33 @@ +if !exists('g:polyglot_disabled') || index(g:polyglot_disabled, 'vim') == -1 +   +" Vim filetype plugin file +" Language:             Zsh shell script +" Maintainer:           Christian Brabandt <cb@256bit.org> +" Previous Maintainer:  Nikolai Weibull <now@bitwi.se> +" Latest Revision:      2015-05-29 +" License:              Vim (see :h license) +" Repository:           https://github.com/chrisbra/vim-zsh + +if exists("b:did_ftplugin") +  finish +endif +let b:did_ftplugin = 1 + +let s:cpo_save = &cpo +set cpo&vim + +let b:undo_ftplugin = "setl com< cms< fo<" + +setlocal comments=:# commentstring=#\ %s formatoptions-=t formatoptions+=croql + +let b:match_words = +      \   &matchpairs +      \ . ',\<if\>:\<elif\>:\<else\>:\<fi\>' +      \ . ',\<case\>:^\s*([^)]*):\<esac\>' +      \ . ',\<\%(select\|while\|until\|repeat\|for\%(each\)\=\)\>:\<done\>' +let b:match_skip = 's:comment\|string\|heredoc\|subst' + +let &cpo = s:cpo_save +unlet s:cpo_save + +endif | 
