mirror of
https://github.com/vim/vim
synced 2025-07-15 16:51:57 +00:00
runtime(netrw): runtime(netrw): upstream snapshot of v178
relevant commits: - refactor: netrw#own#Deprecate -> netrw#msg#Deprecate - refactor: netrw#own#PathJoin -> netrw#fs#PathJoin - fix: typos - refactor: netrw#own#Open -> netrw#os#Open - deprecate!: netrw#WinPath - refactor: netrw#WinPath -> netrw#fs module - refactor: s:ShellEscape -> netrw#os module - refactor: s:NetrwExe -> netrw#os module - refactor: s:NetrwGlob -> netrw#fs module - refactor: s:NetrwGetcwd -> netrw#fs module - refactor: s:NetrwFullPath -> netrw#fs module - refactor: s:ComposePath -> netrw#fs module closes: #16718 Signed-off-by: Luca Saccarola <github.e41mv@aleeas.com> Signed-off-by: Christian Brabandt <cb@256bit.org>
This commit is contained in:
committed by
Christian Brabandt
parent
b3854bfc54
commit
5b97947bbd
4
Filelist
4
Filelist
@ -816,7 +816,9 @@ RT_ALL = \
|
||||
runtime/pack/dist/opt/netrw/LICENSE.txt \
|
||||
runtime/pack/dist/opt/netrw/README.md \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw/own.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw/os.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw/msg.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrwSettings.vim \
|
||||
runtime/pack/dist/opt/netrw/autoload/netrw_gitignore.vim \
|
||||
runtime/pack/dist/opt/netrw/doc/netrw.txt \
|
||||
|
@ -9002,6 +9002,7 @@ netrw-ctrl-h pi_netrw.txt /*netrw-ctrl-h*
|
||||
netrw-ctrl-l pi_netrw.txt /*netrw-ctrl-l*
|
||||
netrw-ctrl-r pi_netrw.txt /*netrw-ctrl-r*
|
||||
netrw-ctrl_l pi_netrw.txt /*netrw-ctrl_l*
|
||||
netrw-curdir pi_netrw.txt /*netrw-curdir*
|
||||
netrw-d pi_netrw.txt /*netrw-d*
|
||||
netrw-del pi_netrw.txt /*netrw-del*
|
||||
netrw-delete pi_netrw.txt /*netrw-delete*
|
||||
|
462
runtime/pack/dist/opt/netrw/autoload/netrw.vim
vendored
462
runtime/pack/dist/opt/netrw/autoload/netrw.vim
vendored
File diff suppressed because it is too large
Load Diff
167
runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim
vendored
Normal file
167
runtime/pack/dist/opt/netrw/autoload/netrw/fs.vim
vendored
Normal file
@ -0,0 +1,167 @@
|
||||
" FUNCTIONS IN THIS FILE ARE MEANT TO BE USED BY NETRW.VIM AND NETRW.VIM ONLY.
|
||||
" THESE FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATIBILITY. SO CHANGES AND
|
||||
" BREAKAGES IF USED OUTSIDE OF NETRW.VIM ARE EXPECTED.
|
||||
|
||||
let s:slash = &shellslash ? '/' : '\'
|
||||
|
||||
" netrw#fs#PathJoin: Appends a new part to a path taking different systems into consideration {{{
|
||||
|
||||
function! netrw#fs#PathJoin(...)
|
||||
let path = ""
|
||||
|
||||
for arg in a:000
|
||||
if empty(path)
|
||||
let path = arg
|
||||
else
|
||||
let path .= s:slash . arg
|
||||
endif
|
||||
endfor
|
||||
|
||||
return path
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" netrw#fs#ComposePath: Appends a new part to a path taking different systems into consideration {{{
|
||||
|
||||
function! netrw#fs#ComposePath(base, subdir)
|
||||
if has('amiga')
|
||||
let ec = a:base[s:Strlen(a:base)-1]
|
||||
if ec != '/' && ec != ':'
|
||||
let ret = a:base . '/' . a:subdir
|
||||
else
|
||||
let ret = a:base.a:subdir
|
||||
endif
|
||||
|
||||
" COMBAK: test on windows with changing to root directory: :e C:/
|
||||
elseif a:subdir =~ '^\a:[/\\]\([^/\\]\|$\)' && has('win32')
|
||||
let ret = a:subdir
|
||||
|
||||
elseif a:base =~ '^\a:[/\\]\([^/\\]\|$\)' && has('win32')
|
||||
if a:base =~ '[/\\]$'
|
||||
let ret = a:base . a:subdir
|
||||
else
|
||||
let ret = a:base . '/' . a:subdir
|
||||
endif
|
||||
|
||||
elseif a:base =~ '^\a\{3,}://'
|
||||
let urlbase = substitute(a:base, '^\(\a\+://.\{-}/\)\(.*\)$', '\1', '')
|
||||
let curpath = substitute(a:base, '^\(\a\+://.\{-}/\)\(.*\)$', '\2', '')
|
||||
if a:subdir == '../'
|
||||
if curpath =~ '[^/]/[^/]\+/$'
|
||||
let curpath = substitute(curpath, '[^/]\+/$', '', '')
|
||||
else
|
||||
let curpath = ''
|
||||
endif
|
||||
let ret = urlbase.curpath
|
||||
else
|
||||
let ret = urlbase.curpath.a:subdir
|
||||
endif
|
||||
|
||||
else
|
||||
let ret = substitute(a:base . '/' .a:subdir, '//', '/', 'g')
|
||||
if a:base =~ '^//'
|
||||
" keeping initial '//' for the benefit of network share listing support
|
||||
let ret = '/' . ret
|
||||
endif
|
||||
let ret = simplify(ret)
|
||||
endif
|
||||
|
||||
return ret
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" netrw#fs#AbsPath: returns the full path to a directory and/or file {{{
|
||||
|
||||
function! netrw#fs#AbsPath(filename)
|
||||
let filename = a:filename
|
||||
|
||||
if filename !~ '^/'
|
||||
let filename = resolve(getcwd() . '/' . filename)
|
||||
endif
|
||||
|
||||
if filename != "/" && filename =~ '/$'
|
||||
let filename = substitute(filename, '/$', '', '')
|
||||
endif
|
||||
|
||||
return filename
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" netrw#fs#Cwd: get the current directory. {{{
|
||||
" Change backslashes to forward slashes, if any.
|
||||
" If doesc is true, escape certain troublesome characters
|
||||
|
||||
function! netrw#fs#Cwd(doesc)
|
||||
let curdir = substitute(getcwd(), '\\', '/', 'ge')
|
||||
|
||||
if curdir !~ '[\/]$'
|
||||
let curdir .= '/'
|
||||
endif
|
||||
|
||||
if a:doesc
|
||||
let curdir = fnameescape(curdir)
|
||||
endif
|
||||
|
||||
return curdir
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" netrw#fs#Glob: does glob() if local, remote listing otherwise {{{
|
||||
" direntry: this is the name of the directory. Will be fnameescape'd to prevent wildcard handling by glob()
|
||||
" expr : this is the expression to follow the directory. Will use netrw#fs#ComposePath()
|
||||
" pare =1: remove the current directory from the resulting glob() filelist
|
||||
" =0: leave the current directory in the resulting glob() filelist
|
||||
|
||||
function! netrw#fs#Glob(direntry, expr, pare)
|
||||
if netrw#CheckIfRemote()
|
||||
keepalt 1sp
|
||||
keepalt enew
|
||||
let keep_liststyle = w:netrw_liststyle
|
||||
let w:netrw_liststyle = s:THINLIST
|
||||
if s:NetrwRemoteListing() == 0
|
||||
keepj keepalt %s@/@@
|
||||
let filelist = getline(1,$)
|
||||
q!
|
||||
else
|
||||
" remote listing error -- leave treedict unchanged
|
||||
let filelist = w:netrw_treedict[a:direntry]
|
||||
endif
|
||||
let w:netrw_liststyle = keep_liststyle
|
||||
else
|
||||
let path= netrw#fs#ComposePath(fnameescape(a:direntry), a:expr)
|
||||
if has("win32")
|
||||
" escape [ so it is not detected as wildcard character, see :h wildcard
|
||||
let path = substitute(path, '[', '[[]', 'g')
|
||||
endif
|
||||
let filelist = glob(path, 0, 1, 1)
|
||||
if a:pare
|
||||
let filelist = map(filelist,'substitute(v:val, "^.*/", "", "")')
|
||||
endif
|
||||
endif
|
||||
|
||||
return filelist
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" netrw#fs#WinPath: tries to insure that the path is windows-acceptable, whether cygwin is used or not {{{
|
||||
|
||||
function! netrw#fs#WinPath(path)
|
||||
if (!g:netrw_cygwin || &shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') && has("win32")
|
||||
" remove cygdrive prefix, if present
|
||||
let path = substitute(a:path, g:netrw_cygdrive . '/\(.\)', '\1:', '')
|
||||
" remove trailing slash (Win95)
|
||||
let path = substitute(path, '\(\\\|/\)$', '', 'g')
|
||||
" remove escaped spaces
|
||||
let path = substitute(path, '\ ', ' ', 'g')
|
||||
" convert slashes to backslashes
|
||||
let path = substitute(path, '/', '\', 'g')
|
||||
else
|
||||
let path = a:path
|
||||
endif
|
||||
|
||||
return path
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" vim:ts=8 sts=4 sw=4 et fdm=marker
|
@ -1,9 +1,7 @@
|
||||
" FUNCTIONS IN THIS FILES ARE MENT TO BE USE BY NETRW.VIM AND NETRW.VIM ONLY.
|
||||
" THIS FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATABILITY. SO CHANGES AND
|
||||
" FUNCTIONS IN THIS FILE ARE MEANT TO BE USED BY NETRW.VIM AND NETRW.VIM ONLY.
|
||||
" THESE FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATIBILITY. 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
|
||||
@ -29,33 +27,4 @@ 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#PathJoin(...)
|
||||
let path = ""
|
||||
|
||||
for arg in a:000
|
||||
if empty(path)
|
||||
let path = arg
|
||||
else
|
||||
let path .= s:slash . arg
|
||||
endif
|
||||
endfor
|
||||
|
||||
return path
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
|
||||
" vim:ts=8 sts=4 sw=4 et fdm=marker
|
48
runtime/pack/dist/opt/netrw/autoload/netrw/os.vim
vendored
Normal file
48
runtime/pack/dist/opt/netrw/autoload/netrw/os.vim
vendored
Normal file
@ -0,0 +1,48 @@
|
||||
" FUNCTIONS IN THIS FILE ARE MEANT TO BE USED BY NETRW.VIM AND NETRW.VIM ONLY.
|
||||
" THESE FUNCTIONS DON'T COMMIT TO ANY BACKWARDS COMPATIBILITY. SO CHANGES AND
|
||||
" BREAKAGES IF USED OUTSIDE OF NETRW.VIM ARE EXPECTED.
|
||||
|
||||
" netrw#os#Execute: executes a string using "!" {{{
|
||||
|
||||
function! netrw#os#Execute(cmd)
|
||||
if has("win32") && exepath(&shell) !~? '\v[\/]?(cmd|pwsh|powershell)(\.exe)?$' && !g:netrw_cygwin
|
||||
let savedShell=[&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash]
|
||||
set shell& shellcmdflag& shellxquote& shellxescape&
|
||||
set shellquote& shellpipe& shellredir& shellslash&
|
||||
try
|
||||
execute a:cmd
|
||||
finally
|
||||
let [&shell,&shellcmdflag,&shellxquote,&shellxescape,&shellquote,&shellpipe,&shellredir,&shellslash] = savedShell
|
||||
endtry
|
||||
else
|
||||
execute a:cmd
|
||||
endif
|
||||
|
||||
if v:shell_error
|
||||
call netrw#ErrorMsg(s:WARNING, "shell signalled an error", 106)
|
||||
endif
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" netrw#os#Escape: shellescape(), or special windows handling {{{
|
||||
|
||||
function! netrw#os#Escape(string, ...)
|
||||
return has('win32') && empty($SHELL) && &shellslash
|
||||
\ ? printf('"%s"', substitute(a:string, '"', '""', 'g'))
|
||||
\ : shellescape(a:string, a:0 > 0 ? a:1 : 0)
|
||||
endfunction
|
||||
|
||||
" }}}
|
||||
" netrw#os#Open: open file with os viewer (eg. xdg-open) {{{
|
||||
|
||||
function! netrw#os#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
|
@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwSettings")
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_netrwSettings = "v177"
|
||||
let g:loaded_netrwSettings = "v178"
|
||||
|
||||
" NetrwSettings: {{{
|
||||
|
||||
|
2
runtime/pack/dist/opt/netrw/doc/netrw.txt
vendored
2
runtime/pack/dist/opt/netrw/doc/netrw.txt
vendored
@ -1447,7 +1447,7 @@ With a "dirname", the specified directory name is used.
|
||||
The "gn" map will take the word below the cursor and use that for
|
||||
changing the top of the tree listing.
|
||||
|
||||
|
||||
*netrw-curdir*
|
||||
DELETING BOOKMARKS *netrw-mB* {{{2
|
||||
|
||||
To delete a bookmark, use >
|
||||
|
@ -15,7 +15,7 @@ if &cp || exists("g:loaded_netrwPlugin")
|
||||
finish
|
||||
endif
|
||||
|
||||
let g:loaded_netrwPlugin = "v177"
|
||||
let g:loaded_netrwPlugin = "v178"
|
||||
|
||||
let s:keepcpo = &cpo
|
||||
set cpo&vim
|
||||
|
Reference in New Issue
Block a user