diff options
author | Tom Ryder <tom@sanctum.geek.nz> | 2018-06-17 01:01:12 +1200 |
---|---|---|
committer | Tom Ryder <tom@sanctum.geek.nz> | 2018-06-17 01:01:12 +1200 |
commit | 37ae33b03cb8f7a0ea591c56fae48c5bcb588704 (patch) | |
tree | 2ddd07cd9dd348fa4f251d4b83960e24cf75d30f | |
parent | Merge branch 'release/v0.53.0' (diff) | |
parent | Regenerate dotfiles(7) manual (diff) | |
download | dotfiles-37ae33b03cb8f7a0ea591c56fae48c5bcb588704.tar.gz dotfiles-37ae33b03cb8f7a0ea591c56fae48c5bcb588704.zip |
Merge branch 'release/v0.54.0'v0.54.0
* release/v0.54.0:
Regenerate dotfiles(7) manual
Bump VERSION
Add note about compiler scripts
Arrange for tidiers to hold window position
Update markdown_autoformat.vim
Update surround.vim
Completely overhaul after/ftplugin files
Use short-circuit for no-mapping check
Correct g:current_compiler setting
Consistently require 'nocompatible' for ftplugins
Upgrade insert_suspend_hlsearch.vim
Use `function!` consistently in ftplugins
Fix comments in vim/filetype.vim
Set 'comments' blank by default
Add Xresources filenames
Add more names to Vim Bash types
33 files changed, 647 insertions, 572 deletions
@@ -378,6 +378,14 @@ tweaks to core syntax files in `~/.vim/after/syntax`, especially for shell script (`sh.vim`). Some of these filetype plugins are also due to be separately distributed and installed via submodules instead. +#### Compilers + +I define a few of my own `:compiler` scripts for `~/.vim/compiler`, for use for +checking and linting of appropriate filetypes. Because checking (does it work?) +and linting (is it well-written?) are separate processes for me, I bind them +separately with local leader maps; for example, `_c` runs a `perl -c` syntax +check of Perl scripts, and `_l` runs a Perl::Critic check. + #### Neovim I test my configuration every now and then with the [Neovim @@ -1,2 +1,2 @@ -tejr dotfiles v0.53.0 -Thu Jun 14 00:39:32 UTC 2018 +tejr dotfiles v0.54.0 +Sat Jun 16 12:59:27 UTC 2018 diff --git a/man/man7/dotfiles.7df b/man/man7/dotfiles.7df index 6960e3c5..4daf288d 100644 --- a/man/man7/dotfiles.7df +++ b/man/man7/dotfiles.7df @@ -523,6 +523,15 @@ There are also a few tweaks to core syntax files in (\f[C]sh.vim\f[]). Some of these filetype plugins are also due to be separately distributed and installed via submodules instead. +.SS Compilers +.PP +I define a few of my own \f[C]:compiler\f[] scripts for +\f[C]~/.vim/compiler\f[], for use for checking and linting of +appropriate filetypes. +Because checking (does it work?) and linting (is it well\-written?) are +separate processes for me, I bind them separately with local leader +maps; for example, \f[C]_c\f[] runs a \f[C]perl\ \-c\f[] syntax check of +Perl scripts, and \f[C]_l\f[] runs a Perl::Critic check. .SS Neovim .PP I test my configuration every now and then with the Neovim @@ -832,6 +841,8 @@ Good for quick tests. .IP \[bu] 2 \f[C]mi5(1df)\f[] is a crude preprocessor for \f[C]m4\f[]. .IP \[bu] 2 +\f[C]mim(1df)\f[] starts an interactive Mutt message with its input. +.IP \[bu] 2 \f[C]mftl(1df)\f[] finds usable\-looking targets in makefiles. .IP \[bu] 2 \f[C]mkcp(1df)\f[] creates a directory and copies preceding arguments diff --git a/vim/after/ftplugin/html/lint.vim b/vim/after/ftplugin/html/lint.vim index b24b18c9..a3776d60 100644 --- a/vim/after/ftplugin/html/lint.vim +++ b/vim/after/ftplugin/html/lint.vim @@ -1,55 +1,55 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled, or if the current filetype is -" actually markdown -if exists('b:did_ftplugin_html_lint') || &compatible +" html/lint.vim: Use tidy(1) to lint HTML documents for errors + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -if &filetype ==# 'markdown' + +" Don't load if already loaded +if exists('b:did_ftplugin_html_lint') finish endif -let b:did_ftplugin_html_lint = 1 -" Initialise undo variable if not already done -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_html_lint' +" Don't load if the primary filetype isn't HTML +if &filetype !=# 'html' + finish endif +" Flag as loaded +let b:did_ftplugin_html_lint = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_html_lint' + " Build function for linter -if !exists('*s:HtmlLint') - function s:HtmlLint() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - unlet! g:current_compiler - compiler tidy - make! - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +function! s:HtmlLint() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler + endif + compiler tidy + lmake! + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler + endif +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_html_maps') + finish endif -" Set up a mapping for the linter, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_html_maps') +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>HtmlLint + \ :<C-U>call <SID>HtmlLint()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>HtmlLint' - " Define a mapping target - nnoremap <buffer> <silent> <unique> +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>HtmlLint') + nmap <buffer> <unique> + \ <LocalLeader>l \ <Plug>HtmlLint - \ :<C-U>call <SID>HtmlLint()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>HtmlLint' - endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>HtmlLint') - nmap <buffer> <unique> - \ <LocalLeader>l - \ <Plug>HtmlLint - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>l' - endif - endif - + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>l' endif diff --git a/vim/after/ftplugin/html/tidy.vim b/vim/after/ftplugin/html/tidy.vim index 6e612feb..5a8ded7e 100644 --- a/vim/after/ftplugin/html/tidy.vim +++ b/vim/after/ftplugin/html/tidy.vim @@ -1,39 +1,49 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled, or if the current filetype is -" actually markdown -if exists('b:did_ftplugin_html_tidy') || &compatible +" html/tidy.vim: Use tidy(1) to filter HTML documents + +" Don't load if running compatible or too old +if &compatible || v:version < 700 + finish +endif + +" Don't load if already loaded +if exists('b:did_ftplugin_html_tidy') finish endif -if &filetype ==# 'markdown' + +" Don't load if the primary filetype isn't HTML +if &filetype !=# 'html' finish endif + +" Flag as loaded let b:did_ftplugin_html_tidy = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_html_tidy' +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_html_tidy' + +" Plugin function +function s:HtmlTidy() + let l:view = winsaveview() + %!tidy -quiet + call winrestview(l:view) +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_html_maps') + finish endif -" Set up a mapping for the tidier, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_html_maps') +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>HtmlTidy + \ :<C-U>call <SID>HtmlTidy()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>HtmlTidy' - " Define a mapping target - nnoremap <buffer> <silent> <unique> +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>HtmlTidy') + nmap <buffer> <unique> + \ <LocalLeader>t \ <Plug>HtmlTidy - \ :<C-U>%!tidy -quiet<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>HtmlTidy' - endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>HtmlTidy') - nmap <buffer> <unique> - \ <LocalLeader>t - \ <Plug>HtmlTidy - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>t' - endif - endif - + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>t' endif diff --git a/vim/after/ftplugin/html/url_link.vim b/vim/after/ftplugin/html/url_link.vim index 2e600b5e..1cf57a7b 100644 --- a/vim/after/ftplugin/html/url_link.vim +++ b/vim/after/ftplugin/html/url_link.vim @@ -1,57 +1,58 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled, or if the current filetype is -" actually markdown -if exists('b:did_ftplugin_html_url_link') || &compatible +" html/url_link.vim: Make a URL into a link + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -if &filetype ==# 'markdown' + +" Don't load if already loaded +if exists('b:did_ftplugin_html_url_link') finish endif -let b:did_ftplugin_html_url_link = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_html_url_link' + +" Don't load if the primary filetype isn't HTML +if &filetype !=# 'html' + finish endif +" Flag as loaded +let b:did_ftplugin_html_url_link = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_html_url_link' + " Make a bare URL into a link to itself -if !exists('*s:HtmlUrlLink') - function! s:HtmlUrlLink() - - " Yank this whole whitespace-separated word - normal! yiW - " Open a link tag - normal! i<a href=""> - " Paste the URL into the quotes - normal! hP - " Move to the end of the link text URL - normal! E - " Close the link tag - normal! a</a> - - endfunction +function! s:HtmlUrlLink() + + " Yank this whole whitespace-separated word + normal! yiW + " Open a link tag + normal! i<a href=""> + " Paste the URL into the quotes + normal! hP + " Move to the end of the link text URL + normal! E + " Close the link tag + normal! a</a> + +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_html_maps') + finish endif -" Set up a mapping for the function, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_html_maps') +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>HtmlUrlLink + \ :<C-U>call <SID>HtmlUrlLink()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>HtmlUrlLink' - " Define a mapping target - nnoremap <buffer> <silent> <unique> +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>HtmlUrlLink') + nmap <buffer> <unique> + \ <LocalLeader>r \ <Plug>HtmlUrlLink - \ :<C-U>call <SID>HtmlUrlLink()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>HtmlUrlLink' - endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>HtmlUrlLink') - nmap <buffer> <unique> - \ <LocalLeader>r - \ <Plug>HtmlUrlLink - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>r' - endif - endif - + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>r' endif diff --git a/vim/after/ftplugin/mail/flowed.vim b/vim/after/ftplugin/mail/flowed.vim new file mode 100644 index 00000000..78353360 --- /dev/null +++ b/vim/after/ftplugin/mail/flowed.vim @@ -0,0 +1,21 @@ +" mail/flowed.vim: Add 'w' flag to 'formatoptions' for mail + +" Don't load if running compatible or too old +if &compatible || v:version < 700 + finish +endif + +" Don't load if already loaded +if exists('b:did_ftplugin_mail_flowed') + finish +endif + +" Flag as loaded +let b:did_ftplugin_mail_flowed = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_mail_flowed' + +" Use trailing whitespace to denote continued paragraph +setlocal formatoptions+=w +let b:undo_ftplugin = b:undo_ftplugin + \ . '|setlocal formatoptions<' diff --git a/vim/after/ftplugin/mail/format_flowed.vim b/vim/after/ftplugin/mail/format_flowed.vim deleted file mode 100644 index 040a1a51..00000000 --- a/vim/after/ftplugin/mail/format_flowed.vim +++ /dev/null @@ -1,17 +0,0 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_mail_format_flowed') || &compatible - finish -endif -let b:did_ftplugin_mail_format_flowed = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_mail_format_flowed' -endif - -" Use trailing whitespace to denote continued paragraph -setlocal formatoptions+=w -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|setlocal formatoptions<' -endif diff --git a/vim/after/ftplugin/markdown/spell.vim b/vim/after/ftplugin/markdown/spell.vim index 05fc7c00..873f9f93 100644 --- a/vim/after/ftplugin/markdown/spell.vim +++ b/vim/after/ftplugin/markdown/spell.vim @@ -1,21 +1,21 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled, or if the 'spell' feature isn't -" available -if exists('b:did_ftplugin_markdown_spell') || &compatible +" markdown/spell.vim: Turn on spell checking for Markdown files + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -if !has('spell') + +" Don't load if already loaded +if exists('b:did_ftplugin_markdown_spell') finish endif + +" Flag as loaded let b:did_ftplugin_markdown_spell = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_markdown_spell' -endif +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_markdown_spell' " Spellcheck documents by default setlocal spell -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|setlocal spell<' -endif +let b:undo_ftplugin = b:undo_ftplugin + \ . '|setlocal spell<' diff --git a/vim/after/ftplugin/perl/check.vim b/vim/after/ftplugin/perl/check.vim index df90784f..e115b37f 100644 --- a/vim/after/ftplugin/perl/check.vim +++ b/vim/after/ftplugin/perl/check.vim @@ -1,49 +1,50 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_perl_check') || &compatible +" perl/check.vim: Use Perl binary to check for errors + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -let b:did_ftplugin_perl_check = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_perl_check' -endif -" Build function for checker -if !exists('*s:PerlCheck') - function s:PerlCheck() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - unlet! g:current_compiler - compiler perl - make! - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +" Don't load if already loaded +if exists('b:did_ftplugin_perl_check') + finish endif -" Set up a mapping for the checker, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_perl_maps') +" Flag as loaded +let b:did_ftplugin_perl_check = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_perl_check' - " Define a mapping target - nnoremap <buffer> <silent> <unique> - \ <Plug>PerlCheck - \ :<C-U>call <SID>PerlCheck()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>PerlCheck' +" Build function for checker +function! s:PerlCheck() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>PerlCheck') - nmap <buffer> <unique> - \ <LocalLeader>c - \ <Plug>PerlCheck - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>c' - endif + compiler perl + lmake! + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler endif +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_perl_maps') + finish +endif + +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>PerlCheck + \ :<C-U>call <SID>PerlCheck()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>PerlCheck' +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>PerlCheck') + nmap <buffer> <unique> + \ <LocalLeader>c + \ <Plug>PerlCheck + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>c' endif diff --git a/vim/after/ftplugin/perl/lint.vim b/vim/after/ftplugin/perl/lint.vim index 48b23091..3e73ac9a 100644 --- a/vim/after/ftplugin/perl/lint.vim +++ b/vim/after/ftplugin/perl/lint.vim @@ -1,49 +1,50 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_perl_lint') || &compatible +" perl/lint.vim: Use Perl::Critic to lint scripts + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -let b:did_ftplugin_perl_lint = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_perl_lint' -endif -" Build function for linter -if !exists('*s:PerlLint') - function s:PerlLint() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - unlet! g:current_compiler - compiler perlcritic - make! - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +" Don't load if already loaded +if exists('b:did_ftplugin_perl_lint') + finish endif -" Set up a mapping for the linter, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_perl_maps') +" Flag as loaded +let b:did_ftplugin_perl_lint = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_perl_lint' - " Define a mapping target - nnoremap <buffer> <silent> <unique> - \ <Plug>PerlLint - \ :<C-U>call <SID>PerlLint()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>PerlLint' +" Build function for linter +function! s:PerlLint() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>PerlLint') - nmap <buffer> <unique> - \ <LocalLeader>l - \ <Plug>PerlLint - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>l' - endif + compiler perlcritic + lmake! + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler endif +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_perl_maps') + finish +endif + +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>PerlLint + \ :<C-U>call <SID>PerlLint()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>PerlLint' +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>PerlLint') + nmap <buffer> <unique> + \ <LocalLeader>l + \ <Plug>PerlLint + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>l' endif diff --git a/vim/after/ftplugin/perl/tidy.vim b/vim/after/ftplugin/perl/tidy.vim index 18033a42..f6744f3a 100644 --- a/vim/after/ftplugin/perl/tidy.vim +++ b/vim/after/ftplugin/perl/tidy.vim @@ -1,35 +1,44 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_perl_tidy') || &compatible +" perl/tidy.vim: Use Perl::Tidy to format and filter scripts + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -let b:did_ftplugin_perl_tidy = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_perl_tidy' + +" Don't load if already loaded +if exists('b:did_ftplugin_perl_tidy') + finish endif -" Set up a mapping for the tidier, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_perl_maps') +" Flag as loaded +let b:did_ftplugin_perl_tidy = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_perl_tidy' + +" Plugin function +function s:PerlTidy() + let l:view = winsaveview() + %!perltidy + call winrestview(l:view) +endfunction - " Define a mapping target - nnoremap <buffer> <silent> <unique> - \ <Plug>PerlTidy - \ :<C-U>%!perltidy<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>PerlTidy' - endif +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_perl_maps') + finish +endif - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>PerlTidy') - nmap <buffer> <unique> - \ <LocalLeader>t - \ <Plug>PerlTidy - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>t' - endif - endif +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>PerlTidy + \ :<C-U>call <SID>PerlTidy()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>PerlTidy' +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>PerlTidy') + nmap <buffer> <unique> + \ <LocalLeader>t + \ <Plug>PerlTidy + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>t' endif diff --git a/vim/after/ftplugin/php/check.vim b/vim/after/ftplugin/php/check.vim index 33077a72..f211a642 100644 --- a/vim/after/ftplugin/php/check.vim +++ b/vim/after/ftplugin/php/check.vim @@ -1,57 +1,59 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_php_check') || &compatible +" php/check.vim: Use PHP binary to check scripts for errors + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -let b:did_ftplugin_php_check = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_php_check' -endif -" Build function for checker -if !exists('*s:PhpCheck') - function s:PhpCheck() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - unlet! g:current_compiler - compiler php - - " 7.4.191 is the earliest version with the :S file name modifier, which we - " really should use if we can - if v:version >= 704 || v:version == 704 && has('patch191') - make! %:S - else - make! % - endif - - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +" Don't load if already loaded +if exists('b:did_ftplugin_php_check') + finish endif -" Set up a mapping for the checker, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_php_maps') +" Flag as loaded +let b:did_ftplugin_php_check = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_php_check' - " Define a mapping target - nnoremap <buffer> <silent> <unique> - \ <Plug>PhpCheck - \ :<C-U>call <SID>PhpCheck()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>PhpCheck' +" Build function for checker +function! s:PhpCheck() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler endif + compiler php - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>PhpCheck') - nmap <buffer> <unique> - \ <LocalLeader>c - \ <Plug>PhpCheck - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>c' - endif + " The PHP compiler is unusual: it gets us to provide the filename argument + " ourselves. 7.4.191 is the earliest version with the :S file name modifier, + " which we really should use if we can + if v:version >= 704 || v:version == 704 && has('patch191') + lmake! %:S + else + lmake! % endif + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler + endif +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_php_maps') + finish +endif + +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>PhpCheck + \ :<C-U>call <SID>PhpCheck()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>PhpCheck' + +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>PhpCheck') + nmap <buffer> <unique> + \ <LocalLeader>c + \ <Plug>PhpCheck + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>c' endif diff --git a/vim/after/ftplugin/sh/bash_han.vim b/vim/after/ftplugin/sh/bash_han.vim deleted file mode 100644 index a160165c..00000000 --- a/vim/after/ftplugin/sh/bash_han.vim +++ /dev/null @@ -1,19 +0,0 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_sh_bash_han') || &compatible - finish -endif -let b:did_ftplugin_sh_bash_han = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_sh_bash_han' -endif - -" Use han(1df) as a man(1) wrapper for Bash files if available -if exists('b:is_bash') && executable('han') - setlocal keywordprg=han - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|setlocal keywordprg<' - endif -endif diff --git a/vim/after/ftplugin/sh/check.vim b/vim/after/ftplugin/sh/check.vim index 3eaf3f57..e92409cf 100644 --- a/vim/after/ftplugin/sh/check.vim +++ b/vim/after/ftplugin/sh/check.vim @@ -1,64 +1,56 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_sh_check') || &compatible +" sh/check.vim: Use appropriate shell binary to check scripts for errors + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -let b:did_ftplugin_sh_check = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_sh_check' -endif -" Choose checker based on shell family -if exists('b:is_bash') - let b:sh_check_makeprg = 'bash -n %:S' -elseif exists('b:is_kornshell') - let b:sh_check_makeprg = 'ksh -n %:S' -else - let b:sh_check_makeprg = 'sh -n %:S' -endif -let b:sh_check_errorformat = '%f: %l: %m' -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:sh_check_makeprg' - \ . '|unlet b:sh_check_errorformat' +" Don't load if already loaded +if exists('b:did_ftplugin_sh_check') + finish endif +" Flag as loaded +let b:did_ftplugin_sh_check = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_sh_check' + " Build function for checker -if !exists('*s:ShCheck') - function s:ShCheck() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - let &l:makeprg = b:sh_check_makeprg - let &l:errorformat = b:sh_check_errorformat - make! - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +function! s:ShCheck() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler + endif + if exists('b:is_bash') + compiler bash + elseif exists('b:is_kornshell') + compiler ksh + else + compiler sh + endif + lmake! + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler + endif +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_sh_maps') + finish endif -" Set up a mapping for the checker, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_sh_maps') +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>ShCheck + \ :<C-U>call <SID>ShCheck()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>ShCheck' - " Define a mapping target - nnoremap <buffer> <silent> <unique> +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>ShCheck') + nmap <buffer> <unique> + \ <LocalLeader>c \ <Plug>ShCheck - \ :<C-U>call <SID>ShCheck()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>ShCheck' - endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>ShCheck') - nmap <buffer> <unique> - \ <LocalLeader>c - \ <Plug>ShCheck - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>c' - endif - endif - + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>c' endif diff --git a/vim/after/ftplugin/sh/han.vim b/vim/after/ftplugin/sh/han.vim new file mode 100644 index 00000000..3aacdb7e --- /dev/null +++ b/vim/after/ftplugin/sh/han.vim @@ -0,0 +1,26 @@ +" sh/han.vim: Use han(1df) as 'keywordprg' for Bash scripts + +" Don't load if running compatible or too old +if &compatible || v:version < 700 + finish +endif + +" Don't load if already loaded +if exists('b:did_ftplugin_sh_han') + finish +endif + +" Don't load if this isn't Bash or if han(1df) isn't available +if !exists('b:is_bash') || !executable('han') + finish +endif + +" Flag as loaded +let b:did_ftplugin_sh_han = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_sh_han' + +" Set 'keywordprg' to han(1df) +setlocal keywordprg=han +let b:undo_ftplugin = b:undo_ftplugin + \ . '|setlocal keywordprg<' diff --git a/vim/after/ftplugin/sh/lint.vim b/vim/after/ftplugin/sh/lint.vim index 7d6e4d75..87f1c07e 100644 --- a/vim/after/ftplugin/sh/lint.vim +++ b/vim/after/ftplugin/sh/lint.vim @@ -1,64 +1,50 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_sh_lint') || &compatible - finish -endif -let b:did_ftplugin_sh_lint = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_sh_lint' -endif +" sh/lint.vim: Use appropriate shell binary to lint scripts for errors -" Choose linter based on shell family -if exists('b:is_bash') - let b:sh_lint_makeprg = 'shellcheck -e SC1090 -f gcc -s bash %:S' -elseif exists('b:is_kornshell') - let b:sh_lint_makeprg = 'shellcheck -e SC1090 -f gcc -s ksh %:S' -else - let b:sh_lint_makeprg = 'shellcheck -e SC1090 -f gcc -s sh %:S' -endif -let b:sh_lint_errorformat = '%f:%l:%c: %m [SC%n]' -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:sh_lint_makeprg' - \ . '|unlet b:sh_lint_errorformat' +" Don't load if running compatible or too old +if &compatible || v:version < 700 + finish endif -" Build function for checker -if !exists('*s:ShLint') - function s:ShLint() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - let &l:makeprg = b:sh_lint_makeprg - let &l:errorformat = b:sh_lint_errorformat - make! - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +" Don't load if already loaded +if exists('b:did_ftplugin_sh_lint') + finish endif -" Set up a mapping for the linter, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_sh_maps') +" Flag as loaded +let b:did_ftplugin_sh_lint = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_sh_lint' - " Define a mapping target - nnoremap <buffer> <silent> <unique> - \ <Plug>ShLint - \ :<C-U>call <SID>ShLint()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>ShLint' +" Build function for linter +function! s:ShLint() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>ShLint') - nmap <buffer> <unique> - \ <LocalLeader>l - \ <Plug>ShLint - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>l' - endif + compiler shellcheck + lmake! + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler endif +endfunction +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_sh_maps') + finish +endif + +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>ShLint + \ :<C-U>call <SID>ShLint()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>ShLint' + +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>ShLint') + nmap <buffer> <unique> + \ <LocalLeader>l + \ <Plug>ShLint + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>l' endif diff --git a/vim/after/ftplugin/sh/posix.vim b/vim/after/ftplugin/sh/posix.vim deleted file mode 100644 index a1b2c7ff..00000000 --- a/vim/after/ftplugin/sh/posix.vim +++ /dev/null @@ -1,27 +0,0 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_sh_posix') || &compatible - finish -endif -let b:did_ftplugin_sh_posix = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_sh_posix' -endif - -" -" If we have a #!/bin/sh shebang and filetype.vim determined we were neither -" POSIX nor Bash nor Korn shell, we'll guess POSIX, just because it's far more -" likely that's what I want to write than plain Bourne shell. -" -" You're supposed to be able to do this by setting g:is_posix, but if that's -" set, the syntax file ends up setting g:is_kornshell for you too, for reasons -" I don't really understand. This method works though, and is cleaner than -" the other workaround I had been trying. -" -if exists('b:is_sh') - unlet b:is_sh - if !exists('b:is_bash') && !exists('b:is_kornshell') - let b:is_posix = 1 - endif -endif diff --git a/vim/after/ftplugin/text/spell.vim b/vim/after/ftplugin/text/spell.vim index 73ca5486..a9f5422b 100644 --- a/vim/after/ftplugin/text/spell.vim +++ b/vim/after/ftplugin/text/spell.vim @@ -1,21 +1,21 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled, or if the 'spell' feature isn't -" available -if exists('b:did_ftplugin_text_spell') || &compatible +" text/spell.vim: Turn on spell checking for text files + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -if !has('spell') + +" Don't load if already loaded +if exists('b:did_ftplugin_text_spell') finish endif + +" Flag as loaded let b:did_ftplugin_text_spell = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_text_spell' -endif +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_text_spell' " Spellcheck documents by default setlocal spell -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|setlocal spell<' -endif +let b:undo_ftplugin = b:undo_ftplugin + \ . '|setlocal spell<' diff --git a/vim/after/ftplugin/vim/lint.vim b/vim/after/ftplugin/vim/lint.vim index 2c402964..1e4f7d39 100644 --- a/vim/after/ftplugin/vim/lint.vim +++ b/vim/after/ftplugin/vim/lint.vim @@ -1,49 +1,50 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_vim_lint') || &compatible +" vim/lint.vim: Use Vint to lint VimL scripts + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -let b:did_ftplugin_vim_lint = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_vim_lint' -endif -" Build function for checker -if !exists('*s:VimLint') - function s:VimLint() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - unlet! g:current_compiler - compiler vint - make! - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +" Don't load if already loaded +if exists('b:did_ftplugin_vim_lint') + finish endif -" Set up a mapping for the linter, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_vim_maps') +" Flag as loaded +let b:did_ftplugin_vim_lint = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_vim_lint' - " Define a mapping target - nnoremap <buffer> <silent> <unique> - \ <Plug>VimLint - \ :<C-U>call <SID>VimLint()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>VimLint' +" Build function for linter +function! s:VimLint() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>VimLint') - nmap <buffer> <unique> - \ <LocalLeader>l - \ <Plug>VimLint - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>l' - endif + compiler vint + lmake! + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler endif +endfunction + +" Stop here if the user doesn't want ftplugin mappings +if exists('g:no_plugin_maps') || exists('g:no_vim_maps') + finish +endif +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>VimLint + \ :<C-U>call <SID>VimLint()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>VimLint' + +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>VimLint') + nmap <buffer> <unique> + \ <LocalLeader>l + \ <Plug>VimLint + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>l' endif diff --git a/vim/after/ftplugin/zsh/check.vim b/vim/after/ftplugin/zsh/check.vim index 39faf44a..1d327a62 100644 --- a/vim/after/ftplugin/zsh/check.vim +++ b/vim/after/ftplugin/zsh/check.vim @@ -1,49 +1,50 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_zsh_check') || &compatible +" zsh/check.vim: Use Z shell binary to check for errors + +" Don't load if running compatible or too old +if &compatible || v:version < 700 finish endif -let b:did_ftplugin_zsh_check = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_zsh_check' -endif -" Build function for checker -if !exists('*s:ZshCheck') - function s:ZshCheck() - let l:save_makeprg = &l:makeprg - let l:save_errorformat = &l:errorformat - unlet! g:current_compiler - compiler zsh - make! - let &l:makeprg = l:save_makeprg - let &l:errorformat = l:save_errorformat - cwindow - endfunction +" Don't load if already loaded +if exists('b:did_ftplugin_zsh_check') + finish endif -" Set up a mapping for the checker, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_zsh_maps') +" Flag as loaded +let b:did_ftplugin_zsh_check = 1 +let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_zsh_check' - " Define a mapping target - nnoremap <buffer> <silent> <unique> - \ <Plug>ZshCheck - \ :<C-U>call <SID>ZshCheck()<CR> - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <Plug>ZshCheck' +" Build function for checker +function! s:ZshCheck() + if exists('b:current_compiler') + let l:save_compiler = b:current_compiler endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('<Plug>ZshCheck') - nmap <buffer> <unique> - \ <LocalLeader>c - \ <Plug>ZshCheck - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap <buffer> <LocalLeader>c' - endif + compiler zsh + lmake! + lwindow + if exists('l:save_compiler') + execute 'compiler ' . l:save_compiler endif +endfunction +" Set up a mapping for the checker, if we're allowed +if exists('g:no_plugin_maps') || exists('g:no_zsh_maps') + finish +endif + +" Define a mapping target +nnoremap <buffer> <silent> <unique> + \ <Plug>ZshCheck + \ :<C-U>call <SID>ZshCheck()<CR> +let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <Plug>ZshCheck' + +" If there isn't a key mapping already, use a default one +if !hasmapto('<Plug>ZshCheck') + nmap <buffer> <unique> + \ <LocalLeader>c + \ <Plug>ZshCheck + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap <buffer> <LocalLeader>c' endif diff --git a/vim/bundle/insert_suspend_hlsearch b/vim/bundle/insert_suspend_hlsearch -Subproject e71b7605705cc2caed9ae74b8578c71c304b277 +Subproject 7dc6de6d44575d238d82461d46def0b51d90af8 diff --git a/vim/bundle/markdown_autoformat b/vim/bundle/markdown_autoformat -Subproject 8d152a1be09a229cf3adcd158cb023a04f89cc9 +Subproject aedaec551e8f172a3a30cd893c8374d3e7e2700 diff --git a/vim/bundle/surround b/vim/bundle/surround -Subproject 643a42454bc8c2b2735de14f309523ce733a535 +Subproject aa1f120ad3a29c27cc41d581cda3751c59343cc diff --git a/vim/compiler/bash.vim b/vim/compiler/bash.vim new file mode 100644 index 00000000..70997f92 --- /dev/null +++ b/vim/compiler/bash.vim @@ -0,0 +1,17 @@ +if exists('g:current_compiler') + finish +endif +let g:current_compiler = 'bash' + +if exists(':CompilerSet') != 2 + command -nargs=* CompilerSet setlocal <args> +endif + +" 7.4.191 is the earliest version with the :S file name modifier, which we +" really should use if we can +if v:version >= 704 || v:version == 704 && has('patch191') + CompilerSet makeprg=bash\ -n\ %:S +else + CompilerSet makeprg=bash\ -n\ % +endif +CompilerSet errorformat=%f:\ line\ %l:\ %m diff --git a/vim/compiler/ksh.vim b/vim/compiler/ksh.vim new file mode 100644 index 00000000..1b31ffa7 --- /dev/null +++ b/vim/compiler/ksh.vim @@ -0,0 +1,17 @@ +if exists('g:current_compiler') + finish +endif +let g:current_compiler = 'ksh' + +if exists(':CompilerSet') != 2 + command -nargs=* CompilerSet setlocal <args> +endif + +" 7.4.191 is the earliest version with the :S file name modifier, which we +" really should use if we can +if v:version >= 704 || v:version == 704 && has('patch191') + CompilerSet makeprg=ksh\ -n\ %:S +else + CompilerSet makeprg=ksh\ -n\ % +endif +CompilerSet errorformat=%f:\ %l:\ %m diff --git a/vim/compiler/perlcritic.vim b/vim/compiler/perlcritic.vim index afbb73c7..03d21683 100644 --- a/vim/compiler/perlcritic.vim +++ b/vim/compiler/perlcritic.vim @@ -1,7 +1,7 @@ if exists('g:current_compiler') finish endif -let g:current_compiler = 'tidy' +let g:current_compiler = 'perlcritic' if exists(':CompilerSet') != 2 command -nargs=* CompilerSet setlocal <args> diff --git a/vim/compiler/sh.vim b/vim/compiler/sh.vim new file mode 100644 index 00000000..ff5ed314 --- /dev/null +++ b/vim/compiler/sh.vim @@ -0,0 +1,17 @@ +if exists('g:current_compiler') + finish +endif +let g:current_compiler = 'sh' + +if exists(':CompilerSet') != 2 + command -nargs=* CompilerSet setlocal <args> +endif + +" 7.4.191 is the earliest version with the :S file name modifier, which we +" really should use if we can +if v:version >= 704 || v:version == 704 && has('patch191') + CompilerSet makeprg=sh\ -n\ %:S +else + CompilerSet makeprg=sh\ -n\ % +endif +CompilerSet errorformat=%f:\ %l:\ %m diff --git a/vim/compiler/shellcheck.vim b/vim/compiler/shellcheck.vim new file mode 100644 index 00000000..6d6498da --- /dev/null +++ b/vim/compiler/shellcheck.vim @@ -0,0 +1,27 @@ +if exists('g:current_compiler') + finish +endif +let g:current_compiler = 'shellcheck' + +if exists(':CompilerSet') != 2 + command -nargs=* CompilerSet setlocal <args> +endif + +" Build :CompilerSet command based on buffer shell type +let s:set = 'CompilerSet makeprg=shellcheck\ -e\ SC1090\ -f\ gcc' +if exists('b:is_bash') + let s:set = s:set . '\ -s\ bash' +elseif exists('b:is_kornshell') + let s:set = s:set . '\ -s\ ksh' +else + let s:set = s:set . '\ -s\ sh' +endif + +" 7.4.191 is the earliest version with the :S file name modifier, which we +" really should use if we can +if v:version >= 704 || v:version == 704 && has('patch191') + execute s:set . '\ %:S' +else + execute s:set . '\ %' +endif +CompilerSet errorformat=%f:%l:%c:\ %m\ [SC%n] diff --git a/vim/filetype.vim b/vim/filetype.vim index 2dc44889..3cd2b203 100644 --- a/vim/filetype.vim +++ b/vim/filetype.vim @@ -1,13 +1,17 @@ -" Override filetypes.vim +" Override system filetype.vim if exists('g:did_load_filetypes') finish endif let g:did_load_filetypes = 1 + +" If we don't have +autocmd or are 'compatible', do nothing, and don't try +" again later if !has('autocmd') || &compatible finish endif -" Run the 'filetypedetect' group on a file with its extension stripped off +" Helper function to run the 'filetypedetect' group on a file with its +" extension stripped off function! s:StripRepeat() " Check we have the fnameescape() function @@ -300,10 +304,14 @@ augroup filetypedetect autocmd BufNewFile,BufRead \ ?*.bash \,.bash_aliases + \,.bash_completion \,.bash_logout \,.bash_profile \,.bashrc \,bash-fc.?* + \,bash_aliases + \,bash_completion + \,bash_logout \,bash_profile \,bashrc \ let b:is_bash = 1 @@ -416,6 +424,8 @@ augroup filetypedetect autocmd BufNewFile,BufRead \ .Xresources \,*/.Xresources.d/* + \,Xresources + \,*/Xresources.d/* \ setfiletype xdefaults " XHTML files autocmd BufNewFile,BufRead diff --git a/vim/ftplugin/markdown.vim b/vim/ftplugin/markdown.vim index 94f49c9b..c6a180a9 100644 --- a/vim/ftplugin/markdown.vim +++ b/vim/ftplugin/markdown.vim @@ -6,17 +6,11 @@ " without providing a variable check to stop it. That causes absurd problems " with defining HTML checkers/linters in the rest of my files. " -if exists('b:did_ftplugin') +if exists('b:did_ftplugin') || &compatible finish endif let b:did_ftplugin = 1 -" Support line continuation for this file -if &compatible - let s:cpoptions_save = &cpoptions - set cpoptions-=C -endif - " Set comment/quote patterns setlocal comments=fb:*,fb:-,fb:+,n:> setlocal commentstring=>\ %s @@ -37,9 +31,3 @@ let b:undo_ftplugin = 'setlocal comments<' \ . '|setlocal commentstring<' \ . '|setlocal formatoptions<' \ . '|setlocal formatlistpat<' - -" Restore 'cpoptions' setting if we touched it -if exists('s:cpoptions_save') - let &cpoptions = s:cpoptions_save - unlet s:cpoptions_save -endif diff --git a/vim/ftplugin/php.vim b/vim/ftplugin/php.vim index 39cec4b1..35292e15 100644 --- a/vim/ftplugin/php.vim +++ b/vim/ftplugin/php.vim @@ -6,17 +6,11 @@ " without providing a variable check to stop it. That causes absurd problems " with defining HTML checkers/linters in the rest of my files. " -if exists('b:did_ftplugin') +if exists('b:did_ftplugin') || &compatible finish endif let b:did_ftplugin = 1 -" Support line continuation for this file -if &compatible - let s:cpoptions_save = &cpoptions - set cpoptions-=C -endif - " Define keywords for matchit.vim if exists('g:loaded_matchit') let b:match_words = '<?php:?>' @@ -30,9 +24,3 @@ endif " Define how to undo this plugin's settings let b:undo_ftplugin = 'unlet b:match_words' - -" Restore 'cpoptions' setting if we touched it -if exists('s:cpoptions_save') - let &cpoptions = s:cpoptions_save - unlet s:cpoptions_save -endif @@ -93,6 +93,10 @@ if has('unix') nnoremap <silent> <Leader>D :<C-U>read !date -u<CR> endif +" Start with blank comment strings rather than the old default; let the +" filetype handle it +set comments= + " Don't try to complete strings from included files, just use the strings in " the open buffers; I'll open the file if I want to complete from it set complete-=i |