Thanks very much ! >From my iPhone
> 2016年7月8日,00:59,Bram Moolenaar <b...@moolenaar.net>: > > > Patch 7.4.1997 > Problem: Cannot easily scroll the quickfix window. > Solution: Add ":cbottom". > Files: src/ex_cmds.h, src/quickfix.c, src/proto/quickfix.pro, > src/ex_docmd.c, src/testdir/test_quickfix.vim, > runtime/doc/quickfix.txt > > > *** ../vim-7.4.1996/src/ex_cmds.h 2016-06-12 21:20:50.941837428 +0200 > --- src/ex_cmds.h 2016-07-07 18:19:22.888573565 +0200 > *************** > *** 259,264 **** > --- 259,267 ---- > EX(CMD_cbuffer, "cbuffer", ex_cbuffer, > BANG|RANGE|NOTADR|WORD1|TRLBAR, > ADDR_LINES), > + EX(CMD_cbottom, "cbottom", ex_cbottom, > + TRLBAR, > + ADDR_LINES), > EX(CMD_cc, "cc", ex_cc, > RANGE|NOTADR|COUNT|TRLBAR|BANG, > ADDR_LINES), > *** ../vim-7.4.1996/src/quickfix.c 2016-07-02 15:41:41.586523202 +0200 > --- src/quickfix.c 2016-07-07 18:47:44.182954704 +0200 > *************** > *** 2808,2813 **** > --- 2808,2848 ---- > } > > /* > + * Move the cursor in the quickfix window to "lnum". > + */ > + static void > + qf_win_goto(win_T *win, linenr_T lnum) > + { > + win_T *old_curwin = curwin; > + > + curwin = win; > + curbuf = win->w_buffer; > + curwin->w_cursor.lnum = lnum; > + curwin->w_cursor.col = 0; > + #ifdef FEAT_VIRTUALEDIT > + curwin->w_cursor.coladd = 0; > + #endif > + curwin->w_curswant = 0; > + update_topline(); /* scroll to show the line */ > + redraw_later(VALID); > + curwin->w_redr_status = TRUE; /* update ruler */ > + curwin = old_curwin; > + curbuf = curwin->w_buffer; > + } > + > + /* > + * :cbottom command. > + */ > + void > + ex_cbottom(exarg_T *eap UNUSED) > + { > + win_T *win = qf_find_win(&ql_info); > + > + if (win != NULL && win->w_cursor.lnum != > win->w_buffer->b_ml.ml_line_count) > + qf_win_goto(win, win->w_buffer->b_ml.ml_line_count); > + } > + > + /* > * Return the number of the current entry (line number in the quickfix > * window). > */ > *************** > *** 2844,2870 **** > && qf_index <= win->w_buffer->b_ml.ml_line_count > && old_qf_index != qf_index) > { > - win_T *old_curwin = curwin; > - > - curwin = win; > - curbuf = win->w_buffer; > if (qf_index > old_qf_index) > { > ! curwin->w_redraw_top = old_qf_index; > ! curwin->w_redraw_bot = qf_index; > } > else > { > ! curwin->w_redraw_top = qf_index; > ! curwin->w_redraw_bot = old_qf_index; > } > ! curwin->w_cursor.lnum = qf_index; > ! curwin->w_cursor.col = 0; > ! update_topline(); /* scroll to show the line */ > ! redraw_later(VALID); > ! curwin->w_redr_status = TRUE; /* update ruler */ > ! curwin = old_curwin; > ! curbuf = curwin->w_buffer; > } > return win != NULL; > } > --- 2879,2895 ---- > && qf_index <= win->w_buffer->b_ml.ml_line_count > && old_qf_index != qf_index) > { > if (qf_index > old_qf_index) > { > ! win->w_redraw_top = old_qf_index; > ! win->w_redraw_bot = qf_index; > } > else > { > ! win->w_redraw_top = qf_index; > ! win->w_redraw_bot = old_qf_index; > } > ! qf_win_goto(win, qf_index); > } > return win != NULL; > } > *** ../vim-7.4.1996/src/proto/quickfix.pro 2016-01-19 13:21:55.845334290 > +0100 > --- src/proto/quickfix.pro 2016-07-07 18:45:33.744948691 +0200 > *************** > *** 9,14 **** > --- 9,15 ---- > void ex_cwindow(exarg_T *eap); > void ex_cclose(exarg_T *eap); > void ex_copen(exarg_T *eap); > + void ex_cbottom(exarg_T *eap); > linenr_T qf_current_entry(win_T *wp); > int bt_quickfix(buf_T *buf); > int bt_nofile(buf_T *buf); > *** ../vim-7.4.1996/src/ex_docmd.c 2016-06-12 21:20:50.941837428 +0200 > --- src/ex_docmd.c 2016-07-07 18:23:05.425238053 +0200 > *************** > *** 129,134 **** > --- 129,135 ---- > # define ex_cclose ex_ni > # define ex_copen ex_ni > # define ex_cwindow ex_ni > + # define ex_cbottom ex_ni > #endif > #if !defined(FEAT_QUICKFIX) || !defined(FEAT_EVAL) > # define ex_cexpr ex_ni > *** ../vim-7.4.1996/src/testdir/test_quickfix.vim 2016-07-02 > 21:22:46.848282547 +0200 > --- src/testdir/test_quickfix.vim 2016-07-07 18:56:27.686962935 +0200 > *************** > *** 1414,1416 **** > --- 1414,1429 ---- > call delete('Xone', 'rf') > call delete('Xtwo', 'rf') > endfunc > + > + function Test_cbottom() > + call setqflist([{'filename': 'foo', 'lnum': 42}]) > + copen > + let wid = win_getid() > + call assert_equal(1, line('.')) > + wincmd w > + call setqflist([{'filename': 'var', 'lnum': 24}], 'a') > + cbottom > + call win_gotoid(wid) > + call assert_equal(2, line('.')) > + cclose > + endfunc > *** ../vim-7.4.1996/runtime/doc/quickfix.txt 2016-07-01 14:48:02.654783860 > +0200 > --- runtime/doc/quickfix.txt 2016-07-07 18:39:14.638727812 +0200 > *************** > *** 427,432 **** > --- 437,448 ---- > :lw[indow] [height] Same as ":cwindow", except use the window showing the > location list for the current window. > > + :cbo[ttom] Put the cursor in the last line of the quickfix window > + and scroll to make it visible. This is useful for > + when errors are added by an asynchronous callback. > + Only call it once in a while if there are many > + updates to avoid a lot of redrawing. > + > Normally the quickfix window is at the bottom of the screen. If there are > vertical splits, it's at the bottom of the rightmost column of windows. To > make it always occupy the full width: > > *** ../vim-7.4.1996/src/version.c 2016-07-07 17:32:48.290238465 +0200 > --- src/version.c 2016-07-07 18:57:09.990317860 +0200 > *************** > *** 760,761 **** > --- 760,763 ---- > { /* Add new patch number below this line */ > + /**/ > + 1997, > /**/ > > -- > hundred-and-one symptoms of being an internet addict: > 221. Your wife melts your keyboard in the oven. > > /// Bram Moolenaar -- b...@moolenaar.net -- http://www.Moolenaar.net \\\ > /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\ > \\\ an exciting new programming language -- http://www.Zimbu.org /// > \\\ help me help AIDS victims -- http://ICCF-Holland.org /// > > -- > -- > 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 vim_dev+unsubscr...@googlegroups.com. > 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 vim_dev+unsubscr...@googlegroups.com. For more options, visit https://groups.google.com/d/optout.