aboutsummaryrefslogtreecommitdiff
path: root/vim/after/ftplugin/markdown/autoformat.vim
diff options
context:
space:
mode:
Diffstat (limited to 'vim/after/ftplugin/markdown/autoformat.vim')
-rw-r--r--vim/after/ftplugin/markdown/autoformat.vim33
1 files changed, 33 insertions, 0 deletions
diff --git a/vim/after/ftplugin/markdown/autoformat.vim b/vim/after/ftplugin/markdown/autoformat.vim
new file mode 100644
index 00000000..9a963fbb
--- /dev/null
+++ b/vim/after/ftplugin/markdown/autoformat.vim
@@ -0,0 +1,33 @@
+" 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
+
+" Suspend auto-formatting when in a code block (four-space indent)
+autocmd BufWinEnter,CursorMoved,CursorMovedI,WinEnter
+ \ <buffer>
+ \ call ftplugin#markdown#autoformat#Line()
+
+" Suspend auto-format when pasting anything with a linebreak
+nnoremap <buffer> <silent>
+ \ p
+ \ :<C-u>call ftplugin#markdown#autoformat#PutBelow()<CR>
+nnoremap <buffer> <silent>
+ \ P
+ \ :<C-u>call ftplugin#markdown#autoformat#PutAbove()<CR>
+
+" Undo all the above
+if exists('b:undo_ftplugin')
+ let b:undo_ftplugin = b:undo_ftplugin
+ \ . '|setlocal formatoptions<'
+endif