From 44bd9a85728ec1eb6b4049b31e98ccdad9a8b02b Mon Sep 17 00:00:00 2001 From: Tom Ryder Date: Tue, 7 Nov 2017 10:07:03 +1300 Subject: 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. --- vim/doc/copy_linebreak.txt | 14 +++++++---- vim/plugin/copy_linebreak.vim | 56 ++++++++++++++++++++++++++----------------- 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 License: Same terms as Vim itself (see |license|) -This plugin provides a mapping target 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: + + CopyLinebreakEnable + CopyLinebreakDisable + 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 " 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 CopyLinebreakEnable() else - setlocal linebreak linebreak? - setlocal showbreak< - if exists('&breakindent') - setlocal breakindent - endif + call CopyLinebreakDisable() endif - endfunction -" Provide mapping proxy to the function just defined +" Provide mappings to the function just defined +noremap + \ CopyLinebreakEnable + \ :call CopyLinebreakEnable() noremap - \ CopyLinebreak - \ :call CopyLinebreak() + \ CopyLinebreakDisable + \ :call CopyLinebreakDisable() +noremap + \ CopyLinebreakToggle + \ :call CopyLinebreakToggle() +endif -- cgit v1.2.3