patch 8.1.1131: getwinpos() does not work in the MS-Windows console
Problem: getwinpos() does not work in the MS-Windows console.
Solution: Implement getwinpos().
diff --git a/src/testdir/test_terminal.vim b/src/testdir/test_terminal.vim
index 56b36d0..cbde579 100644
--- a/src/testdir/test_terminal.vim
+++ b/src/testdir/test_terminal.vim
@@ -1889,12 +1889,6 @@
endfunc
func Test_terminal_getwinpos()
- " getwinpos() does not work in the MS-Windows console, and the GUI runs the
- " console version in the terminal window.
- if has('win32')
- return
- endif
-
" split, go to the bottom-right window
split
wincmd j
@@ -1913,10 +1907,17 @@
let xpos = str2nr(substitute(line, '\[\(\d\+\), \d\+\]', '\1', ''))
let ypos = str2nr(substitute(line, '\[\d\+, \(\d\+\)\]', '\1', ''))
- " Position must be bigger than the getwinpos() result of Vim itself.
- let [xroot, yroot] = getwinpos()
- call assert_inrange(xroot + 2, xroot + 1000, xpos)
- call assert_inrange(yroot + 2, yroot + 1000, ypos)
+ " getwinpos() in the MS-Windows console returns the screen position of the
+ " emulated console.
+ if has('win32')
+ call assert_inrange(0, 4000, xpos)
+ call assert_inrange(0, 2000, ypos)
+ else
+ " Position must be bigger than the getwinpos() result of Vim itself.
+ let [xroot, yroot] = getwinpos()
+ call assert_inrange(xroot + 2, xroot + 1000, xpos)
+ call assert_inrange(yroot + 2, yroot + 1000, ypos)
+ endif
call term_wait(buf)
call term_sendkeys(buf, ":q\<CR>")