aboutsummaryrefslogtreecommitdiffstats
path: root/autoload
diff options
context:
space:
mode:
authorTeddy Wing2015-07-18 20:06:26 -0400
committerTeddy Wing2015-07-18 20:06:26 -0400
commit3fccfd9723b6af2c174cd073b3a0324a85611f11 (patch)
treec896232aae3cf9ca4a8d392ccac649c794b9e8cc /autoload
parenta037e921a4b9b0539c93450fe3df1f6c8175ceab (diff)
downloadauditory.vim-3fccfd9723b6af2c174cd073b3a0324a85611f11.tar.bz2
autoload/auditory.vim: Make dictionary of mappings
Create a dictionary with all our mappings. We'll use this to activate them programmatically. I think it might also be interesting to provide this as a configurable variable within the plugin so that users can change the built-in mappings if they so choose. Note that this doesn't currently work because you can't have comments in dictionary literals in Vimscript. Thanks to Raimondi on #vim for confirming that for me after I played around with this. Also thanks to bairui/dahu for his suggestion for emulating comments in dict literals: https://gist.github.com/dahu/18b48c70444d8078f7d7 " Barry Arthur, July 2015 " Kludge emulating comments in dict literals " :-0 surprised?! function! StripComments(comment_leader, dict) return filter(a:dict, 'v:key !~ "^" . escape(a:comment_leader, "\"")') endfunction let x = StripComments('REM', { \ 'a' : 1 \, 'REM This is a nasty workaround mimicking comments in dict literals' :-0 \, 'b' : 2 \, 'REM Duplicate keys are not tolerated within dict literals, hence the numbered comment keys' :-0 \, 'c' : 3 \, 'REM For the younger audience members, REM stands for "remark" and was the comment leader in BASIC' :-0 \, 'd' : 4 \})
Diffstat (limited to 'autoload')
-rw-r--r--autoload/auditory.vim239
1 files changed, 239 insertions, 0 deletions
diff --git a/autoload/auditory.vim b/autoload/auditory.vim
index 1c27485..b0e8210 100644
--- a/autoload/auditory.vim
+++ b/autoload/auditory.vim
@@ -205,6 +205,245 @@ endfunction
" Normal mode
" ===========
+let s:mappings = {
+ \ 'h': {
+ \ 'audio': '/Resources/Normal_Mode/Left.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'h'<cr>",
+ \ },
+ \ 'j': {
+ \ 'audio': '/Resources/Normal_Mode/Down.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'j'<cr>",
+ \ },
+ \ 'k': {
+ \ 'audio': '/Resources/Normal_Mode/Up.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'k'<cr>",
+ \ },
+ \ 'l': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'l'<cr>",
+ \ },
+ \
+ \ 'gj': {
+ \ 'audio': '/Resources/Normal_Mode/Down.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'gj'<cr>",
+ \ },
+ \ 'gk': {
+ \ 'audio': '/Resources/Normal_Mode/Up.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'gk'<cr>",
+ \ },
+ \
+ \ '<space>': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '<space>'<cr>",
+ \ },
+ \
+ \ " FIXME: allow counts on the delete key
+ \ '<bs>': {
+ \ 'audio': '/Resources/Normal_Mode/Left.wav',
+ \ 'map_to': "<bs>",
+ \ },
+ \
+ \ '0': {
+ \ 'audio': '/Resources/Normal_Mode/Left.wav',
+ \ 'map_to': "0",
+ \ },
+ \ '^': {
+ \ 'audio': '/Resources/Normal_Mode/Left.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '^'<cr>",
+ \ },
+ \ '_': {
+ \ 'audio': '/Resources/Normal_Mode/Left.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '_'<cr>",
+ \ },
+ \ '$': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '$'<cr>",
+ \ },
+ \ 'g_': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'g_'<cr>",
+ \ },
+ \ '%': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "%",
+ \ },
+ \
+ \ 'b': {
+ \ 'audio': '/Resources/Normal_Mode/Left.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'b'<cr>",
+ \ },
+ \ 'w': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'w'<cr>",
+ \ },
+ \ 'e': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'e'<cr>",
+ \ },
+ \ 'B': {
+ \ 'audio': '/Resources/Normal_Mode/Left.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'B'<cr>",
+ \ },
+ \ 'W': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'W'<cr>",
+ \ },
+ \ 'E': {
+ \ 'audio': '/Resources/Normal_Mode/Right.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'E'<cr>",
+ \ },
+ \
+ \ 'p': {
+ \ 'audio': '/Resources/Normal_Mode/Paste.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'p'<cr>",
+ \ },
+ \ 'P': {
+ \ 'audio': '/Resources/Normal_Mode/Paste.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'P'<cr>",
+ \ },
+ \
+ \ '/': {
+ \ 'audio': '/Resources/Normal_Mode/Search.wav',
+ \ 'map_to': "/",
+ \ },
+ \ 'n': {
+ \ 'audio': '/Resources/Normal_Mode/Search.wav',
+ \ 'map_to': "n",
+ \ },
+ \ 'N': {
+ \ 'audio': '/Resources/Normal_Mode/Search.wav',
+ \ 'map_to': "N",
+ \ },
+ \ '#': {
+ \ 'audio': '/Resources/Normal_Mode/Search.wav',
+ \ 'map_to': "#",
+ \ },
+ \ '*': {
+ \ 'audio': '/Resources/Normal_Mode/Search.wav',
+ \ 'map_to': "*",
+ \ },
+ \
+ \ 'zt': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "zt",
+ \ },
+ \ 'z.': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "z.",
+ \ },
+ \ 'zz': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "zz",
+ \ },
+ \ '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
+ \ '<c-d>': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "<c-d>",
+ \ },
+ \ '<c-u>': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "<c-u>",
+ \ },
+ \ '<c-f>': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "<c-f>",
+ \ },
+ \
+ \ " FIXME: need to press <c-b> twice in order for it to work
+ \ '<c-b>': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "<c-b>",
+ \ },
+ \
+ \ 'H': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "H",
+ \ },
+ \ 'M': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "M",
+ \ },
+ \ 'L': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "L",
+ \ },
+ \
+ \ '(': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '('<cr>",
+ \ },
+ \ ')': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . ')'<cr>",
+ \ },
+ \ '{': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '{'<cr>",
+ \ },
+ \ '}': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '}'<cr>",
+ \ },
+ \
+ \ '<c-i>': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '<c-i>'<cr>",
+ \ },
+ \ '<c-o>': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . '<c-o>'<cr>",
+ \ },
+ \
+ \ 'gg': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'gg'<cr>",
+ \ },
+ \ 'G': {
+ \ 'audio': '/Resources/Normal_Mode/Jump.wav',
+ \ 'map_to': "exec 'normal!' v:count . 'G'<cr>",
+ \ },
+ \
+ \ 'x': {
+ \ 'audio': '/Resources/Normal_Mode/Delete.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'x'<cr>",
+ \ },
+ \ 'x': {
+ \ 'audio': '/Resources/Normal_Mode/Delete.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'x'<cr>",
+ \ },
+ \ " nnoremap <silent> d :<c-u>call auditory#Play('/Resources/Normal_Mode/Delete.wav') \| exec 'normal!' v:count1 . 'd'<cr>
+ \ " nnoremap <silent> d :<c-u>set opfunc=d \| call auditory#Play('/Resources/Normal_Mode/Delete.wav') \| exec 'normal!' v:count1 . @g<cr>
+ \
+ \ " inoremap <silent> <c-p> <esc>:<c-u>call auditory#Play('/Resources/auto_complete.wav')<cr>a<c-p><c-p>
+ \ " inoremap <silent> <c-n> <esc>:<c-u>call auditory#Play('/Resources/auto_complete.wav')<cr>a<c-n><c-n>
+ \
+ \ 'u': {
+ \ 'audio': '/Resources/Normal_Mode/Undo.wav',
+ \ 'map_to': "exec 'normal!' v:count1 . 'u'<cr>",
+ \ },
+ \
+ \ " Note: redo doesn't currently support a count because the `v:count1` was giving me an error
+ \ '<c-r>': {
+ \ 'audio': '/Resources/Normal_Mode/Redo.wav',
+ \ 'map_to': "<c-r>",
+ \ },
+\ }
+
+function! auditory#AssignNormalModeMappings()
+ for [key, value] in items(s:mappings)
+ let l:pipe = ''
+ if match(value, 'exec') !=# -1
+ let l:pipe = ' \| '
+ endif
+ echom 'nmap <silent> ' . key . ' :<c-u>call auditory#Play("' . value.audio . '")' . l:pipe . value.map_to
+ endfor
+endfunction
+
function! auditory#NormalModeMappings()
nnoremap <silent> h :<c-u>call auditory#Play('/Resources/Normal_Mode/Left.wav') \| exec 'normal!' v:count1 . 'h'<cr>
nnoremap <silent> j :<c-u>call auditory#Play('/Resources/Normal_Mode/Down.wav') \| exec 'normal!' v:count1 . 'j'<cr>