]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
runtime(tar): remove dependency on netrw#WinPath, include mapping doc
authorChristian Brabandt <cb@256bit.org>
Wed, 16 Apr 2025 15:13:28 +0000 (17:13 +0200)
committerChristian Brabandt <cb@256bit.org>
Wed, 16 Apr 2025 15:14:55 +0000 (17:14 +0200)
related: #17124

Signed-off-by: Christian Brabandt <cb@256bit.org>
runtime/autoload/tar.vim
runtime/doc/pi_tar.txt
runtime/doc/tags

index 4aab91566187709c6b08228bf63ffa35ac753f63..499036ef9cdca9469851c3a3c968de94e7889b61 100644 (file)
@@ -14,6 +14,7 @@
 "   2025 Mar 02 by Vim Project: escape the filename before using :read
 "   2025 Mar 02 by Vim Project: determine the compression using readblob()
 "                               instead of shelling out to file(1)
+"   2025 Apr 16 by Vim Project: decouple from netrw by adding s:WinPath()
 "
 "      Contains many ideas from Michael Toren's <tar.vim>
 "
@@ -146,7 +147,7 @@ fun! tar#Browse(tarfile)
   let lastline= line("$")
   call setline(lastline+1,'" tar.vim version '.g:loaded_tar)
   call setline(lastline+2,'" Browsing tarfile '.a:tarfile)
-  call setline(lastline+3,'" Select a file with cursor and press ENTER')
+  call setline(lastline+3,'" Select a file with cursor and press ENTER, "x" to extract a file')
   keepj $put =''
   keepj sil! 0d
   keepj $
@@ -615,7 +616,7 @@ fun! tar#Extract()
   let tarball = expand("%")
   let tarbase = substitute(tarball,'\..*$','','')
 
-  let extractcmd= netrw#WinPath(g:tar_extractcmd)
+  let extractcmd= s:WinPath(g:tar_extractcmd)
   if filereadable(tarbase.".tar")
    call system(extractcmd." ".shellescape(tarbase).".tar ".shellescape(fname))
    if v:shell_error != 0
@@ -765,6 +766,25 @@ fun! s:Header(fname)
   return "unknown"
 endfun
 
+" ---------------------------------------------------------------------
+" s:WinPath: {{{2
+fun! s:WinPath(path)
+  if (!g:netrw_cygwin || &shell !~ '\%(\<bash\>\|\<zsh\>\)\%(\.exe\)\=$') && has("win32")
+    " remove cygdrive prefix, if present
+    let path = substitute(a:path, '/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
+endfun
+
 " ---------------------------------------------------------------------
 " tar#Vimuntar: installs a tarball in the user's .vim / vimfiles directory {{{2
 fun! tar#Vimuntar(...)
@@ -786,7 +806,7 @@ fun! tar#Vimuntar(...)
 
   if simplify(curdir) != simplify(vimhome)
    " copy (possibly compressed) tarball to .vim/vimfiles
-   call system(netrw#WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
+   call system(s:WinPath(g:tar_copycmd)." ".shellescape(tartail)." ".shellescape(vimhome))
    exe "cd ".fnameescape(vimhome)
   endif
 
@@ -808,7 +828,7 @@ fun! tar#Vimuntar(...)
   else
    call vimball#Decompress(tartail,0)
   endif
-  let extractcmd= netrw#WinPath(g:tar_extractcmd)
+  let extractcmd= s:WinPath(g:tar_extractcmd)
   call system(extractcmd." ".shellescape(tarbase.".tar"))
 
   " set up help
index 5b317d6087994106ea3798666c180d71c6063f88..6d49928dcbc85f540ea168fcc06f626bf8b33bda 100644 (file)
@@ -1,4 +1,4 @@
-*pi_tar.txt*   For Vim version 9.1.  Last change: 2024 May 11
+*pi_tar.txt*   For Vim version 9.1.  Last change: 2025 Mar 16
 
                       +====================+
                       | Tar File Interface |
@@ -74,6 +74,15 @@ Copyright 2005-2017:                                 *tar-copyright*
        let g:loaded_tarPlugin= 1
        let g:loaded_tar      = 1
 <
+                                                       *tar-mappings*
+   MAPPINGS~
+
+   The following (buffer-local) mappings are available in a tar buffer:
+
+       <CR>            Open selected file for editing, any changes will be
+                       written back to the archive.
+       <LeftMouse>     same as <CR>
+       x               Extract selected file.
 
 ==============================================================================
 3. Options                                             *tar-options*
index 8c7b81adbe1a3239424c3cec652d4e282cb1172d..415b67589ea6f7d1d62043ef0505e031b58487fc 100644 (file)
@@ -10681,6 +10681,7 @@ tar-contents    pi_tar.txt      /*tar-contents*
 tar-copyright  pi_tar.txt      /*tar-copyright*
 tar-history    pi_tar.txt      /*tar-history*
 tar-manual     pi_tar.txt      /*tar-manual*
+tar-mappings   pi_tar.txt      /*tar-mappings*
 tar-options    pi_tar.txt      /*tar-options*
 tar-usage      pi_tar.txt      /*tar-usage*
 tcl    if_tcl.txt      /*tcl*