Mercurial > vim
changeset 18892:fb2d26bc8ca1 v8.2.0007
patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Commit: https://github.com/vim/vim/commit/09dd2bb3364cc8fb5a8f2507bc2f4ceba481db3d
Author: Bram Moolenaar <Bram@vim.org>
Date: Sat Dec 14 18:42:15 2019 +0100
patch 8.2.0007: popup menu positioned wrong with folding in two tabs
Problem: Popup menu positioned wrong with folding in two tabs.
Solution: Update the cursor line height. (closes https://github.com/vim/vim/issues/5353)
author | Bram Moolenaar <Bram@vim.org> |
---|---|
date | Sat, 14 Dec 2019 18:45:04 +0100 |
parents | 84747442f5e2 |
children | c7942f5de97b |
files | src/move.c src/popupmenu.c src/proto/move.pro src/testdir/dumps/Test_pum_with_folds_two_tabs.dump src/testdir/test_ins_complete.vim src/version.c |
diffstat | 6 files changed, 39 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- a/src/move.c +++ b/src/move.c @@ -816,7 +816,7 @@ validate_virtcol_win(win_T *wp) /* * Validate curwin->w_cline_height only. */ - static void + void validate_cheight(void) { check_cursor_moved(curwin);
--- a/src/popupmenu.c +++ b/src/popupmenu.c @@ -180,6 +180,7 @@ pum_display( // pum below "pum_win_row" // Leave two lines of context if possible + validate_cheight(); if (curwin->w_cline_row + curwin->w_cline_height - curwin->w_wrow >= 3) context_lines = 3;
--- a/src/proto/move.pro +++ b/src/proto/move.pro @@ -21,6 +21,7 @@ void validate_cursor(void); void validate_cline_row(void); void validate_virtcol(void); void validate_virtcol_win(win_T *wp); +void validate_cheight(void); void validate_cursor_col(void); int win_col_off(win_T *wp); int curwin_col_off(void);
new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_pum_with_folds_two_tabs.dump @@ -0,0 +1,10 @@ +| +8#0000001#e0e0e08|+| |[|N|o| |N|a|m|e|]| | +2#0000000#ffffff0|+| |[|N|o| |N|a|m|e|]| | +1&&@47|X+8#0000001#e0e0e08 +|"+0#0000000#ffffff0| |x| |{@2|1| @66 +|"| |a|0> |s|o|m|e| |t|e|x|t| @60 +|"| +0#0000001#e0e0e08|a|0| @12| +0#0000000#0000001| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|1| @12| +0#0000000#0000001| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|2| @12| +0#0000000#0000001| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|3| @12| +0#0000000#a8a8a8255| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|4| @12| +0#0000000#a8a8a8255| +0&#ffffff0@56 +|"| +0#0000001#ffd7ff255|a|5| @12| +0#0000000#a8a8a8255| +0&#ffffff0@56 +|-+2&&@1| |K|e|y|w|o|r|d| |c|o|m|p|l|e|t|i|o|n| |(|^|N|^|P|)| |m+0#00e0003&|a|t|c|h| |1| |o|f| |1|0| +0#0000000&@32
--- a/src/testdir/test_ins_complete.vim +++ b/src/testdir/test_ins_complete.vim @@ -1,3 +1,4 @@ +source screendump.vim source check.vim " Test for insert expansion @@ -380,3 +381,26 @@ func Test_ins_completeslash() set completeslash= endfunc +func Test_pum_with_folds_two_tabs() + CheckScreendump + + let lines =<< trim END + set fdm=marker + call setline(1, ['" x {{{1', '" a some text']) + call setline(3, range(&lines)->map({_, val -> '" a' .. val})) + norm! zm + tab sp + call feedkeys('2Gzv', 'xt') + call feedkeys("0fa", 'xt') + END + + call writefile(lines, 'Xpumscript') + let buf = RunVimInTerminal('-S Xpumscript', #{rows: 10}) + call term_wait(buf, 100) + call term_sendkeys(buf, "a\<C-N>") + call VerifyScreenDump(buf, 'Test_pum_with_folds_two_tabs', {}) + + call term_sendkeys(buf, "\<Esc>") + call StopVimInTerminal(buf) + call delete('Xpumscript') +endfunc