updated for version 7.0113
diff --git a/runtime/plugin/netrw.vim b/runtime/plugin/netrw.vim
index 0653aab..f1da4b0 100644
--- a/runtime/plugin/netrw.vim
+++ b/runtime/plugin/netrw.vim
@@ -1839,12 +1839,8 @@
" call Dret("NetMakeDir : file<".newdirname."> exists previously")
return
endif
- let netrw_origdir= s:NetGetcwd(1)
- exe 'cd '.b:netrw_curdir
-" call Decho("netrw_origdir<".netrw_origdir."> b:netrw_curdir<".b:netrw_curdir.">")
-" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.newdirname.'"')
- exe "silent! !".g:netrw_local_mkdir.' "'.newdirname.'"'
- if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
+" call Decho("exe silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"')
+ exe "silent! !".g:netrw_local_mkdir.' "'.fullnewdir.'"'
if v:shell_error == 0
" refresh listing
@@ -2008,12 +2004,22 @@
" record and change current directory
let netrw_origdir= s:NetGetcwd(1)
+ try
+ cd -
+ let netrw_altdir= s:NetGetcwd(1)
+ cd -
+ catch
+ let netrw_altdir= ''
+ endtry
exe 'cd '.escape(substitute(a:dirname,'\\','/','ge'),s:netrw_cd_escape)
" call Decho("dirname<".a:dirname."> buf#".bufnr("%")." winnr=".winnr())
" make this buffer modifiable
setlocal ma
+ " disable 'autochdir', it breaks things
+ set noautochdir
+
" ---------------------------
" Perform Directory Listing:
" call Decho("Perform directory listing...")
@@ -2044,7 +2050,12 @@
if a:dirname != "." && line("$") >= 5 && exists("b:netrw_curdir")
if b:netrw_curdir == dirname
" call Dret("LocalBrowse : buffer already exists with info, #".dirnamenr)
- if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
+ if g:netrw_keepdir
+ if netrw_altdir != ''
+ exe 'keepjumps cd '.netrw_altdir
+ endif
+ exe 'keepjumps cd '.netrw_origdir
+ endif
return
endif
endif
@@ -2056,7 +2067,6 @@
if curdir != dirname
" set standard browser options on buffer
setlocal bt=nofile bh=hide nobl noswf
- exe "setlocal ts=".g:netrw_maxfilenamelen
exe 'silent file '.escape(dirname,s:netrw_cd_escape)
" call Decho("errmsg1<".v:errmsg.">")
" call Decho("renamed buffer to<".escape(dirname,s:netrw_cd_escape).">")
@@ -2067,12 +2077,13 @@
silent! enew!
" set standard browser options on buffer
setlocal bt=nofile bh=hide nobl noswf nonu
- exe "setlocal ts=".g:netrw_maxfilenamelen
exe 'silent file '.substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e')
" call Decho("errmsg2<".v:errmsg.">")
" call Decho("renamed buffer to<".substitute(escape(dirname,s:netrw_cd_escape),'[\/]$','','e').">")
" call Decho("yielding actual bufname<".bufname("%").">")
endif
+ exe "setlocal ts=".g:netrw_maxfilenamelen
+
if bufname("#") == "" && bufnr("#") != -1
" the file command produces a lot of [No File] buffers
" call Decho("wiping out nofile buffer#".bufnr("#"))
@@ -2182,7 +2193,12 @@
exe s:netrw_bannercnt
setlocal noma nomod nonu
- if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
+ if g:netrw_keepdir
+ if netrw_altdir != ''
+ exe 'keepjumps cd '.netrw_altdir
+ endif
+ exe 'keepjumps cd '.netrw_origdir
+ endif
" call Dret("LocalBrowse : file<".expand("%:p")."> bufname<".bufname("%").">")
endfun
@@ -2330,8 +2346,6 @@
" preparation for removing multiple files/directories
let ctr = a:firstline
let ret = 0
- let netrw_origdir = s:NetGetcwd(1)
- exe 'cd '.b:netrw_curdir
let all= 0
" remove multiple files and directories
@@ -2423,7 +2437,6 @@
" refresh the directory
let curline= line(".")
- if g:netrw_keepdir | exe 'keepjumps cd '.netrw_origdir | endif
" call Decho("refresh the directory")
call <SID>LocalBrowse(<SID>LocalBrowseChgDir(b:netrw_curdir,'./'))
exe curline