Kevin Old wrote:
Hello everyone,

I have been thinking about implementing this little feature to help
clean up my code.  Here's the scoop.  I'm a Perl programmer and I use
a templating module called HTML::Mason which allows perl code within
certain "tags".  Here's an example of the code:

<% $tmpl->template_top()  %>

% $m->call_next();

<% $tmpl->template_bottom  %>


<%init>
use Myapp::HTML;
use Myapp:Config qw(IMG_BASE_URL);

my $tmpl = Myapp::HTML->new({
                               title => 'Something',
                               js => ['jquery.js'] },
                               );
</%init>

<%flags>
inherit => undef
</%flags>


Between the <%init> tags is just straight Perl code.  I have two maps
I've setup in vim that will run the contents of a file through an
external program (perltidy) and clean up my code.  They are:

map ti :%!perltidy " clean entire file
map mt :.!perltidy " clean current line

Just wondering if there'd be a way that I could write a map that would
work for a current "block" of code.  Maybe autodetect what block I'm
in?  In this case whatever block I'm in (init).  If I couldn't
autodetect the block I'm in, that'd be ok cause I could just map the
few types of blocks into separate map commands.

Should I go about this with a regex and then pass that line range to
the external command?

Any help is greatly appreciated!

Kevin

If you type : on a highlighted Visual area, you'll get :'<,'> as the range (where '< means "the first line of the Visual area" and '> means "the last line of the Visual area"). If you use that on an ex-command which accepts a range (defined with the -range modifier) the range will be passed to the command; otherwise it will be executed once for every line in the range.

v<object> where <object> is a Normal-mode "object", will highlight the concerned object. Example: vip for the "inner paragraph".


Best regards,
Tony.

Reply via email to