2015-02-05 17:46 GMT+03:00 h_east <[email protected]>:
> 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.

You forgot documentation. I guess this will add at least five lines
(empty line, tag, description (two lines), empty line). More with
examples. See `:h b:current_syntax-variable`, but this should be put
somewhere in quickfix.c: e.g. somewhere under `:h w:quickfix_title`,
but please attach tag to the paragraph with description, *not* to the
:copen command like w:quickfix_title (e.g. I would suggest using
b:current_syntax as a reference, but place it where w:quickfix_title
is placed).

>
>>           set_internal_string_var("b:qflisttype", (curwin->w_llist_ref

And also tests. I am not familiar with that part of Vim, but
`curwin->w_llist_ref == NULL` looks suspicious: what if you *first*
create a location list and then from the same window create a location
list? This and the opposite (first quickfix) should be tested.

>>                                           == NULL) ? "quickfix" : 
>> "location");
>
> What's dislike you this patch?
>
> Let's go the simple way :-)

There is also a question whether this shoud be `b:qflisttype` or
`w:qflisttype`. w:quickfix_title is attached to the window.

>
> Best regards,
> Hirohito Higashi (a.k.a h_east)
>
> --
> --
> 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.

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