aboutsummaryrefslogtreecommitdiffstats
path: root/autoload
diff options
context:
space:
mode:
authorTeddy Wing2014-11-09 12:14:44 -0500
committerTeddy Wing2014-11-09 12:14:44 -0500
commit723053afd9e28b6e43e6461438ca305f9966f410 (patch)
tree4602aae5cc8ab226ad9a64f172470de1abfaaa9b /autoload
parent71bda7ca55622fcf1b938e5255a64e9f714829e8 (diff)
downloadauditory.vim-723053afd9e28b6e43e6461438ca305f9966f410.tar.bz2
autoload/auditory.vim: Add custom `d` operator
Create a custom delete operator that plays the delete sound. NOTES: * Doesn't do `dd` * I just looked at the tcomment plugin source and realised that I should be using plugin mappings so these can be more easily overridden. Make a note to look into that.
Diffstat (limited to 'autoload')
-rw-r--r--autoload/auditory.vim27
1 files changed, 27 insertions, 0 deletions
diff --git a/autoload/auditory.vim b/autoload/auditory.vim
index 8886ed2..cec02df 100644
--- a/autoload/auditory.vim
+++ b/autoload/auditory.vim
@@ -158,6 +158,33 @@ function! auditory#ToggleGalaxyFarFarAway()
endfunction
+" Operators
+" =========
+nnoremap <silent> d :set opfunc=<SID>Delete<CR>g@
+vnoremap <silent> d :<C-U>call <SID>Delete(visualmode(), 1)<CR>
+
+function! s:Delete(type, ...)
+ let sel_save = &selection
+ let &selection = "inclusive"
+ let reg_save = @@
+
+ call auditory#Play('/Resources/Normal_Mode/Delete.wav')
+
+ if a:0 " Invoked from Visual mode, use '< and '> marks.
+ silent exe "normal! `<" . a:type . "`>d"
+ elseif a:type == 'line'
+ silent exe "normal! '[V']d"
+ elseif a:type == 'block'
+ silent exe "normal! `[\<C-V>`]d"
+ else
+ silent exe "normal! `[v`]d"
+ endif
+
+ let &selection = sel_save
+ let @@ = reg_save
+endfunction
+
+
" Normal mode
" ===========