From 52f035e111cfe766b030d603238b0552453d036c Mon Sep 17 00:00:00 2001 From: Josh Rahm Date: Sat, 27 Aug 2022 17:05:06 -0600 Subject: subwords.vim: better organize file better --- plugin/subwords.vim | 103 +++++++++++++++++++++++++++------------------------- 1 file changed, 53 insertions(+), 50 deletions(-) (limited to 'plugin') diff --git a/plugin/subwords.vim b/plugin/subwords.vim index 163f97d..a8a38ee 100644 --- a/plugin/subwords.vim +++ b/plugin/subwords.vim @@ -17,13 +17,6 @@ if ! exists('g:subwords_include_bindings') let g:subwords_include_bindings = 1 endif -if g:subwords_include_bindings - onoremap i- (inner-sub-word) - vnoremap i- (inner-sub-word) - onoremap a- (around-sub-word) - vnoremap a- (around-sub-word) -endif - " These mappings are the same as above, except prefer_camel is turned off, so " snake case is used in the case of a conflict. onoremap (inner-sub-word-prefer-snake) :exec "norm " . v_subword(v:false, v:false) @@ -31,13 +24,6 @@ vnoremap (inner-sub-word-prefer-snake) :exec "norm " . onoremap (around-sub-word-prefer-snake) :exec "norm " . v_subword(v:false, v:true) vnoremap (around-sub-word-prefer-snake) :exec "norm " . v_subword(v:false, v:true) -if g:subwords_include_bindings - onoremap i_ (inner-sub-word-prefer-snake) - vnoremap i_ (inner-sub-wor-prefer-snaked) - onoremap a_ (around-sub-wor-prefer-snaked) - vnoremap a_ (around-sub-wor-prefer-snaked) -endif - " Movement keys for subwords. These all have prefer_camel set to true, the idea " being it's pretty easy to navigate underscores with f_ and t_, but more " difficult to navigate upper case letters. @@ -46,48 +32,38 @@ noremap (prev-subword) :silent! call next_subword(v vnoremap (next-subword) visualmode() . ":\silent! call \next_subword(visualmode(), v:true)\m'gv``" vnoremap (prev-subword) visualmode() . ":\silent! call \next_subword(visualmode(), v:false)m'gv``" -let s:subword_motion = "" -let s:subword_nosave = 0 - -if g:subwords_include_bindings - - function! s:clear_subword_mark() - let s:subword_motion = "" - return '' - endfunction - - function! s:subword_repeat(char) - if s:subword_motion == '' - return a:char - endif +function! s:clear_subword_mark() + let s:subword_motion = "" + return '' +endfunction - let mot = (s:subword_motion == 'next') != (a:char == ',') +function! s:subword_repeat(char) + if s:subword_motion == '' + return a:char + endif - let s:subword_nosave = 1 - if mot - return "\(next-subword)" - else - return "\(prev-subword)" - endif - endfunction + let mot = (s:subword_motion == 'next') != (a:char == ',') - noremap + (next-subword) - vnoremap + (next-subword) - noremap - (prev-subword) - vnoremap - (prev-subword) + let s:subword_nosave = 1 + if mot + return "\(next-subword)" + else + return "\(prev-subword)" + endif +endfunction - " tetetetetetetete_tetete_tetesasa +noremap (subwords-replace-;) subword_repeat(';') +noremap (subwords-replace-,) subword_repeat(',') +vnoremap (subwords-replace-;) subword_repeat(';') +vnoremap (subwords-replace-,) subword_repeat(',') - noremap ; subword_repeat(';') - noremap , subword_repeat(',') - vnoremap ; subword_repeat(';') - vnoremap , subword_repeat(',') +noremap (subwords-replace-t) clear_subword_mark() . "t" +noremap (subwords-replace-f) clear_subword_mark() . "f" +noremap (subwords-replace-T) clear_subword_mark() . "T" +noremap (subwords-replace-F) clear_subword_mark() . "F" - noremap t clear_subword_mark() . "t" - noremap f clear_subword_mark() . "f" - noremap T clear_subword_mark() . "T" - noremap F clear_subword_mark() . "F" -endif +let s:subword_motion = "" +let s:subword_nosave = 0 " Return the type of meta-word (i.e. camelCase, snake_case). If " a:prefer_camel is set, then a word like ThisIs_A_MixOfCamel_And_Snake will @@ -243,3 +219,30 @@ function! s:v_subword(prefer_camel, around) return expr endfunction! + +if g:subwords_include_bindings + onoremap i_ (inner-sub-word-prefer-snake) + vnoremap i_ (inner-sub-word-prefer-snake) + onoremap a_ (around-sub-word-prefer-snaked) + vnoremap a_ (around-sub-word-prefer-snaked) + + onoremap i- (inner-sub-word) + vnoremap i- (inner-sub-word) + onoremap a- (around-sub-word) + vnoremap a- (around-sub-word) + + noremap + (next-subword) + vnoremap + (next-subword) + noremap - (prev-subword) + vnoremap - (prev-subword) + + noremap ; (subwords-replace-;) + noremap , (subwords-replace-,) + vnoremap ; (subwords-replace-;) + vnoremap , (subwords-replace-,) + + noremap t (subwords-replace-t) + noremap T (subwords-replace-T) + noremap f (subwords-replace-f) + noremap F (subwords-replace-F) +endif -- cgit