runtime(netrw): upstream snapshot of v177

Commit: 
https://github.com/vim/vim/commit/73d8222b31be47d274e2a194e3dde25088c6bb69
Author: Luca Saccarola <github.e4...@aleeas.com>
Date:   Fri Feb 14 17:54:22 2025 +0100

    runtime(netrw): upstream snapshot of v177
    
    relevant commits:
    - defaults!: use 'suffixes' for 'g:netrw_sort_sequence'
    - refactor: remove associated buffer when deliting a file
    - refactor: s:NetrwLocalRm
    - refactor: s:NetrwDelete
    - refactor: s:NetrwLocalRmFile
    - feat: use vim.notify on neovim
    - fix: prefer v:lua instead of luaeval for vim.deprecate
    - chore: remove old batteries
    
    closes: #16638
    
    Signed-off-by: Luca Saccarola <github.e4...@aleeas.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 243ff8738..215ab618f 100644
--- a/runtime/pack/dist/opt/netrw/autoload/netrw.vim
+++ b/runtime/pack/dist/opt/netrw/autoload/netrw.vim
@@ -19,7 +19,7 @@ if &cp || exists("g:loaded_netrw")
   finish
 endif
 
-let g:loaded_netrw = "v176"
+let g:loaded_netrw = "v177"
 
 if !has("patch-9.1.1054") && !has('nvim')
   echoerr 'netrw needs Vim v9.1.1054'
@@ -45,109 +45,104 @@ setl cpo&vim
 "          netrw#ErrorMsg(s:NOTE | s:WARNING | 
s:ERROR,["message1","message2",...],error-number)
 "          (this function can optionally take a list of messages)
 "  Dec 2, 2019 : max errnum currently is 106
-fun! netrw#ErrorMsg(level,msg,errnum)
-  "  call Dfunc("netrw#ErrorMsg(level=".a:level." msg<".a:msg."> 
errnum=".a:errnum.") g:netrw_use_errorwindow=".g:netrw_use_errorwindow)
-
-  if a:level < g:netrw_errorlvl
-    "   call Dret("netrw#ErrorMsg : suppressing level=".a:level." since 
g:netrw_errorlvl=".g:netrw_errorlvl)
-    return
-  endif
-
-  if a:level == 1
-    let level= "**warning** (netrw) "
-  elseif a:level == 2
-    let level= "**error** (netrw) "
-  else
-    let level= "**note** (netrw) "
-  endif
-  "  call Decho("level=".level,'~'.expand("<slnum>"))
-
-  if g:netrw_use_errorwindow == 2 && exists("*popup_atcursor")
-    " use popup window
-    if type(a:msg) == 3
-      let msg = [level]+a:msg
-    else
-      let msg= level.a:msg
+function! netrw#ErrorMsg(level, msg, errnum)
+    if a:level < g:netrw_errorlvl
+        return
     endif
-    let s:popuperr_id  = popup_atcursor(msg,{})
-    let s:popuperr_text= ""
-  elseif g:netrw_use_errorwindow
-    " (default) netrw creates a one-line window to show error/warning
-    " messages (reliably displayed)
-
-    " record current window number
-    let s:winBeforeErr= winnr()
-    "   call Decho("s:winBeforeErr=".s:winBeforeErr,'~'.expand("<slnum>"))
 
-    " getting messages out reliably is just plain difficult!
-    " This attempt splits the current window, creating a one line window.
-    if bufexists("NetrwMessage") && bufwinnr("NetrwMessage") > 0
-      "    call Decho("write to NetrwMessage buffer",'~'.expand("<slnum>"))
-      exe bufwinnr("NetrwMessage")."wincmd w"
-      "    call Decho("setl ma noro",'~'.expand("<slnum>"))
-      setl ma noro
-      if type(a:msg) == 3
-        for msg in a:msg
-          NetrwKeepj call setline(line("$")+1,level.msg)
-        endfor
-      else
-        NetrwKeepj call setline(line("$")+1,level.a:msg)
-      endif
-      NetrwKeepj $
+    if a:level == 1
+        let level = "**warning** (netrw) "
+    elseif a:level == 2
+        let level = "**error** (netrw) "
     else
