patch 9.2.0612: Cannot render images in popup windows

Commit: 
https://github.com/vim/vim/commit/9d9bad24ad3721f55c5369131b68eb6896f17af1
Author: Yasuhiro Matsumoto <[email protected]>
Date:   Tue Jun 9 20:13:28 2026 +0000

    patch 9.2.0612: Cannot render images in popup windows
    
    Problem:  Cannot render images in popup windows
    Solution: Add support for rendering images using the kitty, sixel, cairo
              and GDI backend (Yasuhiro Matsumoto).
    
    Add an "image" attribute to popup_create()/popup_setoptions() that
    renders a raw RGB/RGBA pixel buffer inside a popup window. Terminal
    backends emit the buffer as DEC sixel or kitty graphics sequences; the
    MS-Windows GUI uses GDI and the GTK GUI uses Cairo. The popup auto-sizes
    its cell box from the image dimensions. getbgcolor() returns the current
    background colour so scripts can pre-composite RGBA pixels.
    
    closes: #20136
    
    Signed-off-by: Yasuhiro Matsumoto <[email protected]>
    Signed-off-by: Christian Brabandt <[email protected]>

diff --git a/Filelist b/Filelist
index 2f8e4f021..15f4711b9 100644
--- a/Filelist
+++ b/Filelist
@@ -149,6 +149,9 @@ SRC_ALL =   \
                src/session.c \
                src/sha256.c \
                src/sign.c \
+               src/sixel.c \
+               src/kitty.c \
+               src/cairo.c \
                src/socketserver.c \
                src/sound.c \
                src/spell.c \
@@ -349,6 +352,9 @@ SRC_ALL =   \
                src/proto/session.pro \
                src/proto/sha256.pro \
                src/proto/sign.pro \
+               src/proto/sixel.pro \
+               src/proto/kitty.pro \
+               src/proto/cairo.pro \
                src/proto/socketserver.pro \
                src/proto/sound.pro \
                src/proto/spell.pro \
diff --git a/runtime/doc/builtin.txt b/runtime/doc/builtin.txt
index 219737f2d..e8b9518e5 100644
--- a/runtime/doc/builtin.txt
+++ b/runtime/doc/builtin.txt
@@ -231,6 +231,7 @@ garbagecollect([{atexit}])  none    free memory, breaking 
cyclic
 get({list}, {idx} [, {def}])   any     get item {idx} from {list} or {def}
 get({dict}, {key} [, {def}])   any     get item {key} from {dict} or {def}
 get({func}, {what})            any     get property of funcref/partial {func}
+getbgcolor()                   List    get background colour as [r, g, b]
 getbufinfo([{buf}])            List    information about buffers
 getbufline({buf}, {lnum} [, {end}])
                                List    lines {lnum} to {end} of buffer {buf}
@@ -4034,6 +4035,25 @@ getbufvar({buf}, {varname} [, {def}])                    
*getbufvar()*
                Return type: any, depending on {varname}
 
 
+getbgcolor()                                           *getbgcolor()*
+               Returns a |List| describing the current background colour
+               as [red, green, blue], each component in the range 0..255.
+
+               In the GUI (or with 'termguicolors' set) the value comes
+               from the |hl-Normal| highlight group's background.  In a
+               terminal it comes from the OSC 11 response (also available
+               as |v:termrbgresp|).
+               Returns [] when no value is available, e.g. before the
+               terminal has answered the OSC 11 query, or when |hl-Normal|
+               has no background colour set.
+
+               Useful when manually crafting RGB image data and you want
+               to flatten alpha onto the same colour the terminal will
+               actually display behind the image.
+
+               Return type: list<any>
+
+
 getcellpixels()                                                
*getcellpixels()*
                Returns a |List| of terminal cell pixel size.
                List format is [xpixel, ypixel].
@@ -13280,6 +13300,13 @@ hangul_input           Compiled with Hangul input 
support. |hangul|
 hpux                   HP-UX version of Vim.
 hurd                   GNU/Hurd version of Vim
 iconv                  Can use iconv() for conversion.
+image                  Compiled with the popup window "image" attribute.
+                       See |popup-image|.
+image_cairo            Compiled with the Cairo image backend (GTK GUI).
+image_gdi              Compiled with the GDI image backend (Windows GUI).
+image_kitty            Compiled with the kitty graphics protocol image backend
+                       (terminal).
+image_sixel            Compiled with the DEC sixel image backend (terminal).
 insert_expand          Compiled with support for CTRL-X expansion commands in
                        Insert mode. (always true)
 job                    Compiled with support for |channel| and |job|
