From 3c7a5d27d22461144547fee3fb0d5ae02af5e8e9 Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Mon, 4 Jun 2018 19:11:45 +1200 Subject: Move markdown_autoformat.vim funcs back to local No advantage to making them autoload --- Makefile | 10 ---- vim/after/ftplugin/markdown/autoformat.vim | 68 +++++++++++++++++++++++++-- vim/autoload/ftplugin/markdown/autoformat.vim | 63 ------------------------- 3 files changed, 64 insertions(+), 77 deletions(-) delete mode 100644 vim/autoload/ftplugin/markdown/autoformat.vim diff --git a/Makefile b/Makefile index 345952cd..fd08950d 100644 --- a/Makefile +++ b/Makefile @@ -43,7 +43,6 @@ install-vim-after-indent \ install-vim-after-plugin \ install-vim-after-syntax \ - install-vim-autoload \ install-vim-bundle \ install-vim-compiler \ install-vim-config \ @@ -492,7 +491,6 @@ VIMDIR = $(HOME)/.vim VIMRC = $(HOME)/.vimrc install-vim: install-vim-after \ - install-vim-autoload \ install-vim-bundle \ install-vim-compiler \ install-vim-config \ @@ -524,14 +522,6 @@ install-vim-after-syntax: mkdir -p $(VIMDIR)/after/syntax cp -p -- vim/after/syntax/*.vim $(VIMDIR)/after/syntax -install-vim-autoload: - find vim/autoload \ - -type d -exec sh -c \ - 'mkdir -- $(VIMDIR)/"$${1#vim/}"' _ {} \; \ - -o \ - -type f -exec sh -c \ - 'cp -p -- "$$1" $(VIMDIR)/"$${1#vim/}"' _ {} \; - install-vim-bundle: install-vim-config find vim/bundle/*/* \ -type d -exec sh -c \ diff --git a/vim/after/ftplugin/markdown/autoformat.vim b/vim/after/ftplugin/markdown/autoformat.vim index 2bb4f87c..7edcfbf6 100644 --- a/vim/after/ftplugin/markdown/autoformat.vim +++ b/vim/after/ftplugin/markdown/autoformat.vim @@ -13,9 +13,69 @@ if exists('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 + +" Suspend auto-format when pasting anything with a linebreak +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 + +" Suspend auto-formatting when in a code block (four-space indent) +if !has('*s:Put') + function! s:Put(above) abort + let l:suspended = 0 + if &formatoptions =~# '\ma' && @" =~# '\m\n' + setlocal formatoptions-=a + let l:suspended = 1 + endif + if a:above + normal! P + else + normal! p + endif + if l:suspended + setlocal formatoptions+=a + endif + endfunction +endif + " Turn on autoformatting if the buffer has no code-block lines with spaces " that is longer than 'textwidth' -call ftplugin#markdown#autoformat#Load() +call s:Load() " Group autocommands augroup ftplugin_markdown_autoformat @@ -24,17 +84,17 @@ augroup ftplugin_markdown_autoformat " Suspend auto-formatting when in a code block (four-space indent) autocmd BufWinEnter,CursorMoved,CursorMovedI,WinEnter \ - \ call ftplugin#markdown#autoformat#Line() + \ call s:Line() augroup END " Suspend auto-format when pasting anything with a linebreak nnoremap \ p - \ :call ftplugin#markdown#autoformat#PutBelow() + \ :call Put(0) nnoremap \ P - \ :call ftplugin#markdown#autoformat#PutAbove() + \ :call Put(1) " Undo all the above if exists('b:undo_ftplugin') diff --git a/vim/autoload/ftplugin/markdown/autoformat.vim b/vim/autoload/ftplugin/markdown/autoformat.vim deleted file mode 100644 index f416da77..00000000 --- a/vim/autoload/ftplugin/markdown/autoformat.vim +++ /dev/null @@ -1,63 +0,0 @@ -" Autoload functions for after/ftplugin/markdown/autoformat.vim - -" Suspend auto-format when pasting anything with a linebreak -function! ftplugin#markdown#autoformat#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 - -" 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) -function! ftplugin#markdown#autoformat#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 - -" Suspend auto-formatting when in a code block (four-space indent) -function! ftplugin#markdown#autoformat#Put(above) abort - let l:suspended = 0 - if &formatoptions =~# '\ma' && @" =~# '\m\n' - setlocal formatoptions-=a - let l:suspended = 1 - endif - if a:above - normal! P - else - normal! p - endif - if l:suspended - setlocal formatoptions+=a - endif -endfunction - -" Wrapper functions for #Put() above/below -function! ftplugin#markdown#autoformat#PutAbove() abort - call ftplugin#markdown#autoformat#Put(1) -endfunction -function! ftplugin#markdown#autoformat#PutBelow() abort - call ftplugin#markdown#autoformat#Put(0) -endfunction -- cgit v1.2.3