]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(netrw): prevent accidental data loss
authorChristian Brabandt <cb@256bit.org>
Tue, 4 Jun 2024 16:15:57 +0000 (18:15 +0200)
committerChristian Brabandt <cb@256bit.org>
Tue, 4 Jun 2024 16:18:16 +0000 (18:18 +0200)
fixes: #14915

Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/autoload/netrw.vim

index a9c88f0398e9a00a5607aa5f37617e6b0fe8584d..300729eba8d8fb4e56f6f1ec2d9c4f4a3cb03e34 100644 (file)
@@ -13,6 +13,7 @@
 "   2024 May 09 by Vim Project: remove hard-coded private.ppk
 "   2024 May 10 by Vim Project: recursively delete directories by default
 "   2024 May 13 by Vim Project: prefer scp over pscp
+"   2024 Jun 04 by Vim Project: set bufhidden if buffer changed, nohidden is set and buffer shall be switched (#14915)
 " Former Maintainer:   Charles E Campbell
 " GetLatestVimScripts: 1075 1 :AutoInstall: netrw.vim
 " Copyright:    Copyright (C) 2016 Charles E. Campbell {{{1
@@ -5724,6 +5725,9 @@ fun! s:NetrwEditFile(cmd,opt,fname)
    exe "NetrwKeepj keepalt ".a:opt." ".a:cmd." ".fnameescape(a:fname)
   else
 "   call Decho("exe NetrwKeepj ".a:opt." ".a:cmd." ".fnameescape(a:fname))
+    if a:cmd =~# 'e\%[new]!' && !&hidden && getbufvar(bufname('%'), '&modified', 0)
+      call setbufvar(bufname('%'), '&bufhidden', 'hide')
+    endif
    exe "NetrwKeepj ".a:opt." ".a:cmd." ".fnameescape(a:fname)
   endif
 "  call Dret("s:NetrwEditFile")