diff --git a/runtime/doc/popup.txt b/runtime/doc/popup.txt
index 2e9124477..a06924b99 100644
--- a/runtime/doc/popup.txt
+++ b/runtime/doc/popup.txt
@@ -1,4 +1,4 @@
-*popup.txt*    For Vim version 9.2.  Last change: 2026 May 17
+*popup.txt*    For Vim version 9.2.  Last change: 2026 Jun 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -23,6 +23,7 @@ Displaying text in a popup window.    *popup* *popup-window* 
*popupwin*
    Popup scrollbar             |popup-scrollbar|
    Popup opacity               |popup-opacity|
    Popup mask                  |popup-mask|
+   Popup image                 |popup-image|
 4. Examples                    |popup-examples|
 
 
@@ -798,6 +799,18 @@ The second argument of |popup_create()| is a dictionary 
with options:
                        underlying text, making it partially transparent.
                        Requires 'termguicolors' to be set.
                        Also see |popup-opacity|.
+       image           Dictionary describing a raw RGB or RGBA pixel buffer
+                       to render inside the popup.  When set the popup
+                       auto-sizes its cell box from the image's pixel
+                       dimensions, so "minwidth" / "minheight" / "maxwidth" /
+                       "maxheight" do not need to be set by hand.  Keys:
+                           data    |Blob| of bytes; length must equal
+                                   width*height*3 (RGB) or width*height*4
+                                   (RGBA).
+                           width   image width in pixels.
+                           height  image height in pixels.
+                       Use an empty dictionary to remove a previously set
+                       image.  See |popup-image|.
        padding         List with numbers, defining the padding
                        above/right/below/left of the popup (similar to CSS).
                        An empty list uses a padding of 1 all around.  The
@@ -1155,6 +1168,76 @@ For example, to make the last 10 columns of the last 
line transparent:
 To make the four corners transparent:
        [[1, 1, 1, 1], [-1, -1, 1, 1], [1, 1, -1, -1], [-1, -1, -1, -1]]
 
