Forráskód Böngészése

Add option to delete buffer with unsaved changes

Igor Prusov 7 éve
szülő
commit
a2db219515
1 módosított fájl, 11 hozzáadás és 3 törlés
  1. 11 3
      plugin/bufexplorer.vim

+ 11 - 3
plugin/bufexplorer.vim

@@ -526,6 +526,7 @@ function! s:MapKeys()
     nnoremap <script> <silent> <nowait> <buffer> u             :call <SID>ToggleShowUnlisted()<CR>
     nnoremap <script> <silent> <nowait> <buffer> v             :call <SID>SelectBuffer("split", "vr")<CR>
     nnoremap <script> <silent> <nowait> <buffer> V             :call <SID>SelectBuffer("split", "vl")<CR>
+    nnoremap <script> <silent> <nowait> <buffer> x             :call <SID>RemoveBuffer("force_delete")<CR>
 
     for k in ["G", "n", "N", "L", "M", "H"]
         execute "nnoremap <buffer> <silent>" k ":keepjumps normal!" k."<CR>"
@@ -648,6 +649,7 @@ function! s:CreateHelp()
         call add(header, '" u : toggle showing unlisted buffers')
         call add(header, '" V : open buffer in another window on the left of the current')
         call add(header, '" v : open buffer in another window on the right of the current')
+        call add(header, '" x : delete buffer without saving changes')
     else
         call add(header, '" Press <F1> for Help')
     endif
@@ -964,8 +966,12 @@ function! s:RemoveBuffer(mode)
     let _bufNbr = str2nr(getline('.'))
 
     if getbufvar(_bufNbr, '&modified') == 1
-        call s:Error("Sorry, no write since last change for buffer "._bufNbr.", unable to delete")
-        return
+
+        if a:mode != "force_delete"
+	    call s:Error("Sorry, no write since last change for buffer "._bufNbr.", unable to delete")
+	    return
+	endif
+        call s:DeleteBuffer(_bufNbr, a:mode)
     else
         " Okay, everything is good, delete or wipe the buffer.
         call s:DeleteBuffer(_bufNbr, a:mode)
@@ -985,7 +991,9 @@ function! s:DeleteBuffer(buf, mode)
         " Wipe/Delete buffer from Vim.
         if a:mode == "wipe"
             execute "silent bwipe" a:buf
-        else
+        elseif a:mode == "force_delete"
+            execute "silent bdelete!" a:buf
+	else
             execute "silent bdelete" a:buf
         endif