diff options
Diffstat (limited to 'autoload/diff/prune.vim')
-rw-r--r-- | autoload/diff/prune.vim | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/autoload/diff/prune.vim b/autoload/diff/prune.vim new file mode 100644 index 0000000..cb4f410 --- /dev/null +++ b/autoload/diff/prune.vim @@ -0,0 +1,17 @@ +" Undo some diff lines +function diff#prune#Prune(type) abort + + " Choose appropriate line ranges depending on mode + if a:type =~# "^[vV\<C-V>]$" + let l:range = '''<,''>' + else + let l:range = '''[,'']' + endif + + " Reinstate removals and remove addenda; preserve search pattern + let l:search_save = @/ + silent execute l:range.'substitute/^-/ /e' + silent execute l:range.'global/^+/d' + let @/ = l:search_save + +endfunction |