The final version I added to SearchParty:
function! PrintWithHighlighting() range
let lnum = a:firstline
let lnum_len = len(line('$'))
for line in getline(a:firstline, a:lastline)
echohl LineNr
echon printf("%*s ", lnum_len, lnum)
echohl none
let lnum += 1
let ms = match(line, @/)
let me = matchend(line, @/)
while ms != -1
echohl none
echon strpart(line, 0, ms)
echohl Search
echon strpart(line, ms, me - ms)
echohl none
let line = strpart(line, me)
let ms = match(line, @/)
let me = matchend(line, @/)
endwhile
echon line . "\n"
endfor
endfunction
command! -range P <line1>,<line2>call PrintWithHighlighting()
On 22 March 2013 02:12, Axel Bender <[email protected]> wrote:
> Thanks all!
>
> Based on your input my final version (taking into account vim's number
> setting):
>
> command! -nargs=? P :call PrintHighlighted(<q-args>)
>
> function! PrintHighlighted(arg)
> echo ""
>
> if a:arg == "#" || &number
> let l:lnum = line(".")
>
> echohl LineNr
> echon " " . repeat(" ", len(line("$")) - strlen(l:lnum)) . l:lnum .
> " "
> echohl NONE
> endif
>
> let l:line = getline(".")
> let l:pos = 0
>
> while 1
> let l:ms = match(l:line, @/, l:pos)
>
> if l:ms == -1
> echon strpart(l:line, l:pos)
> return
> endif
>
> echon strpart(l:line, l:pos, l:ms - l:pos)
>
> let l:me = matchend(l:line, @/, l:pos)
>
> echohl MarkerBlue
> echon strpart(l:line, l:ms, l:me - l:ms)
> echohl NONE
>
> if l:pos == l:me
> echon strpart(l:line, l:me)
> return
> endif
>
> let l:pos = l:me
> endwhile
> endfunction
>
> --
> --
> You received this message from the "vim_dev" 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
>
> ---
> You received this message because you are subscribed to a topic in the
> Google Groups "vim_dev" group.
> To unsubscribe from this topic, visit
> https://groups.google.com/d/topic/vim_dev/V2vGo2CcHqU/unsubscribe?hl=en.
> To unsubscribe from this group and all its topics, send an email to
> [email protected].
> For more options, visit https://groups.google.com/groups/opt_out.
>
>
>
--
--
You received this message from the "vim_dev" 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
---
You received this message because you are subscribed to the Google Groups
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/groups/opt_out.