*pi_mnvball.txt*	For MNV version 10.0.  Last change: 2026 Feb 14

			       ----------------
			       MNVball Archiver
			       ----------------

Author:  Charles E. Campbell  <NcampObell@SdrPchip.AorgM-NOSPAM>
	  (remove NOSPAM from Campbell's email first)
Copyright: (c) 2004-2015 by Charles E. Campbell		*MNVball-copyright*
	The MNV LICENSE (see |copyright|) applies to the files in this
	package, including mnvballPlugin.mnv, mnvball.mnv, and pi_mnvball.txt.
	except use "mnvball" instead of "MNV".  Like anything else that's
	free, mnvball.mnv 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				*vba* *mnvball* *mnvball-contents*

	1. Contents......................................: |mnvball-contents|
	2. MNVball Introduction..........................: |mnvball-intro|
	3. MNVball Manual................................: |mnvball-manual|
	   MkMNVball.....................................: |:MkMNVball|
	   UseMNVball....................................: |:UseMNVball|
	   RmMNVball.....................................: |:RmMNVball|
	4. MNVball History...............................: |mnvball-history|


==============================================================================
2. MNVball Introduction						*mnvball-intro*

	MNVball is intended to make life simpler for users of plugins.  All
	a user needs to do with a mnvball is: >
		mnv someplugin.vba
		:so %
		:q
<	and the plugin and all its components will be installed into their
	appropriate directories.  Note that one doesn't need to be in any
	particular directory when one does this.  Plus, any help for the
	plugin will also be automatically installed.

	If a user has decided to use the AsNeeded plugin, mnvball is smart
	enough to put scripts nominally intended for .mnv/plugin/ into
	.mnv/AsNeeded/ instead.

	Removing a plugin that was installed with mnvball is really easy: >
		mnv
		:RmMNVball someplugin
<	This operation is not at all easy for zips and tarballs, for example.

	MNVball examines the user's 'runtimepath' to determine where to put
	the scripts.  The first directory mentioned on the runtimepath is
	usually used if possible.  Use >
		:echo &rtp
<	to see that directory.


==============================================================================
3. MNVball Manual					*mnvball-manual*

MAKING A MNVBALL						*:MkMNVball*
		:[range]MkMNVball[!] filename [path]

	The range is composed of lines holding paths to files to be included
	in your new mnvball, omitting the portion of the paths that is
	normally specified by the runtimepath ('rtp').  As an example: >
		plugin/something.mnv
		doc/something.txt
<	using >
		:[range]MkMNVball filename
<
	on this range of lines will create a file called "filename.vba" which
	can be used by MNVball.mnv to re-create these files.  If the
	"filename.vba" file already exists, then MkMNVball will issue a
	warning and not create the file.  Note that these paths are relative
	to your .mnv (mnvfiles) directory, and the files should be in that
	directory.  The mnvball plugin normally uses the first 'runtimepath'
	directory that exists as a prefix; don't use absolute paths, unless
	the user has specified such a path.

	If you use the exclamation point (!), then MkMNVball will create the
	"filename.vba" file, overwriting it if it already exists.  This
	behavior resembles that for |:w|.

	If you wish to force slashes into the filename, that can also be done
	by using the exclamation mark (ie. :MkMNVball! path/filename).

	The tip at http://mnv.wikia.com/wiki/Using_MNVBall_with_%27Make%27
	has a good idea on how to automate the production of mnvballs using
	make.


MAKING DIRECTORIES VIA MNVBALLS				*g:mnvball_mkdir*

	First, the |mkdir()| command is tried (not all systems support it).

	If it doesn't exist, then if g:mnvball_mkdir doesn't exist, it is set
	as follows: >
	  |g:netrw_localmkdir|, if it exists
	  "mkdir"             , if it is executable
	  "makedir"           , if it is executable
	  Otherwise           , it is undefined.
<	One may explicitly specify the directory making command using
	g:mnvball_mkdir.  This command is used to make directories that
	are needed as indicated by the mnvball.


CONTROLLING THE MNVBALL EXTRACTION DIRECTORY		*g:mnvball_home*

	You may override the use of the 'runtimepath' by specifying a
	variable, g:mnvball_home.

							*mnvball-extract*
		mnv filename.vba

	Simply editing a MNVball will cause MNVball.mnv to tell the user to
	source the file to extract its contents.

	Extraction will only proceed if the first line of a putative mnvball
	file holds the "MNVball Archiver by Charles E. Campbell" line.

LISTING FILES IN A MNVBALL					*:MNVballList*

		:MNVballList

	This command will tell MNVball to list the files in the archive, along
	with their lengths in lines.

MANUALLY INVOKING MNVBALL EXTRACTION				*:UseMNVball*

		:UseMNVball [path]

	This command is contained within the mnvball itself; it invokes the
	mnvball#MNVball() routine which is responsible for unpacking the
	mnvball.  One may choose to execute it by hand instead of sourcing
	the mnvball; one may also choose to specify a path for the
	installation, thereby overriding the automatic choice of the first
	existing directory on the 'runtimepath'.

REMOVING A MNVBALL						*:RmMNVball*

		:RmMNVball mnvballfile [path]

	This command removes all files generated by the specified mnvball
	(but not any directories it may have made).  One may choose a path
	for de-installation, too (see 'runtimepath'); otherwise, the default
	is the first existing directory on the 'runtimepath'.
	To implement this, a file (.MNVballRecord) is made in that directory
	containing a record of what files need to be removed for all mnvballs
	used thus far.

PREVENTING LOADING

	If for some reason you don't want to be able to extract plugins
	using mnvballs: you may prevent the loading of mnvball.mnv by
	putting the following two variables in your <.mnvrc>: >

		let g:loaded_mnvballPlugin= 1
		let g:loaded_mnvball      = 1
<
WINDOWS							*mnvball-windows*

	Many mnvball files are compressed with gzip.  Windows, unfortunately,
	does not come provided with a tool to decompress gzip'ped files.
	Fortunately, there are a number of tools available for Windows users
	to un-gzip files:
>
	    Item     Tool/Suite   Free   Website
	    ----     ----------   ----   -------
	    7zip        tool       y     http://www.7-zip.org/
	    Winzip      tool       n     http://www.winzip.com/downwz.htm
	    unxutils    suite      y     http://unxutils.sourceforge.net/
	    cygwin      suite      y     http://www.cygwin.com/
	    GnuWin32    suite      y     http://gnuwin32.sourceforge.net/
	    MinGW       suite      y     http://www.mingw.org/
<

==============================================================================
4. MNVball History					*mnvball-history* {{{1

	37 : Jul 18, 2014 * (by request of T. Miedema) added augroup around
			    the autocmds in mnvballPlugin.mnv
	     Jul 06, 2015 * there are two uses of tabc; changed to tabc!
	34 : Sep 22, 2011 * "UseMNVball path" now supports a non-full path by
			    prepending the current directory to it.
	33 : Apr 02, 2011 * Gave priority to *.vmb over *.vba
			  * Changed silent! to sil! (shorter)
			  * Safed 'swf' setting (during mnvball extraction,
			    its now turned off)
	32 : May 19, 2010 * (Christian Brabrandt) :so someplugin.vba and
			    :so someplugin.vba.gz (and the other supported
			    compression types) now works
			  * (Jan Steffens) added support for xz compression
			  * fenc extraction was erroneously picking up the
			    end of the line number when no file encoding
			    was present.  Fixed.
			  * By request, beginning the switchover from the vba
			    extension to vmb.  Currently both are supported;
			    MkMNVball, however, now will create *.vmb files.
	     Feb 11, 2011 * motoyakurotsu reported an error with mnvball's
			    handling of zero-length files
	     Feb 18, 2016 * Changed =~ to =~# where appropriate
	30 : Dec 08, 2008 * fnameescape() inserted to protect error
			    messaging using corrupted filenames from
			    causing problems
			  * RmMNVball supports filenames that would
			    otherwise be considered to have "magic"
			    characters (ie. Abc[1].vba)
	     Feb 18, 2009 * s:Escape(), g:mnvball_shq, and g:netrw_shq
			    removed (shellescape() used directly)
	     Oct 05, 2009 * (Nikolai Weibull) suggested that MkMNVball
			    be allowed to use slashes in the filename.
	26 : May 27, 2008 * g:mnvball_mkdir usage installed.  Makes the
	                    $HOME/.mnv (or $HOME\mnvfiles) directory if
			    necessary.
	     May 30, 2008 * (tnx to Bill McCarthy) found and fixed a bug:
			    mnvball wasn't updating plugins to AsNeeded/
			    when it should
	25 : Mar 24, 2008 * changed mnvball#MNVball() to recognize doc/*.??x
			    files as help files, too.
	     Apr 18, 2008 * RmMNVball command is now protected by saving and
	                    restoring settings -- in particular, acd was
			    causing problems as reported by Zhang Shuhan
	24 : Nov 15, 2007 * g:mnvball_path_escape used by s:Path() to
	                    prevent certain characters from causing trouble
			    (defunct: |fnameescape()| and |shellescape()|
			    now used instead)
	22 : Mar 21, 2007 * uses setlocal instead of set during BufEnter
	21 : Nov 27, 2006 * (tnx to Bill McCarthy) mnvball had a header
	                    handling problem and it now changes \s to /s
	20 : Nov 20, 2006 * substitute() calls have all had the 'e' flag
	                    removed.
	18 : Aug 01, 2006 * mnvballs now use folding to easily display their
	                    contents.
			  * if a user has AsNeeded/somefile, then mnvball
			    will extract plugin/somefile to the AsNeeded/
			    directory
	17 : Jun 28, 2006 * changes all \s to /s internally for Windows
	16 : Jun 15, 2006 * A. Mechelynck's idea to allow users to specify
			    installation root paths implemented for
			    UseMNVball, MkMNVball, and RmMNVball.
			  * RmMNVball implemented
	15 : Jun 13, 2006 * bugfix
	14 : May 26, 2006 * bugfixes
	13 : May 01, 2006 * exists("&acd") used to determine if the acd
			    option exists
	12 : May 01, 2006 * bugfix - the 'acd' option is not always defined
	11 : Apr 27, 2006 * MNVballList would create missing subdirectories
			    that the mnvball specified were needed.  Fixed.
	10 : Apr 27, 2006 * moved all setting saving/restoration to a pair of
			    functions.  Included some more settings in them
			    which frequently cause trouble.
	9  : Apr 26, 2006 * various changes to support Windows' predilection
			    for backslashes and spaces in file and directory
			    names.
	7  : Apr 25, 2006 * bypasses foldenable
			  * uses more exe and less norm! (:yank :put etc)
			  * does better at insuring a "Press ENTER" prompt
			    appears to keep its messages visible
	4  : Mar 31, 2006 * BufReadPost seems to fire twice; BufReadEnter
			    only fires once, so the "Source this file..."
			    message is now issued only once.
	3  : Mar 20, 2006 * removed query, now requires sourcing to be
			    extracted (:so %).  Message to that effect
			    included.
			  * :MNVballList  now shows files that would be
			    extracted.
	2  : Mar 20, 2006 * query, :UseMNVball included
	1  : Mar 20, 2006 * initial release


==============================================================================
mnv:tw=78:ts=8:noet:ft=help:fdm=marker
