aboutsummaryrefslogtreecommitdiff
path: root/plugin/copy_linebreak.vim
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/copy_linebreak.vim')
-rw-r--r--plugin/copy_linebreak.vim68
1 files changed, 68 insertions, 0 deletions
diff --git a/plugin/copy_linebreak.vim b/plugin/copy_linebreak.vim
new file mode 100644
index 0000000..a7d8a3e
--- /dev/null
+++ b/plugin/copy_linebreak.vim
@@ -0,0 +1,68 @@
+"
+" copy_linebreak.vim: Bind user-defined key sequences to toggle a group of
+" options that make text wrapped with 'wrap' copy-paste friendly. Also creates
+" user commands if it can.
+"
+" Author: Tom Ryder <tom@sanctum.geek.nz>
+" License: Same as Vim itself
+"
+if exists('g:loaded_copy_linebreak') || &compatible
+ finish
+endif
+if !has('linebreak')
+ finish
+endif
+let g:loaded_copy_linebreak = 1
+
+" Enable copy-friendly linebreak options
+function! s:CopyLinebreakEnable()
+ setlocal nolinebreak linebreak?
+ let s:showbreak_save = &showbreak
+ set showbreak=
+ if exists('+breakindent')
+ setlocal nobreakindent
+ endif
+endfunction
+
+" Disable copy-friendly linebreak options
+function! s:CopyLinebreakDisable()
+ setlocal linebreak linebreak?
+ let &showbreak = s:showbreak_save
+ if exists('+breakindent')
+ setlocal breakindent<
+ endif
+endfunction
+
+" Toggle copy-friendly linebreak options, using the current setting for the
+" 'linebreak' option as the pivot
+function! s:CopyLinebreakToggle()
+ if &linebreak
+ call <SID>CopyLinebreakEnable()
+ else
+ call <SID>CopyLinebreakDisable()
+ endif
+endfunction
+
+" Provide mappings to the function just defined
+noremap <silent> <unique>
+ \ <Plug>CopyLinebreakEnable
+ \ :<C-U>call <SID>CopyLinebreakEnable()<CR>
+noremap <silent> <unique>
+ \ <Plug>CopyLinebreakDisable
+ \ :<C-U>call <SID>CopyLinebreakDisable()<CR>
+noremap <silent> <unique>
+ \ <Plug>CopyLinebreakToggle
+ \ :<C-U>call <SID>CopyLinebreakToggle()<CR>
+
+" Provide user commands if we can
+if has('user_commands')
+ command -nargs=0
+ \ CopyLinebreakEnable
+ \ call <SID>CopyLinebreakEnable
+ command -nargs=0
+ \ CopyLinebreakDisable
+ \ call <SID>CopyLinebreakDisable
+ command -nargs=0
+ \ CopyLinebreakToggle
+ \ call <SID>CopyLinebreakToggle
+endif