From c3af9fe7691ce2b4db2b6c876eebf7b06e2d6bb1 Mon Sep 17 00:00:00 2001 From: Teddy Wing Date: Sun, 2 Aug 2015 23:46:56 -0400 Subject: autoload/auditory.vim: Extract `map_to` to auditory#AssignMappings Take out the `map_to` field for Auditory's mappings and instead do what it needs to do in `AssignMappings`. Makes the code a bit more DRY. We replace it where necessary with a `count` field that tells whether we should `v:count1` the mapping. --- autoload/auditory.vim | 98 ++++++++++++++++++++++----------------------------- 1 file changed, 43 insertions(+), 55 deletions(-) diff --git a/autoload/auditory.vim b/autoload/auditory.vim index 1e5772b..ed2040c 100644 --- a/autoload/auditory.vim +++ b/autoload/auditory.vim @@ -208,220 +208,201 @@ endfunction let s:mappings = {} let s:mappings['h'] = { \ 'audio': '/Resources/Normal_Mode/Left.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'h'", + \ 'count': 1, \ } let s:mappings['j'] = { \ 'audio': '/Resources/Normal_Mode/Down.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'j'", + \ 'count': 1, \ } let s:mappings['k'] = { \ 'audio': '/Resources/Normal_Mode/Up.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'k'", + \ 'count': 1, \ } let s:mappings['l'] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'l'", + \ 'count': 1, \ } let s:mappings['gj'] = { \ 'audio': '/Resources/Normal_Mode/Down.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'gj'", + \ 'count': 1, \ } let s:mappings['gk'] = { \ 'audio': '/Resources/Normal_Mode/Up.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'gk'", + \ 'count': 1, \ } let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . ''", + \ 'count': 1, \ } " FIXME: allow counts on the delete key let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Left.wav', - \ 'map_to': "", \ } let s:mappings['0'] = { \ 'audio': '/Resources/Normal_Mode/Left.wav', - \ 'map_to': "0", \ } let s:mappings['^'] = { \ 'audio': '/Resources/Normal_Mode/Left.wav', - \ 'map_to': "exec 'normal!' v:count1 . '^'", + \ 'count': 1, \ } let s:mappings['_'] = { \ 'audio': '/Resources/Normal_Mode/Left.wav', - \ 'map_to': "exec 'normal!' v:count1 . '_'", + \ 'count': 1, \ } let s:mappings['$'] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . '$'", + \ 'count': 1, \ } let s:mappings['g_'] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'g_'", + \ 'count': 1, \ } let s:mappings['%'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "%", \ } let s:mappings['b'] = { \ 'audio': '/Resources/Normal_Mode/Left.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'b'", + \ 'count': 1, \ } let s:mappings['w'] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'w'", + \ 'count': 1, \ } let s:mappings['e'] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'e'", + \ 'count': 1, \ } let s:mappings['B'] = { \ 'audio': '/Resources/Normal_Mode/Left.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'B'", + \ 'count': 1, \ } let s:mappings['W'] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'W'", + \ 'count': 1, \ } let s:mappings['E'] = { \ 'audio': '/Resources/Normal_Mode/Right.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'E'", + \ 'count': 1, \ } let s:mappings['p'] = { \ 'audio': '/Resources/Normal_Mode/Paste.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'p'", + \ 'count': 1, \ } let s:mappings['P'] = { \ 'audio': '/Resources/Normal_Mode/Paste.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'P'", + \ 'count': 1, \ } let s:mappings['/'] = { \ 'audio': '/Resources/Normal_Mode/Search.wav', \ 'silent': 0, - \ 'map_to': "/", \ } let s:mappings['n'] = { \ 'audio': '/Resources/Normal_Mode/Search.wav', \ 'silent': 0, - \ 'map_to': "n", \ } let s:mappings['N'] = { \ 'audio': '/Resources/Normal_Mode/Search.wav', \ 'silent': 0, - \ 'map_to': "N", \ } let s:mappings['#'] = { \ 'audio': '/Resources/Normal_Mode/Search.wav', \ 'silent': 0, - \ 'map_to': "#", \ } let s:mappings['*'] = { \ 'audio': '/Resources/Normal_Mode/Search.wav', \ 'silent': 0, - \ 'map_to': "*", \ } let s:mappings['zt'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "zt", \ } let s:mappings['z.'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "z.", \ } let s:mappings['zz'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "zz", \ } let s:mappings['zb'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "zb", \ } " FIXME: Allow these scrolling commands to support counts. Was getting errors constructing them the other way let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "", \ } let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "", \ } let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "", \ } " FIXME: need to press twice in order for it to work let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "", \ } let s:mappings['H'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "H", \ } let s:mappings['M'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "M", \ } let s:mappings['L'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "L", \ } let s:mappings['('] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count1 . '('", + \ 'count': 1, \ } let s:mappings[')'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count1 . ')'", + \ 'count': 1, \ } let s:mappings['{'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count1 . '{'", + \ 'count': 1, \ } let s:mappings['}'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count1 . '}'", + \ 'count': 1, \ } let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count1 . ''", + \ 'count': 1, \ } let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count1 . ''", + \ 'count': 1, \ } let s:mappings['gg'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'gg'", + \ 'count': 1, \ } let s:mappings['G'] = { \ 'audio': '/Resources/Normal_Mode/Jump.wav', - \ 'map_to': "exec 'normal!' v:count . 'G'", + \ 'count': 1, \ } let s:mappings['x'] = { \ 'audio': '/Resources/Normal_Mode/Delete.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'x'", + \ 'count': 1, \ } let s:mappings['v_x'] = { \ 'audio': '/Resources/Normal_Mode/Delete.wav', \ 'map_command': 'vnoremap', \ 'map_from': 'x', - \ 'map_to': "exec 'normal!' v:count1 . 'x'", + \ 'count': 1, \ } " nnoremap d :call auditory#Play('/Resources/Normal_Mode/Delete.wav') \| exec 'normal!' v:count1 . 'd' " nnoremap d :set opfunc=d \| call auditory#Play('/Resources/Normal_Mode/Delete.wav') \| exec 'normal!' v:count1 . @g @@ -431,29 +412,35 @@ let s:mappings['v_x'] = { let s:mappings['u'] = { \ 'audio': '/Resources/Normal_Mode/Undo.wav', - \ 'map_to': "exec 'normal!' v:count1 . 'u'", + \ 'count': 1, \ } " Note: redo doesn't currently support a count because the `v:count1` was giving me an error let s:mappings[''] = { \ 'audio': '/Resources/Normal_Mode/Redo.wav', - \ 'map_to': "", \ } function! auditory#AssignMappings() for [key, value] in items(s:mappings) call auditory#StoreUserMapping(key) - " If this an `execute` mapping, add a pipe. - " Otherwise to exit command mode. - let l:pipe = match(value.map_to, 'exec') !=# -1 ? ' \| ' : '' - " Default to nnoremap let l:cmd = has_key(value, 'map_command') ? value.map_command : 'nnoremap' " If `map_from` is specified, we can't rely on `key` to provide it let l:map_from = has_key(value, 'map_from') ? value.map_from : key + " Map to the same key unless a `map_to` is defined + let l:map_to = has_key(value, 'map_to') ? value.map_to : key + + let l:map_to_with_count = has_key(value, 'count') ? + \ "execute 'normal!' v:count1 . '" . l:map_to . "'" : + \ l:map_to + + " If this an `execute` mapping, add a pipe. + " Otherwise to exit command mode. + let l:pipe = match(l:map_to_with_count , 'exec') !=# -1 ? ' \| ' : '' + " Default to unless the mapping explicitly calls for a value let l:silence = '' if has_key(value, 'silent') @@ -462,7 +449,8 @@ function! auditory#AssignMappings() execute l:cmd . ' ' . l:silence . ' ' . l:map_from . \ ' :call auditory#Play("' . value.audio . '")' . - \ l:pipe . value.map_to + \ l:pipe . + \ l:map_to_with_count endfor endfunction -- cgit v1.2.3