From a14bc50707592944bf6e327c912bb197de98ec00 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Mon, 4 Jun 2018 22:35:49 +1200 Subject: Move Markdown and PHP ftplugins from after dir Because we use our own private copies of the primary filetype plugins, they'll get loaded in the correct order from here. Also adjust Makefile to accommodate the extra level. --- Makefile | 9 ++- vim/after/ftplugin/markdown/autoformat.vim | 96 ------------------------------ vim/after/ftplugin/markdown/spell.vim | 21 ------- vim/after/ftplugin/php/check.vim | 57 ------------------ vim/ftplugin/markdown/autoformat.vim | 96 ++++++++++++++++++++++++++++++ vim/ftplugin/markdown/spell.vim | 21 +++++++ vim/ftplugin/php/check.vim | 57 ++++++++++++++++++ 7 files changed, 181 insertions(+), 176 deletions(-) delete mode 100644 vim/after/ftplugin/markdown/autoformat.vim delete mode 100644 vim/after/ftplugin/markdown/spell.vim delete mode 100644 vim/after/ftplugin/php/check.vim create mode 100644 vim/ftplugin/markdown/autoformat.vim create mode 100644 vim/ftplugin/markdown/spell.vim create mode 100644 vim/ftplugin/php/check.vim diff --git a/Makefile b/Makefile index fd08950d..134935ae 100644 --- a/Makefile +++ b/Makefile @@ -546,8 +546,13 @@ install-vim-ftdetect: cp -p -- vim/ftdetect/*.vim $(VIMDIR)/ftdetect install-vim-ftplugin: - mkdir -p -- $(VIMDIR)/ftplugin - cp -p -- vim/ftplugin/*.vim $(VIMDIR)/ftplugin + mkdir -p $(VIMDIR)/ftplugin + find vim/ftplugin \ + -type d -exec sh -c \ + 'mkdir -p -- $(VIMDIR)/"$${1#vim/}"' _ {} \; \ + -o \ + -type f -exec sh -c \ + 'cp -p -- "$$1" $(VIMDIR)/"$${1#vim/}"' _ {} \; install-vim-indent: mkdir -p -- $(VIMDIR)/indent diff --git a/vim/after/ftplugin/markdown/autoformat.vim b/vim/after/ftplugin/markdown/autoformat.vim deleted file mode 100644 index 3f620691..00000000 --- a/vim/after/ftplugin/markdown/autoformat.vim +++ /dev/null @@ -1,96 +0,0 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled, or if no autocmd feature, or if Vim -" is too old to support the needed autocmd events -if exists('b:did_ftplugin_markdown_autoformat') || &compatible - finish -endif -if !has('autocmd') || v:version < 700 - finish -endif -let b:did_ftplugin_markdown_autoformat = 1 -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|unlet b:did_ftplugin_markdown_autoformat' -endif - -" Turn on autoformatting if less than 5% of the buffer's lines meet all three -" of these conditions: -" * Longer than 'textwidth' -" * Contains at least one space (not an unsplittable line) -" * Not a code block (indented with at least four spaces) -if !has('*s:Load') - function! s:Load() abort - let l:width = &textwidth ? &textwidth : 79 - let l:count = 0 - let l:total = line('$') - for l:li in range(1, l:total) - let l:line = getline(l:li) - if strlen(l:line) > l:width - \ && stridx(l:line, ' ') > -1 - \ && l:line !~# '\m^ ' - let l:count = l:count + 1 - endif - endfor - if l:count * 100 / l:total < 5 - setlocal formatoptions+=a - else - setlocal formatoptions-=a - endif - endfunction -endif -call s:Load() - -" Suspend auto-formatting when in a code block (four-space indent) -if !has('*s:Line') - function! s:Line() abort - if getline('.') =~# '\m^ ' - if &formatoptions =~# '\ma' - setlocal formatoptions-=a - let b:markdown_autoformat_suspended = 1 - endif - elseif exists('b:markdown_autoformat_suspended') - setlocal formatoptions+=a - unlet b:markdown_autoformat_suspended - endif - endfunction -endif -augroup ftplugin_markdown_autoformat - autocmd! - autocmd BufWinEnter,CursorMoved,CursorMovedI,WinEnter - \ - \ call s:Line() -augroup END - -" Suspend auto-format when pasting anything with a linebreak -if !has('*s:Put') - function! s:Put(above) abort - let l:suspended = 0 - if &formatoptions =~# '\ma' && getreg() =~# '\m\n' - setlocal formatoptions-=a - let l:suspended = 1 - endif - if a:above - execute 'normal! "'.v:register.v:count1.'P' - else - execute 'normal! "'.v:register.v:count1.'p' - endif - if l:suspended - setlocal formatoptions+=a - endif - endfunction -endif -nnoremap - \ p - \ :call Put(0) -nnoremap - \ P - \ :call Put(1) - -" Undo all the above -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|setlocal formatoptions<' - \ . '|augroup ftplugin_markdown_autoformat' - \ . '|autocmd! * ' - \ . '|augroup END' -endif diff --git a/vim/after/ftplugin/markdown/spell.vim b/vim/after/ftplugin/markdown/spell.vim deleted file mode 100644 index 05fc7c00..00000000 --- a/vim/after/ftplugin/markdown/spell.vim +++ /dev/null @@ -1,21 +0,0 @@ -" 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 - finish -endif -if !has('spell') - finish -endif -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 - -" Spellcheck documents by default -setlocal spell -if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|setlocal spell<' -endif diff --git a/vim/after/ftplugin/php/check.vim b/vim/after/ftplugin/php/check.vim deleted file mode 100644 index 33077a72..00000000 --- a/vim/after/ftplugin/php/check.vim +++ /dev/null @@ -1,57 +0,0 @@ -" Only do this when not done yet for this buffer -" Also do nothing if 'compatible' enabled -if exists('b:did_ftplugin_php_check') || &compatible - 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 -endif - -" Set up a mapping for the checker, if we're allowed -if !exists('g:no_plugin_maps') && !exists('g:no_php_maps') - - " Define a mapping target - nnoremap - \ PhpCheck - \ :call PhpCheck() - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap PhpCheck' - endif - - " If there isn't a key mapping already, use a default one - if !hasmapto('PhpCheck') - nmap - \ c - \ PhpCheck - if exists('b:undo_ftplugin') - let b:undo_ftplugin = b:undo_ftplugin - \ . '|nunmap c' - endif - endif - -endif diff --git a/vim/ftplugin/markdown/autoformat.vim b/vim/ftplugin/markdown/autoformat.vim new file mode 100644 index 00000000..3f620691 --- /dev/null +++ b/vim/ftplugin/markdown/autoformat.vim @@ -0,0 +1,96 @@ +" Only do this when not done yet for this buffer +" Also do nothing if 'compatible' enabled, or if no autocmd feature, or if Vim +" is too old to support the needed autocmd events +if exists('b:did_ftplugin_markdown_autoformat') || &compatible + finish +endif +if !has('autocmd') || v:version < 700 + finish +endif +let b:did_ftplugin_markdown_autoformat = 1 +if exists('b:undo_ftplugin') + let b:undo_ftplugin = b:undo_ftplugin + \ . '|unlet b:did_ftplugin_markdown_autoformat' +endif + +" Turn on autoformatting if less than 5% of the buffer's lines meet all three +" of these conditions: +" * Longer than 'textwidth' +" * Contains at least one space (not an unsplittable line) +" * Not a code block (indented with at least four spaces) +if !has('*s:Load') + function! s:Load() abort + let l:width = &textwidth ? &textwidth : 79 + let l:count = 0 + let l:total = line('$') + for l:li in range(1, l:total) + let l:line = getline(l:li) + if strlen(l:line) > l:width + \ && stridx(l:line, ' ') > -1 + \ && l:line !~# '\m^ ' + let l:count = l:count + 1 + endif + endfor + if l:count * 100 / l:total < 5 + setlocal formatoptions+=a + else + setlocal formatoptions-=a + endif + endfunction +endif +call s:Load() + +" Suspend auto-formatting when in a code block (four-space indent) +if !has('*s:Line') + function! s:Line() abort + if getline('.') =~# '\m^ ' + if &formatoptions =~# '\ma' + setlocal formatoptions-=a + let b:markdown_autoformat_suspended = 1 + endif + elseif exists('b:markdown_autoformat_suspended') + setlocal formatoptions+=a + unlet b:markdown_autoformat_suspended + endif + endfunction +endif +augroup ftplugin_markdown_autoformat + autocmd! + autocmd BufWinEnter,CursorMoved,CursorMovedI,WinEnter + \ + \ call s:Line() +augroup END + +" Suspend auto-format when pasting anything with a linebreak +if !has('*s:Put') + function! s:Put(above) abort + let l:suspended = 0 + if &formatoptions =~# '\ma' && getreg() =~# '\m\n' + setlocal formatoptions-=a + let l:suspended = 1 + endif + if a:above + execute 'normal! "'.v:register.v:count1.'P' + else + execute 'normal! "'.v:register.v:count1.'p' + endif + if l:suspended + setlocal formatoptions+=a + endif + endfunction +endif +nnoremap + \ p + \ :call Put(0) +nnoremap + \ P + \ :call Put(1) + +" Undo all the above +if exists('b:undo_ftplugin') + let b:undo_ftplugin = b:undo_ftplugin + \ . '|setlocal formatoptions<' + \ . '|augroup ftplugin_markdown_autoformat' + \ . '|autocmd! * ' + \ . '|augroup END' +endif diff --git a/vim/ftplugin/markdown/spell.vim b/vim/ftplugin/markdown/spell.vim new file mode 100644 index 00000000..05fc7c00 --- /dev/null +++ b/vim/ftplugin/markdown/spell.vim @@ -0,0 +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 + finish +endif +if !has('spell') + finish +endif +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 + +" Spellcheck documents by default +setlocal spell +if exists('b:undo_ftplugin') + let b:undo_ftplugin = b:undo_ftplugin + \ . '|setlocal spell<' +endif diff --git a/vim/ftplugin/php/check.vim b/vim/ftplugin/php/check.vim new file mode 100644 index 00000000..33077a72 --- /dev/null +++ b/vim/ftplugin/php/check.vim @@ -0,0 +1,57 @@ +" Only do this when not done yet for this buffer +" Also do nothing if 'compatible' enabled +if exists('b:did_ftplugin_php_check') || &compatible + 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 +endif + +" Set up a mapping for the checker, if we're allowed +if !exists('g:no_plugin_maps') && !exists('g:no_php_maps') + + " Define a mapping target + nnoremap + \ PhpCheck + \ :call PhpCheck() + if exists('b:undo_ftplugin') + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap PhpCheck' + endif + + " If there isn't a key mapping already, use a default one + if !hasmapto('PhpCheck') + nmap + \ c + \ PhpCheck + if exists('b:undo_ftplugin') + let b:undo_ftplugin = b:undo_ftplugin + \ . '|nunmap c' + endif + endif + +endif -- cgit v1.2.3