> lessthanideal wrote:
>> function RangeTest() range
>> echo a:firstline . " " . a:lastline
>> endfunction
>> command -range=% CallRT<line1>,<line2>call RangeTest()
>>
>> These two commands give the same output
>> :CallRT
>> :%CallRt
>>
>> Could the function distinguish between the two?
>
> I don't think the two cases can be distinguished. A possible
> workaround would be to omit '=%' so the default range is the
> current line. We would assume that no one wants to sort just
> one line, so in the function a test could say if first and last
> lines are equal, use the default wanted by the function.
I like the "omit the =%" suggestion, but might be tempted to check
if a:firstline == 1 && a:lastline == line('$')
instead, because the range can be more than just "%". E.g.
something like
:1,$CallRT
:2-1,$CallRT
:1,18CallRT "assuming the last line is 18
:?SomethingOnFirstLine?,/OnLastLine/CallRT
all of which are effectively passing a full-file range.
> Hmmm. I just remembered something. You can use this trick:
> let cmd = histget(':', -1)
>
> If cmd is just 'CallRT' then no range was used.
Though expecting particular sequences in the history can break in
fragile ways when you have things like
:g/pattern/;+5CallRT
-tim
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php
No comments:
Post a Comment