*pi_tar.txt*	For Vim version 9.2.  Last change: 2026 Apr 16

		       +====================+
		       | Tar File Interface |
		       +====================+

Original Author:  Charles E. Campbell
Copyright 2005-2017:					*tar-copyright*
	The VIM LICENSE (see |copyright|) applies to the files in this
	package, including tarPlugin.vim, tar.vim, and pi_tar.txt.  Like
	anything else that's except use "tar.vim" instead of "VIM".  Like
	anything else that's free, tar.vim and its associated files are
	provided *as is* and comes with no warranty of any kind, either
	expressed or implied.  No guarantees of merchantability.  No
	guarantees of suitability for any purpose.  By using this plugin, you
	agree that in no event will the copyright holder be liable for any
	damages resulting from the use of this software. Use at your own risk!

==============================================================================
1. Contents					*tar* *tar-contents*
   1. Contents..................................................|tar-contents|
   2. Usage.....................................................|tar-usage|
   3. Options...................................................|tar-options|
   4. History...................................................|tar-history|

==============================================================================
2. Usage					*tar-usage* *tar-manual*

   When one edits a *.tar file, this plugin will handle displaying a
   contents page.  Select a file to edit by moving the cursor atop
   the desired file, then hit the <return> key.  After editing, one may
   also write to the file.  Currently, one may not make a new file in
   tar archives via the plugin.

						*:Vimuntar*
   VIMUNTAR~

   :Vimuntar [vimhome]

	This command copies, if necessary, the tarball to the .vim or vimfiles
	directory using the first writable directory in the 'runtimepath' when
	no [vimhome] is specified.  Otherwise, the [vimhome] argument allows
	the user to specify that directory, instead.

	The copy is done using the command in *g:tar_copycmd* , which is >
		cp   for cygwin, unix, macunix
		copy for windows (32, 95, 64, 16)
<	The extraction is done with the command specified with
	*g:tar_extractcmd* , which by default is >
		"tar -xf"
<
						*:TarDiff*
   DIFFERENCING SUPPORT~

   :TarDiff [filename]

	This command will attempt to show the differences between the tarball
	version of a file and the associated file on the system.  In order to
	find that file on the system, the script uses the path associated with
	the file mentioned in the tarball.  If the current directory is not
	correct for that path, :TarDiff will fail to find the associated file.

	If the [filename] is given, that filename (and path) will be used
	to specify the associated file.


   PREVENTING LOADING~

   If for some reason you do not wish to use vim to examine tar'd files,
   you may put the following two variables into your <.vimrc> to prevent
   the tar plugin from loading: >

	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*

   These options are variables that one may change, typically in one's
   <.vimrc> file.
			 Default
   Variable		  Value   Explanation
   *g:tar_browseoptions*    "Ptf"   used to get a list of contents
   *g:tar_readoptions*	  "OPxf"  used to extract a file from a tarball
   *g:tar_cmd*		  "tar"   the name of the tar program
   *g:tar_nomax*	    0	  if true, file window will not be maximized
   *g:tar_writeoptions*	  "uf"    used to update/replace a file


==============================================================================
4. History						*tar-history*

	unreleased:
		Apr 16, 2026	* add missing g:tar_secure into tar#Extract
		Apr 15, 2026	* add path traversal checks in tar#Extract()
		Apr 09, 2026	* fix zstd support and dotted filename support
		Apr 06, 2026	* fix lz4 support
		Feb 07, 2026	* make path traversal detection more robust
		Feb 06, 2026	* fix bug with nowrapscan
		Jul 16, 2025	* update minimum required Vim version
		Jul 13, 2025	* drop leading /
		May 19, 2025	* restore working directory after read/write
		Apr 16, 2025	* decouple from netrw by adding s:WinPath()
				  instead of shelling out to file(1)
		Mar 02, 2025	* determine the compression using readblob()
		Mar 02, 2025	* escape the filename before using :read
		Mar 01, 2025	* fix syntax error in tar#Read()
		Feb 28, 2025	* add support for bzip3 (#16755)
		Feb 06, 2025	* add support for lz4 (#16591)
		Nov 11, 2024	* support permissions (#7379)
		Feb 19, 2024	* announce adoption
		Jan 08, 2024	* fix a few problems (#138331, #12637, #8109)
	v31	Apr 02, 2017	* (klartext) reported that browsing encrypted
				  files in a zip archive created unencrypted
				  swap files.  I am applying a similar fix
				  used on zip.vim to tar.vim: new buffers
				  are opened with |:noswapfile|.
		May 16, 2017	* When the mouse option isn't empty, the
				  leftmouse can be used to select a file
				  in the tar-file listing.
	v30	Apr 22, 2014	* .tgz files are ambiguous: they may have been
				  compressed with either gzip or bzip2.  Tar.vim
				  disambiguates by using unix's "file" command.
		Feb 18, 2016	* Changed =~ to =~# where appropriate
		Feb 18, 2017	* Now also permits xz decompression
	v28	Jun 23, 2011	* a few more decompression options (tbz tb2 txz)
	v27	May 31, 2011	* moved cygwin detection before g:tar_copycmd
				  handling
				* inserted additional |:keepj| modifiers
				* changed silent  to  sil!  (|:silent|)
	v26	Aug 09, 2010	* uses buffer-local instead of window variables
				  to hold tarfile name
				* inserted keepj before 0d to protect jump list
	v25	Jun 19, 2010	* (Jan Steffens) added support for xz
				  compression
	v24	Apr 07, 2009	* :Untarvim command implemented
		Sep 28, 2009	* Added lzma support
	v22	Aug 08, 2008	* security fixes
	v16	Jun 06, 2008	* tarfile:: used instead of tarfile: when
				  editing files inside tarballs.  Fixes a
				  problem with tarballs called things like
				  c:\abc.tar. (tnx to Bill McCarthy)
	v14	May 09, 2008	* arno caught a security bug
		May 28, 2008	* various security improvements.  Now requires
				  patch 299 which provides the fnameescape()
				  function
		May 30, 2008	* allows one to view *.gz and *.bz2 files that
				  are in *.tar files.
	v12	Sep 07, 2007	* &shq now used if not the empty string for
				  g:tar_shq
	v10	May 02, 2006	* now using "redraw then echo" to show messages,
				  instead of "echo and prompt user"
	v9	May 02, 2006	* improved detection of masquerading as tar file
	v8	May 02, 2006	* allows editing of files that merely masquerade
				  as tar files
	v7	Mar 22, 2006	* work on making tar plugin work across network
		Mar 27, 2006	* g:tar_cmd now available for users to change
				  the name of the tar program to be used.  By
				  default, of course, it's "tar".
	v6	Dec 21, 2005	* writing to files not in directories caused
				  problems - fixed (pointed out by
				  Christian Robinson)
	v5	Nov 22, 2005	* report option workaround installed
	v3	Sep 16, 2005	* handles writing files in an archive back to
				  the archive
		Oct 18, 2005	* <amatch> used instead of <afile> in autocmds
		Oct 18, 2005	* handles writing to compressed archives
		Nov 03, 2005	* handles writing tarfiles across a network
				  using netrw#NetWrite()
	v2			* converted to use Vim7's new autoload feature
				  by Bram Moolenaar
	v1	(original)	* Michael Toren
				  (see michael.toren.net/code/
				   link seems dead)

==============================================================================
vim:tw=78:ts=8:noet:ft=help
