aboutsummaryrefslogtreecommitdiff
path: root/vim/after/ftplugin
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2018-06-04 16:55:41 +1200
committerTom Ryder <tom@sanctum.geek.nz>2018-06-04 16:55:41 +1200
commit8e6412db2013b11cece845d4e6cbe541a1875bdb (patch)
treee92219358c9eb86166854bdca69365597d6a9c95 /vim/after/ftplugin
parentAdd mail ftdetect rules (diff)
downloaddotfiles-8e6412db2013b11cece845d4e6cbe541a1875bdb.tar.gz
dotfiles-8e6412db2013b11cece845d4e6cbe541a1875bdb.zip
Refactor suspend_autoformat.vim, add autoload
* Add a function to suspend autoformatting for the duration of pasting lines. * Factor the ftplugin's functions out to be autoloaded; this requires Vim >=7.0, but it already needed that. * Add Makefile infrastructure for new autoload directories/files.
Diffstat (limited to 'vim/after/ftplugin')
-rw-r--r--vim/after/ftplugin/markdown/autoformat.vim33
-rw-r--r--vim/after/ftplugin/markdown/suspend_autoformat.vim34
2 files changed, 33 insertions, 34 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
diff --git a/vim/after/ftplugin/markdown/suspend_autoformat.vim b/vim/after/ftplugin/markdown/suspend_autoformat.vim
deleted file mode 100644
index b2de7828..00000000
--- a/vim/after/ftplugin/markdown/suspend_autoformat.vim
+++ /dev/null
@@ -1,34 +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_suspend_autoformat') || &compatible
- finish
-endif
-if !has('autocmd') || v:version < 700
- finish
-endif
-let b:did_ftplugin_markdown_suspend_autoformat = 1
-if exists('b:undo_ftplugin')
- let b:undo_ftplugin = b:undo_ftplugin
- \ . '|unlet b:did_ftplugin_markdown_suspend_autoformat'
-endif
-
-" When editing a code block, quietly remove auto 'a' from 'formatoptions' if
-" present, flagging that we've done so; restore it once we move away.
-autocmd BufWinEnter,CursorMoved,CursorMovedI,WinEnter
- \ <buffer>
- \ if getline('.') =~# '\m^ '
- \ | if &formatoptions =~# '\ma'
- \ | setlocal formatoptions-=a
- \ | let b:markdown_suspend_autoformat_suspended = 1
- \ | endif
- \ | elseif exists('b:markdown_suspend_autoformat_suspended')
- \ | setlocal formatoptions+=a
- \ | unlet b:markdown_suspend_autoformat_suspended
- \ | endif
-
-" Undo all the above
-if exists('b:undo_ftplugin')
- let b:undo_ftplugin = b:undo_ftplugin
- \ . '|setlocal formatoptions<'
-endif