diff options
author | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-11-19 21:10:52 -0500 |
---|---|---|
committer | Jan Edmund Lazo <janedmundlazo@hotmail.com> | 2018-11-19 21:16:26 -0500 |
commit | a5637597a6df1465df50584d853dbd8d77cb24da (patch) | |
tree | 2ebf6ae116fc86813fda46908e6017774e824b98 | |
parent | e53ae88e7ecb20f39f9f9c73cd9b39bc12a665ab (diff) | |
download | rneovim-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.c | 16 | ||||
-rw-r--r-- | src/nvim/testdir/test_quickfix.vim | 27 |
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 |