]> git.zndr.dk Git - dotfiles.git/commitdiff
Forgot file
authorJannik ZANDER <jannikz@gmail.com>
Mon, 23 Jul 2018 17:54:19 +0000 (19:54 +0200)
committerJannik ZANDER <jannikz@gmail.com>
Wed, 25 Jul 2018 09:17:45 +0000 (11:17 +0200)
.vim/pack/jaza/start/mappings/plugin/DisableNonCountedBasicMotions.vim [new file with mode: 0644]

diff --git a/.vim/pack/jaza/start/mappings/plugin/DisableNonCountedBasicMotions.vim b/.vim/pack/jaza/start/mappings/plugin/DisableNonCountedBasicMotions.vim
new file mode 100644 (file)
index 0000000..a73f033
--- /dev/null
@@ -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 <expr> <silent> " . 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