-      "    call Decho("create a NetrwMessage buffer 
window",'~'.expand("<slnum>"))
-      bo 1split
-      sil! call s:NetrwEnew()
-      sil! NetrwKeepj call s:NetrwOptionsSafe(1)
-      setl bt=nofile
-      NetrwKeepj file NetrwMessage
-      "    call Decho("setl ma noro",'~'.expand("<slnum>"))
-      setl ma noro
-      if type(a:msg) == 3
-        for msg in a:msg
-          NetrwKeepj call setline(line("$")+1,level.msg)
-        endfor
-      else
-        NetrwKeepj call setline(line("$"),level.a:msg)
-      endif
-      NetrwKeepj $
+        let level = "**note** (netrw) "
     endif
-    "   call Decho("wrote msg<".level.a:msg."> to NetrwMessage 
win#".winnr(),'~'.expand("<slnum>"))
-    if &fo !~ '[ta]'
-      syn clear
-      syn match netrwMesgNote     "^\*\*note\*\*"
-      syn match netrwMesgWarning  "^\*\*warning\*\*"
-      syn match netrwMesgError    "^\*\*error\*\*"
-      hi link netrwMesgWarning WarningMsg
-      hi link netrwMesgError   Error
-    endif
-    "   call Decho("setl noma ro bh=wipe",'~'.expand("<slnum>"))
-    setl ro nomod noma bh=wipe
 
-  else
-    " (optional) netrw will show messages using echomsg.  Even if the
-    " message doesn't appear, at least it'll be recallable via :messages
-    "   redraw!
-    if a:level == s:WARNING
-      echohl WarningMsg
-    elseif a:level == s:ERROR
-      echohl Error
-    endif
+    if g:netrw_use_errorwindow == 2 && exists("*popup_atcursor")
+        " use popup window
+        if type(a:msg) == 3
+            let msg = [level]+a:msg
+        else
+            let msg = level.a:msg
+        endif
+        let s:popuperr_id = popup_atcursor(msg, {})
+        let s:popuperr_text = ""
+    elseif has('nvim')
+        call v:lua.vim.notify(level . a:msg, a:level + 2)
+    elseif g:netrw_use_errorwindow
+        " (default) netrw creates a one-line window to show error/warning
+        " messages (reliably displayed)
+
+        " record current window number
+        let s:winBeforeErr = winnr()
+        "   call Decho("s:winBeforeErr=".s:winBeforeErr,'~'.expand("<slnum>"))
+
+        " getting messages out reliably is just plain difficult!
+        " This attempt splits the current window, creating a one line window.
+        if bufexists("NetrwMessage") && bufwinnr("NetrwMessage") > 0
+            "    call Decho("write to NetrwMessage 
buffer",'~'.expand("<slnum>"))
+            exe bufwinnr("NetrwMessage")."wincmd w"
+            "    call Decho("setl ma noro",'~'.expand("<slnum>"))
+            setl ma noro
+            if type(a:msg) == 3
+                for msg in a:msg
+                    NetrwKeepj call setline(line("$")+1,level.msg)
+                endfor
+            else
+                NetrwKeepj call setline(line("$")+1,level.a:msg)
+            endif
+            NetrwKeepj $
+        else
+            "    call Decho("create a NetrwMessage buffer 
window",'~'.expand("<slnum>"))
+            bo 1split
+            sil! call s:NetrwEnew()
+            sil! NetrwKeepj call s:NetrwOptionsSafe(1)
+            setl bt=nofile
+            NetrwKeepj file NetrwMessage
+            "    call Decho("setl ma noro",'~'.expand("<slnum>"))
+            setl ma noro
+            if type(a:msg) == 3
+                for msg in a:msg
+                    NetrwKeepj call setline(line("$")+1,level.msg)
+                endfor
+            else
+                NetrwKeepj call setline(line("$"),level.a:msg)
+            endif
+            NetrwKeepj $
+        endif
+        "   call Decho("wrote msg<".level.a:msg."> to NetrwMessage 
win#".winnr(),'~'.expand("<slnum>"))
+        if &fo !~ '[ta]'
+            syn clear
+            syn match netrwMesgNote     "^\*\*note\*\*"
+            syn match netrwMesgWarning  "^\*\*warning\*\*"
+            syn match netrwMesgError    "^\*\*error\*\*"
+            hi link netrwMesgWarning WarningMsg
+            hi link netrwMesgError   Error
+        endif
+        "   call Decho("setl noma ro bh=wipe",'~'.expand("<slnum>"))
+        setl ro nomod noma bh=wipe
 
