> 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
No comments:
Post a Comment