aboutsummaryrefslogtreecommitdiff
path: root/autoload/diff/prune.vim
diff options
context:
space:
mode:
Diffstat (limited to 'autoload/diff/prune.vim')
-rw-r--r--autoload/diff/prune.vim17
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