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.


Raspunde prin e-mail lui