# HG changeset patch # User Bram Moolenaar # Date 1559234706 -7200 # Node ID 629f3d3b6886cb307088305dd034765284d2ca5f # Parent fd2ec8f2c70e3cbb87a91399d968f512a424805c patch 8.1.1426: no test for syntax highlight in popup window commit https://github.com/vim/vim/commit/b42301247d85d60b64c2cc23f5cdf30da2342827 Author: Bram Moolenaar Date: Thu May 30 18:40:53 2019 +0200 patch 8.1.1426: no test for syntax highlight in popup window Problem: No test for syntax highlight in popup window. Solution: Add a screenshot test. Update associated documentation. Avoid 'buftype' being reset by setbufvar(). diff --git a/runtime/doc/eval.txt b/runtime/doc/eval.txt --- a/runtime/doc/eval.txt +++ b/runtime/doc/eval.txt @@ -1,4 +1,4 @@ -*eval.txt* For Vim version 8.1. Last change: 2019 May 25 +*eval.txt* For Vim version 8.1. Last change: 2019 May 30 VIM REFERENCE MANUAL by Bram Moolenaar @@ -2087,12 +2087,12 @@ v:t_blob Value of |Blob| type. Read-onl *v:termresponse* *termresponse-variable* v:termresponse The escape sequence returned by the terminal for the |t_RV| termcap entry. It is set when Vim receives an escape sequence - that starts with ESC [ or CSI and ends in a 'c', with only - digits, ';' and '.' in between. + that starts with ESC [ or CSI, then '>' or '?' and ends in a + 'c', with only digits and ';' in between. When this option is set, the TermResponse autocommand event is fired, so that you can react to the response from the terminal. - The response from a new xterm is: "[ Pp ; Pv ; Pc c". Pp + The response from a new xterm is: "[> Pp ; Pv ; Pc c". Pp is the terminal type: 0 for vt100 and 1 for vt220. Pv is the patch level (since this was introduced in patch 95, it's always 95 or bigger). Pc is always zero. @@ -8400,6 +8400,8 @@ setreg({regname}, {value} [, {options}]) settabvar({tabnr}, {varname}, {val}) *settabvar()* Set tab-local variable {varname} to {val} in tab page {tabnr}. |t:var| + Note that autocommands are blocked, side effects may not be + triggered, e.g. when setting 'filetype'. Note that the variable name without "t:" must be used. Tabs are numbered starting with one. This function is not available in the |sandbox|. @@ -8411,6 +8413,8 @@ settabwinvar({tabnr}, {winnr}, {varname} use |setwinvar()|. {winnr} can be the window number or the |window-ID|. When {winnr} is zero the current window is used. + Note that autocommands are blocked, side effects may not be + triggered, e.g. when setting 'filetype' or 'syntax'. This also works for a global or local buffer option, but it doesn't work for a global or local buffer variable. For a local buffer option the global value is unchanged. @@ -10318,9 +10322,13 @@ wildmenumode() *wildmenumode()* win_execute({id}, {command} [, {silent}]) *win_execute()* Like `execute()` but in the context of window {id}. The window will temporarily be made the current window, - without triggering autocommands. + without triggering autocommands. When executing {command} + autocommands will be triggered, this may have unexpected side + effects. Use |:noautocmd| if needed. Example: > - call win_execute(winid, 'syntax enable') + call win_execute(winid, 'set syntax=python') +< Doing the same with `setwinvar()` would not trigger + autocommands and not actually show syntax highlighting. win_findbuf({bufnr}) *win_findbuf()* Returns a list with |window-ID|s for windows that contain diff --git a/src/testdir/dumps/Test_popupwin_10.dump b/src/testdir/dumps/Test_popupwin_10.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_10.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @22|#+0#e000e06#5fd7ff255|i|n|c|l|u|d|e| |<+0#e000002&|s|t|d|i|o|.|h|>| +0#0000000#ffffff0@32 +|4| @22|i+0#00e0003#5fd7ff255|n|t| +0#0000000&|m|a|i|n|(|v+0#00e0003&|o|i|d|)+0#0000000&| @3| +0&#ffffff0@32 +|5| @22|{+0fd7ff255| @16| +0&#ffffff0@32 +|6| @22| +0fd7ff255@3|p|r|i|n|t|f|(|1+0#e000002&|2|3|)+0#0000000&|;| @1| +0&#ffffff0@32 +|7| @22|}+0fd7ff255| @16| +0&#ffffff0@32 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/dumps/Test_popupwin_11.dump b/src/testdir/dumps/Test_popupwin_11.dump new file mode 100644 --- /dev/null +++ b/src/testdir/dumps/Test_popupwin_11.dump @@ -0,0 +1,10 @@ +>1+0&#ffffff0| @73 +|2| @73 +|3| @18|#+0#e000e06#e0e0e08|i|n|c|l|u|d|e| |<+0#e000002&|s|t|d|i|o|.|h|>| +0#0000000#ffffff0@36 +|4| @18|i+0#00e0003#e0e0e08|n|t| +0#0000000&|m|a|i|n|(|v+0#00e0003&|o|i|d|)+0#0000000&| @3| +0&#ffffff0@36 +|5| @18|{+0&#e0e0e08| @16| +0&#ffffff0@36 +|6| @18| +0&#e0e0e08@3|p|r|i|n|t|f|(|5+0#e000002&|6|7|)+0#0000000&|;| @1| +0&#ffffff0@36 +|7| @18|}+0&#e0e0e08| @16| +0&#ffffff0@36 +|8| @73 +|9| @73 +@57|1|,|1| @10|T|o|p| diff --git a/src/testdir/test_popupwin.vim b/src/testdir/test_popupwin.vim --- a/src/testdir/test_popupwin.vim +++ b/src/testdir/test_popupwin.vim @@ -56,6 +56,54 @@ func Test_simple_popup() call delete('XtestPopup') endfunc +func Test_popup_with_syntax_win_execute() + if !CanRunVimInTerminal() + return + endif + call writefile([ + \ "call setline(1, range(1, 100))", + \ "hi PopupColor ctermbg=lightblue", + \ "let winid = popup_create([", + \ "\\ '#include ',", + \ "\\ 'int main(void)',", + \ "\\ '{',", + \ "\\ ' printf(123);',", + \ "\\ '}',", + \ "\\], {'line': 3, 'col': 25, 'highlight': 'PopupColor'})", + \ "call win_execute(winid, 'set syntax=cpp')", + \], 'XtestPopup') + let buf = RunVimInTerminal('-S XtestPopup', {'rows': 10}) + call VerifyScreenDump(buf, 'Test_popupwin_10', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('XtestPopup') +endfunc + +func Test_popup_with_syntax_setbufvar() + if !CanRunVimInTerminal() + return + endif + call writefile([ + \ "call setline(1, range(1, 100))", + \ "hi PopupColor ctermbg=lightgrey", + \ "let winid = popup_create([", + \ "\\ '#include ',", + \ "\\ 'int main(void)',", + \ "\\ '{',", + \ "\\ ' printf(567);',", + \ "\\ '}',", + \ "\\], {'line': 3, 'col': 21, 'highlight': 'PopupColor'})", + \ "call setbufvar(winbufnr(winid), '&syntax', 'cpp')", + \], 'XtestPopup') + let buf = RunVimInTerminal('-S XtestPopup', {'rows': 10}) + call VerifyScreenDump(buf, 'Test_popupwin_11', {}) + + " clean up + call StopVimInTerminal(buf) + call delete('XtestPopup') +endfunc + func Test_popup_time() if !has('timers') return diff --git a/src/version.c b/src/version.c --- a/src/version.c +++ b/src/version.c @@ -768,6 +768,8 @@ static char *(features[]) = static int included_patches[] = { /* Add new patch number below this line */ /**/ + 1426, +/**/ 1425, /**/ 1424,