summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2016-07-09 17:56:19 +0200
committerBram Moolenaar <Bram@vim.org>2016-07-09 17:56:19 +0200
commit537ef08408c50e0c4104d57f74993b3b0ed9560d (patch)
tree5d056f1711c261ff4c0e157f433308464ba43616
parented59aa60d3905f935283727f4a7b33c81a00174b (diff)
downloadvim-git-537ef08408c50e0c4104d57f74993b3b0ed9560d.tar.gz
patch 7.4.2010v7.4.2010
Problem: There is a :cbottom command but no :lbottom command. Solution: Add :lbottom. (Yegappan Lakshmanan)
-rw-r--r--runtime/doc/index.txt2
-rw-r--r--runtime/doc/quickfix.txt7
-rw-r--r--src/ex_cmds.h3
-rw-r--r--src/quickfix.c16
-rw-r--r--src/testdir/test_quickfix.vim23
-rw-r--r--src/version.c2
6 files changed, 44 insertions, 9 deletions
diff --git a/runtime/doc/index.txt b/runtime/doc/index.txt
index f040e5f2b..7c6734ad2 100644
--- a/runtime/doc/index.txt
+++ b/runtime/doc/index.txt
@@ -1139,6 +1139,7 @@ tag command action ~
|:caddfile| :caddf[ile] add error message to current quickfix list
|:call| :cal[l] call a function
|:catch| :cat[ch] part of a :try command
+|:cbottom| :cbo[ttom] scroll to the bottom of the quickfix window
|:cbuffer| :cb[uffer] parse error messages and jump to first error
|:cc| :cc go to specific error
|:cclose| :ccl[ose] close quickfix window
@@ -1299,6 +1300,7 @@ tag command action ~
|:last| :la[st] go to the last file in the argument list
|:language| :lan[guage] set the language (locale)
|:later| :lat[er] go to newer change, redo
+|:lbottom| :lbo[ttom] scroll to the bottom of the location window
|:lbuffer| :lb[uffer] parse locations and jump to first location
|:lcd| :lc[d] change directory locally
|:lchdir| :lch[dir] change directory locally
diff --git a/runtime/doc/quickfix.txt b/runtime/doc/quickfix.txt
index 9fb6b18c4..7d5db2c67 100644
--- a/runtime/doc/quickfix.txt
+++ b/runtime/doc/quickfix.txt
@@ -1,4 +1,4 @@
-*quickfix.txt* For Vim version 7.4. Last change: 2016 Jul 02
+*quickfix.txt* For Vim version 7.4. Last change: 2016 Jul 07
VIM REFERENCE MANUAL by Bram Moolenaar
@@ -437,12 +437,17 @@ EXECUTE A COMMAND IN ALL THE BUFFERS IN QUICKFIX OR LOCATION LIST:
:lw[indow] [height] Same as ":cwindow", except use the window showing the
location list for the current window.
+ *:cbo* *:cbottom*
: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.
+ *:lbo* *:lbottom*
+:lbo[ttom] Same as ":cbottom", except use the window showing the
+ location list for the current window.
+
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: >
diff --git a/src/ex_cmds.h b/src/ex_cmds.h
index 8c64d331a..f57adc0db 100644
--- a/src/ex_cmds.h
+++ b/src/ex_cmds.h
@@ -724,6 +724,9 @@ EX(CMD_laddfile, "laddfile", ex_cfile,
EX(CMD_later, "later", ex_later,
TRLBAR|EXTRA|NOSPC|CMDWIN,
ADDR_LINES),
+EX(CMD_lbottom, "lbottom", ex_cbottom,
+ TRLBAR,
+ ADDR_LINES),
EX(CMD_lbuffer, "lbuffer", ex_cbuffer,
BANG|RANGE|NOTADR|WORD1|TRLBAR,
ADDR_LINES),
diff --git a/src/quickfix.c b/src/quickfix.c
index 45659a024..92a020417 100644
--- a/src/quickfix.c
+++ b/src/quickfix.c
@@ -2831,13 +2831,25 @@ qf_win_goto(win_T *win, linenr_T lnum)
}
/*
- * :cbottom command.
+ * :cbottom/:lbottom commands.
*/
void
ex_cbottom(exarg_T *eap UNUSED)
{
- win_T *win = qf_find_win(&ql_info);
+ qf_info_T *qi = &ql_info;
+ win_T *win;
+
+ if (eap->cmdidx == CMD_lbottom)
+ {
+ qi = GET_LOC_LIST(curwin);
+ if (qi == NULL)
+ {
+ EMSG(_(e_loclist));
+ return;
+ }
+ }
+ win = qf_find_win(qi);
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);
}
diff --git a/src/testdir/test_quickfix.vim b/src/testdir/test_quickfix.vim
index 01e21106e..39f788e4f 100644
--- a/src/testdir/test_quickfix.vim
+++ b/src/testdir/test_quickfix.vim
@@ -15,6 +15,7 @@ function! s:setup_commands(cchar)
command! -nargs=* Xnewer <mods>cnewer <args>
command! -nargs=* Xopen <mods>copen <args>
command! -nargs=* Xwindow <mods>cwindow <args>
+ command! -nargs=* Xbottom <mods>cbottom <args>
command! -nargs=* Xclose <mods>cclose <args>
command! -nargs=* -bang Xfile <mods>cfile<bang> <args>
command! -nargs=* Xgetfile <mods>cgetfile <args>
@@ -44,6 +45,7 @@ function! s:setup_commands(cchar)
command! -nargs=* Xnewer <mods>lnewer <args>
command! -nargs=* Xopen <mods>lopen <args>
command! -nargs=* Xwindow <mods>lwindow <args>
+ command! -nargs=* Xbottom <mods>lbottom <args>
command! -nargs=* Xclose <mods>lclose <args>
command! -nargs=* -bang Xfile <mods>lfile<bang> <args>
command! -nargs=* Xgetfile <mods>lgetfile <args>
@@ -200,6 +202,7 @@ function XwindowTests(cchar)
Xwindow
call assert_true(winnr('$') == 2 && winnr() == 2 &&
\ getline('.') ==# 'Xtestfile1|1 col 3| Line1')
+ redraw!
" Close the window
Xclose
@@ -1415,15 +1418,23 @@ echo string(loc_two)
call delete('Xtwo', 'rf')
endfunc
-function Test_cbottom()
- call setqflist([{'filename': 'foo', 'lnum': 42}])
- copen
+function XbottomTests(cchar)
+ call s:setup_commands(a:cchar)
+
+ call g:Xsetlist([{'filename': 'foo', 'lnum': 42}])
+ Xopen
let wid = win_getid()
call assert_equal(1, line('.'))
wincmd w
- call setqflist([{'filename': 'var', 'lnum': 24}], 'a')
- cbottom
+ call g:Xsetlist([{'filename': 'var', 'lnum': 24}], 'a')
+ Xbottom
call win_gotoid(wid)
call assert_equal(2, line('.'))
- cclose
+ Xclose
endfunc
+
+" Tests for the :cbottom and :lbottom commands
+function Test_cbottom()
+ call XbottomTests('c')
+ call XbottomTests('l')
+endfunction
diff --git a/src/version.c b/src/version.c
index 08675cd46..b0969bdf7 100644
--- a/src/version.c
+++ b/src/version.c
@@ -759,6 +759,8 @@ static char *(features[]) =
static int included_patches[] =
{ /* Add new patch number below this line */
/**/
+ 2010,
+/**/
2009,
/**/
2008,