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 exodist7@gmail.com
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.