]> granicus.if.org Git - vim/commitdiff
patch 8.0.1427: the :leftabove modifier doesn't work for :copen v8.0.1427
authorBram Moolenaar <Bram@vim.org>
Tue, 26 Dec 2017 12:53:11 +0000 (13:53 +0100)
committerBram Moolenaar <Bram@vim.org>
Tue, 26 Dec 2017 12:53:11 +0000 (13:53 +0100)
Problem:    The :leftabove modifier doesn't work for :copen.
Solution:   Respect the split modifier. (Yegappan Lakshmanan, closes #2496)

src/quickfix.c
src/testdir/test_quickfix.vim
src/version.c

index 05e59462830466194d803672b9f94b4907587628..8e745213ac624fe8ecebdbf78eeeae5e4d12bed7 100644 (file)
@@ -3222,6 +3222,8 @@ ex_copen(exarg_T *eap)
     }
     else
     {
+       int flags = 0;
+
        qf_buf = qf_find_buf(qi);
 
        /* The current window becomes the previous window afterwards. */
@@ -3229,10 +3231,14 @@ 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
+           /* 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)
+       /* 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);
 
index 0787e60e3d67753b8b7a5a811b474db076af5d0c..fb78f6983af4ae8d6c415c54bae668d47f0e7edb 100644 (file)
@@ -3078,3 +3078,30 @@ func Test_lvimgrep_crash()
   augroup END
   enew | only
 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
index 17547222f8ef7f0595b0cd21e4aaa6dd01da7445..15aec195fbfee76d0d622542952945d39e9ecacd 100644 (file)
@@ -771,6 +771,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1427,
 /**/
     1426,
 /**/