Added ykutw plugin.
authorIain Patterson <me@iain.cx>
Fri, 12 Feb 2016 15:14:05 +0000 (15:14 +0000)
committerIain Patterson <me@iain.cx>
Tue, 16 Feb 2016 13:55:09 +0000 (13:55 +0000)
.vim/doc/ykutw.txt [new file with mode: 0644]
.vim/plugin/ykutw.vim [new file with mode: 0644]

diff --git a/.vim/doc/ykutw.txt b/.vim/doc/ykutw.txt
new file mode 100644 (file)
index 0000000..ccfab30
--- /dev/null
@@ -0,0 +1,23 @@
+*ykutw.txt* Make cw consistent with dw, yw, et al
+
+               YOU KEEP USING THAT WORD  by Aristotle Pagaltzis
+
+                                                    *you-keep-using-that-word*
+This plugin removes the |cw| special exception for word motion. It does not do
+anything else, and it has no configuration options.
+
+
+==============================================================================
+1. Details of operation                                 *ykutw-=* *ykutw-details*
+
+This plugin adds a new motion "=" which always works just like "|w|", and then
+redirects any use of the "|w|" motion with the "|c|" command to use this new "="
+motion instead.
+
+
+==============================================================================
+2. Source                                                        *ykutw-source*
+
+https://github.com/ap/vim-you-keep-using-that-word
+
+vim:tw=78:et:ft=help:norl:
diff --git a/.vim/plugin/ykutw.vim b/.vim/plugin/ykutw.vim
new file mode 100644 (file)
index 0000000..d2aecee
--- /dev/null
@@ -0,0 +1,56 @@
+" Vim global plugin for making cw consistent with dw, yw, et al
+" Licence:     The MIT License (MIT)
+" {{{ Copyright (c) 2014 Aristotle Pagaltzis <pagaltzis@gmx.de>
+" 
+" Permission is hereby granted, free of charge, to any person obtaining a copy
+" of this software and associated documentation files (the "Software"), to deal
+" in the Software without restriction, including without limitation the rights
+" to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+" copies of the Software, and to permit persons to whom the Software is
+" furnished to do so, subject to the following conditions:
+" 
+" The above copyright notice and this permission notice shall be included in
+" all copies or substantial portions of the Software.
+" 
+" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+" IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+" FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+" AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+" LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+" OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+" THE SOFTWARE.
+" }}}
+
+if exists('g:loaded_ykutw') || v:version < 700 | finish | endif
+let g:loaded_ykutw = 1
+
+function s:DoWordMotion(wordmotion, endmotion)
+       let before = line('.')
+       execute 'normal! v'.v:count1.a:wordmotion
+
+       " when the cursor wraps, we must check whether it went too far
+       if line('.') != before
+               " try backing up to the end of the previous word
+               " and then see if we stay on the same line
+               let target = winsaveview()
+               let before = line('.')
+               exe 'normal! g'.a:endmotion
+               if line('.') != before
+                       " we are now at the end of the word at the end of previous line,
+                       " which is exactly where we want to be
+                       return
+               else
+                       " we were (almost) in the right place, so go back there
+                       call winrestview(target)
+               endif
+       endif
+
+       " visual selections are inclusive; to avoid erasing the first char
+       " of the following word, we must back off one column
+       execute 'normal! h'
+endfunction
+
+onoremap w :<C-U>call <SID>DoWordMotion('w','e')<CR>
+onoremap W :<C-U>call <SID>DoWordMotion('W','E')<CR>
+
+" vim: fdm=marker fmr={{{,}}}