-    if type(a:msg) == 3
-      for msg in a:msg
-        unsilent echomsg level.msg
-      endfor
     else
-      unsilent echomsg level.a:msg
-    endif
+        " (optional) netrw will show messages using echomsg.  Even if the
+        " message doesn't appear, at least it'll be recallable via :messages
+        "   redraw!
+        if a:level == s:WARNING
+            echohl WarningMsg
+        elseif a:level == s:ERROR
+            echohl Error
+        endif
 
-    "   call Decho("echomsg ***netrw*** ".a:msg,'~'.expand("<slnum>"))
-    echohl None
-  endif
+        if type(a:msg) == 3
+            for msg in a:msg
+                unsilent echomsg level.msg
+            endfor
+        else
+            unsilent echomsg level.a:msg
+        endif
 
-  "  call Dret("netrw#ErrorMsg")
-endfun
+        echohl None
+    endif
+endfunction
 
 " ---------------------------------------------------------------------
 " s:NetrwInit: initializes variables if they haven't been defined {{{2
@@ -523,11 +518,9 @@ call s:NetrwInit("g:netrw_sort_by"       , "name") " 
alternatives: date
 call s:NetrwInit("g:netrw_sort_options"  , "")
 call s:NetrwInit("g:netrw_sort_direction", "normal") " alternative: reverse  
(z y x ...)
 if !exists("g:netrw_sort_sequence")
-  if has("unix")
-    let g:netrw_sort_sequence= 
'[\/]$,\<core\%(\.\d\+\)\=\>,\.h$,\.c$,\.cpp$,\~\=\*$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
-  else
-    let g:netrw_sort_sequence= 
'[\/]$,\.h$,\.c$,\.cpp$,*,\.o$,\.obj$,\.info$,\.swp$,\.bak$,\~$'
-  endif
+    let g:netrw_sort_sequence = !empty(&suffixes)
+                \ ? printf('[\/]$,*,\%(%s\)[*@]\=$', 
&suffixes->split(',')->map('escape(v:val, ".*$~")')->join('\|'))
+                \ : '[\/]$,*'
 endif
 call s:NetrwInit("g:netrw_special_syntax"   , 0)
 call s:NetrwInit("g:netrw_ssh_browse_reject", '^total\s\+\d\+$')
@@ -4893,7 +4886,7 @@ fun! s:NetrwBrowseUpDir(islocal)
 endfun
 
 " ---------------------------------------------------------------------
