neovim

Neovim text editor
git clone https://git.dasho.dev/neovim.git
Log | Files | Refs | README

commit bfcf5666cc83f1d87fe62ef371ff02e2bbd04bd4
parent 6ab0876f51e8ff5debdff03b36508fe7279032b7
Author: Christian Clason <c.clason@uni-graz.at>
Date:   Thu, 29 Feb 2024 18:02:29 +0100

vim-patch:56b7da3c051f

runtime(netrw): handle file/dir symlinks specifically in tree mode

fixes: vim/vim#2386
related: vim/vim#3609

https://github.com/vim/vim/commit/56b7da3c051fe1a5fd76534998c17b22d83c0899

Co-authored-by: Christian Brabandt <cb@256bit.org>

Diffstat:
Mruntime/autoload/netrw.vim | 14++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)

diff --git a/runtime/autoload/netrw.vim b/runtime/autoload/netrw.vim @@ -9376,7 +9376,7 @@ fun! s:NetrwTreeDir(islocal) " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) elseif curline =~ '@$' " call Decho("handle symbolic link from current line",'~'.expand("<slnum>")) - let treedir= resolve(substitute(substitute(getline('.'),'@.*$','','e'),'^|*\s*','','e')) + let potentialdir= resolve(substitute(substitute(getline('.'),'@.*$','','e'),'^|*\s*','','e')) " call Decho("treedir<".treedir.">",'~'.expand("<slnum>")) else " call Decho("do not extract tree subdirectory from current line and set treedir to empty",'~'.expand("<slnum>")) @@ -9401,7 +9401,6 @@ fun! s:NetrwTreeDir(islocal) " call Decho("COMBAK#23 : mod=".&mod." win#".winnr()) " call Decho("islocal=".a:islocal." curline<".curline.">",'~'.expand("<slnum>")) - let potentialdir= s:NetrwFile(substitute(curline,'^'.s:treedepthstring.'\+ \(.*\)@$','\1','')) " call Decho("potentialdir<".potentialdir."> isdir=".isdirectory(potentialdir),'~'.expand("<slnum>")) " call Decho("COMBAK#24 : mod=".&mod." win#".winnr()) @@ -9414,8 +9413,15 @@ fun! s:NetrwTreeDir(islocal) " " call Decho("newdir <".newdir.">",'~'.expand("<slnum>")) " else " call Decho("apply NetrwTreePath to treetop<".w:netrw_treetop.">",'~'.expand("<slnum>")) - let treedir = s:NetrwTreePath(w:netrw_treetop) -" endif + if a:islocal && curline =~ '@$' + if isdirectory(s:NetrwFile(potentialdir)) + let treedir = w:netrw_treetop.'/'.potentialdir.'/' + let w:netrw_treetop = treedir + endif + else + let potentialdir= s:NetrwFile(substitute(curline,'^'.s:treedepthstring.'\+ \(.*\)@$','\1','')) + let treedir = s:NetrwTreePath(w:netrw_treetop) + endif endif " call Decho("COMBAK#25 : mod=".&mod." win#".winnr())