aboutsummaryrefslogtreecommitdiff
path: root/vim
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2018-06-04 19:11:45 +1200
committerTom Ryder <tom@sanctum.geek.nz>2018-06-04 19:11:45 +1200
commit3c7a5d27d22461144547fee3fb0d5ae02af5e8e9 (patch)
tree18a11ced1449e92152215b189115cfb413b8aef1 /vim
parentDon't load my HTML ftplugins for Markdown types (diff)
downloaddotfiles-3c7a5d27d22461144547fee3fb0d5ae02af5e8e9.tar.gz
dotfiles-3c7a5d27d22461144547fee3fb0d5ae02af5e8e9.zip
Move markdown_autoformat.vim funcs back to local
No advantage to making them autoload
Diffstat (limited to 'vim')
-rw-r--r--vim/after/ftplugin/markdown/autoformat.vim68
-rw-r--r--vim/autoload/ftplugin/markdown/autoformat.vim63
2 files changed, 64 insertions, 67 deletions
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
\ <buffer>
- \ call ftplugin#markdown#autoformat#Line()
+ \ call s:Line()
augroup END
" Suspend auto-format when pasting anything with a linebreak
nnoremap <buffer> <silent>
\ p
- \ :<C-u>call ftplugin#markdown#autoformat#PutBelow()<CR>
+ \ :<C-u>call <SID>Put(0)<CR>
nnoremap <buffer> <silent>
\ P
- \ :<C-u>call ftplugin#markdown#autoformat#PutAbove()<CR>
+ \ :<C-u>call <SID>Put(1)<CR>
" 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