aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Ryder <tom@sanctum.geek.nz>2017-11-07 10:07:03 +1300
committerTom Ryder <tom@sanctum.geek.nz>2017-11-07 10:09:50 +1300
commit44bd9a85728ec1eb6b4049b31e98ccdad9a8b02b (patch)
treec5e5c1da09f32af4a921a656852817b18c826d68
parentd2669e7190e3db3123589bfcd3ba15a2e4c5243b (diff)
downloaddotfiles-44bd9a85728ec1eb6b4049b31e98ccdad9a8b02b.tar.gz
Give copy_linebreak.vim enable/disable funcs, maps
Add s:CopylinebreakDisable() and s:CopylinebreakEnable functions, and mapping targets for each of them, just to be thorough.
-rw-r--r--vim/doc/copy_linebreak.txt14
-rw-r--r--vim/plugin/copy_linebreak.vim56
2 files changed, 44 insertions, 26 deletions
diff --git a/vim/doc/copy_linebreak.txt b/vim/doc/copy_linebreak.txt
index c8463386..285d92ea 100644
--- a/vim/doc/copy_linebreak.txt
+++ b/vim/doc/copy_linebreak.txt
@@ -3,10 +3,16 @@
Author: Tom Ryder <tom@sanctum.geek.nz>
License: Same terms as Vim itself (see |license|)
-This plugin provides a mapping target <Plug>CopyLinebreak to create a binding
-for a user to quickly toggle |'linebreak'|-related settings when |'wrap'| is
-enabled, to switch between human-readable output and a format friendly for
-copy-pasting with terminal emulators or screen/tmux.
+This plugin provides mapping targets for a user to set, unset, or toggle
+|'linebreak'|-related settings when |'wrap'| is enabled, to switch between
+human-readable output and a format friendly for copy-pasting with terminal
+emulators or screen/tmux.
+
+Mappings:
+
+ <Plug>CopyLinebreakEnable
+ <Plug>CopyLinebreakDisable
+ <Plug>CopyLinebreakToggle
This plugin lives in Tom Ryder's "dotfiles" suite, and will eventually be spun
off into a separate distribution as it solidifies and this documentation
diff --git a/vim/plugin/copy_linebreak.vim b/vim/plugin/copy_linebreak.vim
index 40f03393..cc0cc741 100644
--- a/vim/plugin/copy_linebreak.vim
+++ b/vim/plugin/copy_linebreak.vim
@@ -1,7 +1,6 @@
"
-" copy_linebreak.vim: Bind a user-defined key sequence to turn off linebreak
-" and toggle the showbreak characters and breakindent mode on and off, for
-" convenience of copying multiple lines from terminal emulators.
+" copy_linebreak.vim: Bind user-defined key sequences to toggle a group of
+" options that make text wrapped with 'wrap' copy-paste friendly.
"
" Author: Tom Ryder <tom@sanctum.geek.nz>
" License: Same as Vim itself
@@ -13,29 +12,42 @@ if exists('g:loaded_copy_linebreak')
endif
let g:loaded_copy_linebreak = 1
-" Define function
-function! s:CopyLinebreak()
+" Enable copy-friendly linebreak options
+function! s:CopyLinebreakEnable()
+ setlocal nolinebreak linebreak?
+ setlocal showbreak=
+ if exists('&breakindent')
+ setlocal nobreakindent
+ endif
+endfunction
- " If linebreak is on, turn it off
- if &l:linebreak
- setlocal nolinebreak linebreak?
- setlocal showbreak=
- if exists('&breakindent')
- setlocal nobreakindent
- endif
+" Disable copy-friendly linebreak options
+function! s:CopyLinebreakDisable()
+ setlocal linebreak linebreak?
+ setlocal showbreak<
+ if exists('&breakindent')
+ setlocal breakindent<
+ endif
+endfunction
- " If it's off, turn it on
+" 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
- setlocal linebreak linebreak?
- setlocal showbreak<
- if exists('&breakindent')
- setlocal breakindent
- endif
+ call <SID>CopyLinebreakDisable()
endif
-
endfunction
-" Provide mapping proxy to the function just defined
+" Provide mappings to the function just defined
+noremap <silent> <unique>
+ \ <Plug>CopyLinebreakEnable
+ \ :<C-U>call <SID>CopyLinebreakEnable()<CR>
noremap <silent> <unique>
- \ <Plug>CopyLinebreak
- \ :<C-U>call <SID>CopyLinebreak()<CR>
+ \ <Plug>CopyLinebreakDisable
+ \ :<C-U>call <SID>CopyLinebreakDisable()<CR>
+noremap <silent> <unique>
+ \ <Plug>CopyLinebreakToggle
+ \ :<C-U>call <SID>CopyLinebreakToggle()<CR>
+endif