-" netrw#BrowseX:  (implements "x" and "gx") executes a special "viewer" script 
or program for the {{{2
+" netrw#BrowseX:  (implements "x") executes a special "viewer" script or 
program for the {{{2
 "              given filename; typically this means given their extension.
 "              0=local, 1=remote
 fun! netrw#BrowseX(fname,remote)
@@ -4995,17 +4988,6 @@ fun! netrw#BrowseX(fname,remote)
   let &aw= awkeep
 endfun
 
-" ---------------------------------------------------------------------
-" netrw#BrowseXVis: used by gx in visual mode to select a file for browsing 
{{{2
-fun! netrw#BrowseXVis()
-  let dict={}
-  let dict.a=[getreg('a'), getregtype('a')]
-  norm! gv"ay
-  let gxfile= @a
-  call s:RestoreRegister(dict)
-  call netrw#BrowseX(gxfile,netrw#CheckIfRemote(gxfile))
-endfun
-
 " ---------------------------------------------------------------------
 " s:NetrwBufRename: renames a buffer without the side effect of retaining an 
unlisted buffer having the old name {{{2
 "                   Using the file command on a "[No Name]" buffer does not 
seem to cause the old "[No Name]" buffer
@@ -5316,7 +5298,7 @@ endfun
 "  s:NetrwHome: this function determines a "home" for saving bookmarks and 
history {{{2
 function! s:NetrwHome()
   if has('nvim')
-    let home = netrw#own#JoinPath(stdpath('state'), 'netrw')
+    let home = netrw#own#PathJoin(stdpath('state'), 'netrw')
   elseif exists("g:netrw_home")
     let home = expand(g:netrw_home)
   else
@@ -6350,7 +6332,7 @@ fun! s:NetrwMarkFileCopy(islocal,...)
     endif
 
     " copy marked files while within the same directory (ie. allow renaming)
-    if s:StripTrailingSlash(simplify(s:netrwmftgt)) == 
s:StripTrailingSlash(simplify(b:netrw_curdir))
+    if simplify(s:netrwmftgt) ==# simplify(b:netrw_curdir)
       if len(s:netrwmarkfilelist_{bufnr('%')}) == 1
         " only one marked file
         "     call Decho("case: only one marked file",'~'.expand("<slnum>"))
@@ -10237,131 +10219,124 @@ endfun
 
 " ---------------------------------------------------------------------
 " s:NetrwLocalRm: {{{2
-fun! s:NetrwLocalRm(path) range
-  if !exists("w:netrw_bannercnt")
-    let w:netrw_bannercnt= b:netrw_bannercnt
-  endif
+function! s:NetrwLocalRm(path) range
+    if !exists("w:netrw_bannercnt")
+        let w:netrw_bannercnt = b:netrw_bannercnt
+    endif
 
-  " preparation for removing multiple files/directories
-  let ykeep = @@
-  let ret   = 0
-  let all   = 0
-  let svpos = winsaveview()
+    " preparation for removing multiple files/directories
+    let ykeep = @@
+    let ret = 0
+    let all = 0
+    let svpos = winsaveview()
 
-  if exists("s:netrwmarkfilelist_{bufnr('%')}")
-    " remove all marked files
-    for fname in s:netrwmarkfilelist_{bufnr("%")}
-      let ok= s:NetrwLocalRmFile(a:path,fname,all)
-      if ok =~# 'q\%[uit]' || ok == "no"
-        break
-      elseif ok =~# '^a\%[ll]$'
-        let all= 1
-      endif
-    endfor
-    call s:NetrwUnMarkFile(1)
+    if exists("s:netrwmarkfilelist_{bufnr('%')}")
+        " remove all marked files
+        for fname in s:netrwmarkfilelist_{bufnr("%")}
+            let ok = s:NetrwLocalRmFile(a:path, fname, all)
+            if ok =~# '^a\%[ll]$'
+                let all = 1
+            elseif ok =~# "n\%[o]"
+                break
+            endif
+        endfor
+        call s:NetrwUnMarkFile(1)
 
-  else
-    " remove (multiple) files and directories
+    else
+        " remove (multiple) files and directories
 
-    let keepsol= &l:sol
-    setl nosol
-    let ctr = a:firstline
-    while ctr <= a:lastline
-      exe "NetrwKeepj ".ctr
+        let keepsol = &l:sol
+        setl nosol
+        let ctr = a:firstline
+        while ctr <= a:lastline
+            exe "NetrwKeepj ".ctr
 
-      " sanity checks
-      if line(".") < w:netrw_bannercnt
-        let ctr= ctr + 1
-        continue
-      endif
-      let curword= s:NetrwGetWord()
-      if curword == "./" || curword == "../"
-        let ctr= ctr + 1
-        continue
-      endif
-      let ok= s:NetrwLocalRmFile(a:path,curword,all)
-      if ok =~# 'q\%[uit]' || ok == "no"
-        break
-      elseif ok =~# '^a\%[ll]$'
-        let all= 1
-      endif
-      let ctr= ctr + 1
-    endwhile
-    let &l:sol= keepsol
-  endif
+            " sanity checks
+            if line(".") < w:netrw_bannercnt
+                let ctr = ctr + 1
+                continue
+            endif
 
-  " refresh the directory
-  if bufname("%") != "NetrwMessage"
-    NetrwKeepj call s:NetrwRefresh(1,s:NetrwBrowseChgDir(1,'./',0))
-    NetrwKeepj call winrestview(svpos)
-  endif
-  let @@= ykeep
-endfun
+            let curword = s:NetrwGetWord()
+            if curword == "./" || curword == "../"
+                let ctr = ctr + 1
+                continue
+            endif
+
+            let ok = s:NetrwLocalRmFile(a:path, curword, all)
+            if ok =~# '^a\%[ll]$'
+                let all = 1
+            elseif ok =~# "n\%[o]"
+                break
+            endif
+
+            let ctr = ctr + 1
+        endwhile
+
+        let &l:sol = keepsol
+    endif
+
+    " refresh the directory
+    if bufname("%") != "NetrwMessage"
+        NetrwKeepj call s:NetrwRefresh(1, s:NetrwBrowseChgDir(1, './', 0))
+        NetrwKeepj call winrestview(svpos)
+    endif
+
+    let @@= ykeep
+endfunction
 
 " ---------------------------------------------------------------------
 " s:NetrwLocalRmFile: remove file fname given the path {{{2
 "                     Give confirmation prompt unless all==1
-fun! s:NetrwLocalRmFile(path,fname,all)
-  "  call Dfunc("s:NetrwLocalRmFile(path<".a:path."> fname<".a:fname."> 
all=".a:all)
+function! s:NetrwLocalRmFile(path, fname, all)
+    let all = a:all
+    let ok = ""
+    let dir = 0
+    NetrwKeepj norm! 0
+    let rmfile = s:NetrwFile(s:ComposePath(a:path, escape(a:fname, 
'\')))->fnamemodify(':.')
 
-  let all= a:all
-  let ok = ""
-  NetrwKeepj norm! 0
-  let rmfile= s:NetrwFile(s:ComposePath(a:path,escape(a:fname, '\')))
-  "  call Decho("rmfile<".rmfile.">",'~'.expand("<slnum>"))
+    " if not a directory
+    if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
+        let msg = "Confirm deletion of file <%s> [{y(es)},n(o),a(ll)]: "
+    else
+        let msg = "Confirm *recursive* deletion of directory <%s> 
[{y(es)},n(o),a(ll)]: "
+        let dir = 1
+    endif
 
-  if rmfile !~ '^"' && (rmfile =~ '@$' || rmfile !~ '[\/]$')
-    " attempt to remove file
-    "   call Decho("attempt to remove file<".rmfile.">",'~'.expand("<slnum>"))
+    " Ask confirmation
     if !all
-      echohl Statement
-      call inputsave()
-      let ok= input("Confirm deletion of file <".rmfile."> 
","[{y(es)},n(o),a(ll),q(uit)] ")
-      call inputrestore()
-      echohl NONE
-      if ok == ""
-        let ok="no"
-      endif
-      "    call Decho("response: ok<".ok.">",'~'.expand("<slnum>"))
-      let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-      "    call Decho("response: ok<".ok."> (after sub)",'~'.expand("<slnum>"))
-      if ok =~# '^a\%[ll]$'
-        let all= 1
-      endif
+        echohl Statement
+        call inputsave()
+        let ok = input(printf(msg, rmfile))
+        call inputrestore()
+        echohl NONE
+        if ok =~# '^a\%[ll]$' || ok =~# '^y\%[es]$'
+            let all = 1
+        else
+            let ok = 'no'
+        endif
     endif
 
-    if all || ok =~# '^y\%[es]$' || ok == ""
-      let ret= s:NetrwDelete(rmfile)
-      "    call Decho("errcode=".v:shell_error." 
ret=".ret,'~'.expand("<slnum>"))
-    endif
+    if !dir && (all || empty(ok))
+        " This works because delete return 0 if successful
+        if s:NetrwDelete(rmfile)
+            call netrw#ErrorMsg(s:ERROR, printf("unable to delete <%s>!", 
rmfile), 103)
+        else
+            " Remove file only if there are no pending changes
+            execute printf('silent! bwipeout %s', rmfile)
+        endif
 
-  else
-    " attempt to remove directory
-    if !all
-      echohl Statement
-      call inputsave()
-      let ok= input("Confirm *recursive* deletion of directory <".rmfile."> 
","[{y(es)},n(o),a(ll),q(uit)] ")
-      call inputrestore()
-      let ok= substitute(ok,'\[{y(es)},n(o),a(ll),q(uit)]\s*','','e')
-      if ok == ""
-        let ok="no"
-      endif
-      if ok =~# '^a\%[ll]$'
-        let all= 1
-      endif
-    endif
-    let rmfile= substitute(rmfile,'[\/]$','','e')
+    elseif dir && (all || empty(ok))
+        " Remove trailing /
+        let rmfile = substitute(rmfile, '[\/]$', '', 'e')
+        if delete(rmfile, "rf")
+            call netrw#ErrorMsg(s:ERROR, printf("unable to delete directory 
<%s>!", rmfile), 103)
+        endif
 
-    if all || ok =~# '^y\%[es]$' || ok == ""
-      if delete(rmfile,"rf")
-        call netrw#ErrorMsg(s:ERROR,"unable to delete directory 
<".rmfile.">!",103)
-      endif
     endif
-  endif
 
-  "  call Dret("s:NetrwLocalRmFile ".ok)
-  return ok
-endfun
+    return ok
+endfunction
 
 " =====================================================================
 " Support Functions: {{{1
@@ -10483,13 +10458,6 @@ fun! netrw#WinPath(path)
   return path
 endfun
 
-" ---------------------------------------------------------------------
-" s:StripTrailingSlash: removes trailing slashes from a path {{{2
-fun! s:StripTrailingSlash(path)
-  " remove trailing slash
-  return substitute(a:path, '[/\]$', '', 'g')
-endfun
-
 " ---------------------------------------------------------------------
 " s:NetrwBadd: adds marked files to buffer list or vice versa {{{2
 "              cb : bl2mf=0  add marked files to buffer list
@@ -10611,9 +10579,9 @@ fun! s:FileReadable(fname)
   "  call Dfunc("s:FileReadable(fname<".a:fname.">)")
 
   if g:netrw_cygwin
-    let ret= 
filereadable(s:NetrwFile(substitute(a:fname,g:netrw_cygdrive.'/\(.\)',' 
:/','')))
+    let ret = 
filereadable(s:NetrwFile(substitute(a:fname,g:netrw_cygdrive.'/\(.\)',' 
:/','')))
   else
-    let ret= filereadable(s:NetrwFile(a:fname))
+    let ret = filereadable(s:NetrwFile(a:fname))
   endif
 
   "  call Dret("s:FileReadable ".ret)
@@ -10872,31 +10840,24 @@ endfun
 "           Uses Steve Hall's idea to insure that Windows paths stay
 "           acceptable.  No effect on Unix paths.
 "  Examples of use:  let result= s:NetrwDelete(path)
-fun! s:NetrwDelete(path)
-  "  call Dfunc("s:NetrwDelete(path<".a:path.">)")
+function! s:NetrwDelete(path)
+    let path = netrw#WinPath(a:path)
 
-  let path = netrw#WinPath(a:path)
-  if !g:netrw_cygwin && has("win32")
-    if exists("+shellslash")
-      let sskeep= &shellslash
-      setl noshellslash
-      let result      = delete(path)
-      let &shellslash = sskeep
+    if !g:netrw_cygwin && has("win32") && exists("+shellslash")
+        let sskeep = &shellslash
+        setl noshellslash
+        let result = delete(path)
+        let &shellslash = sskeep
     else
-      "    call Decho("exe let result= 
".a:cmd."('".path."')",'~'.expand("<slnum>"))
-      let result= delete(path)
+        let result = delete(path)
     endif
-  else
-    "   call Decho("let result= delete(".path.")",'~'.expand("<slnum>"))
-    let result= delete(path)
-  endif
-  if result < 0
-    NetrwKeepj call netrw#ErrorMsg(s:WARNING,"delete(".path.") failed!",71)
-  endif
 
-  "  call Dret("s:NetrwDelete ".result)
-  return result
-endfun
+    if result < 0
+        NetrwKeepj call netrw#ErrorMsg(s:WARNING, "delete(".path.") failed!", 
71)
+    endif
+
+    return result
+endfunction
 
 " ---------------------------------------------------------------------
 " s:NetrwBufRemover: removes a buffer that: {{{2s
@@ -11650,7 +11611,7 @@ fun! s:UserMaps(islocal,funcname)
   endif
 endfun
 
-" Deprecated: {{{
+" Deprecated: {{{1
 
 function! netrw#Launch(args)
     call netrw#own#Deprecate('netrw#Launch', 'v180', {'vim': 
'dist#vim9#Launch', 'nvim': 'vim.system'})
@@ -11665,14 +11626,11 @@ function! netrw#Open(file)
 endfunction
 
 " }}}
-" ==========================
 " Settings Restoration: {{{1
 " ==========================
 let &cpo= s:keepcpo
 unlet s:keepcpo
 
-" ===============
-" Modelines: {{{1
-" ===============
+" }}}
 
 " vim:ts=8 sts=4 sw=4 et fdm=marker
diff --git a/runtime/pack/dist/opt/netrw/autoload/netrw/own.vim 
b/runtime/pack/dist/opt/netrw/autoload/netrw/own.vim
index 8f05b6a0a..9fdf85a8f 100644
--- a/runtime/pack/dist/opt/netrw/autoload/netrw/own.vim
+++ b/runtime/pack/dist/opt/netrw/autoload/netrw/own.vim
@@ -2,12 +2,14 @@
 " THIS FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATABILITY. SO CHANGES AND
 " BREAKAGES IF USED OUTSIDE OF NETRW.VIM ARE EXPECTED.
 
+" General: {{{
+
 let s:deprecation_msgs = []
 function! netrw#own#Deprecate(name, version, alternatives)
     " If running on neovim use vim.deprecate
     if has('nvim')
         let s:alternative = a:alternatives->get('nvim', v:null)
-        call luaeval('vim.deprecate(unpack(_A)) and nil', [a:name, 
s:alternative, a:version, "netrw", v:false])
+        call v:lua.vim.deprecate(a:name, s:alternative, a:version, "netrw", 
v:false)
         return
     endif
 
@@ -27,8 +29,20 @@ function! netrw#own#Deprecate(name, version, alternatives)
     call add(s:deprecation_msgs, a:name)
 endfunction
 
+function! netrw#own#Open(file) abort
+    if has('nvim')
+        call luaeval('vim.ui.open(_A[1]) and nil', [a:file])
+    else
+        call dist#vim9#Open(a:file)
+    endif
+endfunction
+
+" }}}
+" Path Utilities: {{{
+
 let s:slash = &shellslash ? '/' : '\'
-function! netrw#own#JoinPath(...)
+
+function! netrw#own#PathJoin(...)
     let path = ""
 
     for arg in a:000
@@ -42,12 +56,6 @@ function! netrw#own#JoinPath(...)
     return path
 endfunction
 
-function! netrw#own#Open(file) abort
-    if has('nvim')
-        call luaeval('vim.ui.open(_A[1]) and nil', [a:file])
-    else
-        call dist#vim9#Open(a:file)
-    endif
-endfunction
+" }}}
 
 " vim:ts=8 sts=4 sw=4 et fdm=marker
diff --git a/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim 
b/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim
index 2d1787f54..ba143ed80 100644
--- a/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim
+++ b/runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim
@@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwSettings")
     finish
 endif
 
-let g:loaded_netrwSettings = "v176"
+let g:loaded_netrwSettings = "v177"
 
 " NetrwSettings: {{{
 
diff --git a/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim 
b/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim
index ec133d0a4..76a91b44c 100644
--- a/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim
+++ b/runtime/pack/dist/opt/netrw/plugin/netrwPlugin.vim
@@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwPlugin")
     finish
 endif
 
-let g:loaded_netrwPlugin = "v176"
+let g:loaded_netrwPlugin = "v177"
 
 let s:keepcpo = &cpo
 set cpo&vim

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to vim_dev+unsubscr...@googlegroups.com.
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1tiz2v-008jMM-LR%40256bit.org.

Raspunde prin e-mail lui