On 2012-06-24, Bee wrote:
> On Jun 24, 10:32 am, Gary Johnson wrote:
> > On 2012-06-24, Bee wrote:
> > > 2match has been set and is working.
> >
> > > :echo matcharg(2)[1] returns the correct pattern.
> >
> > > Why does this not set the search register?
> >
> > > let @/=matcharg(2)[1]
> >
> > It works for me.
> >
> > Are you setting @/ within a function and expecting that setting to
> > persist after the function returns?  That won't work because
> > functions use their own instances of @/.
> >
> > Regards,
> > Gary
> 
> 
> Thank you, I now see from :help "/
> 
> 9. Last search pattern register       "/                      *quote_/* 
> *quote/*
> ...
> "Note that the valued is restored when returning from a function"
> 
> --And--
> 
> *function-search-undo*
> The last used search pattern and the redo command "."
> will not be changed by the function.  This also
> implies that the effect of |:nohlsearch| is undone
> when the function returns.
> 
> BUT...
> 
> When the following function exits, the '/' register is still set as it
> was in the function and 'n' will find the next occurance.
> What should it have been restored to?
> 
> " toggle match end of long lines
> hi OverLength NONE cterm=underline ctermbg=darkyellow
> function! OverLength(n)
>   if matcharg(2)[0] == "OverLength"
>     2match none OverLength
>   else "!greater than nth virtual column :help \%>v
>     let @/='\%>' . a:n . 'v.*'
>     execute '2match OverLength /' . @/ . '/'
>   endif
> endf

I would expect it to be restored to whatever value it had before the
OverLength() function was called.  Are you sure that the '/'
register was not already set to that pattern before the function
was called?

If you can do this:

    1.  :let @/= "hello"
    2.  :call OverLength(40)
    3.  :echo @/

and see that the '/' no longer contains "hello", then you may have
found a bug in Vim.

BTW, according to ":help 2match", clearing the match is done with
":2match none"--the second argument is not needed and appears to be
ignored.

Regards,
Gary

-- 
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

Reply via email to