]> git.ipfire.org Git - thirdparty/vim.git/commitdiff
patch 8.1.1426: no test for syntax highlight in popup window v8.1.1426
authorBram Moolenaar <Bram@vim.org>
Thu, 30 May 2019 16:40:53 +0000 (18:40 +0200)
committerBram Moolenaar <Bram@vim.org>
Thu, 30 May 2019 16:40:53 +0000 (18:40 +0200)
Problem:    No test for syntax highlight in popup window.
Solution:   Add a screenshot test.  Update associated documentation. Avoid
            'buftype' being reset by setbufvar().

runtime/doc/eval.txt
src/testdir/dumps/Test_popupwin_10.dump [new file with mode: 0644]
src/testdir/dumps/Test_popupwin_11.dump [new file with mode: 0644]
src/testdir/test_popupwin.vim
src/version.c

index f3aab923e31f9d38d112fd85348bb31388160547..844b68ef4cdcf01c4600d62695e9180f825442c6 100644 (file)
@@ -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-only.  See: |type()|
                                *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: "<Esc>[ Pp ; Pv ; Pc c".  Pp
+               The response from a new xterm is: "<Esc>[> 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}, {val})  *settabwinvar()*
                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 (file)
index 0000000..2d80e0a
--- /dev/null
@@ -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|{+0&#5fd7ff255| @16| +0&#ffffff0@32
+|6| @22| +0&#5fd7ff255@3|p|r|i|n|t|f|(|1+0#e000002&|2|3|)+0#0000000&|;| @1| +0&#ffffff0@32
+|7| @22|}+0&#5fd7ff255| @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 (file)
index 0000000..21460dd
--- /dev/null
@@ -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| 
index 3e71c97ea91a64433d4b5eb41cf470a67d6b0b5d..d92d8b12a78759208715a67e54c10a7b2993925a 100644 (file)
@@ -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 <stdio.h>',",
+       \ "\\ '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 <stdio.h>',",
+       \ "\\ '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
index fa42ac260faad8882473f9473c3c5acccf4854ed..0420cb60bb41239c2fc60360b633b92f1b6ba67c 100644 (file)
@@ -767,6 +767,8 @@ static char *(features[]) =
 
 static int included_patches[] =
 {   /* Add new patch number below this line */
+/**/
+    1426,
 /**/
     1425,
 /**/