aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Edmund Lazo <janedmundlazo@hotmail.com>2018-11-19 21:10:52 -0500
committerJan Edmund Lazo <janedmundlazo@hotmail.com>2018-11-19 21:16:26 -0500
commita5637597a6df1465df50584d853dbd8d77cb24da (patch)
tree2ebf6ae116fc86813fda46908e6017774e824b98
parente53ae88e7ecb20f39f9f9c73cd9b39bc12a665ab (diff)
downloadrneovim-a5637597a6df1465df50584d853dbd8d77cb24da.tar.gz
rneovim-a5637597a6df1465df50584d853dbd8d77cb24da.tar.bz2
rneovim-a5637597a6df1465df50584d853dbd8d77cb24da.zip
vim-patch:8.0.1427: the :leftabove modifier doesn't work for :copen
Problem: The :leftabove modifier doesn't work for :copen. Solution: Respect the split modifier. (Yegappan Lakshmanan, closes vim/vim#2496) https://github.com/vim/vim/commit/de04654ddc865af94ef04b1738b335a924be7923
-rw-r--r--src/nvim/quickfix.c16
-rw-r--r--src/nvim/testdir/test_quickfix.vim27
2 files changed, 39 insertions, 4 deletions
diff --git a/src/nvim/quickfix.c b/src/nvim/quickfix.c
index 51a7dd670f..d9e307bb71 100644
--- a/src/nvim/quickfix.c
+++ b/src/nvim/quickfix.c
@@ -2661,6 +2661,8 @@ void ex_copen(exarg_T *eap)
}
}
} else {
+ int flags = 0;
+
qf_buf = qf_find_buf(qi);
/* The current window becomes the previous window afterwards. */
@@ -2668,11 +2670,17 @@ void ex_copen(exarg_T *eap)
if ((eap->cmdidx == CMD_copen || eap->cmdidx == CMD_cwindow)
&& cmdmod.split == 0)
- /* Create the new window at the very bottom, except when
- * :belowright or :aboveleft is used. */
+ // Create the new quickfix window at the very bottom, except when
+ // :belowright or :aboveleft is used.
win_goto(lastwin);
- if (win_split(height, WSP_BELOW | WSP_NEWLOC) == FAIL)
- return; /* not enough room for window */
+ // Default is to open the window below the current window
+ if (cmdmod.split == 0) {
+ flags = WSP_BELOW;
+ }
+ flags |= WSP_NEWLOC;
+ if (win_split(height, flags) == FAIL) {
+ return; // not enough room for window
+ }
RESET_BINDING(curwin);
if (eap->cmdidx == CMD_lopen || eap->cmdidx == CMD_lwindow) {
diff --git a/src/nvim/testdir/test_quickfix.vim b/src/nvim/testdir/test_quickfix.vim
index bfe5791ec8..cb3e7ca8f6 100644
--- a/src/nvim/testdir/test_quickfix.vim
+++ b/src/nvim/testdir/test_quickfix.vim
@@ -2637,3 +2637,30 @@ func Test_shorten_fname()
silent! clist
call assert_equal('test_quickfix.vim', bufname('test_quickfix.vim'))
endfunc
+
+" Test for the position of the quickfix and location list window
+func Test_qfwin_pos()
+ " Open two windows
+ new | only
+ new
+ cexpr ['F1:10:L10']
+ copen
+ " Quickfix window should be the bottom most window
+ call assert_equal(3, winnr())
+ close
+ " Open at the very top
+ wincmd t
+ topleft copen
+ call assert_equal(1, winnr())
+ close
+ " open left of the current window
+ wincmd t
+ below new
+ leftabove copen
+ call assert_equal(2, winnr())
+ close
+ " open right of the current window
+ rightbelow copen
+ call assert_equal(3, winnr())
+ close
+endfunc