*pi_tar.txt*	For Vim version 7.0.  Last change: 2006 May 02

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

Author:  Charles E. Campbell, Jr.  <NdrOchip@ScampbellPfamily.AbizM>
	  (remove NOSPAM from Campbell's email first)
Copyright: The GPL (gnu public license) applies to	*tar-copyright*
	   tarPlugin.vim, and pi_tar.txt.
	   No warranty, express or implied.  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.

==============================================================================
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_writeoptions*   "uf"	  used to update/replace a file


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

   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,
		     its "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 http://michael.toren.net/code/)

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