From: Jannik ZANDER Date: Mon, 23 Jul 2018 17:54:19 +0000 (+0200) Subject: Forgot file X-Git-Url: https://git.zndr.dk/?a=commitdiff_plain;h=b90ac25d568f1ca38a7885b4b93080faa0bbf1ed;p=dotfiles.git Forgot file --- diff --git a/.vim/pack/jaza/start/mappings/plugin/DisableNonCountedBasicMotions.vim b/.vim/pack/jaza/start/mappings/plugin/DisableNonCountedBasicMotions.vim new file mode 100644 index 0000000..a73f033 --- /dev/null +++ b/.vim/pack/jaza/start/mappings/plugin/DisableNonCountedBasicMotions.vim @@ -0,0 +1,80 @@ +" Notes: +" (1) To enhance the ergonomics of this sufficiently to make it practical, at +" least, until your brain grows a new lobe dedicated to counting line offsets +" in the background while you work, you should either make sure you have +" something like the following in your `~/.vimrc`: +" +" set number +" if has('autocmd') +" augroup vimrc_linenumbering +" autocmd! +" autocmd WinLeave * +" \ if &number | +" \ set norelativenumber | +" \ endif +" autocmd BufWinEnter * +" \ if &number | +" \ set relativenumber | +" \ endif +" autocmd VimEnter * +" \ if &number | +" \ set relativenumber | +" \ endif +" augroup END +" endif +" +" or you have installed a plugin like +" (vim-numbers)[https://github.com/myusuf3/numbers.vim]. +" +" (2) You might want to relax the constraint for horizontal motions, or +" add other motions. You can customize the list of motions by +" specifying the keys in the +" `g:keys_to_disable_if_not_preceded_by_count` variable. For example, +" the following only enforces count-prefixed motions for "j" and "k": +" +" let g:keys_to_disable_if_not_preceded_by_count = ["j", "k"] + +function! DisableIfNonCounted(move) range + if v:count + return a:move + else + " You can make this do something annoying like: + " echoerr "Count required!" + " sleep 2 + return "" + endif +endfunction + +function! SetDisablingOfBasicMotionsIfNonCounted(on) + let keys_to_disable = get(g:, "keys_to_disable_if_not_preceded_by_count", ["j", "k", "l", "h"]) + if a:on + for key in keys_to_disable + execute "noremap " . key . " DisableIfNonCounted('" . key . "')" + endfor + let g:keys_to_disable_if_not_preceded_by_count = keys_to_disable + let g:is_non_counted_basic_motions_disabled = 1 + else + for key in keys_to_disable + try + execute "unmap " . key + catch /E31:/ + endtry + endfor + let g:is_non_counted_basic_motions_disabled = 0 + endif +endfunction + +function! ToggleDisablingOfBasicMotionsIfNonCounted() + let is_disabled = get(g:, "is_non_counted_basic_motions_disabled", 0) + if is_disabled + call SetDisablingOfBasicMotionsIfNonCounted(0) + else + call SetDisablingOfBasicMotionsIfNonCounted(1) + endif +endfunction + +command! ToggleDisablingOfNonCountedBasicMotions :call ToggleDisablingOfBasicMotionsIfNonCounted() +command! DisableNonCountedBasicMotions :call SetDisablingOfBasicMotionsIfNonCounted(1) +command! EnableNonCountedBasicMotions :call SetDisablingOfBasicMotionsIfNonCounted(0) + +DisableNonCountedBasicMotions \ No newline at end of file