Le jeudi 5 février 2015 15:46:01 UTC+1, h_east a écrit :
> Hi Enno,
> 
> 2015/2/5(Thu) 18:25:49 UTC+9 Enno:
> > Le jeudi 5 février 2015 05:12:19 UTC+1, h_east a écrit :
> > > Hi Enno,
> > > 
> > > 2015/2/4(Wed) 20:42:57 UTC+9 Enno:
> > > > How about
> > > > 
> > > > let b:isLoc = len(getloclist(0)) > 0 ? 1 : 0
> > > > 
> > > > inside of a qf filetype window. See :h getloclist() that explains
> > > > 
> > > > For a location list window, the displayed location list is returned. 
> > > > 
> > > > All credit to romainl at 
> > > > https://github.com/romainl/dotvim/blob/44e87b3fbb829145a23bd5b2be1807cc958308e5/bundle/qf/after/ftplugin/qf.vim
> > > 
> > > A location list can be associated with a quickfix window.
> > > In this case, it can not be determined correctly in this work-around.
> > > 
> > > Try this:
> > > - move Vim source-code directory.
> > >   $ cd vim/src
> > > - run vim (no vimrc, no plugin)
> > >   $ vim -N -u NONE screen.c
> > > 
> > > :vimgrep screen *.c
> > > :copen
> > > :echo len(getloclist(0))          " on quickfix window
> > > 0                                 " Correct
> > > :lvimgrep update_screen *.c
> > > :wincmd w
> > > :lopen
> > > :echo len(getloclist(0))          " on location list window
> > > 75                                " Correct
> > > :wincmd k
> > > :echo len(getloclist(0))          " on quickfix window
> > > 75                                " Not correct!
> > > 
> > > 
> > > Our patch always returns correct value.
> > > Thanks for the response.
> > > 
> > > Best regards,
> > > Hirohito Higashi (a.k.a h_east)
> > 
> > Hello Hirohito,
> > 
> > Yep, this check has several issues. Yours stands, as well as that it fails 
> > when the qflist is empty. 
> > 
> > More stable seems the following workaround attachched below, originally 
> > from 
> > 
> > https://groups.google.com/forum/#!msg/vim_use/sfRlnrOwN2M/JAdzwHe51qYJ
> > 
> > but at the same time, it shows that this patch is called for.
> > 
> > --
> > 
> > In ~/.vim/ftplugin/qf.vim:
> > 
> > if exists('s:processing')
> >   finish
> > endif
> > let listbufnr = bufnr("%")
> > let numwindows = winnr('$')
> > let altwin = winnr('#')
> > let curwin = winnr()
> > let s:processing = 1
> > copen
> > if curwin == winnr()
> >   call setbufvar(listbufnr, 'isQuickfix', '1')
> > endif
> > " close the quickfix list if it was closed when we began
> > if numwindows != winnr('$')
> >   cclose
> > endif
> > " return to quickfix/location list
> > exe altwin 'wincmd w'
> > exe curwin 'wincmd w'
> > unlet s:processing
> > 
> > Then a buffer of file type qf is a quickfix list if b:isQuickfix exists.
> 
> I like simple way. 
> I dislike work-around.
> I dislike complex way.
> 
> Our patch is very simple.
> In fact, This patch is only two line. 
> 
> >         set_internal_string_var("b:qflisttype", (curwin->w_llist_ref
> >                                         == NULL) ? "quickfix" : "location");
> 
> What's dislike you this patch?
> 
> Let's go the simple way :-)
> 
> Best regards,
> Hirohito Higashi (a.k.a h_east)

Hello Hirohito,

Your patch is perfect. In fact, by

"... it (= the below code) shows that this patch is called for"

I meant what you just wrote. 

The sole value of the Vim script could be as a crutch (= awkward 
and complex work-around) for Vim versions without your patch.

  Enno

-- 
-- 
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/d/optout.

Raspunde prin e-mail lui