NAME
   Vim::Helper - Extended tools to assist working with perl in vim.

DESCRIPTION
   Vim::Helper is a framework intended to integrate with vim to make
   working with perl easier. It is a collection of plugins controlled by a
   config file that is written in perl. The framework provides a command
   line tool intended to be interfaced by vim.

   Every plugin provides its own options and arguments, as well as help and
   vimrc generation. Once your config file is complete you can have the
   tool generate vimrc content that you can pase into your existing vimrc.

SYNOPSIS
   The module is 'use'd in your config file, aside from that you do not
   generally interact directly with the module.

 EXAMPLE CONFIG FILE
   See examples/* in the distribution for more.

   ~/.config/vimph:

       # use Vim::Helper with a list of plugins (Vim::Helper::[PLUGIN])
       use Vim::Helper qw/
           TidyFilter
           Test
           LoadMod
       /;

       # Each plugin is given a configuration function which is the plugin name,
       # '::' is replaced with '_' for plugins with deeper paths.
       # Each plugin config function takes a hashref of options. Options are plugin
       # specific.

       Test {
           from_mod => sub {
               my ( $filename, $modname, @modparts ) = @_;
               return 't/' . join( "-" => @modparts ) . ".t";
           },
           from_test => sub {
               my ( $filename, $modname, @modparts ) = @_;
               $filename =~ s{^t/}{};
               $filename =~ s{^.*/t/}{};
               $filename =~ s{\.t$}{};
               my ( @parts ) = split '-', $filename;
               return join( '/' => @parts ) . '.pm';
           },
       };

       TidyFilter {
           save_rc => '~/.config/perltidysaverc',
           load_rc => '~/.config/perltidyloadrc',
       };

       LoadMod {
           search => [ "./lib", @INC ],
       };

 GENERATING VIMRC
       $ scripts/vimph vimrc

   The above command will output content that can be inserted directly into
   a .vimrc file.

PLUGINS
   There are several plugins included with the Vim::Helper distribution.
   Additional plugins are easy to write.

 INCLUDED PLUGINS
   Fennec
       Vim::Helper::Fennec - For use with Fennec based test suites.

   LoadMod
       Vim::Helper::LoadMod - Used to load the perl module that the cursor
       is sitting on. Move the cursor over the module name "... My::Module
       ..." and hit the configured key, the module will be found and
       opened.

   Test
       Vim::Helper::Test - Used to interact with tests. PRovides keys for
       automatically finding and opening test files when you are in
       modules, and vice-versa.

   TidyFilter
       Vim::Helper::TidyFilter - Used to run perltidy on your files
       automatically when you open, save, or close them. You can use
       seperate tidy configs for loading/saving.

       A good use of this is if you are sane and prefer space for
       indentation, but your team requires tabs be used. You can edit in
       your style, and save to the teams style.

   VimRC
       Loaded automatically, no config options.

       Vim::Helper::VimRC - Used to generate the vimrc content.

   Help
       Loaded automatically, no config options.

       Vim::Helper::Help - Used to generate help output.

 WRITING PLUGINS
   See Vim::Helper::Plugin for more details.

META MODEL
   In your configuration file you will automatically be given an instance
   of Vim::Helper accessable via the VH_META function/method. The
   configuration functions provided to you act upon this meta object. Ths
   object also stores all loaded plugins.

 METHODS
   $obj = Vim::Helper->new()
       Create a new instance (You should never need to use this directly)

   $cli_obj = $obj->cli()
       Get the Declare::CLI object used to manage options and arguments.

   $plugins = $obj->plugins()
       Get the hashref of all the plugins.

   $plugin = $obj->plugin( $plugin_name )
       Get the instance of a specific plugin.

   $command = $obj->command( $opts )
       Reconstruct the command called to launch the program, including
       config file if it was specified. No other options are reconstructed.

   ( $content, $file ) = $obj->read_config( $opts )
       Get the content of the config file, also returns the filename that
       was read.

   $result = $obj->run( @cli )
       Run with the command line arguments specified in @cli. (Example:
       @ARGV)

AUTHORS
   Chad Granum [email protected]

COPYRIGHT
   Copyright (C) 2012 Chad Granum

   Vim-Helper is free software; Standard perl licence.

   Vim-Helper is distributed in the hope that it will be useful, but
   WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the license for
   more details.