diff options
| author | Teddy Wing | 2015-07-28 00:03:23 -0400 |
|---|---|---|
| committer | Teddy Wing | 2015-07-28 00:03:23 -0400 |
| commit | 5aab2fb74706849d914b23166efb3fa251d96e67 (patch) | |
| tree | 938467968ed10d3e3d53121ed97d77008768d9c3 | |
| parent | db37f84e67f2e20a33348453f6c1d351741f2f1e (diff) | |
| download | auditory.vim-5aab2fb74706849d914b23166efb3fa251d96e67.tar.bz2 | |
autoload/auditory.vim: Restore user mappings when turning off
In `auditory#Unmap()`, after unmapping Auditory maps, remap user-defined
mappings.
Say you redefined `j` -> `gj`. When turning Auditory off, we would
previously just unmap `j`, resulting in `j` -> `j`. Now that we're
restoring user mapppings, `j` once again gets mapped to `gj`.
Also keep track of the mode that Auditory uses for its mappings when
storing a user-defined mapping so that we're only saving and restoring
them if they're defined in the mode used by Auditory.
User mappings get saved in `auditory#AssignMappings()`, or the function
that essentially turns on the plugin.
Fix the `if` condition that checks `if l:user_mapping`. This gave me a
lot of trouble because I needed to match it against emtpy string,
instead of a boolean condition. Use the proper condition to get it
actually working.
| -rw-r--r-- | autoload/auditory.vim | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/autoload/auditory.vim b/autoload/auditory.vim index c590aad..1e5772b 100644 --- a/autoload/auditory.vim +++ b/autoload/auditory.vim @@ -442,6 +442,8 @@ let s:mappings['<c-r>'] = { function! auditory#AssignMappings() for [key, value] in items(s:mappings) + call auditory#StoreUserMapping(key) + " If this an `execute` mapping, add a pipe. " Otherwise <cr> to exit command mode. let l:pipe = match(value.map_to, 'exec') !=# -1 ? ' \| ' : '<cr>' @@ -472,9 +474,11 @@ function! auditory#StoreUserMapping(map_from) if !has_key(s:mappings[a:map_from], 'user_mapping') let l:map_from = has_key(s:mappings[a:map_from], 'map_from') ? \ s:mappings[a:map_from].map_from : a:map_from - let l:user_mapping = maparg(l:map_from) + let l:map_mode = has_key(s:mappings[a:map_from], 'map_command') ? + \ s:mappings[a:map_from].map_command[0] : 'n' + let l:user_mapping = maparg(l:map_from, l:map_mode) - if l:user_mapping + if l:user_mapping !=# '' let s:mappings[a:map_from].user_mapping = l:user_mapping endif endif @@ -484,9 +488,14 @@ endfunction function! auditory#Unmap() for [key, value] in items(s:mappings) let l:cmd = has_key(value, 'map_command') ? value.map_command : 'nnoremap' + let l:user_mapping = get(value, 'user_mapping', '') if l:cmd ==# 'nnoremap' execute 'nunmap ' . key endif + + if l:user_mapping !=# '' + execute l:cmd . ' ' . get(value, 'map_from', key) . ' ' . value.user_mapping + endif endfor endfunction |