+POPUP IMAGE                                            *popup-image*
+
+A popup window can render an image instead of (or on top of) text by passing
+an "image" dictionary to |popup_create()| or |popup_setoptions()|.  The
+caller supplies an already-decoded raw pixel buffer and Vim emits it through
+whichever backend is available at runtime:
+
+    sixel   DEC sixel DCS sequence on a sixel-capable terminal.
+           |+image_sixel|.  Detected automatically; the buffer is also
+           cropped one cell above the screen edge to avoid sixel-induced
+           terminal scrolling.
+    kitty   kitty graphics protocol APC sequence on terminals that support
+           it (kitty, ghostty, WezTerm, Konsole, ...).  |+image_kitty|.
+           Detected by actively querying the terminal.
+    GDI     StretchDIBits onto the GUI canvas on the MS-Windows GUI.
+           |+image_gdi|.
+    Cairo   composite onto a cairo_image_surface_t on the GTK GUI
+           (covers GTK 2 and GTK 3).  |+image_cairo|.
+
+Vim itself does NOT link against libpng, libjpeg, libwebp or any image
+decoder.  Format decoding is left to the caller, who can pipe the file
+through any external tool (GraphicsMagick, ImageMagick, ffmpeg, a custom
+converter, ...) and pass the resulting bytes via a |Blob|.
+
+The "image" dictionary accepts:
+    data       |Blob| of bytes.  Length must equal width*height*3 for RGB,
+               or width*height*4 for RGBA.  RGBA buffers are alpha-composited
+               over the popup's background.
+    width      image width in pixels.
+    height     image height in pixels.
+
+The popup's cell box is derived from the pixel dimensions and the terminal /
+GUI cell metrics, so the caller does not normally have to set "minwidth" /
+"minheight" / "maxwidth" / "maxheight".
+
+For RGBA buffers that need to blend cleanly into the editor's actual
+backdrop the script can call |getbgcolor()| to obtain the current background
+colour as [r, g, b] and pre-composite anti-aliased edges against it.
+
+Minimal RGB example - a 4x4 red square popped at the cursor: >
+       let pixels = repeat([0xff, 0x00, 0x00], 4 * 4)->list2blob()
+       call popup_create('', #{
+             \ image: #{ data: pixels, width: 4, height: 4 },
+             \ line: 'cursor+1', col: 'cursor',
+             \ })
+
+Real-world example - pipe a PNG through GraphicsMagick and pop the resulting
+raw RGB bytes: >
+       let png = 'cat.png'
+       let dim = split(system('gm identify -format "%w %h" '
+               \ .. shellescape(png)))
+       let [w, h] = [str2nr(dim[0]), str2nr(dim[1])]
+       call system('gm convert ' .. shellescape(png)
+               \ .. ' -depth 8 rgb:/tmp/cat.rgb')
+       let blob = readblob('/tmp/cat.rgb')
+       call popup_create('', #{
+             \ image: #{ data: blob, width: w, height: h },
+             \ line: 1, col: 1, border: [], padding: [0, 0, 0, 0],
+             \ })
+
+The image can be replaced at runtime via |popup_setoptions()|.  When the new
+buffer has the same width and height as the current one the pixels are
+swapped in place, which is fast enough to drive frame-by-frame animation
+from a |timer|.  |popup_getoptions()| returns the same dictionary back; the
+"data" entry is a fresh blob copy independent of the popup's internal
+buffer.
+
+To remove a previously set image pass an empty dictionary: >
+       call popup_setoptions(winid, #{image: {}})
+
 ==============================================================================
 4. Examples                                            *popup-examples*
 
diff --git a/runtime/doc/tags b/runtime/doc/tags
index a2b4743a8..086af1973 100644
--- a/runtime/doc/tags
+++ b/runtime/doc/tags
@@ -1470,6 +1470,11 @@ $quote   eval.txt        /*$quote*
 +hangul_input  various.txt     /*+hangul_input*
 +iconv various.txt     /*+iconv*
 +iconv/dyn     various.txt     /*+iconv\/dyn*
++image various.txt     /*+image*
++image_cairo   various.txt     /*+image_cairo*
++image_gdi     various.txt     /*+image_gdi*
++image_kitty   various.txt     /*+image_kitty*
++image_sixel   various.txt     /*+image_sixel*
 +insert_expand various.txt     /*+insert_expand*
 +ipv6  various.txt     /*+ipv6*
 +job   various.txt     /*+job*
@@ -8124,6 +8129,7 @@ get()-func        builtin.txt     /*get()-func*
 get()-list     builtin.txt     /*get()-list*
 get()-tuple    builtin.txt     /*get()-tuple*
 get-ms-debuggers       debug.txt       /*get-ms-debuggers*
+getbgcolor()   builtin.txt     /*getbgcolor()*
 getbufinfo()   builtin.txt     /*getbufinfo()*
 getbufline()   builtin.txt     /*getbufline()*
 getbufoneline()        builtin.txt     /*getbufoneline()*
@@ -9803,6 +9809,7 @@ popup-filter-errors       popup.txt       
/*popup-filter-errors*
 popup-filter-mode      popup.txt       /*popup-filter-mode*
 popup-function-details popup.txt       /*popup-function-details*
 popup-functions        popup.txt       /*popup-functions*
+popup-image    popup.txt       /*popup-image*
 popup-intro    popup.txt       /*popup-intro*
 popup-mapping  popup.txt       /*popup-mapping*
 popup-mask     popup.txt       /*popup-mask*
diff --git a/runtime/doc/usr_41.txt b/runtime/doc/usr_41.txt
index 560f01c70..cb816a0cb 100644
--- a/runtime/doc/usr_41.txt
+++ b/runtime/doc/usr_41.txt
@@ -1,4 +1,4 @@
-*usr_41.txt*   For Vim version 9.2.  Last change: 2026 Apr 28
+*usr_41.txt*   For Vim version 9.2.  Last change: 2026 Jun 09
 
 
                     VIM USER MANUAL    by Bram Moolenaar
@@ -1203,6 +1203,7 @@ Interactive:                                      
*interactive-functions*
        inputrestore()          restore typeahead
 
 GUI:                                           *gui-functions*
+       getbgcolor()            get current background colour as [r, g, b]
        getfontname()           get name of current font being used
        getwinpos()             position of the Vim window
        getwinposx()            X position of the Vim window
diff --git a/runtime/doc/various.txt b/runtime/doc/various.txt
index 34815811f..cc3ef1075 100644
--- a/runtime/doc/various.txt
+++ b/runtime/doc/various.txt
@@ -1,4 +1,4 @@
-*various.txt*  For Vim version 9.2.  Last change: 2026 Jun 07
+*various.txt*  For Vim version 9.2.  Last change: 2026 Jun 09
 
 
                  VIM REFERENCE MANUAL    by Bram Moolenaar
@@ -423,6 +423,11 @@ N  *+gettext*              message translations 
|multi-lang|
 m  *+hangul_input*     Hangul input support |hangul|
    *+iconv*            Compiled with the |iconv()| function
    *+iconv/dyn*                Likewise |iconv-dynamic| |/dyn|
+H  *+image*            popup window image attribute, see |popup-image|
+H  *+image_cairo*      |+image| Cairo backend (GTK GUI)
+H  *+image_gdi*                |+image| GDI backend (Windows GUI)
+H  *+image_kitty*      |+image| kitty graphics protocol backend (terminal)
+H  *+image_sixel*      |+image| DEC sixel backend (terminal)
 T  *+insert_expand*    |insert_expand| Insert mode completion
 m  *+ipv6*             Support for IPv6 networking |channel|
 m  *+job*              starting and stopping jobs |job|
diff --git a/runtime/doc/version9.txt b/runtime/doc/version9.txt
index b0c95e50f..937bf4f21 100644
--- a/runtime/doc/version9.txt
+++ b/runtime/doc/version9.txt
@@ -52600,6 +52600,8 @@ Popups ~
 - Support for clipping textproperty popups |popup-clipwindow|.
 - Completion popup menu can be scrolled with the mouse or using keys
   |popupmenu-keys|.
+- Support for loading images in popups using the cairo, GDI, kitty, or sixel
+  backend |popup-image|.
 
 Diff mode ~
 ---------
@@ -52685,6 +52687,7 @@ Various syntax, indent and other plugins were added.
 Functions: ~
 
 |ch_listen()|          listen on {address}
+|getbgcolor()|         return background color as RGB value
 |tabpanel_getinfo()|   get current state of the |tabpanel|
 |tabpanel_scroll()|    scroll the |tabpanel|
 
diff --git a/runtime/syntax/vim.vim b/runtime/syntax/vim.vim
index e4538dd8d..656fc3f12 100644
--- a/runtime/syntax/vim.vim
+++ b/runtime/syntax/vim.vim
@@ -2,7 +2,7 @@
 " Language:       Vim script
 " Maintainer:     Hirohito Higashi <h.east.727 ATMARK gmail.com>
 "         Doug Kearns <[email protected]>
-" Last Change:    2026 May 24
+" Last Change:    2026 Jun 09
 " Former Maintainer: Charles E. Campbell
 
 " DO NOT CHANGE DIRECTLY.
@@ -154,14 +154,14 @@ syn case match
 " Function Names {{{2
 " GEN_SYN_VIM: vimFuncName, START_STR='syn keyword vimFuncName contained', 
END_STR=''
 syn keyword vimFuncName contained abs acos add and append appendbufline argc 
argidx arglistid argv asin assert_beeps assert_equal assert_equalfile 
assert_exception assert_fails assert_false assert_inrange assert_match 
assert_nobeep assert_notequal assert_notmatch assert_report assert_true atan 
atan2 autocmd_add autocmd_delete autocmd_get balloon_gettext balloon_show 
balloon_split base64_decode base64_encode bindtextdomain blob2list blob2str 
browse browsedir bufadd bufexists buflisted bufload bufloaded bufname bufnr 
bufwinid bufwinnr byte2line byteidx byteidxcomp call ceil ch_canread ch_close 
ch_close_in ch_evalexpr ch_evalraw ch_getbufnr ch_getjob ch_info ch_listen 
ch_log ch_logfile ch_open ch_read ch_readblob ch_readraw ch_sendexpr ch_sendraw 
ch_setoptions ch_status
-syn keyword vimFuncName contained changenr char2nr charclass charcol charidx 
chdir cindent clearmatches cmdcomplete_info col complete complete_add 
complete_check complete_info confirm copy cos cosh count cscope_connection 
cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler 
diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty 
environ err_teapot escape eval eventhandler executable execute exepath exists 
exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy 
filereadable filewritable filter finddir findfile flatten flattennew float2nr 
floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext 
foldtextresult foreach foreground fullcommand funcref function garbagecollect 
get getbufinfo
-syn keyword vimFuncName contained getbufline getbufoneline getbufvar 
getcellpixels getcellwidths getchangelist getchar getcharmod getcharpos 
getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline getcmdpos 
getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion 
getcompletiontype getcurpos getcursorcharpos getcwd getenv getfontname getfperm 
getfsize getftime getftype getimstatus getjumplist getline getloclist 
getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg 
getreginfo getregion getregionpos getregtype getscriptinfo getstacktrace 
gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos 
getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key 
haslocaldir hasmapto histadd histdel
-syn keyword vimFuncName contained histget histnr hlID hlexists hlget hlset 
hostname iconv id indent index indexof input inputdialog inputlist inputrestore 
inputsave inputsecret insert instanceof interrupt invert isabsolutepath 
isdirectory isinf islocked isnan items job_getchannel job_info job_setoptions 
job_start job_status job_stop join js_decode js_encode json_decode json_encode 
keys keytrans len libcall libcallnr line line2byte lispindent list2blob 
list2str list2tuple listener_add listener_flush listener_remove localtime log 
log10 luaeval map maparg mapcheck maplist mapnew mapset match matchadd 
matchaddpos matcharg matchbufline matchdelete matchend matchfuzzy matchfuzzypos 
matchlist matchstr matchstrlist matchstrpos max menu_info min mkdir mode mzeval 
nextnonblank
-syn keyword vimFuncName contained ngettext nr2char or pathshorten perleval 
popup_atcursor popup_beval popup_clear popup_close popup_create popup_dialog 
popup_filter_menu popup_filter_yesno popup_findecho popup_findinfo 
popup_findpreview popup_getoptions popup_getpos popup_hide popup_list 
popup_locate popup_menu popup_move popup_notification popup_setbuf 
popup_setoptions popup_settext popup_show pow preinserted prevnonblank printf 
prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt 
prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add 
prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos 
pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex 
readfile redraw_listener_add redraw_listener_remove
-syn keyword vimFuncName contained reduce reg_executing reg_recording reltime 
reltimefloat reltimestr remote_expr remote_foreground remote_peek remote_read 
remote_send remote_startserver remove rename repeat resolve reverse round 
rubyeval screenattr screenchar screenchars screencol screenpos screenrow 
screenstring search searchcount searchdecl searchpair searchpairpos searchpos 
server2client serverlist setbufline setbufvar setcellwidths setcharpos 
setcharsearch setcmdline setcmdpos setcursorcharpos setenv setfperm setline 
setloclist setmatches setpos setqflist setreg settabvar settabwinvar 
settagstack setwinvar sha256 shellescape shiftwidth sign_define sign_getdefined 
sign_getplaced sign_jump sign_place sign_placelist sign_undefine sign_unplace 
sign_unplacelist
-syn keyword vimFuncName contained simplify sin sinh slice sort sound_clear 
sound_playevent sound_playfile sound_stop soundfold spellbadword spellsuggest 
split sqrt srand state str2blob str2float str2list str2nr strcharlen 
strcharpart strchars strdisplaywidth strftime strgetchar stridx string strlen 
strpart strptime strridx strtrans strutf16len strwidth submatch substitute 
swapfilelist swapinfo swapname synID synIDattr synIDtrans synconcealed synstack 
system systemlist tabpagebuflist tabpagenr tabpagewinnr tabpanel_getinfo 
tabpanel_scroll tagfiles taglist tan tanh tempname term_dumpdiff term_dumpload 
term_dumpwrite term_getaltscreen term_getansicolors term_getattr term_getcursor 
term_getjob term_getline term_getscrolled term_getsize term_getstatus 
term_gettitle
-syn keyword vimFuncName contained term_gettty term_list term_scrape 
term_sendkeys term_setansicolors term_setapi term_setkill term_setrestore 
term_setsize term_start term_wait terminalprops test_alloc_fail test_autochdir 
test_feedinput test_garbagecollect_now test_garbagecollect_soon test_getvalue 
test_gui_event test_ignore_error test_mswin_event test_null_blob 
test_null_channel test_null_dict test_null_function test_null_job 
test_null_list test_null_partial test_null_string test_null_tuple 
test_option_not_set test_override test_refcount test_setmouse test_settime 
test_srand_seed test_unknown test_void timer_info timer_pause timer_start 
timer_stop timer_stopall tolower toupper tr trim trunc tuple2list type typename 
undofile undotree uniq uri_decode uri_encode
-syn keyword vimFuncName contained utf16idx values virtcol virtcol2col 
visualmode wildmenumode wildtrigger win_execute win_findbuf win_getid 
win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator 
win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion 
winheight winlayout winline winnr winrestcmd winrestview winsaveview winwidth 
wordcount writefile xor
+syn keyword vimFuncName contained changenr char2nr charclass charcol charidx 
chdir cindent clearmatches cmdcomplete_info col complete complete_add 
complete_check complete_info confirm copy cos cosh count cscope_connection 
cursor debugbreak deepcopy delete deletebufline did_filetype diff diff_filler 
diff_hlID digraph_get digraph_getlist digraph_set digraph_setlist echoraw empty 
environ err_teapot escape eval eventhandler executable execute exepath exists 
exists_compiled exp expand expandcmd extend extendnew feedkeys filecopy 
filereadable filewritable filter finddir findfile flatten flattennew float2nr 
floor fmod fnameescape fnamemodify foldclosed foldclosedend foldlevel foldtext 
foldtextresult foreach foreground fullcommand funcref function garbagecollect 
get getbgcolor
+syn keyword vimFuncName contained getbufinfo getbufline getbufoneline 
getbufvar getcellpixels getcellwidths getchangelist getchar getcharmod 
getcharpos getcharsearch getcharstr getcmdcomplpat getcmdcompltype getcmdline 
getcmdpos getcmdprompt getcmdscreenpos getcmdtype getcmdwintype getcompletion 
getcompletiontype getcurpos getcursorcharpos getcwd getenv getfontname getfperm 
getfsize getftime getftype getimstatus getjumplist getline getloclist 
getmarklist getmatches getmousepos getmouseshape getpid getpos getqflist getreg 
getreginfo getregion getregionpos getregtype getscriptinfo getstacktrace 
gettabinfo gettabvar gettabwinvar gettagstack gettext getwininfo getwinpos 
getwinposx getwinposy getwinvar glob glob2regpat globpath has has_key 
haslocaldir hasmapto histadd
+syn keyword vimFuncName contained histdel histget histnr hlID hlexists hlget 
hlset hostname iconv id indent index indexof input inputdialog inputlist 
inputrestore inputsave inputsecret insert instanceof interrupt invert 
isabsolutepath isdirectory isinf islocked isnan items job_getchannel job_info 
job_setoptions job_start job_status job_stop join js_decode js_encode 
json_decode json_encode keys keytrans len libcall libcallnr line line2byte 
lispindent list2blob list2str list2tuple listener_add listener_flush 
listener_remove localtime log log10 luaeval map maparg mapcheck maplist mapnew 
mapset match matchadd matchaddpos matcharg matchbufline matchdelete matchend 
matchfuzzy matchfuzzypos matchlist matchstr matchstrlist matchstrpos max 
menu_info min mkdir mode mzeval
+syn keyword vimFuncName contained nextnonblank ngettext nr2char or pathshorten 
perleval popup_atcursor popup_beval popup_clear popup_close popup_create 
popup_dialog popup_filter_menu popup_filter_yesno popup_findecho popup_findinfo 
popup_findpreview popup_getoptions popup_getpos popup_hide popup_list 
popup_locate popup_menu popup_move popup_notification popup_setbuf 
popup_setoptions popup_settext popup_show pow preinserted prevnonblank printf 
prompt_getprompt prompt_setcallback prompt_setinterrupt prompt_setprompt 
prop_add prop_add_list prop_clear prop_find prop_list prop_remove prop_type_add 
prop_type_change prop_type_delete prop_type_get prop_type_list pum_getpos 
pumvisible py3eval pyeval pyxeval rand range readblob readdir readdirex 
readfile redraw_listener_add
+syn keyword vimFuncName contained redraw_listener_remove reduce reg_executing 
reg_recording reltime reltimefloat reltimestr remote_expr remote_foreground 
remote_peek remote_read remote_send remote_startserver remove rename repeat 
resolve reverse round rubyeval screenattr screenchar screenchars screencol 
screenpos screenrow screenstring search searchcount searchdecl searchpair 
searchpairpos searchpos server2client serverlist setbufline setbufvar 
setcellwidths setcharpos setcharsearch setcmdline setcmdpos setcursorcharpos 
setenv setfperm setline setloclist setmatches setpos setqflist setreg settabvar 
settabwinvar settagstack setwinvar sha256 shellescape shiftwidth sign_define 
sign_getdefined sign_getplaced sign_jump sign_place sign_placelist 
sign_undefine sign_unplace
+syn keyword vimFuncName contained sign_unplacelist simplify sin sinh slice 
sort sound_clear sound_playevent sound_playfile sound_stop soundfold 
spellbadword spellsuggest split sqrt srand state str2blob str2float str2list 
str2nr strcharlen strcharpart strchars strdisplaywidth strftime strgetchar 
stridx string strlen strpart strptime strridx strtrans strutf16len strwidth 
submatch substitute swapfilelist swapinfo swapname synID synIDattr synIDtrans 
synconcealed synstack system systemlist tabpagebuflist tabpagenr tabpagewinnr 
tabpanel_getinfo tabpanel_scroll tagfiles taglist tan tanh tempname 
term_dumpdiff term_dumpload term_dumpwrite term_getaltscreen term_getansicolors 
term_getattr term_getcursor term_getjob term_getline term_getscrolled 
term_getsize term_getstatus
+syn keyword vimFuncName contained term_gettitle term_gettty term_list 
term_scrape term_sendkeys term_setansicolors term_setapi term_setkill 
term_setrestore term_setsize term_start term_wait terminalprops test_alloc_fail 
test_autochdir test_feedinput test_garbagecollect_now test_garbagecollect_soon 
test_getvalue test_gui_event test_ignore_error test_mswin_event test_null_blob 
test_null_channel test_null_dict test_null_function test_null_job 
test_null_list test_null_partial test_null_string test_null_tuple 
test_option_not_set test_override test_refcount test_setmouse test_settime 
test_srand_seed test_unknown test_void timer_info timer_pause timer_start 
timer_stop timer_stopall tolower toupper tr trim trunc tuple2list type typename 
undofile undotree uniq uri_decode
+syn keyword vimFuncName contained uri_encode utf16idx values virtcol 
virtcol2col visualmode wildmenumode wildtrigger win_execute win_findbuf 
win_getid win_gettype win_gotoid win_id2tabwin win_id2win win_move_separator 
win_move_statusline win_screenpos win_splitmove winbufnr wincol windowsversion 
winheight winlayout winline winnr winrestcmd winrestview winsaveview winwidth 
wordcount writefile xor
 
 " Predefined variable names {{{2
 " GEN_SYN_VIM: vimVarName, START_STR='syn keyword vimVimVarName contained', 
END_STR=''
diff --git a/src/Make_ami.mak b/src/Make_ami.mak
index 5211e6559..8f02dbbec 100644
--- a/src/Make_ami.mak
+++ b/src/Make_ami.mak
@@ -169,6 +169,9 @@ SRC += \
        session.c \
        sha256.c \
        sign.c \
+       sixel.c \
+       kitty.c \
+       cairo.c \
        spell.c \
        spellfile.c \
        spellsuggest.c \
diff --git a/src/Make_cyg_ming.mak b/src/Make_cyg_ming.mak
index 24db4ccff..0fcfb94c2 100644
--- a/src/Make_cyg_ming.mak
+++ b/src/Make_cyg_ming.mak
@@ -877,6 +877,9 @@ OBJ = \
        $(OUTDIR)/session.o \
        $(OUTDIR)/sha256.o \
        $(OUTDIR)/sign.o \
+       $(OUTDIR)/sixel.o \
+       $(OUTDIR)/kitty.o \
+       $(OUTDIR)/cairo.o \
        $(OUTDIR)/socketserver.o \
        $(OUTDIR)/spell.o \
        $(OUTDIR)/spellfile.o \
diff --git a/src/Make_mvc.mak b/src/Make_mvc.mak
index 3b9ccb98f..c646f8ec3 100644
--- a/src/Make_mvc.mak
+++ b/src/Make_mvc.mak
@@ -772,6 +772,9 @@ OBJ = \
        $(OUTDIR)\session.obj \
        $(OUTDIR)\sha256.obj \
        $(OUTDIR)\sign.obj \
+       $(OUTDIR)\sixel.obj \
+       $(OUTDIR)\kitty.obj \
+       $(OUTDIR)

-- 
-- 
You received this message from the "vim_dev" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

--- 
You received this message because you are subscribed to the Google Groups 
"vim_dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/vim_dev/E1wX35K-006m3e-Ja%40256bit.org.

Raspunde prin e-mail lui