diff options
Diffstat (limited to 'runtime/ftplugin')
123 files changed, 1864 insertions, 768 deletions
diff --git a/runtime/ftplugin/a2ps.vim b/runtime/ftplugin/a2ps.vim index 6653351949..0e24e3088f 100644 --- a/runtime/ftplugin/a2ps.vim +++ b/runtime/ftplugin/a2ps.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: a2ps(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: a2ps(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/alsaconf.vim b/runtime/ftplugin/alsaconf.vim index 5d763c8011..6d9d80a208 100644 --- a/runtime/ftplugin/alsaconf.vim +++ b/runtime/ftplugin/alsaconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: alsaconf(8) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: alsaconf(8) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/arch.vim b/runtime/ftplugin/arch.vim index 71d831e112..1c697b8ca1 100644 --- a/runtime/ftplugin/arch.vim +++ b/runtime/ftplugin/arch.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: GNU Arch inventory file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: GNU Arch inventory file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/automake.vim b/runtime/ftplugin/automake.vim index 20b06af362..9f981a7a83 100644 --- a/runtime/ftplugin/automake.vim +++ b/runtime/ftplugin/automake.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Automake -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Automake +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/awk.vim b/runtime/ftplugin/awk.vim new file mode 100644 index 0000000000..dcefc85ec3 --- /dev/null +++ b/runtime/ftplugin/awk.vim @@ -0,0 +1,18 @@ +" 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 diff --git a/runtime/ftplugin/bdf.vim b/runtime/ftplugin/bdf.vim index 120c5df968..85b7b4042a 100644 --- a/runtime/ftplugin/bdf.vim +++ b/runtime/ftplugin/bdf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: BDF font definition -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: BDF font definition +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/c.vim b/runtime/ftplugin/c.vim index 487ce7a165..6047f9f863 100644 --- a/runtime/ftplugin/c.vim +++ b/runtime/ftplugin/c.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: C " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2012 Jul 10 +" Last Change: 2017 Sep 28 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -30,9 +30,9 @@ endif setlocal comments=sO:*\ -,mO:*\ \ ,exO:*/,s1:/*,mb:*,ex:*/,:// " 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' +" braces in comments properly. +let b:match_words = '^\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") @@ -55,5 +55,7 @@ if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") endif endif +let b:man_default_sects = '3,2' + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/calendar.vim b/runtime/ftplugin/calendar.vim index 6f117e36e5..f454ba1dc8 100644 --- a/runtime/ftplugin/calendar.vim +++ b/runtime/ftplugin/calendar.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: calendar(1) input file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: calendar(1) input file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/cdrdaoconf.vim b/runtime/ftplugin/cdrdaoconf.vim index 557fd82c53..563bb8f5f1 100644 --- a/runtime/ftplugin/cdrdaoconf.vim +++ b/runtime/ftplugin/cdrdaoconf.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2007-12-04 +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2007-12-04 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/chicken.vim b/runtime/ftplugin/chicken.vim new file mode 100644 index 0000000000..4dc1e57d0a --- /dev/null +++ b/runtime/ftplugin/chicken.vim @@ -0,0 +1,54 @@ +" CHICKEN-specific Vim customizations +" Last Change: 2018-03-05 +" Author: Evan Hanson <evhan@foldling.org> +" Maintainer: Evan Hanson <evhan@foldling.org> +" URL: https://foldling.org/vim/ftplugin/chicken.vim +" Notes: These are supplemental settings, to be loaded after the core +" Scheme ftplugin file (ftplugin/scheme.vim). Enable it by setting +" b:is_chicken=1 and filetype=scheme. + +if !exists('b:did_scheme_ftplugin') + finish +endif + +setl keywordprg=chicken-doc + +setl lispwords+=and-let* +setl lispwords+=compiler-typecase +setl lispwords+=condition-case +setl lispwords+=define-compiler-syntax +setl lispwords+=define-constant +setl lispwords+=define-external +setl lispwords+=define-for-syntax +setl lispwords+=define-foreign-type +setl lispwords+=define-inline +setl lispwords+=define-location +setl lispwords+=define-record +setl lispwords+=define-record-printer +setl lispwords+=define-specialization +setl lispwords+=fluid-let +setl lispwords+=foreign-lambda* +setl lispwords+=foreign-primitive +setl lispwords+=foreign-safe-lambda* +setl lispwords+=functor +setl lispwords+=handle-exceptions +setl lispwords+=let-compiler-syntax +setl lispwords+=let-location +setl lispwords+=let-optionals +setl lispwords+=let-optionals* +setl lispwords+=letrec-values +setl lispwords+=match +setl lispwords+=match-let +setl lispwords+=match-let* +setl lispwords+=match-letrec +setl lispwords+=module +setl lispwords+=receive +setl lispwords+=set!-values +setl lispwords+=test-group + +let b:undo_ftplugin = b:undo_ftplugin . ' keywordprg<' + +if exists('g:loaded_matchit') && !exists('b:match_words') + let b:match_words = '#>:<#' + let b:undo_ftplugin = b:undo_ftplugin . ' | unlet! b:match_words' +endif diff --git a/runtime/ftplugin/clojure.vim b/runtime/ftplugin/clojure.vim index 10fcb9f205..217711f26e 100644 --- a/runtime/ftplugin/clojure.vim +++ b/runtime/ftplugin/clojure.vim @@ -1,11 +1,11 @@ " Vim filetype plugin file -" Language: Clojure -" Author: Meikel Brandmeyer <mb@kotka.de> +" 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: 27 March 2014 +" 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 @@ -43,7 +43,7 @@ setlocal commentstring=;\ %s " specially and hence are not indented specially. " " -*- LISPWORDS -*- -" Generated from https://github.com/guns/vim-clojure-static/blob/vim-release-010/clj/src/vim_clojure_static/generate.clj +" 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 @@ -82,9 +82,9 @@ 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" + \ "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 diff --git a/runtime/ftplugin/cmake.vim b/runtime/ftplugin/cmake.vim new file mode 100644 index 0000000000..94c007629b --- /dev/null +++ b/runtime/ftplugin/cmake.vim @@ -0,0 +1,34 @@ +" Vim filetype plugin +" Language: CMake +" Maintainer: Keith Smiley <keithbsmiley@gmail.com> +" Last Change: 2018 Aug 30 + +" Only do this when not done yet for this buffer +if exists("b:did_ftplugin") + finish +endif + +" save 'cpo' for restoration at the end of this file +let s:cpo_save = &cpo +set cpo&vim + +" Don't load another plugin for this buffer +let b:did_ftplugin = 1 + +let b:undo_ftplugin = "setl commentstring<" + +if exists('loaded_matchit') + let b:match_words = '\<if\>:\<elseif\>\|\<else\>:\<endif\>' + \ . ',\<foreach\>\|\<while\>:\<break\>:\<endforeach\>\|\<endwhile\>' + \ . ',\<macro\>:\<endmacro\>' + \ . ',\<function\>:\<endfunction\>' + let b:match_ignorecase = 1 + + let b:undo_ftplugin .= "| unlet b:match_words" +endif + +setlocal commentstring=#\ %s + +" restore 'cpo' and clean up buffer variable +let &cpo = s:cpo_save +unlet s:cpo_save diff --git a/runtime/ftplugin/conf.vim b/runtime/ftplugin/conf.vim index 1b110e475b..ff2add1fa3 100644 --- a/runtime/ftplugin/conf.vim +++ b/runtime/ftplugin/conf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: generic configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: generic configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/context.vim b/runtime/ftplugin/context.vim index 1c7d678375..10f1ae1648 100644 --- a/runtime/ftplugin/context.vim +++ b/runtime/ftplugin/context.vim @@ -1,7 +1,8 @@ " Vim filetype plugin file -" Language: ConTeXt typesetting engine -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 @@ -11,16 +12,26 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim -let b:undo_ftplugin = "setl com< cms< def< inc< sua< fo<" +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+=tcroql +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\)' +let &l:include = '^\s*\\\%(input\|component\|product\|project\|environment\)' setlocal suffixesadd=.tex @@ -31,5 +42,61 @@ if exists("loaded_matchit") \ '\\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 diff --git a/runtime/ftplugin/crm.vim b/runtime/ftplugin/crm.vim index e86e683068..06baee883a 100644 --- a/runtime/ftplugin/crm.vim +++ b/runtime/ftplugin/crm.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: CRM114 -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: CRM114 +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/css.vim b/runtime/ftplugin/css.vim index 43d1edfa5b..ea4424418c 100644 --- a/runtime/ftplugin/css.vim +++ b/runtime/ftplugin/css.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: CSS -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: CSS +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/cucumber.vim b/runtime/ftplugin/cucumber.vim index 2ec1a5976f..f4848d1c60 100644 --- a/runtime/ftplugin/cucumber.vim +++ b/runtime/ftplugin/cucumber.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Cucumber " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2013 Jun 01 +" Last Change: 2016 Aug 29 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) @@ -19,27 +19,23 @@ 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") - nnoremap <silent><buffer> <C-]> :<C-U>exe <SID>jump('edit',v:count)<CR> - nnoremap <silent><buffer> [<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR> - nnoremap <silent><buffer> ]<C-D> :<C-U>exe <SID>jump('edit',v:count)<CR> - nnoremap <silent><buffer> <C-W>] :<C-U>exe <SID>jump('split',v:count)<CR> - nnoremap <silent><buffer> <C-W><C-]> :<C-U>exe <SID>jump('split',v:count)<CR> - nnoremap <silent><buffer> <C-W>d :<C-U>exe <SID>jump('split',v:count)<CR> - nnoremap <silent><buffer> <C-W><C-D> :<C-U>exe <SID>jump('split',v:count)<CR> - nnoremap <silent><buffer> <C-W>} :<C-U>exe <SID>jump('pedit',v:count)<CR> - nnoremap <silent><buffer> [d :<C-U>exe <SID>jump('pedit',v:count)<CR> - nnoremap <silent><buffer> ]d :<C-U>exe <SID>jump('pedit',v:count)<CR> + 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-]>" . \ "|sil! nunmap <buffer> [<C-D>" . \ "|sil! nunmap <buffer> ]<C-D>" . - \ "|sil! nunmap <buffer> <C-W>]" . - \ "|sil! nunmap <buffer> <C-W><C-]>" . \ "|sil! nunmap <buffer> <C-W>d" . \ "|sil! nunmap <buffer> <C-W><C-D>" . - \ "|sil! nunmap <buffer> <C-W>}" . \ "|sil! nunmap <buffer> [d" . \ "|sil! nunmap <buffer> ]d" endif @@ -59,7 +55,7 @@ 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_root.'/**/*.rb'),"\n") + for file in split(glob(b:cucumber_steps_glob),"\n") let lines = readfile(file) let num = 0 for line in lines diff --git a/runtime/ftplugin/cvsrc.vim b/runtime/ftplugin/cvsrc.vim index c410530588..34b148409e 100644 --- a/runtime/ftplugin/cvsrc.vim +++ b/runtime/ftplugin/cvsrc.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: cvs(1) RC file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: cvs(1) RC file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/debchangelog.vim b/runtime/ftplugin/debchangelog.vim index d2718db88e..a78f7811f1 100644 --- a/runtime/ftplugin/debchangelog.vim +++ b/runtime/ftplugin/debchangelog.vim @@ -1,22 +1,22 @@ " Vim filetype plugin file (GUI menu, folding and completion) " Language: Debian Changelog -" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> +" Maintainer: Debian Vim Maintainers " Former Maintainers: Michael Piefel <piefel@informatik.hu-berlin.de> " Stefano Zacchiroli <zack@debian.org> -" Last Change: 2014-01-31 +" Last Change: 2018-01-28 " License: Vim License -" URL: http://hg.debian.org/hg/pkg-vim/vim/file/unstable/runtime/ftplugin/debchangelog.vim +" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debchangelog.vim " Bug completion requires apt-listbugs installed for Debian packages or " python-launchpadlib installed for Ubuntu packages -if exists("b:did_ftplugin") +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") +if exists('g:debchangelog_fold_enable') setlocal foldmethod=expr setlocal foldexpr=DebGetChangelogFold(v:lnum) setlocal foldtext=DebChangelogFoldText() @@ -28,10 +28,10 @@ setlocal tw=78 setlocal comments=f:* " Clean unloading -let b:undo_ftplugin = "setlocal tw< comments< foldmethod< foldexpr< foldtext<" +let b:undo_ftplugin = 'setlocal tw< comments< foldmethod< foldexpr< foldtext<' " }}}1 -if exists("g:did_changelog_ftplugin") +if exists('g:did_changelog_ftplugin') finish endif @@ -44,41 +44,41 @@ let g:did_changelog_ftplugin = 1 " 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") + if exists('$DEBFULLNAME') return $DEBFULLNAME - elseif exists("g:debianfullname") + elseif exists('g:debianfullname') return g:debianfullname else - return "Your Name" + return 'Your Name' endif endfunction " Returns email address, from $DEBEMAIL, $EMAIL or debianemail. function <SID>Email() - if exists("$DEBEMAIL") + if exists('$DEBEMAIL') return $DEBEMAIL - elseif exists("$EMAIL") + elseif exists('$EMAIL') return $EMAIL - elseif exists("g:debianemail") + elseif exists('g:debianemail') return g:debianemail else - return "your@email.address" + 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 + 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 + if match(getline('.'), ' -- [[:alpha:]][[:alnum:].]')!=-1 echohl WarningMsg - echo "The entry has not been unfinalised before editing." + echo 'The entry has not been unfinalised before editing.' echohl None return 1 endif @@ -86,10 +86,10 @@ function <SID>WarnIfNotUnfinalised() endfunction function <SID>Finalised() - let savelinenum = line(".") - normal 1G - call search("^ -- ") - if match(getline("."), " -- [[:alpha:]][[:alnum:].]")!=-1 + let savelinenum = line('.') + 1 + call search('^ -- ') + if match(getline('.'), ' -- [[:alpha:]][[:alnum:].]')!=-1 let returnvalue = 1 else let returnvalue = 0 @@ -109,54 +109,54 @@ function NewVersion() 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 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") + if exists('g:debchangelog_fold_enable') foldopen endif call AddEntry() endfunction function AddEntry() - normal 1G - call search("^ -- ") - normal kk - call append(".", " * ") - normal jjj + 1 + call search('^ -- ') + .-2 + call append('.', ' * ') + .+3 let warn=<SID>WarnIfNotUnfinalised() - normal kk + .-2 if warn echohl MoreMsg - call input("Hit ENTER") + call input('Hit ENTER') echohl None endif startinsert! endfunction function CloseBug() - normal 1G - call search("^ -- ") + 1 + call search('^ -- ') let warn=<SID>WarnIfNotUnfinalised() - normal kk - call append(".", " * (closes: #" . input("Bug number to close: ") . ")") - normal j^ll + .-2 + 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 . ";", "")) + call setline(1, substitute(getline(1), ') *\%(UNRELEASED\|\l\+\);', ') ' . a:dist . ';', '')) endfunction function Urgency(urg) - call setline(1, substitute(getline(1), "urgency=.*$", "urgency=" . a:urg, "")) + call setline(1, substitute(getline(1), 'urgency=.*$', 'urgency=' . a:urg, '')) endfunction function <SID>UnfinaliseMenu() @@ -172,9 +172,9 @@ endfunction function Unfinalise() call <SID>UnfinaliseMenu() - normal 1G - call search("^ -- ") - call setline(".", " -- ") + 1 + call search('^ -- ') + call setline('.', ' -- ') endfunction function <SID>FinaliseMenu() @@ -190,9 +190,9 @@ endfunction function Finalise() call <SID>FinaliseMenu() - normal 1G - call search("^ -- ") - call setline(".", " -- " . <SID>FullName() . " <" . <SID>Email() . "> " . <SID>Date()) + 1 + call search('^ -- ') + call setline('.', ' -- ' . <SID>FullName() . ' <' . <SID>Email() . '> ' . <SID>Date()) endfunction @@ -239,7 +239,7 @@ function! s:getAuthor(zonestart, zoneend) let linepos = a:zoneend while linepos >= a:zonestart let line = getline(linepos) - if line =~ '^ --' + if line =~# '^ --' return substitute(line, '^ --\s*\([^<]\+\)\s*.*', '\1', '') endif let linepos -= 1 @@ -254,7 +254,7 @@ function! DebGetPkgSrcName(lineno) let pkgname = '' while lineidx > 0 let curline = getline(lineidx) - if curline =~ '^\S' + if curline =~# '^\S' let pkgname = matchlist(curline, '^\(\S\+\).*$')[1] break endif @@ -264,7 +264,7 @@ function! DebGetPkgSrcName(lineno) endfunction function! DebChangelogFoldText() - if v:folddashes == '-' " changelog entry fold + if v:folddashes ==# '-' " changelog entry fold return foldtext() . ' -- ' . s:getAuthor(v:foldstart, v:foldend) . ' ' endif return foldtext() @@ -272,19 +272,19 @@ endfunction function! DebGetChangelogFold(lnum) let line = getline(a:lnum) - if line =~ '^\w\+' + if line =~# '^\w\+' return '>1' " beginning of a changelog entry endif - if line =~ '^\s\+\[.*\]' + if line =~# '^\s\+\[.*\]' return '>2' " beginning of an author-specific chunk endif - if line =~ '^ --' + if line =~# '^ --' return '1' endif return '=' endfunction -if exists("g:debchangelog_fold_enable") +if exists('g:debchangelog_fold_enable') silent! foldopen! " unfold the entry the cursor is on (usually the first one) endif @@ -305,13 +305,13 @@ fun! DebCompleteBugs(findstart, base) let try_colidx = col('.') - 1 let colidx = -1 " default to no-completion-possible - while try_colidx > 0 && line[try_colidx - 1] =~ '\s\|\d\|#\|,\|:' + while try_colidx > 0 && line[try_colidx - 1] =~# '\s\|\d\|#\|,\|:' let try_colidx = try_colidx - 1 - if line[try_colidx] == '#' && 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:' + elseif line[try_colidx] ==# ':' + if try_colidx > 1 && strpart(line, try_colidx - 2, 3) =~? '\clp:' let g:debchangelog_complete_mode = 'lp' endif break @@ -320,7 +320,7 @@ fun! DebCompleteBugs(findstart, base) return colidx else " return matches: let bug_lines = [] - if g:debchangelog_complete_mode == 'lp' + if g:debchangelog_complete_mode ==? 'lp' if ! has('python') echoerr 'vim must be built with Python support to use LP bug completion' return @@ -363,7 +363,7 @@ EOF 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 + if parts[1] !~ '^' . a:base continue endif let completion = {} diff --git a/runtime/ftplugin/debcontrol.vim b/runtime/ftplugin/debcontrol.vim index 7871d9897f..3a6e39a682 100644 --- a/runtime/ftplugin/debcontrol.vim +++ b/runtime/ftplugin/debcontrol.vim @@ -1,18 +1,18 @@ " Vim filetype plugin file (GUI menu and folding) " Language: Debian control files -" Maintainer: Debian Vim Maintainers <pkg-vim-maintainers@lists.alioth.debian.org> +" Maintainer: Debian Vim Maintainers " 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 +" Last Change: 2018-01-28 +" URL: https://salsa.debian.org/vim-team/vim-debian/blob/master/ftplugin/debcontrol.vim " Do these settings once per buffer -if exists("b:did_ftplugin") +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") +if exists('g:debcontrol_fold_enable') setlocal foldmethod=expr setlocal foldexpr=DebControlFold(v:lnum) setlocal foldtext=DebControlFoldText() @@ -20,7 +20,7 @@ endif setlocal textwidth=0 " Clean unloading -let b:undo_ftplugin = "setlocal tw< foldmethod< foldexpr< foldtext<" +let b:undo_ftplugin = 'setlocal tw< foldmethod< foldexpr< foldtext<' " }}}1 @@ -32,7 +32,7 @@ function! s:getField(f, lnum) while line !~ '^'.a:f.':' let fwdsteps += 1 let line = getline(a:lnum + fwdsteps) - if line == '' + if line ==# '' return 'unknown' endif endwhile @@ -40,9 +40,9 @@ function! s:getField(f, lnum) endfunction function! DebControlFoldText() - if v:folddashes == '-' " debcontrol entry fold + if v:folddashes ==# '-' " debcontrol entry fold let type = substitute(getline(v:foldstart), ':.*', '', '') - if type == 'Source' + if type ==# 'Source' let ftext = substitute(foldtext(), ' *Source: *', ' ', '') return ftext . ' -- ' . s:getField('Maintainer', v:foldstart) . ' ' endif @@ -56,11 +56,11 @@ endfunction function! DebControlFold(l) " This is for not merging blank lines around folds to them - if getline(a:l) =~ '^Source:' + if getline(a:l) =~# '^Source:' return '>1' endif - if getline(a:l) =~ '^Package:' + if getline(a:l) =~# '^Package:' return '>1' endif diff --git a/runtime/ftplugin/denyhosts.vim b/runtime/ftplugin/denyhosts.vim index 557fd82c53..563bb8f5f1 100644 --- a/runtime/ftplugin/denyhosts.vim +++ b/runtime/ftplugin/denyhosts.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2007-12-04 +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2007-12-04 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/dictconf.vim b/runtime/ftplugin/dictconf.vim index 659046c176..71a2b67258 100644 --- a/runtime/ftplugin/dictconf.vim +++ b/runtime/ftplugin/dictconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: dict(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: dict(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/dictdconf.vim b/runtime/ftplugin/dictdconf.vim index ee738c50ce..0ee4c9d7e0 100644 --- a/runtime/ftplugin/dictdconf.vim +++ b/runtime/ftplugin/dictdconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: dictd(8) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: dictd(8) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/dircolors.vim b/runtime/ftplugin/dircolors.vim index 3b3d046e36..d07d1e34da 100644 --- a/runtime/ftplugin/dircolors.vim +++ b/runtime/ftplugin/dircolors.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: dircolors(1) input file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: dircolors(1) input file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/dosini.vim b/runtime/ftplugin/dosini.vim index 461403ca95..0d0f0f8983 100644 --- a/runtime/ftplugin/dosini.vim +++ b/runtime/ftplugin/dosini.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Configuration File (ini file) for MSDOS/MS Windows -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/elinks.vim b/runtime/ftplugin/elinks.vim index 7d9257566b..921f9c276b 100644 --- a/runtime/ftplugin/elinks.vim +++ b/runtime/ftplugin/elinks.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: elinks(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: elinks(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/eruby.vim b/runtime/ftplugin/eruby.vim index 9bb8e86ff3..32f3fb868f 100644 --- a/runtime/ftplugin/eruby.vim +++ b/runtime/ftplugin/eruby.vim @@ -27,7 +27,7 @@ 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\+$') + 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' diff --git a/runtime/ftplugin/eterm.vim b/runtime/ftplugin/eterm.vim index e072c638b1..e2f88ef8c6 100644 --- a/runtime/ftplugin/eterm.vim +++ b/runtime/ftplugin/eterm.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: eterm(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: eterm(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/fetchmail.vim b/runtime/ftplugin/fetchmail.vim index a0d4650c03..33bb417be4 100644 --- a/runtime/ftplugin/fetchmail.vim +++ b/runtime/ftplugin/fetchmail.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: fetchmail(1) RC File -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: fetchmail(1) RC File +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/framescript.vim b/runtime/ftplugin/framescript.vim index 805401a89b..48fe0ace7c 100644 --- a/runtime/ftplugin/framescript.vim +++ b/runtime/ftplugin/framescript.vim @@ -1,7 +1,7 @@ " Vim ftplugin file -" Language: FrameScript -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-19 +" Language: FrameScript +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-19 let s:cpo_save = &cpo set cpo&vim diff --git a/runtime/ftplugin/gdb.vim b/runtime/ftplugin/gdb.vim new file mode 100644 index 0000000000..2473b13af0 --- /dev/null +++ b/runtime/ftplugin/gdb.vim @@ -0,0 +1,12 @@ +" Vim filetype plugin file +" Language: gdb +" Maintainer: Michaël Peeters <NOSPAMm.vim@noekeon.org> +" Last Changed: 26 Oct 2017 + +if exists("b:did_ftplugin") | finish | endif +let b:did_ftplugin = 1 + +setlocal commentstring=#%s + +" Undo the stuff we changed. +let b:undo_ftplugin = "setlocal cms<" diff --git a/runtime/ftplugin/git.vim b/runtime/ftplugin/git.vim index 5fe5b2b0c3..b3d5cff804 100644 --- a/runtime/ftplugin/git.vim +++ b/runtime/ftplugin/git.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: generic git output " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2013 May 30 +" Last Change: 2016 Aug 29 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) @@ -12,6 +12,8 @@ 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 != '' diff --git a/runtime/ftplugin/gitcommit.vim b/runtime/ftplugin/gitcommit.vim index e8619004bf..6767ff719e 100644 --- a/runtime/ftplugin/gitcommit.vim +++ b/runtime/ftplugin/gitcommit.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: git commit file " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2013 May 30 +" Last Change: 2016 Aug 29 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) @@ -11,15 +11,10 @@ endif runtime! ftplugin/git.vim let b:did_ftplugin = 1 -setlocal nomodeline tabstop=8 formatoptions-=croq formatoptions+=tl - -let b:undo_ftplugin = 'setl modeline< tabstop< formatoptions<' - -if &textwidth == 0 - " make sure that log messages play nice with git-log on standard terminals - setlocal textwidth=72 - let b:undo_ftplugin .= "|setl tw<" -endif +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 @@ -31,6 +26,8 @@ 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 diff --git a/runtime/ftplugin/gitrebase.vim b/runtime/ftplugin/gitrebase.vim index 0200ba1acc..6f73b5c499 100644 --- a/runtime/ftplugin/gitrebase.vim +++ b/runtime/ftplugin/gitrebase.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: git rebase --interactive " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2010 May 21 +" Last Change: 2016 Aug 29 " Only do this when not done yet for this buffer if (exists("b:did_ftplugin")) @@ -12,10 +12,11 @@ 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<" +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 diff --git a/runtime/ftplugin/gpg.vim b/runtime/ftplugin/gpg.vim index 5caa1f69c1..3f890e58f6 100644 --- a/runtime/ftplugin/gpg.vim +++ b/runtime/ftplugin/gpg.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: gpg(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: gpg(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/groovy.vim b/runtime/ftplugin/groovy.vim new file mode 100644 index 0000000000..cc7d6e35eb --- /dev/null +++ b/runtime/ftplugin/groovy.vim @@ -0,0 +1,19 @@ +" 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 diff --git a/runtime/ftplugin/group.vim b/runtime/ftplugin/group.vim index eef3cd68d9..e6b76ba607 100644 --- a/runtime/ftplugin/group.vim +++ b/runtime/ftplugin/group.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: group(5) user group file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: group(5) user group file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/grub.vim b/runtime/ftplugin/grub.vim index 21c4e3609d..cd6e1139e5 100644 --- a/runtime/ftplugin/grub.vim +++ b/runtime/ftplugin/grub.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: grub(8) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: grub(8) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/haml.vim b/runtime/ftplugin/haml.vim index 654f1fca90..e74530b556 100644 --- a/runtime/ftplugin/haml.vim +++ b/runtime/ftplugin/haml.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Haml " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2013 Jun 01 +" Last Change: 2016 Aug 29 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") diff --git a/runtime/ftplugin/hamster.vim b/runtime/ftplugin/hamster.vim index c23adc4232..6c0630fe04 100644 --- a/runtime/ftplugin/hamster.vim +++ b/runtime/ftplugin/hamster.vim @@ -1,8 +1,8 @@ " Vim filetype plugin " Language: Hamster Script " Version: 2.0.6.0 -" Maintainer: David Fishburn <fishburn@ianywhere.com> -" Last Change: Wed Nov 08 2006 12:03:09 PM +" 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") @@ -13,7 +13,7 @@ endif let b:did_ftplugin = 1 let s:cpo_save = &cpo -set cpo-=C +set cpo&vim let b:undo_ftplugin = "setl fo< com< tw< commentstring<" \ . "| unlet! b:match_ignorecase b:match_words b:match_skip" diff --git a/runtime/ftplugin/haskell.vim b/runtime/ftplugin/haskell.vim index 144f9f6860..84f4d0563b 100644 --- a/runtime/ftplugin/haskell.vim +++ b/runtime/ftplugin/haskell.vim @@ -1,7 +1,8 @@ " Vim filetype plugin file -" Language: Haskell -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Haskell +" Maintainer: Daniel Campoverde <alx@sillybytes.net> +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2018-08-27 if exists("b:did_ftplugin") finish @@ -15,6 +16,7 @@ let b:undo_ftplugin = "setl com< cms< fo<" setlocal comments=s1fl:{-,mb:-,ex:-},:-- commentstring=--\ %s setlocal formatoptions-=t formatoptions+=croql +setlocal omnifunc=haskellcomplete#Complete let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/help.vim b/runtime/ftplugin/help.vim index a0a0f292eb..0f448bd306 100644 --- a/runtime/ftplugin/help.vim +++ b/runtime/ftplugin/help.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Vim help file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Vim help file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish @@ -11,12 +11,87 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim -let b:undo_ftplugin = "setl fo< tw< cole< cocu<" +let b:undo_ftplugin = "setl fo< tw< cole< cocu< keywordprg<" setlocal formatoptions+=tcroql textwidth=78 if has("conceal") setlocal cole=2 cocu=nc endif +" Prefer Vim help instead of manpages. +setlocal keywordprg=:help + +if !exists('g:no_plugin_maps') + function! s:show_toc() abort + let bufname = bufname('%') + let info = getloclist(0, {'winid': 1}) + if !empty(info) && getwinvar(info.winid, 'qf_toc') ==# bufname + lopen + return + endif + + let toc = [] + let lnum = 2 + let last_line = line('$') - 1 + let last_added = 0 + let has_section = 0 + let has_sub_section = 0 + + while lnum && lnum <= last_line + let level = 0 + let add_text = '' + let text = getline(lnum) + + if text =~# '^=\+$' && lnum + 1 < last_line + " A de-facto section heading. Other headings are inferred. + let has_section = 1 + let has_sub_section = 0 + let lnum = nextnonblank(lnum + 1) + let text = getline(lnum) + let add_text = text + while add_text =~# '\*[^*]\+\*\s*$' + let add_text = matchstr(add_text, '.*\ze\*[^*]\+\*\s*$') + endwhile + elseif text =~# '^[A-Z0-9][-A-ZA-Z0-9 .][-A-Z0-9 .():]*\%([ \t]\+\*.\+\*\)\?$' + " Any line that's yelling is important. + let has_sub_section = 1 + let level = has_section + let add_text = matchstr(text, '.\{-}\ze\s*\%([ \t]\+\*.\+\*\)\?$') + elseif text =~# '\~$' + \ && matchstr(text, '^\s*\zs.\{-}\ze\s*\~$') !~# '\t\|\s\{2,}' + \ && getline(lnum - 1) =~# '^\s*<\?$\|^\s*\*.*\*$' + \ && getline(lnum + 1) =~# '^\s*>\?$\|^\s*\*.*\*$' + " These lines could be headers or code examples. We only want the + " ones that have subsequent lines at the same indent or more. + let l = nextnonblank(lnum + 1) + if getline(l) =~# '\*[^*]\+\*$' + " Ignore tag lines + let l = nextnonblank(l + 1) + endif + + if indent(lnum) <= indent(l) + let level = has_section + has_sub_section + let add_text = matchstr(text, '\S.*') + endif + endif + + let add_text = substitute(add_text, '\s\+$', '', 'g') + if !empty(add_text) && last_added != lnum + let last_added = lnum + call add(toc, {'bufnr': bufnr('%'), 'lnum': lnum, + \ 'text': repeat(' ', level) . add_text}) + endif + let lnum = nextnonblank(lnum + 1) + endwhile + + call setloclist(0, toc, ' ') + call setloclist(0, [], 'a', {'title': 'Help TOC'}) + lopen + let w:qf_toc = bufname + endfunction + + nnoremap <silent><buffer> gO :call <sid>show_toc()<cr> +endif + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/hostconf.vim b/runtime/ftplugin/hostconf.vim index 557fd82c53..563bb8f5f1 100644 --- a/runtime/ftplugin/hostconf.vim +++ b/runtime/ftplugin/hostconf.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2007-12-04 +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2007-12-04 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/hostsaccess.vim b/runtime/ftplugin/hostsaccess.vim index a2f55acb8a..d32485f162 100644 --- a/runtime/ftplugin/hostsaccess.vim +++ b/runtime/ftplugin/hostsaccess.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: hosts_access(5) control file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: hosts_access(5) control file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/indent.vim b/runtime/ftplugin/indent.vim index 0e195b0615..e6d928a073 100644 --- a/runtime/ftplugin/indent.vim +++ b/runtime/ftplugin/indent.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: indent(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: indent(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/ld.vim b/runtime/ftplugin/ld.vim index 31ce5c9ffd..1ab80d533c 100644 --- a/runtime/ftplugin/ld.vim +++ b/runtime/ftplugin/ld.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: ld(1) script -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: ld(1) script +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/lftp.vim b/runtime/ftplugin/lftp.vim index 9e2eeb52cb..5bc496c884 100644 --- a/runtime/ftplugin/lftp.vim +++ b/runtime/ftplugin/lftp.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: lftp(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: lftp(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/libao.vim b/runtime/ftplugin/libao.vim index 38bd3de92c..0ce5831b28 100644 --- a/runtime/ftplugin/libao.vim +++ b/runtime/ftplugin/libao.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: libao.conf(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: libao.conf(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/limits.vim b/runtime/ftplugin/limits.vim index cd5b7b5c93..90a10a6c22 100644 --- a/runtime/ftplugin/limits.vim +++ b/runtime/ftplugin/limits.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: limits(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: limits(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/loginaccess.vim b/runtime/ftplugin/loginaccess.vim index 7c44f972f2..d27114a7ae 100644 --- a/runtime/ftplugin/loginaccess.vim +++ b/runtime/ftplugin/loginaccess.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: login.access(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: login.access(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/logindefs.vim b/runtime/ftplugin/logindefs.vim index 668d08a002..7873396808 100644 --- a/runtime/ftplugin/logindefs.vim +++ b/runtime/ftplugin/logindefs.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: login.defs(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: login.defs(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/logtalk.dict b/runtime/ftplugin/logtalk.dict index e3b9e6f2a4..3fcdfc6f6a 100644 --- a/runtime/ftplugin/logtalk.dict +++ b/runtime/ftplugin/logtalk.dict @@ -1,164 +1,262 @@ -encoding +abolish +abolish_category +abolish_events +abolish_object +abolish_protocol +abs +acos +acyclic_term +after +alias +always_true_or_false_goals +arg +asin +asserta +assertz +atan +atan2 +atom +atomic +atom_chars +atom_chars +atom_codes +atom_codes +atom_concat +atom_concat +atom_length +at_end_of_stream +bagof +before +built_in +call +callable calls +catch category +category_property +ceiling +char_code +char_conversion +clause +clean +close +code_prefix +coinduction +coinductive +compare +complements +complements +complements_object +compound +conforms_to_protocol +context +context_switching_calls +copy_term +cos +create_category +create_logtalk_flag +create_object +create_protocol +current_category +current_char_conversion +current_event +current_input +current_logtalk_flag +current_object +current_op +current_output +current_predicate +current_prolog_flag +current_protocol +debug +define_events +deprecated +discontiguous +div +domain_error +duplicated_directives dynamic +dynamic_declarations +elif +else +encoding +encoding_directive +endif end_category end_object end_protocol -info -initialization -object -protocol -synchronized -threaded -uses -alias -discontiguous -meta_predicate -mode -op -private -protected -public -current_object -current_protocol -current_category -object_property -protocol_property -category_property -create_object -create_protocol -create_category -abolish_object -abolish_protocol -abolish_category -complements -complements_object +engines +ensure_loaded +evaluation_error +events +existence_error +exp +expand_goal +expand_term +export extends +extends_category extends_object extends_protocol -extends_category +fail +false +findall +float +float_fractional_part +float_integer_part +floor +flush_output +forall +forward +functor +get_byte +get_char +get_code +goal_expansion +ground +halt +hook +if +ignore implements implements_protocol imports imports_category +include +info +initialization instantiates instantiates_class -specializes -specializes_class -abolish_events -current_event -define_events -logtalk_load +instantiation_error +integer +keysort +lambda_variables +log logtalk_compile logtalk_library_path -current_logtalk_flag -set_logtalk_flag -threaded_call -threaded_once -threaded_ignore -threaded_exit -threaded_peek -threaded_wait -threaded_notify -self -this -sender -parameter -before -after -phrase -expand_term -goal_expansion -term_expansion -true -fail -call -catch -throw -unify_with_occurs_check -var -atom -integer -float -atomic -compound +logtalk_load +logtalk_load_context +logtalk_make +logtalk_make_target_action +max +meta_non_terminal +meta_predicate +min +missing_directives +mod +mode +modules +multifile +nl nonvar number -arg -copy_term -functor -current_predicate -predicate_property -abolish -assertz -asserta -clause -retract -retractall -bagof -findall -forall -setof -current_input -current_output -set_input -set_output +numbervars +number_chars +number_chars +number_codes +number_codes +object +object_property +once +op open -close -flush_output -stream_property -at_end_of_stream -set_stream_position -get_char -get_code +optimize +parameter +peek_byte peek_char peek_code +permission_error +phrase +portability +predicate_property +private +prolog_compatible_version +prolog_compiler +prolog_dialect +prolog_loader +prolog_version +protected +protocol +protocol_property +public +put_byte put_char put_code -nl -get_byte -peek_byte -put_byte read read_term -write -writeq -write_canonical -atom_chars -atom_codes -atom_concat -number_chars -number_codes -current_op -char_conversion -current_char_conversion -once -repeat -atom_length -atom_concat -sub_atom -atom_chars -atom_codes -char_code -number_chars -number_codes -set_prolog_flag -current_prolog_flag -halt -abs -atan -ceiling -cos -exp -float_fractional_part -float_integer_part -floor -log -mod +redefined_built_ins +reexport +reload rem +repeat +report +representation_error +resource_error +retract +retractall round +scratch_directory +self +sender +setof +set_input +set_logtalk_flag +set_output +set_prolog_flag +set_stream_position sign sin +singleton_variables +sort +source_data +specializes +specializes_class sqrt +stream_property +subsumes_term +sub_atom +suspicious_calls +synchronized +syntax_error +system_error +tabling +tan +term_expansion +term_variables +this +threaded +threaded_call +threaded_engine +threaded_engine_create +threaded_engine_destroy +threaded_engine_fetch +threaded_engine_next +threaded_engine_next_reified +threaded_engine_post +threaded_engine_self +threaded_engine_yield +threaded_exit +threaded_ignore +threaded_notify +threaded_once +threaded_peek +threaded_wait +threads +throw +trivial_goal_fails +true truncate +type_error +undefined_predicates +underscore_variables +unify_with_occurs_check +unknown_entities +unknown_predicates +uses +use_module +var +version +write +writeq +write_canonical +xor diff --git a/runtime/ftplugin/logtalk.vim b/runtime/ftplugin/logtalk.vim index e71307a399..667907ce5f 100644 --- a/runtime/ftplugin/logtalk.vim +++ b/runtime/ftplugin/logtalk.vim @@ -1,7 +1,7 @@ " Logtalk filetype plugin file " Language: Logtalk " Maintainer: Paulo Moura <pmoura@logtalk.org> -" Latest Revision: 2007-07-06 +" Latest Revision: 2018-08-03 if exists("b:did_ftplugin") finish @@ -10,9 +10,10 @@ let b:did_ftplugin = 1 let b:undo_ftplugin = "setl ts< sw< fdm< fdc< ai< dict<" -"setlocal ts=4 +setlocal ts=4 setlocal sw=4 setlocal fdm=syntax +setlocal fdn=10 setlocal fdc=2 setlocal autoindent setlocal dict=$VIMRUNTIME/ftplugin/logtalk.dict diff --git a/runtime/ftplugin/m4.vim b/runtime/ftplugin/m4.vim index 0ffe0ac77e..3745507321 100644 --- a/runtime/ftplugin/m4.vim +++ b/runtime/ftplugin/m4.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: m4 -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: m4 +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/mailaliases.vim b/runtime/ftplugin/mailaliases.vim index 1b10c86ae3..0ae4b452d0 100644 --- a/runtime/ftplugin/mailaliases.vim +++ b/runtime/ftplugin/mailaliases.vim @@ -1,6 +1,6 @@ " Vim filetype plugin file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/mailcap.vim b/runtime/ftplugin/mailcap.vim index f4c8c232d8..ba8573c722 100644 --- a/runtime/ftplugin/mailcap.vim +++ b/runtime/ftplugin/mailcap.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Mailcap configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Mailcap configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/man.vim b/runtime/ftplugin/man.vim index 04ab539fb1..26b51186a1 100644 --- a/runtime/ftplugin/man.vim +++ b/runtime/ftplugin/man.vim @@ -1,41 +1,56 @@ -" Vim filetype plugin file -" Language: man -" Maintainer: SungHyun Nam <goweol@gmail.com> +" Maintainer: Anmol Sethi <anmol@aubble.com> +" Previous Maintainer: SungHyun Nam <goweol@gmail.com> -if has('vim_starting') && &filetype !=# 'man' - finish -endif - -" Only do this when not done yet for this buffer -if exists('b:did_ftplugin') +if exists('b:did_ftplugin') || &filetype !=# 'man' 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 +let s:pager = get(s:, 'pager', 0) || !exists('b:man_sect') -setlocal iskeyword+=\.,-,(,) - -setlocal buftype=nofile noswapfile -setlocal nomodifiable readonly bufhidden=hide nobuflisted tabstop=8 +if s:pager + call man#init_pager() +endif -if !exists("g:no_plugin_maps") && !exists("g:no_man_maps") - nnoremap <silent> <buffer> <C-]> :call man#get_page(v:count, expand('<cword>'))<CR> - nnoremap <silent> <buffer> <C-T> :call man#pop_page()<CR> - nnoremap <silent> <nowait><buffer> q <C-W>c - if &keywordprg !=# ':Man' - nnoremap <silent> <buffer> K :call man#get_page(v:count, expand('<cword>'))<CR> +setlocal buftype=nofile +setlocal noswapfile +setlocal bufhidden=hide +setlocal nomodified +setlocal readonly +setlocal nomodifiable +setlocal noexpandtab +setlocal tabstop=8 +setlocal softtabstop=8 +setlocal shiftwidth=8 +setlocal wrap +setlocal breakindent + +setlocal nonumber +setlocal norelativenumber +setlocal foldcolumn=0 +setlocal colorcolumn=0 +setlocal nolist +setlocal nofoldenable + +if !exists('g:no_plugin_maps') && !exists('g:no_man_maps') + nnoremap <silent> <buffer> j gj + nnoremap <silent> <buffer> k gk + nnoremap <silent> <buffer> gO :call man#show_toc()<CR> + nnoremap <silent> <buffer> <C-]> :Man<CR> + nnoremap <silent> <buffer> K :Man<CR> + nnoremap <silent> <buffer> <C-T> :call man#pop_tag()<CR> + if 1 == bufnr('%') || s:pager + nnoremap <silent> <buffer> <nowait> q :lclose<CR>:q<CR> + else + nnoremap <silent> <buffer> <nowait> q :lclose<CR><C-W>c endif endif -if exists('g:ft_man_folding_enable') && (g:ft_man_folding_enable == 1) - setlocal foldmethod=indent foldnestmax=1 foldenable +if get(g:, 'ft_man_folding_enable', 0) + setlocal foldenable + setlocal foldmethod=indent + setlocal foldnestmax=1 endif -let b:undo_ftplugin = 'setlocal iskeyword<' - +let b:undo_ftplugin = '' " vim: set sw=2: diff --git a/runtime/ftplugin/manconf.vim b/runtime/ftplugin/manconf.vim index a249a97507..aa85408cef 100644 --- a/runtime/ftplugin/manconf.vim +++ b/runtime/ftplugin/manconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: man.conf(5) - man configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/markdown.vim b/runtime/ftplugin/markdown.vim index 5d6ebecd8c..277ba94e8b 100644 --- a/runtime/ftplugin/markdown.vim +++ b/runtime/ftplugin/markdown.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Markdown " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2013 May 30 +" Last Change: 2016 Aug 29 if exists("b:did_ftplugin") finish @@ -11,7 +11,7 @@ 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\\+ +setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^[-*+]\\s\\+\\\|^\\[^\\ze[^\\]]\\+\\]: if exists('b:undo_ftplugin') let b:undo_ftplugin .= "|setl cms< com< fo< flp<" @@ -19,4 +19,32 @@ 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: diff --git a/runtime/ftplugin/mf.vim b/runtime/ftplugin/mf.vim index fd1d3ce646..7c9a8a1283 100644 --- a/runtime/ftplugin/mf.vim +++ b/runtime/ftplugin/mf.vim @@ -1,7 +1,8 @@ " Vim filetype plugin file -" Language: MetaFont -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 @@ -11,9 +12,59 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim -let b:undo_ftplugin = "setl com< cms< fo<" +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+=croql +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 diff --git a/runtime/ftplugin/modconf.vim b/runtime/ftplugin/modconf.vim index f200e9f61e..c8e76b538b 100644 --- a/runtime/ftplugin/modconf.vim +++ b/runtime/ftplugin/modconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: modules.conf(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: modules.conf(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/mp.vim b/runtime/ftplugin/mp.vim index 316fa9bb64..3a0a3d0298 100644 --- a/runtime/ftplugin/mp.vim +++ b/runtime/ftplugin/mp.vim @@ -1,7 +1,8 @@ " Vim filetype plugin file -" Language: MetaPost -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 @@ -11,9 +12,16 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim -let b:undo_ftplugin = "setl com< cms< fo<" +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+=croql +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() @@ -24,5 +32,51 @@ if exists(":FixBeginfigs") != 2 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 diff --git a/runtime/ftplugin/mplayerconf.vim b/runtime/ftplugin/mplayerconf.vim index 65034a8152..86547609c3 100644 --- a/runtime/ftplugin/mplayerconf.vim +++ b/runtime/ftplugin/mplayerconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: mplayer(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: mplayer(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/muttrc.vim b/runtime/ftplugin/muttrc.vim index a109e5ddda..c8ad0f2ec5 100644 --- a/runtime/ftplugin/muttrc.vim +++ b/runtime/ftplugin/muttrc.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: mutt RC File -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-04-19 +" Language: mutt RC File +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2006-04-19 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/nanorc.vim b/runtime/ftplugin/nanorc.vim index be20d12503..e45ebac0eb 100644 --- a/runtime/ftplugin/nanorc.vim +++ b/runtime/ftplugin/nanorc.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: nanorc(5) - GNU nano configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/neomuttrc.vim b/runtime/ftplugin/neomuttrc.vim new file mode 100644 index 0000000000..86f1cded63 --- /dev/null +++ b/runtime/ftplugin/neomuttrc.vim @@ -0,0 +1,23 @@ +" Vim filetype plugin file +" Language: NeoMutt RC File +" Previous Maintainer: Guillaume Brogi <gui-gui@netcourrier.com> +" Latest Revision: 2017-09-17 +" Original version copied from ftplugin/muttrc.vim + +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 diff --git a/runtime/ftplugin/netrc.vim b/runtime/ftplugin/netrc.vim index 105a1d3a8e..02ee327295 100644 --- a/runtime/ftplugin/netrc.vim +++ b/runtime/ftplugin/netrc.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: netrc(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: netrc(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/nsis.vim b/runtime/ftplugin/nsis.vim index acc26208c4..1a35127c86 100644 --- a/runtime/ftplugin/nsis.vim +++ b/runtime/ftplugin/nsis.vim @@ -1,22 +1,43 @@ " Vim ftplugin file -" Language: NSIS script -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 - -let s:cpo_save = &cpo -set cpo&vim +" Language: NSIS script +" Maintainer: Ken Takata +" URL: https://github.com/k-takata/vim-nsis +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Last Change: 2018-01-26 if exists("b:did_ftplugin") finish endif + +let s:cpo_save = &cpo +set cpo&vim + let b:did_ftplugin = 1 let b:undo_ftplugin = "setl com< cms< fo< def< inc<" + \ " | unlet! b:match_ignorecase b:match_words" 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\\)\\= +if exists("loaded_matchit") + let b:match_ignorecase = 1 + let b:match_words = + \ '\${\%(If\|IfNot\|Unless\)}:\${\%(Else\|ElseIf\|ElseIfNot\|ElseUnless\)}:\${\%(EndIf\|EndUnless\)},' . + \ '\${Select}:\${EndSelect},' . + \ '\${Switch}:\${EndSwitch},' . + \ '\${\%(Do\|DoWhile\|DoUntil\)}:\${\%(Loop\|LoopWhile\|LoopUntil\)},' . + \ '\${\%(For\|ForEach\)}:\${Next},' . + \ '\<Function\>:\<FunctionEnd\>,' . + \ '\<Section\>:\<SectionEnd\>,' . + \ '\<SectionGroup\>:\<SectionGroupEnd\>,' . + \ '\<PageEx\>:\<PageExEnd\>,' . + \ '\${MementoSection}:\${MementoSectionEnd},' . + \ '!if\%(\%(macro\)\?n\?def\)\?\>:!else\>:!endif\>,' . + \ '!macro\>:!macroend\>' +endif + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/pamconf.vim b/runtime/ftplugin/pamconf.vim index 96d96461e2..f0a693e3a5 100644 --- a/runtime/ftplugin/pamconf.vim +++ b/runtime/ftplugin/pamconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: pam(8) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: pam(8) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/passwd.vim b/runtime/ftplugin/passwd.vim index 5088c43359..f6e0f50342 100644 --- a/runtime/ftplugin/passwd.vim +++ b/runtime/ftplugin/passwd.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: passwd(5) password file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: passwd(5) password file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/perl.vim b/runtime/ftplugin/perl.vim index 741cfae047..e7acf654f3 100644 --- a/runtime/ftplugin/perl.vim +++ b/runtime/ftplugin/perl.vim @@ -3,7 +3,7 @@ " 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 +" Last Change: 2015-02-09 if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 @@ -33,14 +33,14 @@ endif 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. The change to iskeyword was incorrect. -" 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 +" 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 iskeyword+=: " Set this once, globally. if !exists("perlpath") @@ -77,11 +77,12 @@ endif "--------------------------------------------- " Undo the stuff we changed. -let b:undo_ftplugin = "setlocal fo< com< cms< inc< inex< def< isf< kp< path<" . +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 diff --git a/runtime/ftplugin/pinfo.vim b/runtime/ftplugin/pinfo.vim index 6ec1f87b9e..50473a8114 100644 --- a/runtime/ftplugin/pinfo.vim +++ b/runtime/ftplugin/pinfo.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: pinfo(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: pinfo(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/procmail.vim b/runtime/ftplugin/procmail.vim index cc2ceede19..d64f19274d 100644 --- a/runtime/ftplugin/procmail.vim +++ b/runtime/ftplugin/procmail.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: procmail(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: procmail(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/prolog.vim b/runtime/ftplugin/prolog.vim index caeb574c5a..f4e7d135b5 100644 --- a/runtime/ftplugin/prolog.vim +++ b/runtime/ftplugin/prolog.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Prolog -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Prolog +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/protocols.vim b/runtime/ftplugin/protocols.vim index 2486ff9370..83856ce7ba 100644 --- a/runtime/ftplugin/protocols.vim +++ b/runtime/ftplugin/protocols.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: protocols(5) - Internet protocols definition file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/python.vim b/runtime/ftplugin/python.vim index 75c7e87996..5c4a59b1a9 100644 --- a/runtime/ftplugin/python.vim +++ b/runtime/ftplugin/python.vim @@ -1,8 +1,10 @@ " Vim filetype plugin file " Language: python -" Maintainer: Johannes Zellner <johannes@zellner.org> -" Last Change: 2014 Feb 09 -" Last Change By Johannes: Wed, 21 Apr 2004 13:13:08 CEST +" Maintainer: Tom Picton <tom@tompicton.co.uk> +" Previous Maintainer: James Sully <sullyj3@gmail.com> +" Previous Maintainer: Johannes Zellner <johannes@zellner.org> +" Last Change: Sun, 15 April 2018 +" https://github.com/tpict/vim-ftplugin-python if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 @@ -12,41 +14,106 @@ set cpo&vim setlocal cinkeys-=0# setlocal indentkeys-=0# setlocal include=^\\s*\\(from\\\|import\\) -setlocal includeexpr=substitute(v:fname,'\\.','/','g') + +" For imports with leading .., append / and replace additional .s with ../ +let b:grandparent_match = '^\(.\.\)\(\.*\)' +let b:grandparent_sub = '\=submatch(1)."/".repeat("../",strlen(submatch(2)))' + +" For imports with a single leading ., replace it with ./ +let b:parent_match = '^\.\(\.\)\@!' +let b:parent_sub = './' + +" Replace any . sandwiched between word characters with / +let b:child_match = '\(\w\)\.\(\w\)' +let b:child_sub = '\1/\2' + +setlocal includeexpr=substitute(substitute(substitute( + \v:fname, + \b:grandparent_match,b:grandparent_sub,''), + \b:parent_match,b:parent_sub,''), + \b:child_match,b:child_sub,'g') + setlocal suffixesadd=.py setlocal comments=b:#,fb:- setlocal commentstring=#\ %s setlocal omnifunc=pythoncomplete#Complete +if has('python3') + setlocal omnifunc=python3complete#Complete +endif set wildignore+=*.pyc -nnoremap <silent> <buffer> ]] :call <SID>Python_jump('/^\(class\\|def\)')<cr> -nnoremap <silent> <buffer> [[ :call <SID>Python_jump('?^\(class\\|def\)')<cr> -nnoremap <silent> <buffer> ]m :call <SID>Python_jump('/^\s*\(class\\|def\)')<cr> -nnoremap <silent> <buffer> [m :call <SID>Python_jump('?^\s*\(class\\|def\)')<cr> +let b:next_toplevel='\v%$\|^(class\|def\|async def)>' +let b:prev_toplevel='\v^(class\|def\|async def)>' +let b:next_endtoplevel='\v%$\|\S.*\n+(def\|class)' +let b:prev_endtoplevel='\v\S.*\n+(def\|class)' +let b:next='\v%$\|^\s*(class\|def\|async def)>' +let b:prev='\v^\s*(class\|def\|async def)>' +let b:next_end='\v\S\n*(%$\|^(\s*\n*)*(class\|def\|async def)\|^\S)' +let b:prev_end='\v\S\n*(^(\s*\n*)*(class\|def\|async def)\|^\S)' + +execute "nnoremap <silent> <buffer> ]] :call <SID>Python_jump('n', '". b:next_toplevel."', 'W', v:count1)<cr>" +execute "nnoremap <silent> <buffer> [[ :call <SID>Python_jump('n', '". b:prev_toplevel."', 'Wb', v:count1)<cr>" +execute "nnoremap <silent> <buffer> ][ :call <SID>Python_jump('n', '". b:next_endtoplevel."', 'W', 0, v:count1)<cr>" +execute "nnoremap <silent> <buffer> [] :call <SID>Python_jump('n', '". b:prev_endtoplevel."', 'Wb', 0, v:count1)<cr>" +execute "nnoremap <silent> <buffer> ]m :call <SID>Python_jump('n', '". b:next."', 'W', v:count1)<cr>" +execute "nnoremap <silent> <buffer> [m :call <SID>Python_jump('n', '". b:prev."', 'Wb', v:count1)<cr>" +execute "nnoremap <silent> <buffer> ]M :call <SID>Python_jump('n', '". b:next_end."', 'W', 0, v:count1)<cr>" +execute "nnoremap <silent> <buffer> [M :call <SID>Python_jump('n', '". b:prev_end."', 'Wb', 0, v:count1)<cr>" + +execute "onoremap <silent> <buffer> ]] :call <SID>Python_jump('o', '". b:next_toplevel."', 'W', v:count1)<cr>" +execute "onoremap <silent> <buffer> [[ :call <SID>Python_jump('o', '". b:prev_toplevel."', 'Wb', v:count1)<cr>" +execute "onoremap <silent> <buffer> ][ :call <SID>Python_jump('o', '". b:next_endtoplevel."', 'W', 0, v:count1)<cr>" +execute "onoremap <silent> <buffer> [] :call <SID>Python_jump('o', '". b:prev_endtoplevel."', 'Wb', 0, v:count1)<cr>" +execute "onoremap <silent> <buffer> ]m :call <SID>Python_jump('o', '". b:next."', 'W', v:count1)<cr>" +execute "onoremap <silent> <buffer> [m :call <SID>Python_jump('o', '". b:prev."', 'Wb', v:count1)<cr>" +execute "onoremap <silent> <buffer> ]M :call <SID>Python_jump('o', '". b:next_end."', 'W', 0, v:count1)<cr>" +execute "onoremap <silent> <buffer> [M :call <SID>Python_jump('o', '". b:prev_end."', 'Wb', 0, v:count1)<cr>" + +execute "xnoremap <silent> <buffer> ]] :call <SID>Python_jump('x', '". b:next_toplevel."', 'W', v:count1)<cr>" +execute "xnoremap <silent> <buffer> [[ :call <SID>Python_jump('x', '". b:prev_toplevel."', 'Wb', v:count1)<cr>" +execute "xnoremap <silent> <buffer> ][ :call <SID>Python_jump('x', '". b:next_endtoplevel."', 'W', 0, v:count1)<cr>" +execute "xnoremap <silent> <buffer> [] :call <SID>Python_jump('x', '". b:prev_endtoplevel."', 'Wb', 0, v:count1)<cr>" +execute "xnoremap <silent> <buffer> ]m :call <SID>Python_jump('x', '". b:next."', 'W', v:count1)<cr>" +execute "xnoremap <silent> <buffer> [m :call <SID>Python_jump('x', '". b:prev."', 'Wb', v:count1)<cr>" +execute "xnoremap <silent> <buffer> ]M :call <SID>Python_jump('x', '". b:next_end."', 'W', 0, v:count1)<cr>" +execute "xnoremap <silent> <buffer> [M :call <SID>Python_jump('x', '". b:prev_end."', 'Wb', 0, v:count1)<cr>" if !exists('*<SID>Python_jump') - fun! <SID>Python_jump(motion) range - let cnt = v:count1 - let save = @/ " save last search pattern + fun! <SID>Python_jump(mode, motion, flags, count, ...) range + let l:startofline = (a:0 >= 1) ? a:1 : 1 + + if a:mode == 'x' + normal! gv + endif + + if l:startofline == 1 + normal! 0 + endif + + let cnt = a:count mark ' while cnt > 0 - silent! exe a:motion - let cnt = cnt - 1 + call search(a:motion, a:flags) + let cnt = cnt - 1 endwhile - call histdel('/', -1) - let @/ = save " restore last search pattern + + if l:startofline == 1 + normal! ^ + endif endfun endif if has("browsefilter") && !exists("b:browsefilter") let b:browsefilter = "Python Files (*.py)\t*.py\n" . - \ "All Files (*.*)\t*.*\n" + \ "All Files (*.*)\t*.*\n" endif -" As suggested by PEP8. -setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8 +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') diff --git a/runtime/ftplugin/qf.vim b/runtime/ftplugin/qf.vim index 98c8f932bc..80e86c4d16 100644 --- a/runtime/ftplugin/qf.vim +++ b/runtime/ftplugin/qf.vim @@ -14,3 +14,26 @@ 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 + +function! s:setup_toc() abort + if get(w:, 'quickfix_title') !~# '\<TOC$' || &syntax != 'qf' + return + endif + + let list = getloclist(0) + if empty(list) + return + endif + + let bufnr = list[0].bufnr + setlocal modifiable + silent %delete _ + call setline(1, map(list, 'v:val.text')) + setlocal nomodifiable nomodified + let &syntax = getbufvar(bufnr, '&syntax') +endfunction + +augroup qf_toc + autocmd! + autocmd Syntax <buffer> call s:setup_toc() +augroup END diff --git a/runtime/ftplugin/quake.vim b/runtime/ftplugin/quake.vim index f62693b11a..c3a2e52347 100644 --- a/runtime/ftplugin/quake.vim +++ b/runtime/ftplugin/quake.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Quake[1-3] configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Quake[1-3] configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/racc.vim b/runtime/ftplugin/racc.vim index 7ff22f8937..0cd852c365 100644 --- a/runtime/ftplugin/racc.vim +++ b/runtime/ftplugin/racc.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Racc input file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Racc input file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/readline.vim b/runtime/ftplugin/readline.vim index 0a4dbb5c03..e9ef93ec7f 100644 --- a/runtime/ftplugin/readline.vim +++ b/runtime/ftplugin/readline.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: readline(3) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: readline(3) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/rmd.vim b/runtime/ftplugin/rmd.vim index ec64a07675..7b0db8dbb5 100644 --- a/runtime/ftplugin/rmd.vim +++ b/runtime/ftplugin/rmd.vim @@ -1,18 +1,21 @@ " Vim filetype plugin file -" Language: R help file +" Language: R Markdown 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 -" Original work by Alex Zvoleff (adjusted for rmd by Michel Kuhlmann) +" Last Change: Sun Jul 22, 2018 06:51PM +" 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 +if exists('g:rmd_include_html') && g:rmd_include_html + runtime! ftplugin/html.vim ftplugin/html_*.vim ftplugin/html/*.vim +endif -setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s +setlocal comments=fb:*,fb:-,fb:+,n:> +setlocal commentstring=#\ %s setlocal formatoptions+=tcqln setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+ setlocal iskeyword=@,48-57,_,. @@ -20,6 +23,22 @@ setlocal iskeyword=@,48-57,_,. let s:cpo_save = &cpo set cpo&vim +function! FormatRmd() + if search("^[ \t]*```[ ]*{r", "bncW") > search("^[ \t]*```$", "bncW") + setlocal comments=:#',:###,:##,:# + else + setlocal comments=fb:*,fb:-,fb:+,n:> + endif + return 1 +endfunction + +" If you do not want 'comments' dynamically defined, put in your vimrc: +" let g:rmd_dynamic_comments = 0 +if !exists("g:rmd_dynamic_comments") || (exists("g:rmd_dynamic_comments") && g:rmd_dynamic_comments == 1) + setlocal formatexpr=FormatRmd() +endif + + " Enables pandoc if it is installed unlet! b:did_ftplugin runtime ftplugin/pandoc.vim diff --git a/runtime/ftplugin/rnc.vim b/runtime/ftplugin/rnc.vim index 2b8fd50d8d..90aa111c67 100644 --- a/runtime/ftplugin/rnc.vim +++ b/runtime/ftplugin/rnc.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Relax NG compact syntax -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Relax NG compact syntax +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/rrst.vim b/runtime/ftplugin/rrst.vim index ecfd6e87a1..3e82847d35 100644 --- a/runtime/ftplugin/rrst.vim +++ b/runtime/ftplugin/rrst.vim @@ -2,7 +2,7 @@ " 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 +" Last Change: Wed Nov 01, 2017 10:47PM " Original work by Alex Zvoleff " Only do this when not yet done for this buffer @@ -16,11 +16,27 @@ let b:did_ftplugin = 1 let s:cpo_save = &cpo set cpo&vim -setlocal comments=fb:*,fb:-,fb:+,n:> commentstring=>\ %s +setlocal comments=fb:*,fb:-,fb:+,n:> +setlocal commentstring=#\ %s setlocal formatoptions+=tcqln setlocal formatlistpat=^\\s*\\d\\+\\.\\s\\+\\\|^\\s*[-*+]\\s\\+ setlocal iskeyword=@,48-57,_,. +function! FormatRrst() + if search('^\.\. {r', "bncW") > search('^\.\. \.\.$', "bncW") + setlocal comments=:#',:###,:##,:# + else + setlocal comments=fb:*,fb:-,fb:+,n:> + endif + return 1 +endfunction + +" If you do not want 'comments' dynamically defined, put in your vimrc: +" let g:rrst_dynamic_comments = 0 +if !exists("g:rrst_dynamic_comments") || (exists("g:rrst_dynamic_comments") && g:rrst_dynamic_comments == 1) + setlocal formatexpr=FormatRrst() +endif + 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" diff --git a/runtime/ftplugin/rst.vim b/runtime/ftplugin/rst.vim index b871cf1486..9d737cde44 100644 --- a/runtime/ftplugin/rst.vim +++ b/runtime/ftplugin/rst.vim @@ -1,10 +1,12 @@ -" Vim filetype plugin file -" Language: reStructuredText documentation format -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" reStructuredText filetype plugin file +" Language: reStructuredText documentation format +" Maintainer: Marshall Ward <marshall.ward@gmail.com> +" Original Maintainer: Nikolai Weibull <now@bitwi.se> +" Website: https://github.com/marshallward/vim-restructuredtext +" Latest Revision: 2018-01-07 if exists("b:did_ftplugin") - finish + finish endif let b:did_ftplugin = 1 @@ -16,5 +18,25 @@ let b:undo_ftplugin = "setl com< cms< et< fo<" setlocal comments=fb:.. commentstring=..\ %s expandtab setlocal formatoptions+=tcroql +" reStructuredText standard recommends that tabs be expanded to 8 spaces +" The choice of 3-space indentation is to provide slightly better support for +" directives (..) and ordered lists (1.), although it can cause problems for +" many other cases. +" +" More sophisticated indentation rules should be revisted in the future. + +if !exists("g:rst_style") || g:rst_style != 0 + setlocal expandtab shiftwidth=3 softtabstop=3 tabstop=8 +endif + +if has('patch-7.3.867') " Introduced the TextChanged event. + setlocal foldmethod=expr + setlocal foldexpr=RstFold#GetRstFold() + setlocal foldtext=RstFold#GetRstFoldText() + augroup RstFold + autocmd TextChanged,InsertLeave <buffer> unlet! b:RstFoldCache + augroup END +endif + let &cpo = s:cpo_save unlet s:cpo_save diff --git a/runtime/ftplugin/ruby.vim b/runtime/ftplugin/ruby.vim index 9630a940ab..84fb9930a4 100644 --- a/runtime/ftplugin/ruby.vim +++ b/runtime/ftplugin/ruby.vim @@ -28,12 +28,13 @@ if exists("loaded_matchit") && !exists("b:match_words") \ ':' . \ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' . \ ':' . - \ '\<end\>' . + \ '\%(^\|[^.\:@$]\)\@<=\<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\\|" . @@ -43,7 +44,7 @@ endif setlocal formatoptions-=t formatoptions+=croql setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\) -setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','') +setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'\%(\.rb\)\=$','.rb','') setlocal suffixesadd=.rb if exists("&ofu") && has("ruby") @@ -66,32 +67,32 @@ if !exists('g:ruby_version_paths') let g:ruby_version_paths = {} endif -function! s:query_path(root) +function! s:query_path(root) abort let code = "print $:.join %q{,}" - if &shell =~# 'sh' && $PATH !~# '\s' - let prefix = 'env PATH='.$PATH.' ' + if &shell =~# 'sh' + let prefix = 'env PATH='.shellescape($PATH).' ' else let prefix = '' endif if &shellxquote == "'" - let path_check = prefix.'ruby -e "' . code . '"' + let path_check = prefix.'ruby --disable-gems -e "' . code . '"' else - let path_check = prefix."ruby -e '" . code . "'" + let path_check = prefix."ruby --disable-gems -e '" . code . "'" endif let cd = haslocaldir() ? 'lcd' : 'cd' - let cwd = getcwd() + let cwd = fnameescape(getcwd()) try exe cd fnameescape(a:root) let path = split(system(path_check),',') - exe cd fnameescape(cwd) + exe cd cwd return path finally - exe cd fnameescape(cwd) + exe cd cwd endtry endfunction -function! s:build_path(path) +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 @@ -101,7 +102,7 @@ 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) + 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')) @@ -135,7 +136,7 @@ if exists('s:ruby_paths') && stridx(&l:tags, join(map(copy(s:ruby_paths),'v:val. let &l:tags = &tags . ',' . join(map(copy(s:ruby_paths),'v:val."/tags"'),',') endif -if has("gui_win32") && !exists("b:browsefilter") +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 @@ -145,7 +146,22 @@ let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< tags< kp<" \."| 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> @@ -168,7 +184,7 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") \."| 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','n') == '' + 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> @@ -178,7 +194,7 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") \."| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'" endif - if maparg('iM','n') == '' + 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> @@ -188,33 +204,24 @@ if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps") \."| sil! exe 'xunmap <buffer> iM' | sil! exe 'xunmap <buffer> aM'" endif - if maparg("\<C-]>",'n') == '' - nnoremap <silent> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR> - nnoremap <silent> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR> - let b:undo_ftplugin = b:undo_ftplugin - \."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'" - \."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'" - \."| sil! exe 'nunmap <buffer> <C-W>g<C-]>'| sil! exe 'nunmap <buffer> <C-W>g]'" - \."| sil! exe 'nunmap <buffer> <C-W>}'| sil! exe 'nunmap <buffer> <C-W>g}'" - endif - - if maparg("gf",'n') == '' - " By using findfile() rather than gf's normal behavior, we prevent - " erroneously editing a directory. - nnoremap <silent> <buffer> gf :<C-U>exe <SID>gf(v:count1,"gf",'edit')<CR> - nnoremap <silent> <buffer> <C-W>f :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>f",'split')<CR> - nnoremap <silent> <buffer> <C-W><C-F> :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>\<Lt>C-F>",'split')<CR> - nnoremap <silent> <buffer> <C-W>gf :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>gf",'tabedit')<CR> - let b:undo_ftplugin = b:undo_ftplugin - \."| sil! exe 'nunmap <buffer> gf' | sil! exe 'nunmap <buffer> <C-W>f' | sil! exe 'nunmap <buffer> <C-W><C-F>' | sil! exe 'nunmap <buffer> <C-W>gf'" - 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 @@ -225,7 +232,7 @@ if exists("g:did_ruby_ftplugin_functions") endif let g:did_ruby_ftplugin_functions = 1 -function! RubyBalloonexpr() +function! RubyBalloonexpr() abort if !exists('s:ri_found') let s:ri_found = executable('ri') endif @@ -274,13 +281,13 @@ function! RubyBalloonexpr() endif endfunction -function! s:searchsyn(pattern,syn,flags,mode) +function! s:searchsyn(pattern, syn, flags, mode) abort + let cnt = v:count1 norm! m' if a:mode ==# 'v' norm! gv endif let i = 0 - let cnt = v:count ? v:count : 1 while i < cnt let i = i + 1 let line = line('.') @@ -296,11 +303,11 @@ function! s:searchsyn(pattern,syn,flags,mode) endwhile endfunction -function! s:synname() +function! s:synname() abort return synIDattr(synID(line('.'),col('.'),0),'name') endfunction -function! s:wrap_i(back,forward) +function! s:wrap_i(back,forward) abort execute 'norm k'.a:forward let line = line('.') execute 'norm '.a:back @@ -310,7 +317,7 @@ function! s:wrap_i(back,forward) execute 'norm jV'.a:forward.'k' endfunction -function! s:wrap_a(back,forward) +function! s:wrap_a(back,forward) abort execute 'norm '.a:forward if line('.') < line('$') && getline(line('.')+1) ==# '' let after = 1 @@ -328,37 +335,55 @@ function! s:wrap_a(back,forward) endif endfunction -function! RubyCursorIdentifier() +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*=>\@!\)\=\)' + 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*:\=','','') + let stripped = substitute(substitute(raw,'\s\+=$','=',''),'^\s*[:.]\=','','') return stripped == '' ? expand("<cword>") : stripped endfunction -function! s:gf(count,map,edit) abort - if getline('.') =~# '^\s*require_relative\s*\(["'']\).*\1\s*$' - let target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') - return a:edit.' %:h/'.target.'.rb' - elseif getline('.') =~# '^\s*\%(require[( ]\|load[( ]\|autoload[( ]:\w\+,\)\s*\s*\%(::\)\=File\.expand_path(\(["'']\)\.\./.*\1,\s*__FILE__)\s*$' - let target = matchstr(getline('.'),'\(["'']\)\.\./\zs.\{-\}\ze\1') - return a:edit.' %:h/'.target.'.rb' +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 target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1') + 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 - let target = expand('<cfile>') + return substitute(cfile, '\C\v^(.*):(\d+)%(:in)=$', '+\2 \1', '') endif - let found = findfile(target, &path, a:count) - if found ==# '' - return 'norm! '.a:count.a:map + let cwdpat = '^\M' . substitute(getcwd(), '[\/]', '\\[\\/]', 'g').'\ze\[\/]' + let cfile = substitute(cfile, cwdpat, '.', '') + if fnameescape(cfile) !=# cfile + return '+ '.fnameescape(cfile) else - return a:edit.' '.fnameescape(found) + return cfile endif endfunction diff --git a/runtime/ftplugin/rust.vim b/runtime/ftplugin/rust.vim new file mode 100644 index 0000000000..7efca5985b --- /dev/null +++ b/runtime/ftplugin/rust.vim @@ -0,0 +1,197 @@ +" 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: diff --git a/runtime/ftplugin/sass.vim b/runtime/ftplugin/sass.vim index 64232a0894..d6909e7ad5 100644 --- a/runtime/ftplugin/sass.vim +++ b/runtime/ftplugin/sass.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Sass " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2010 Jul 26 +" Last Change: 2016 Aug 29 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -9,8 +9,9 @@ if exists("b:did_ftplugin") endif let b:did_ftplugin = 1 -let b:undo_ftplugin = "setl cms< def< inc< inex< ofu< sua<" +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','_','') diff --git a/runtime/ftplugin/sbt.vim b/runtime/ftplugin/sbt.vim new file mode 100644 index 0000000000..309d30e503 --- /dev/null +++ b/runtime/ftplugin/sbt.vim @@ -0,0 +1,15 @@ +" 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 + diff --git a/runtime/ftplugin/scala.vim b/runtime/ftplugin/scala.vim new file mode 100644 index 0000000000..18e16f1d5b --- /dev/null +++ b/runtime/ftplugin/scala.vim @@ -0,0 +1,35 @@ +" 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: diff --git a/runtime/ftplugin/scheme.vim b/runtime/ftplugin/scheme.vim index ab1543a5ee..62fd327e07 100644 --- a/runtime/ftplugin/scheme.vim +++ b/runtime/ftplugin/scheme.vim @@ -1,45 +1,57 @@ -" 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") +" Vim filetype plugin file +" Language: Scheme (R7RS) +" Last Change: 2018-03-05 +" Author: Evan Hanson <evhan@foldling.org> +" Maintainer: Evan Hanson <evhan@foldling.org> +" Previous Maintainer: Sergey Khorev <sergey.khorev@gmail.com> +" URL: https://foldling.org/vim/ftplugin/scheme.vim + +if exists('b:did_ftplugin') finish endif -" Don't load another plugin for this buffer -let b:did_ftplugin = 1 +let s:cpo = &cpo +set cpo&vim -" Copy-paste from ftplugin/lisp.vim -setl comments=:; -setl define=^\\s*(def\\k* -setl formatoptions-=t -setl iskeyword+=+,-,*,/,%,<,=,>,:,$,?,!,@-@,94 setl lisp +setl comments=:;;;;,:;;;,:;;,:;,sr:#\|,mb:\|,ex:\|# setl commentstring=;%s +setl define=^\\s*(def\\k* +setl iskeyword=33,35-39,42-43,45-58,60-90,94,95,97-122,126 -setl comments^=:;;;,:;;,sr:#\|,mb:\|,ex:\|# +let b:undo_ftplugin = 'setl lisp< comments< commentstring< define< iskeyword<' -" 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 +setl lispwords=case +setl lispwords+=define +setl lispwords+=define-record-type +setl lispwords+=define-syntax +setl lispwords+=define-values +setl lispwords+=do +setl lispwords+=guard +setl lispwords+=lambda +setl lispwords+=let +setl lispwords+=let* +setl lispwords+=let*-values +setl lispwords+=let-syntax +setl lispwords+=let-values +setl lispwords+=letrec +setl lispwords+=letrec* +setl lispwords+=letrec-syntax +setl lispwords+=parameterize +setl lispwords+=set! +setl lispwords+=syntax-rules +setl lispwords+=unless +setl lispwords+=when + +let b:undo_ftplugin = b:undo_ftplugin . ' lispwords<' -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* +let b:did_scheme_ftplugin = 1 + +if exists('b:is_chicken') || exists('g:is_chicken') + exe 'ru! ftplugin/chicken.vim' endif -let b:undo_ftplugin = "setlocal comments< define< formatoptions< iskeyword< lispwords< lisp< commentstring<" +unlet b:did_scheme_ftplugin +let b:did_ftplugin = 1 +let &cpo = s:cpo +unlet s:cpo diff --git a/runtime/ftplugin/screen.vim b/runtime/ftplugin/screen.vim index 95c3849556..c22089be2c 100644 --- a/runtime/ftplugin/screen.vim +++ b/runtime/ftplugin/screen.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: screen(1) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: screen(1) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/scss.vim b/runtime/ftplugin/scss.vim index 981fb1b881..287d298f4a 100644 --- a/runtime/ftplugin/scss.vim +++ b/runtime/ftplugin/scss.vim @@ -1,12 +1,13 @@ " Vim filetype plugin " Language: SCSS " Maintainer: Tim Pope <vimNOSPAM@tpope.org> -" Last Change: 2010 Jul 26 +" 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: diff --git a/runtime/ftplugin/sensors.vim b/runtime/ftplugin/sensors.vim index 813d14c0e1..c02a729405 100644 --- a/runtime/ftplugin/sensors.vim +++ b/runtime/ftplugin/sensors.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: sensors.conf(5) - libsensors configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/services.vim b/runtime/ftplugin/services.vim index d34349ee28..dda08ac20a 100644 --- a/runtime/ftplugin/services.vim +++ b/runtime/ftplugin/services.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: services(5) - Internet network services list -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/setserial.vim b/runtime/ftplugin/setserial.vim index f9d5945787..e5823f4432 100644 --- a/runtime/ftplugin/setserial.vim +++ b/runtime/ftplugin/setserial.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: setserial(8) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: setserial(8) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/sieve.vim b/runtime/ftplugin/sieve.vim index 9a8759c024..3092b5d2d3 100644 --- a/runtime/ftplugin/sieve.vim +++ b/runtime/ftplugin/sieve.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Sieve filtering language input file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: Sieve filtering language input file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/slpconf.vim b/runtime/ftplugin/slpconf.vim index 0c45689672..a975a499e5 100644 --- a/runtime/ftplugin/slpconf.vim +++ b/runtime/ftplugin/slpconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: RFC 2614 - An API for Service Location configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/slpreg.vim b/runtime/ftplugin/slpreg.vim index e9d533e2d4..74c7285b66 100644 --- a/runtime/ftplugin/slpreg.vim +++ b/runtime/ftplugin/slpreg.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: RFC 2614 - An API for Service Location registration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/slpspi.vim b/runtime/ftplugin/slpspi.vim index 8d64d476f1..633555e493 100644 --- a/runtime/ftplugin/slpspi.vim +++ b/runtime/ftplugin/slpspi.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: RFC 2614 - An API for Service Location SPI file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/spec.vim b/runtime/ftplugin/spec.vim index 6d5bf4b806..2a961f8244 100644 --- a/runtime/ftplugin/spec.vim +++ b/runtime/ftplugin/spec.vim @@ -36,10 +36,11 @@ except ImportError: else: specfile = vim.current.buffer.name if specfile: + rpm.delMacro("dist") spec = rpm.spec(specfile) - headers = spec.packages[0].header - version = headers['Version'] - release = ".".join(headers['Release'].split(".")[:-1]) + headers = spec.sourceHeader + version = headers["Version"] + release = headers["Release"] vim.command("let ver = " + version) vim.command("let rel = " + release) PYEND @@ -113,7 +114,10 @@ if !exists("*s:SpecChangelog") 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 @@ -179,12 +183,8 @@ if !exists("*s:ParseRpmVars") endif let varname = strpart(a:str, start+2, end-(start+2)) execute a:strline - let definestr = "^[ \t]*%define[ \t]\\+" . varname . "[ \t]\\+\\(.*\\)$" + let definestr = "^[ \t]*%(?:global|define)[ \t]\\+" . varname . "[ \t]\\+\\(.*\\)$" let linenum = search(definestr, "bW") - if (linenum == 0) - let definestr = substitute(definestr, "%define", "%global", "") - let linenum = search(definestr, "bW") - endif if (linenum != -1) let ret = ret . substitute(getline(linenum), definestr, "\\1", "") else @@ -201,7 +201,7 @@ endif let b:match_ignorecase = 0 let b:match_words = - \ '^Name:^%description:^%clean:^%setup:^%build:^%install:^%files:' . + \ '^Name:^%description:^%clean:^%(?:auto)?setup:^%build:^%install:^%files:' . \ '^%package:^%preun:^%postun:^%changelog' let &cpo = s:cpo_save diff --git a/runtime/ftplugin/sql.vim b/runtime/ftplugin/sql.vim index c2bc857947..4d6fcd9564 100644 --- a/runtime/ftplugin/sql.vim +++ b/runtime/ftplugin/sql.vim @@ -1,8 +1,8 @@ " SQL filetype plugin file " Language: SQL (Common for Oracle, Microsoft SQL Server, Sybase) -" Version: 11.0 +" Version: 12.0 " Maintainer: David Fishburn <dfishburn dot vim at gmail dot com> -" Last Change: 2013 May 13 +" Last Change: 2017 Mar 07 " Download: http://vim.sourceforge.net/script.php?script_id=454 " For more details please use: @@ -36,6 +36,14 @@ " " 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. @@ -80,15 +88,17 @@ " Only do this when not done yet for this buffer -if exists("b:did_ftplugin") - finish +" 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 +" t Auto-wrap text using textwidth " c Auto-wrap comments using textwidth, inserting the current comment " leader automatically. setlocal formatoptions-=t @@ -171,6 +181,9 @@ if !exists("*SQL_SetType") 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' @@ -187,7 +200,7 @@ if !exists("*SQL_SetType") " Do not specify a buffer local variable if it is " the default value if new_sql_type == 'sql' - let new_sql_type = 'sqloracle' + let new_sql_type = 'sqloracle' endif let b:sql_type_override = new_sql_type @@ -234,25 +247,26 @@ 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' + " 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' + " 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 -if exists("b:did_ftplugin") - finish +" 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" + \ " | unlet! b:browsefilter b:match_words" " Don't load another plugin for this buffer let b:did_ftplugin = 1 @@ -261,7 +275,7 @@ 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" + \ "All Files (*.*)\t*.*\n" endif " Some standard expressions for use with the matchit strings @@ -312,14 +326,24 @@ if !exists("b:match_words") " 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\)\>.*:'. + " \ '^\s*\<\%(do\|for\|while\|loop\)\>.*:'. " For ColdFusion support setlocal matchpairs+=<:> let b:match_words = &matchpairs . - \ ',\<begin\>:\<end\>\W*$,'. - \ + \ ',\%(\<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\>,'. @@ -339,14 +363,14 @@ if !exists("b:match_words") \ '\%(\<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\>\),' . + " \ '\<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 diff --git a/runtime/ftplugin/sshconfig.vim b/runtime/ftplugin/sshconfig.vim index f940af972e..d933ce0527 100644 --- a/runtime/ftplugin/sshconfig.vim +++ b/runtime/ftplugin/sshconfig.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: OpenSSH client configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: OpenSSH client configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/sudoers.vim b/runtime/ftplugin/sudoers.vim index 5756302178..38dbf559ee 100644 --- a/runtime/ftplugin/sudoers.vim +++ b/runtime/ftplugin/sudoers.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: sudoers(5) configuration files -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: sudoers(5) configuration files +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/sysctl.vim b/runtime/ftplugin/sysctl.vim index fb1098dd3b..8d331cea38 100644 --- a/runtime/ftplugin/sysctl.vim +++ b/runtime/ftplugin/sysctl.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: sysctl.conf(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: sysctl.conf(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/terminfo.vim b/runtime/ftplugin/terminfo.vim index 7ce31d1ca1..0ffcc58f58 100644 --- a/runtime/ftplugin/terminfo.vim +++ b/runtime/ftplugin/terminfo.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: terminfo(5) definition -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: terminfo(5) definition +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/tmux.vim b/runtime/ftplugin/tmux.vim new file mode 100644 index 0000000000..ed9154924b --- /dev/null +++ b/runtime/ftplugin/tmux.vim @@ -0,0 +1,12 @@ +" 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 diff --git a/runtime/ftplugin/treetop.vim b/runtime/ftplugin/treetop.vim index 2da3c405f5..f978d15303 100644 --- a/runtime/ftplugin/treetop.vim +++ b/runtime/ftplugin/treetop.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: Treetop -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2011-03-14 +" Language: Treetop +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2011-03-14 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/tutor.vim b/runtime/ftplugin/tutor.vim index 1579753170..30783d9799 100644 --- a/runtime/ftplugin/tutor.vim +++ b/runtime/ftplugin/tutor.vim @@ -19,27 +19,27 @@ setlocal noundofile setlocal keywordprg=:help setlocal iskeyword=@,-,_ -setlocal foldmethod=expr +" The user will have to enable the folds himself, but we provide the foldexpr +" function. +setlocal foldmethod=manual setlocal foldexpr=tutor#TutorFolds() -setlocal foldcolumn=1 setlocal foldlevel=4 -setlocal nowrap -setlocal statusline=%{toupper(expand('%:t:r'))}\ tutorial%= -setlocal statusline+=%{tutor#InfoText()} +" Load metadata if it exists: {{{1 +if filereadable(expand('%').'.json') + call tutor#LoadMetadata() +endif " Mappings: {{{1 call tutor#SetNormalMappings() -call tutor#SetSampleTextMappings() " Checks: {{{1 sign define tutorok text=✓ texthl=tutorOK sign define tutorbad text=✗ texthl=tutorX -if !exists('g:tutor_debug') || g:tutor_debug == 0 - call tutor#PlaceXMarks() - autocmd! TextChanged <buffer> call tutor#OnTextChanged() - autocmd! TextChangedI <buffer> call tutor#OnTextChanged() +if !exists('g:tutor_debug') || g:tutor_debug == 0 + call tutor#ApplyMarks() + autocmd! TextChanged,TextChangedI <buffer> call tutor#ApplyMarksOnChanged() endif diff --git a/runtime/ftplugin/udevconf.vim b/runtime/ftplugin/udevconf.vim index 6042e14413..0bbd86a0a4 100644 --- a/runtime/ftplugin/udevconf.vim +++ b/runtime/ftplugin/udevconf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: udev(8) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: udev(8) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/udevperm.vim b/runtime/ftplugin/udevperm.vim index e7ad31d071..f8fb4d4d99 100644 --- a/runtime/ftplugin/udevperm.vim +++ b/runtime/ftplugin/udevperm.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: udev(8) permissions file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: udev(8) permissions file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/udevrules.vim b/runtime/ftplugin/udevrules.vim index be8d646968..6404f6c85e 100644 --- a/runtime/ftplugin/udevrules.vim +++ b/runtime/ftplugin/udevrules.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: udev(8) rules file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: udev(8) rules file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/updatedb.vim b/runtime/ftplugin/updatedb.vim index f4e7bcebd5..3015918d70 100644 --- a/runtime/ftplugin/updatedb.vim +++ b/runtime/ftplugin/updatedb.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: updatedb.conf(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: updatedb.conf(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/verilog.vim b/runtime/ftplugin/verilog.vim index 6594f2ea90..cbf30a3185 100644 --- a/runtime/ftplugin/verilog.vim +++ b/runtime/ftplugin/verilog.vim @@ -1,8 +1,12 @@ " Vim filetype plugin file " Language: Verilog HDL -" Maintainer: Chih-Tsun Huang <cthuang@larc.ee.nthu.edu.tw> -" Last Change: Wed Sep 3 15:24:49 CST 2008 -" URL: http://larc.ee.nthu.edu.tw/~cthuang/vim/ftplugin/verilog.vim +" 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") @@ -45,11 +49,16 @@ if exists("loaded_matchit") \ '\<begin\>:\<end\>,' . \ '\<case\>\|\<casex\>\|\<casez\>:\<endcase\>,' . \ '\<module\>:\<endmodule\>,' . - \ '\<if\>:\<else\>,' . + \ '\<if\>:`\@<!\<else\>,' . \ '\<function\>:\<endfunction\>,' . - \ '`ifdef\>:`else\>:`endif\>,' . + \ '`ifn\?def\>:`elsif\>:`else\>:`endif\>,' . \ '\<task\>:\<endtask\>,' . - \ '\<specify\>:\<endspecify\>' + \ '\<specify\>:\<endspecify\>,' . + \ '\<config\>:\<endconfig\>,' . + \ '\<generate\>:\<endgenerate\>,' . + \ '\<fork\>:\<join\>,' . + \ '\<primitive\>:\<endprimitive\>,' . + \ '\<table\>:\<endtable\>' endif " Reset 'cpoptions' back to the user's setting diff --git a/runtime/ftplugin/vim.vim b/runtime/ftplugin/vim.vim index f355d2837d..34f5eb6db1 100644 --- a/runtime/ftplugin/vim.vim +++ b/runtime/ftplugin/vim.vim @@ -1,7 +1,7 @@ " Vim filetype plugin " Language: Vim " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2014 Sep 07 +" Last Change: 2018 Aug 07 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -14,8 +14,28 @@ 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" +if !exists('*VimFtpluginUndo') + func VimFtpluginUndo() + setl fo< isk< com< tw< commentstring< keywordprg< + if exists('b:did_add_maps') + silent! nunmap <buffer> [[ + silent! vunmap <buffer> [[ + silent! nunmap <buffer> ]] + silent! vunmap <buffer> ]] + silent! nunmap <buffer> [] + silent! vunmap <buffer> [] + silent! nunmap <buffer> ][ + silent! vunmap <buffer> ][ + silent! nunmap <buffer> ]" + silent! vunmap <buffer> ]" + silent! nunmap <buffer> [" + silent! vunmap <buffer> [" + endif + unlet! b:match_ignorecase b:match_words b:match_skip b:did_add_maps + endfunc +endif + +let b:undo_ftplugin = "call VimFtpluginUndo()" " Set 'formatoptions' to break comment lines but not other lines, " and insert the comment leader when hitting <CR> or using "o". @@ -25,6 +45,9 @@ setlocal fo-=t fo+=croql " keyword character. E.g., for netrw#Nread(). setlocal isk+=# +" Use :help to lookup the keyword under the cursor with K. +setlocal keywordprg=:help + " Set 'comments' to format dashed lists in comments setlocal com=sO:\"\ -,mO:\"\ \ ,eO:\"\",:\" @@ -36,21 +59,28 @@ 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> +" Prefer Vim help instead of manpages. +setlocal keywordprg=:help + +if !exists("no_plugin_maps") && !exists("no_vim_maps") + let b:did_add_maps = 1 + + " 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> +endif " Let the matchit plugin know what items can be matched. if exists("loaded_matchit") @@ -60,8 +90,7 @@ if exists("loaded_matchit") \ '\<\(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\>,' . - \ '(:)' + \ '\<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 diff --git a/runtime/ftplugin/wast.vim b/runtime/ftplugin/wast.vim new file mode 100644 index 0000000000..0d9e98d37a --- /dev/null +++ b/runtime/ftplugin/wast.vim @@ -0,0 +1,17 @@ +" Vim filetype plugin file +" Language: WebAssembly +" Maintainer: rhysd <lin90162@yahoo.co.jp> +" Last Change: Jul 29, 2018 +" For bugs, patches and license go to https://github.com/rhysd/vim-wasm + +if exists("b:did_ftplugin") + finish +endif +let b:did_ftplugin = 1 + +setlocal comments=s:(;,e:;),:;; +setlocal commentstring=(;%s;) +setlocal formatoptions-=t +setlocal iskeyword+=$,.,/ + +let b:undo_ftplugin = "setlocal comments< commentstring< formatoptions< iskeyword<" diff --git a/runtime/ftplugin/xdefaults.vim b/runtime/ftplugin/xdefaults.vim index cd851829ca..c1aff70176 100644 --- a/runtime/ftplugin/xdefaults.vim +++ b/runtime/ftplugin/xdefaults.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: X resources files like ~/.Xdefaults (xrdb) -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/xf86conf.vim b/runtime/ftplugin/xf86conf.vim index ab7569a100..5a21539dd5 100644 --- a/runtime/ftplugin/xf86conf.vim +++ b/runtime/ftplugin/xf86conf.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: XFree86 Configuration File -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: XFree86 Configuration File +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/xinetd.vim b/runtime/ftplugin/xinetd.vim index f209af18be..2b7b64e4fa 100644 --- a/runtime/ftplugin/xinetd.vim +++ b/runtime/ftplugin/xinetd.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: xinetd.conf(5) configuration file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: xinetd.conf(5) configuration file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/xml.vim b/runtime/ftplugin/xml.vim index 236e870537..573a6ba441 100644 --- a/runtime/ftplugin/xml.vim +++ b/runtime/ftplugin/xml.vim @@ -1,8 +1,10 @@ " 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 +" Maintainer: Christian Brabandt <cb@256bit.org> +" Last Changed: May 08th, 2018 +" Repository: https://github.com/chrisbra/vim-xml-ftplugin +" Previous Maintainer: Dan Sharp <dwsharp at users dot sourceforge dot net> +" URL: http://dwsharp.users.sourceforge.net/vim/ftplugin if exists("b:did_ftplugin") | finish | endif let b:did_ftplugin = 1 @@ -10,16 +12,16 @@ 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 +set cpo&vim setlocal commentstring=<!--%s--> -setlocal comments=s:<!--,m:\ \ \ \ \ ,e:--> +" Remove the middlepart from the comments section, as this causes problems: +" https://groups.google.com/d/msg/vim_dev/x4GT-nqa0Kg/jvtRnEbtAnMJ +setlocal comments=s:<!--,e:--> setlocal formatoptions-=t -if !exists("g:ft_xml_autocomment") || (g:ft_xml_autocomment == 1) - setlocal formatoptions+=croql -endif - +setlocal formatoptions+=croql +setlocal formatexpr=xmlformat#Format() " XML: thanks to Johannes Zellner and Akbar Ibrahim " - case sensitive @@ -39,7 +41,6 @@ if exists("loaded_matchit") \ '<\@<=\%([^ \t>/]\+\)\%(\s\+[^/>]*\|$\):/>' endif -" " For Omni completion, by Mikolaj Machowski. if exists('&ofu') setlocal ofu=xmlcomplete#CompleteTags @@ -47,17 +48,17 @@ 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") +if (has("gui_win32") || has("gui_gtk")) && !exists("b:browsefilter") let b:browsefilter="XML Files (*.xml)\t*.xml\n" . - \ "DTD Files (*.dtd)\t*.dtd\n" . - \ "All Files (*.*)\t*.*\n" + \ "DTD Files (*.dtd)\t*.dtd\n" . + \ "XSD Files (*.xsd)\t*.xsd\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" +let b:undo_ftplugin = "setlocal commentstring< comments< formatoptions< formatexpr< " . + \ " | unlet! b:match_ignorecase b:match_words b:browsefilter" " Restore the saved compatibility options. let &cpo = s:save_cpo diff --git a/runtime/ftplugin/xmodmap.vim b/runtime/ftplugin/xmodmap.vim index 027ae09ff2..77fccd5b4d 100644 --- a/runtime/ftplugin/xmodmap.vim +++ b/runtime/ftplugin/xmodmap.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: xmodmap(1) definition file -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" Language: xmodmap(1) definition file +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2008-07-09 if exists("b:did_ftplugin") finish diff --git a/runtime/ftplugin/yaml.vim b/runtime/ftplugin/yaml.vim index b88803ab3a..ceff36f7e4 100644 --- a/runtime/ftplugin/yaml.vim +++ b/runtime/ftplugin/yaml.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file -" Language: YAML (YAML Ain't Markup Language) -" Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2008-07-09 +" 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 diff --git a/runtime/ftplugin/zimbu.vim b/runtime/ftplugin/zimbu.vim index 558aea7df0..24674776cb 100644 --- a/runtime/ftplugin/zimbu.vim +++ b/runtime/ftplugin/zimbu.vim @@ -1,7 +1,7 @@ " Vim filetype plugin file " Language: Zimbu " Maintainer: Bram Moolenaar <Bram@vim.org> -" Last Change: 2012 Sep 08 +" Last Change: 2017 Dec 05 " Only do this when not done yet for this buffer if exists("b:did_ftplugin") @@ -135,8 +135,10 @@ 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> +if !exists("no_plugin_maps") && !exists("no_zimbu_maps") + nnoremap <silent> <buffer> [[ m`:call ZimbuGoStartBlock()<CR> + nnoremap <silent> <buffer> ]] m`:call ZimbuGoEndBlock()<CR> +endif " Using a function makes sure the search pattern is restored func! ZimbuGoStartBlock() diff --git a/runtime/ftplugin/zsh.vim b/runtime/ftplugin/zsh.vim index 6cbc380dc3..fe8efc59ab 100644 --- a/runtime/ftplugin/zsh.vim +++ b/runtime/ftplugin/zsh.vim @@ -1,10 +1,10 @@ " 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 +" Language: Zsh shell script +" Maintainer: Christian Brabandt <cb@256bit.org> +" Previous Maintainer: Nikolai Weibull <now@bitwi.se> +" Latest Revision: 2017-11-22 +" License: Vim (see :h license) +" Repository: https://github.com/chrisbra/vim-zsh if exists("b:did_ftplugin") finish @@ -18,9 +18,7 @@ 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\>' +let b:match_words = ',\<if\>:\<elif\>:\<else\>:\<fi\>' \ . ',\<case\>:^\s*([^)]*):\<esac\>' \ . ',\<\%(select\|while\|until\|repeat\|for\%(each\)\=\)\>:\<done\>' let b:match_skip = 's:comment\|string\|heredoc\|subst' |