I have a mapping that executes the :cnext command (or another command based
on context):

" map <F3> and <S-F3> to jump between locations in a quickfix list, or
" differences if in window in diff mode
if v:version >= 700
  nnoremap <expr> <silent> <F3>   <SID>NextThingJump()
  nnoremap <expr> <silent> <S-F3> <SID>PrevThingJump()

  function! s:NextThingJump()
    let cmd=''
    if &diff
      let cmd.= "]c"
    elseif !empty(getloclist(0))
      let cmd.= ":lnext\<CR>zv"
    elseif !empty(getqflist())
      let cmd.= ":cnext\<CR>zv"
    else
      let cmd.= 'n'
    endif
    return cmd.":.list\<CR>"
  endfun

  function! s:PrevThingJump()
    let cmd=''
    if &diff
      let cmd.= "[c"
    elseif !empty(getloclist(0))
      let cmd.= ":lprev\<CR>zv"
    elseif !empty(getqflist())
      let cmd.= ":cprev\<CR>zv"
    else
      let cmd.= 'N'
    endif
    return cmd.":.list\<CR>"
  endfun


When using this command, with a quickfix list populated by a :make command,
I got a crash as follows:

> gvim.exe!qf_jump(qf_info_S * qi, int dir, int errornr, int forceit)  Line
1903 + 0x15 bytes C
  gvim.exe!do_one_cmd(unsigned char * * cmdlinep, int sourcing, condstack *
cstack, unsigned char * (int, void *, int)* fgetline, void * cookie)  Line
2962 C
  gvim.exe!do_cmdline(unsigned char * cmdline, unsigned char * (int, void
*, int)* fgetline, void * cookie, int flags)  Line 1138 C
  gvim.exe!nv_colon(cmdarg_S * cap)  Line 5437 C
  gvim.exe!normal_cmd(oparg_S * oap, int toplevel)  Line 1183 C
  gvim.exe!main_loop(int cmdwin, int noexmode)  Line 1352 C
  gvim.exe!VimMain()  Line 1050 + 0x9 bytes C
  gvim.exe!WinMain(HINSTANCE__ * hInstance, HINSTANCE__ * hPrevInst, char *
lpszCmdLine, int nCmdShow)  Line 131 C
  gvim.exe!__tmainCRTStartup()  Line 275 + 0x21 bytes C

Here is the content of the "locals" window in a Visual Studio debugger:

+ qi 0x0000000000000000 {qf_refcount=??? qf_listcount=??? qf_curlist=???
...} qf_info_S *
dir 0x00000001 int
errornr 0x001becd0 int
forceit 0x00000000 int
+ e_no_more_items 0x000000013f8b0b48 "E553: No more items" unsigned char *

And here is the "Autos" window:

+ IObuff 0x0000000001c5bbc0 "(2 of 0) (line deleted) ): " unsigned char *

I know this may not be all that useful, but maybe somebody will see
something (related to qi being NULL no doubt).

qf_ptr and len can't be found at all by the debugger for some reason.

msg_scrolled is currently set to 1.

I'm not sure why there would be a "no more items" string in the local
variables, unless that is pre-populated just in case of error. I was
somewhere in the middle of my quickfix hits, transitioning from one file to
another, with an ignored line in between the real lines in the quickfix
list.

I don't have time to try narrowing it down any further, sorry.

My Vim version is a 64-bit 7.4.898, HUGE version with GUI, on 64-bit
Windows. I do have several plugins active that use the Python interface but
from the crash location I doubt that's related.

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