On Tue, Jul 11, 2006 at 01:52:40PM -0500, Tim Chase wrote:
[snip]
> 
> Well, after hacking at it on and off for the last day or two, 
> trying various ideas, this is one of my uglier hacks and abuses 
> of vim's conventions.
> 
> function! IncRoman(initial, howmuch)
>       " do your own IncRoman stuff here...this
>       " just a generic increment
>       try
>               let l:result = a:initial + a:howmuch
>       catch
>               let l:result = a:howmuch
>       endtry
>       return l:result
> endfunction
> 
> :noremap <c-a> :<home><right><right><right><right><c-u>let 
> howmuch=<end>+1<cr>ciw<c-r>=IncRoman(@-,howmuch)<cr><esc>
> 
> This one-liner mapping (in case mailers on either end of things 
> ended up breaking that mapping line) seems to work correctly on 
> various values that I threw at it.  If you try to increment a 
> non-number, it will replace it with the increment quantity, which 
> seemed reasonable to me.  If you don't like the behavior, you can 
> change the "catch" clause to return what you prefer (either the 
> initial contents, or an empty string would be other good candidates).
> 
> It should even be swappable if you have a companion DecRoman 
> function with the same sort of call-signature.
> 
> It's a horrible abuse of the fact that vim, when you start typing 
> a count and press the colon, defaults to the range ".,.+x" where 
> "x" is one less than the count given.  But it works :)

     So you delete everything but the "x" and then continue the command
line after that?  Yes, that is a hack.

     Why not just use <C-U> in the mapping (after the : ) to clear the
command line, then use v:count or v:count1 instead of the second
argument?

HTH                                     --Benji Fisher

Reply via email to