Skip to content

Commit

Permalink
Merge pull request #550 from lukedomanski/3.0
Browse files Browse the repository at this point in the history
Fixing d$ not deleting last character of the line after wrap relative motion code was replaced
  • Loading branch information
spf13 committed Feb 5, 2014
2 parents ce0d5ce + 4122da2 commit ebd410b
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 26 deletions.
63 changes: 37 additions & 26 deletions .vimrc
Original file line number Diff line number Diff line change
Expand Up @@ -263,33 +263,44 @@
noremap j gj
noremap k gk
" Same for 0, home, end, etc
function! WrapRelativeMotion(key, ...)
let vis_sel=""
if a:0
let vis_sel="gv"
endif
if &wrap
execute "normal!" vis_sel . "g" . a:key
else
execute "normal!" vis_sel . a:key
endif
endfunction
" End/Start of line motion keys act relative to row/wrap width in the
" presence of `:set wrap`, and relative to line for `:set nowrap`.
" Default vim behaviour is to act relative to text line in both cases
" If you prefer the default behaviour, add the following to your
" .vimrc.before.local file:
" let g:spf13_no_wrapRelMotion = 1
if !exists('g:spf13_no_wrapRelMotion')
" Same for 0, home, end, etc
function! WrapRelativeMotion(key, ...)
let vis_sel=""
if a:0
let vis_sel="gv"
endif
if &wrap
execute "normal!" vis_sel . "g" . a:key
else
execute "normal!" vis_sel . a:key
endif
endfunction

" Map g* keys in Normal, Operator-pending, and Visual+select (over written
" below) modes
noremap $ :call WrapRelativeMotion("$")<CR>
noremap <End> :call WrapRelativeMotion("$")<CR>
noremap 0 :call WrapRelativeMotion("0")<CR>
noremap <Home> :call WrapRelativeMotion("0")<CR>
noremap ^ :call WrapRelativeMotion("^")<CR>
" Over write the Visual+Select mode mappings to ensure correct mode is
" passed to WrapRelativeMotion
vnoremap $ :<C-U>call WrapRelativeMotion("$", 1)<CR>
vnoremap <End> :<C-U>call WrapRelativeMotion("$", 1)<CR>
vnoremap 0 :<C-U>call WrapRelativeMotion("0", 1)<CR>
vnoremap <Home> :<C-U>call WrapRelativeMotion("0", 1)<CR>
vnoremap ^ :<C-U>call WrapRelativeMotion("^", 1)<CR>
" Map g* keys in Normal, Operator-pending, and Visual+select
noremap $ :call WrapRelativeMotion("$")<CR>
noremap <End> :call WrapRelativeMotion("$")<CR>
noremap 0 :call WrapRelativeMotion("0")<CR>
noremap <Home> :call WrapRelativeMotion("0")<CR>
noremap ^ :call WrapRelativeMotion("^")<CR>
" Overwrite the operator pending $/<End> mappings from above
" to force inclusive motion with :execute normal!
onoremap $ v:call WrapRelativeMotion("$")<CR>
onoremap <End> v:call WrapRelativeMotion("$")<CR>
" Overwrite the Visual+select mode mappings from above
" to ensure the correct vis_sel flag is passed to function
vnoremap $ :<C-U>call WrapRelativeMotion("$", 1)<CR>
vnoremap <End> :<C-U>call WrapRelativeMotion("$", 1)<CR>
vnoremap 0 :<C-U>call WrapRelativeMotion("0", 1)<CR>
vnoremap <Home> :<C-U>call WrapRelativeMotion("0", 1)<CR>
vnoremap ^ :<C-U>call WrapRelativeMotion("^", 1)<CR>
endif

" The following two lines conflict with moving to top and
" bottom of the screen
Expand Down
3 changes: 3 additions & 0 deletions .vimrc.before
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,9 @@
" Disable easier moving in tabs and windows
" let g:spf13_no_easyWindows = 1

" Disable wrap relative motion for start/end line motions
" let g:spf13_no_wrapRelMotion = 1

" Disable fast tab navigation
" let g:spf13_no_fastTabs = 1

Expand Down

0 comments on commit ebd410b

Please sign in to comment.