On 03/25/2011 09:37 PM, meino.cra...@gmx.de wrote:
possible to do two totally different searches in the function
and get highlighted the matches of *both* searches when the
function returns control to the user. Due to teh complexity of
the regular expressions of that matches it will be nearly
impossible to combine both searches into one.
Well, the general method would be something like
let @/='\%('.pattern1.'\)\|\%('.pattern2.'\)'
Without having the exact regexps, it's somewhat hard to tell if
there are any hidden gotchas (things that come to mind would be
capture-groups and back-references in both patterns; SOL/EOL
anchors in both patterns; modality-altering flags like "\c" or
"\V" that would alter both pieces; etc). You might even be able
to do something like
function! Foo()
/complex_pattern1/
let pattern1=@/
/complex_pattern2/
let pattern2=@/
let @/='\%('.pattern1.'\)\|\%('.pattern2.'\)'
endfunction
Alternatively, you can use matches for the highlighting instead
of searches/search-highlighting if you don't need to use n/N to
jump between hits. Something like this (untested)
function! Foo()
call matchdelete(1)
/complex_pattern1/
call matchadd('Search', @/, 10, 1)
/complex_pattern2/
call matchadd('Search', @/, 10, 1)
endfunction
might do the trick. Finally, you might look at Dr. Chip's
logipat.vim which simplifies some of the pattern-combining.
-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