patch 9.2.0037: netrw: need better tests for absolute paths
Commit:
https://github.com/vim/vim/commit/bd1dc5b1a652e9f2ba45e3695ea2d83e81992c88
Author: Miguel Barro <
miguel...@live.com>
Date: Sat Feb 21 10:23:36 2026 +0000
patch 9.2.0037: netrw: need better tests for absolute paths
Problem: netrw: need better tests for absolute paths
Solution: Use absolutepath(), instead of regex test (Miguel Barro).
closes: #19477
Signed-off-by: Guybrush <
miguel...@live.com>
Signed-off-by: Christian Brabandt <
c...@256bit.org>
diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw.vim b/runtime/pack/dist/opt/netrw/autoload/netrw.vim
index 4f0d7b3b5..51e05f2b1 100644
--- a/runtime/pack/dist/opt/netrw/autoload/netrw.vim
+++ b/runtime/pack/dist/opt/netrw/autoload/netrw.vim
@@ -19,6 +19,7 @@
" 2025 Dec 26 by Vim Project fix use of g:netrw_cygwin #19015
" 2026 Jan 19 by Vim Project do not create swapfiles #18854
" 2026 Feb 15 by Vim Project fix global variable initialization for MS-Windows #19287
+" 2026 Feb 21 by Vim Project better absolute path detection on MS-Windows #19477
" Copyright: Copyright (C) 2016 Charles E. Campbell {{{1
" Permission is hereby granted to use and distribute this code,
" with or without modifications, provided that this copyright
@@ -3239,7 +3240,7 @@ function s:NetrwFile(fname)
endif
if !g:netrw_cygwin && has("win32")
- if fname =~ '^\' || fname =~ '^ :\'
+ if isabsolutepath(fname)
" windows, but full path given
let ret= fname
else
diff --git a/src/testdir/test_plugin_netrw.vim b/src/testdir/test_plugin_netrw.vim
index 09109b471..23a060227 100644
--- a/src/testdir/test_plugin_netrw.vim
+++ b/src/testdir/test_plugin_netrw.vim
@@ -113,7 +113,6 @@ function Test_NetrwMarkFileCopy_SameDir(dir = $HOME, symlink = 0) abort
endif
endfunction
-
" Test file copy operations via s:NetrwMarkFileMove()
function Test_NetrwMarkFileMove(source_dir, target_dir, marked_files) abort
" set up
@@ -128,6 +127,12 @@ function Test_NetrwMarkFileMove(source_dir, target_dir, marked_files) abort
bw
endfunction
+" Test how netrw fixes paths according with settings
+" (g:netrw_keepdir, g:netrw_cygwin, tree style ...)
+function Test_NetrwFile(fname) abort
+ return s:NetrwFile(a:fname)
+endfunction
+
" }}}
END
@@ -303,6 +308,30 @@ func Test_netrw_wipe_empty_buffer_fastpath()
unlet! netrw_fastbrowse
endfunction
+" Test UNC paths on windows
+func Test_netrw_check_UNC_paths()
+ CheckMSWindows
+
+ let test_paths = [
+ \ '\Server2\Share\Test\Foo.txt',
+ \ '//Server2/Share/Test/Foo.txt',
+ \ '\Server2\Share\Test\',
+ \ '//Server2/Share/Test/',
+ \ '\wsl.localhost\Ubuntu\home\user\_vimrc',
+ \ '//wsl.localhost/Ubuntu/home/user/_vimrc',
+ \ '\wsl.localhost\Ubuntu\home\user',
+ \ '//wsl.localhost/Ubuntu/home/user']
+
+ " The paths must be interpreted as absolute ones
+ for path in test_paths
+ call assert_equal(
+ \ path,
+ \ Test_NetrwFile(path),
+ \ $"UNC path: {path} missinterpreted")
+ endfor
+
+endfunction
+
" ---------------------------------
" Testing file management functions
" ---------------------------------
diff --git a/src/version.c b/src/version.c
index d38a46661..0ced1173e 100644
--- a/src/version.c
+++ b/src/version.c
@@ -734,6 +734,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
+/**/
+ 37,
/**/
36,
/**/