Hi Tony,
Actually, I didn't know that highlighting visually and hitting the :
will give me the range. That's half the battle for me on this.
I've tried putting that into a mapping like this:
map vti :'<,'> !perltidy
but when I visually select a chunk of code then type "vti" I get and
error saying:
"E492: Not an editor command '<,'> !perltidy"
Now my question is, how do I program a mapping so that I don't have to
type the !perltidy after I highlight the lines of code I need cleaned
up.
Thanks,
Kevin
On 11/22/06, A.J.Mechelynck <[EMAIL PROTECTED]> wrote:
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.
--
Kevin Old
[EMAIL PROTECTED]