123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929open!CoreopenRuntimemoduleVersion=structtypet={api_compatible:int;api_level:int;major:int;minor:int;patch:int}[@@derivingsexp_of]letto_stringt=sprintf"%d.%d.%d"t.majort.minort.patchendletversion={Version.api_compatible=0;api_level=7;major=0;minor=5;patch=0};;moduleUi_options=structtypet={ext_cmdline:bool;ext_hlstate:bool;ext_linegrid:bool;ext_messages:bool;ext_multigrid:bool;ext_popupmenu:bool;ext_tabline:bool;ext_termcolors:bool;ext_wildmenu:bool;rgb:bool}[@@derivingfields,sexp_of]letempty={ext_cmdline=false;ext_hlstate=false;ext_linegrid=false;ext_messages=false;ext_multigrid=false;ext_popupmenu=false;ext_tabline=false;ext_termcolors=false;ext_wildmenu=false;rgb=false};;endmoduleLuaref=structtypet=Msgpack.tletto_msgpack=Fn.idletof_msgpackt=OktendmoduleBuffer=(valmake_nvim_id~name:"buffer"~type_id:0)moduleWindow=(valmake_nvim_id~name:"window"~type_id:1)moduleTabpage=(valmake_nvim_id~name:"tabpage"~type_id:2)modulePhantom=structtype_t=|Nil:unitt|Integer:intt|Boolean:boolt|Float:floatt|Array:'at->'alistt|Tuple:'at*int->'alistt|Dict:(Msgpack.t*Msgpack.t)listt|String:stringt|Buffer:Buffer.tt|Window:Window.tt|Tabpage:Tabpage.tt|Luaref:Luaref.tt|Object:Msgpack.tt|Custom:(moduleMsgpack.Msgpackablewithtypet='a)->'atletrecsexp_of_t:typea.(a->Sexp.t)->at->Sexp.t=fun_t->letignore_:Sexp.t=List[]inmatchtwith|Nil->Sexp.Atom"Nil"|Integer->Atom"Integer"|Boolean->Atom"Boolean"|Float->Atom"Float"|Arrayarr->List[sexp_of_tignorearr;Atom"ArrayN"]|Tuple(arr,n)->List[sexp_of_tignorearr;Atom(sprintf"Array%d"n)]|Dict->Atom"Dict"|String->Atom"String"|Buffer->Atom"Buffer"|Window->Atom"Window"|Tabpage->Atom"Tabpage"|Luaref->Atom"Luaref"|Object->Atom"Object"|Custom_->Atom"Custom";;endmoduleApi_result=structtype'resultt={name:string;params:Msgpack.tlist;witness:'resultPhantom.t}[@@derivingsexp_of]endmoduleError_type=structtypet=|Exception|Validation|Unknownofint[@@derivingsexp_of]letof_int=function|0->Exception|1->Validation|id->Unknownid;;endmoduleUi_event=structtypet=|Mode_info_setof{enabled:bool;cursor_styles:Msgpack.tlist}|Update_menu|Busy_start|Busy_stop|Mouse_on|Mouse_off|Mode_changeof{mode:string;mode_idx:int}|Bell|Visual_bell|Flush|Suspend|Set_titleof{title:string}|Set_iconof{icon:string}|Screenshotof{path:string}|Option_setof{name:string;value:Msgpack.t}|Update_fgof{fg:int}|Update_bgof{bg:int}|Update_spof{sp:int}|Resizeof{width:int;height:int}|Clear|Eol_clear|Cursor_gotoof{row:int;col:int}|Highlight_setof{attrs:(Msgpack.t*Msgpack.t)list}|Putof{str:string}|Set_scroll_regionof{top:int;bot:int;left:int;right:int}|Scrollof{count:int}|Default_colors_setof{rgb_fg:int;rgb_bg:int;rgb_sp:int;cterm_fg:int;cterm_bg:int}|Hl_attr_defineof{id:int;rgb_attrs:(Msgpack.t*Msgpack.t)list;cterm_attrs:(Msgpack.t*Msgpack.t)list;info:Msgpack.tlist}|Hl_group_setof{name:string;id:int}|Grid_resizeof{grid:int;width:int;height:int}|Grid_clearof{grid:int}|Grid_cursor_gotoof{grid:int;row:int;col:int}|Grid_lineof{grid:int;row:int;col_start:int;data:Msgpack.tlist}|Grid_scrollof{grid:int;top:int;bot:int;left:int;right:int;rows:int;cols:int}|Grid_destroyof{grid:int}|Win_posof{grid:int;win:Window.t;startrow:int;startcol:int;width:int;height:int}|Win_float_posof{grid:int;win:Window.t;anchor:string;anchor_grid:int;anchor_row:float;anchor_col:float;focusable:bool;zindex:int}|Win_external_posof{grid:int;win:Window.t}|Win_hideof{grid:int}|Win_closeof{grid:int}|Msg_set_posof{grid:int;row:int;scrolled:bool;sep_char:string}|Win_viewportof{grid:int;win:Window.t;topline:int;botline:int;curline:int;curcol:int}|Popupmenu_showof{items:Msgpack.tlist;selected:int;row:int;col:int;grid:int}|Popupmenu_hide|Popupmenu_selectof{selected:int}|Tabline_updateof{current:Tabpage.t;tabs:Msgpack.tlist;current_buffer:Buffer.t;buffers:Msgpack.tlist}|Cmdline_showof{content:Msgpack.tlist;pos:int;firstc:string;prompt:string;indent:int;level:int}|Cmdline_posof{pos:int;level:int}|Cmdline_special_charof{c:string;shift:bool;level:int}|Cmdline_hideof{level:int}|Cmdline_block_showof{lines:Msgpack.tlist}|Cmdline_block_appendof{lines:Msgpack.tlist}|Cmdline_block_hide|Wildmenu_showof{items:Msgpack.tlist}|Wildmenu_selectof{selected:int}|Wildmenu_hide|Msg_showof{kind:string;content:Msgpack.tlist;replace_last:bool}|Msg_clear|Msg_showcmdof{content:Msgpack.tlist}|Msg_showmodeof{content:Msgpack.tlist}|Msg_rulerof{content:Msgpack.tlist}|Msg_history_showof{entries:Msgpack.tlist}[@@derivingsexp_of]letof_msgpackmsg=match(msg:Msgpack.t)with|Array(Stringname::calls)->List.mapcalls~f:(function|Arrayparams->(matchname,paramswith|"mode_info_set",[Booleanenabled;Arraycursor_styles]->Ok(Mode_info_set{enabled;cursor_styles})|"update_menu",[]->OkUpdate_menu|"busy_start",[]->OkBusy_start|"busy_stop",[]->OkBusy_stop|"mouse_on",[]->OkMouse_on|"mouse_off",[]->OkMouse_off|"mode_change",[Stringmode;Integermode_idx]->Ok(Mode_change{mode;mode_idx})|"bell",[]->OkBell|"visual_bell",[]->OkVisual_bell|"flush",[]->OkFlush|"suspend",[]->OkSuspend|"set_title",[Stringtitle]->Ok(Set_title{title})|"set_icon",[Stringicon]->Ok(Set_icon{icon})|"screenshot",[Stringpath]->Ok(Screenshot{path})|"option_set",[Stringname;value]->Ok(Option_set{name;value})|"update_fg",[Integerfg]->Ok(Update_fg{fg})|"update_bg",[Integerbg]->Ok(Update_bg{bg})|"update_sp",[Integersp]->Ok(Update_sp{sp})|"resize",[Integerwidth;Integerheight]->Ok(Resize{width;height})|"clear",[]->OkClear|"eol_clear",[]->OkEol_clear|"cursor_goto",[Integerrow;Integercol]->Ok(Cursor_goto{row;col})|"highlight_set",[Mapattrs]->Ok(Highlight_set{attrs})|"put",[Stringstr]->Ok(Put{str})|("set_scroll_region",[Integertop;Integerbot;Integerleft;Integerright])->Ok(Set_scroll_region{top;bot;left;right})|"scroll",[Integercount]->Ok(Scroll{count})|("default_colors_set",[Integerrgb_fg;Integerrgb_bg;Integerrgb_sp;Integercterm_fg;Integercterm_bg])->Ok(Default_colors_set{rgb_fg;rgb_bg;rgb_sp;cterm_fg;cterm_bg})|"hl_attr_define",[Integerid;Maprgb_attrs;Mapcterm_attrs;Arrayinfo]->Ok(Hl_attr_define{id;rgb_attrs;cterm_attrs;info})|"hl_group_set",[Stringname;Integerid]->Ok(Hl_group_set{name;id})|"grid_resize",[Integergrid;Integerwidth;Integerheight]->Ok(Grid_resize{grid;width;height})|"grid_clear",[Integergrid]->Ok(Grid_clear{grid})|"grid_cursor_goto",[Integergrid;Integerrow;Integercol]->Ok(Grid_cursor_goto{grid;row;col})|"grid_line",[Integergrid;Integerrow;Integercol_start;Arraydata]->Ok(Grid_line{grid;row;col_start;data})|("grid_scroll",[Integergrid;Integertop;Integerbot;Integerleft;Integerright;Integerrows;Integercols])->Ok(Grid_scroll{grid;top;bot;left;right;rows;cols})|"grid_destroy",[Integergrid]->Ok(Grid_destroy{grid})|("win_pos",[Integergrid;win;Integerstartrow;Integerstartcol;Integerwidth;Integerheight])->letopenOr_error.Let_syntaxinlet%bindwin=Window.of_msgpackwininreturn(Win_pos{grid;win;startrow;startcol;width;height})|("win_float_pos",[Integergrid;win;Stringanchor;Integeranchor_grid;Floatinganchor_row;Floatinganchor_col;Booleanfocusable;Integerzindex])->letopenOr_error.Let_syntaxinlet%bindwin=Window.of_msgpackwininreturn(Win_float_pos{grid;win;anchor;anchor_grid;anchor_row;anchor_col;focusable;zindex})|"win_external_pos",[Integergrid;win]->letopenOr_error.Let_syntaxinlet%bindwin=Window.of_msgpackwininreturn(Win_external_pos{grid;win})|"win_hide",[Integergrid]->Ok(Win_hide{grid})|"win_close",[Integergrid]->Ok(Win_close{grid})|("msg_set_pos",[Integergrid;Integerrow;Booleanscrolled;Stringsep_char])->Ok(Msg_set_pos{grid;row;scrolled;sep_char})|("win_viewport",[Integergrid;win;Integertopline;Integerbotline;Integercurline;Integercurcol])->letopenOr_error.Let_syntaxinlet%bindwin=Window.of_msgpackwininreturn(Win_viewport{grid;win;topline;botline;curline;curcol})|("popupmenu_show",[Arrayitems;Integerselected;Integerrow;Integercol;Integergrid])->Ok(Popupmenu_show{items;selected;row;col;grid})|"popupmenu_hide",[]->OkPopupmenu_hide|"popupmenu_select",[Integerselected]->Ok(Popupmenu_select{selected})|"tabline_update",[current;Arraytabs;current_buffer;Arraybuffers]->letopenOr_error.Let_syntaxinlet%bindcurrent=Tabpage.of_msgpackcurrentinlet%bindcurrent_buffer=Buffer.of_msgpackcurrent_bufferinreturn(Tabline_update{current;tabs;current_buffer;buffers})|("cmdline_show",[Arraycontent;Integerpos;Stringfirstc;Stringprompt;Integerindent;Integerlevel])->Ok(Cmdline_show{content;pos;firstc;prompt;indent;level})|"cmdline_pos",[Integerpos;Integerlevel]->Ok(Cmdline_pos{pos;level})|"cmdline_special_char",[Stringc;Booleanshift;Integerlevel]->Ok(Cmdline_special_char{c;shift;level})|"cmdline_hide",[Integerlevel]->Ok(Cmdline_hide{level})|"cmdline_block_show",[Arraylines]->Ok(Cmdline_block_show{lines})|"cmdline_block_append",[Arraylines]->Ok(Cmdline_block_append{lines})|"cmdline_block_hide",[]->OkCmdline_block_hide|"wildmenu_show",[Arrayitems]->Ok(Wildmenu_show{items})|"wildmenu_select",[Integerselected]->Ok(Wildmenu_select{selected})|"wildmenu_hide",[]->OkWildmenu_hide|"msg_show",[Stringkind;Arraycontent;Booleanreplace_last]->Ok(Msg_show{kind;content;replace_last})|"msg_clear",[]->OkMsg_clear|"msg_showcmd",[Arraycontent]->Ok(Msg_showcmd{content})|"msg_showmode",[Arraycontent]->Ok(Msg_showmode{content})|"msg_ruler",[Arraycontent]->Ok(Msg_ruler{content})|"msg_history_show",[Arrayentries]->Ok(Msg_history_show{entries})|_->Or_error.error_s[%message"Failed to parse UI event"(msg:Msgpack.t)])|_->Or_error.error_s[%message"Failed to parse UI event"(msg:Msgpack.t)])|>Or_error.combine_errors|_->Or_error.error_s[%message"Failed to parse UI event"(msg:Msgpack.t)];;endletnvim_buf_line_count~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_buf_line_count";params=[buffer];witness=Integer};;letnvim_buf_attach~buffer~send_buffer~opts=letbuffer=Buffer.to_msgpackbufferinletsend_buffer=Msgpack.Booleansend_bufferinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_attach";params=[buffer;send_buffer;opts];witness=Boolean};;letnvim_buf_detach~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_buf_detach";params=[buffer];witness=Boolean};;letnvim_buf_get_lines~buffer~start~end_~strict_indexing=letbuffer=Buffer.to_msgpackbufferinletstart=Msgpack.Integerstartinletend_=Msgpack.Integerend_inletstrict_indexing=Msgpack.Booleanstrict_indexingin{Api_result.name="nvim_buf_get_lines";params=[buffer;start;end_;strict_indexing];witness=ArrayObject};;letnvim_buf_set_lines~buffer~start~end_~strict_indexing~replacement=letbuffer=Buffer.to_msgpackbufferinletstart=Msgpack.Integerstartinletend_=Msgpack.Integerend_inletstrict_indexing=Msgpack.Booleanstrict_indexinginletreplacement=Msgpack.Array(List.map~f:(funv->v)replacement)in{Api_result.name="nvim_buf_set_lines";params=[buffer;start;end_;strict_indexing;replacement];witness=Nil};;letnvim_buf_set_text~buffer~start_row~start_col~end_row~end_col~replacement=letbuffer=Buffer.to_msgpackbufferinletstart_row=Msgpack.Integerstart_rowinletstart_col=Msgpack.Integerstart_colinletend_row=Msgpack.Integerend_rowinletend_col=Msgpack.Integerend_colinletreplacement=Msgpack.Array(List.map~f:(funv->v)replacement)in{Api_result.name="nvim_buf_set_text";params=[buffer;start_row;start_col;end_row;end_col;replacement];witness=Nil};;letnvim_buf_get_offset~buffer~index=letbuffer=Buffer.to_msgpackbufferinletindex=Msgpack.Integerindexin{Api_result.name="nvim_buf_get_offset";params=[buffer;index];witness=Integer};;letnvim_buf_get_var~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="nvim_buf_get_var";params=[buffer;name];witness=Object};;letnvim_buf_get_changedtick~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_buf_get_changedtick";params=[buffer];witness=Integer};;letnvim_buf_get_keymap~buffer~mode=letbuffer=Buffer.to_msgpackbufferinletmode=Msgpack.Stringmodein{Api_result.name="nvim_buf_get_keymap";params=[buffer;mode];witness=ArrayObject};;letnvim_buf_set_keymap~buffer~mode~lhs~rhs~opts=letbuffer=Buffer.to_msgpackbufferinletmode=Msgpack.Stringmodeinletlhs=Msgpack.Stringlhsinletrhs=Msgpack.Stringrhsinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_set_keymap";params=[buffer;mode;lhs;rhs;opts];witness=Nil};;letnvim_buf_del_keymap~buffer~mode~lhs=letbuffer=Buffer.to_msgpackbufferinletmode=Msgpack.Stringmodeinletlhs=Msgpack.Stringlhsin{Api_result.name="nvim_buf_del_keymap";params=[buffer;mode;lhs];witness=Nil};;letnvim_buf_get_commands~buffer~opts=letbuffer=Buffer.to_msgpackbufferinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_get_commands";params=[buffer;opts];witness=Dict};;letnvim_buf_set_var~buffer~name~value=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_buf_set_var";params=[buffer;name;value];witness=Nil};;letnvim_buf_del_var~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="nvim_buf_del_var";params=[buffer;name];witness=Nil};;letnvim_buf_get_option~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="nvim_buf_get_option";params=[buffer;name];witness=Object};;letnvim_buf_set_option~buffer~name~value=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_buf_set_option";params=[buffer;name;value];witness=Nil};;letnvim_buf_get_name~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_buf_get_name";params=[buffer];witness=String};;letnvim_buf_set_name~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="nvim_buf_set_name";params=[buffer;name];witness=Nil};;letnvim_buf_is_loaded~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_buf_is_loaded";params=[buffer];witness=Boolean};;letnvim_buf_delete~buffer~opts=letbuffer=Buffer.to_msgpackbufferinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_delete";params=[buffer;opts];witness=Nil};;letnvim_buf_is_valid~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_buf_is_valid";params=[buffer];witness=Boolean};;letnvim_buf_get_mark~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="nvim_buf_get_mark";params=[buffer;name];witness=ArrayObject};;letnvim_buf_get_extmark_by_id~buffer~ns_id~id~opts=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinletid=Msgpack.Integeridinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_get_extmark_by_id";params=[buffer;ns_id;id;opts];witness=ArrayObject};;letnvim_buf_get_extmarks~buffer~ns_id~start~end_~opts=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinletstart=startinletend_=end_inletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_get_extmarks";params=[buffer;ns_id;start;end_;opts];witness=ArrayObject};;letnvim_buf_set_extmark~buffer~ns_id~line~col~opts=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinletline=Msgpack.Integerlineinletcol=Msgpack.Integercolinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_set_extmark";params=[buffer;ns_id;line;col;opts];witness=Integer};;letnvim_buf_del_extmark~buffer~ns_id~id=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinletid=Msgpack.Integeridin{Api_result.name="nvim_buf_del_extmark";params=[buffer;ns_id;id];witness=Boolean};;letnvim_buf_add_highlight~buffer~ns_id~hl_group~line~col_start~col_end=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinlethl_group=Msgpack.Stringhl_groupinletline=Msgpack.Integerlineinletcol_start=Msgpack.Integercol_startinletcol_end=Msgpack.Integercol_endin{Api_result.name="nvim_buf_add_highlight";params=[buffer;ns_id;hl_group;line;col_start;col_end];witness=Integer};;letnvim_buf_clear_namespace~buffer~ns_id~line_start~line_end=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinletline_start=Msgpack.Integerline_startinletline_end=Msgpack.Integerline_endin{Api_result.name="nvim_buf_clear_namespace";params=[buffer;ns_id;line_start;line_end];witness=Nil};;letnvim_buf_set_virtual_text~buffer~src_id~line~chunks~opts=letbuffer=Buffer.to_msgpackbufferinletsrc_id=Msgpack.Integersrc_idinletline=Msgpack.Integerlineinletchunks=Msgpack.Array(List.map~f:(funv->v)chunks)inletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_buf_set_virtual_text";params=[buffer;src_id;line;chunks;opts];witness=Integer};;letnvim_buf_call~buffer~fun_=letbuffer=Buffer.to_msgpackbufferinletfun_=Luaref.to_msgpackfun_in{Api_result.name="nvim_buf_call";params=[buffer;fun_];witness=Object};;letnvim_command_output~command=letcommand=Msgpack.Stringcommandin{Api_result.name="nvim_command_output";params=[command];witness=String};;letnvim_execute_lua~code~args=letcode=Msgpack.Stringcodeinletargs=Msgpack.Array(List.map~f:(funv->v)args)in{Api_result.name="nvim_execute_lua";params=[code;args];witness=Object};;letnvim_buf_get_number~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_buf_get_number";params=[buffer];witness=Integer};;letnvim_buf_clear_highlight~buffer~ns_id~line_start~line_end=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinletline_start=Msgpack.Integerline_startinletline_end=Msgpack.Integerline_endin{Api_result.name="nvim_buf_clear_highlight";params=[buffer;ns_id;line_start;line_end];witness=Nil};;letbuffer_insert~buffer~lnum~lines=letbuffer=Buffer.to_msgpackbufferinletlnum=Msgpack.Integerlnuminletlines=Msgpack.Array(List.map~f:(funv->v)lines)in{Api_result.name="buffer_insert";params=[buffer;lnum;lines];witness=Nil};;letbuffer_get_line~buffer~index=letbuffer=Buffer.to_msgpackbufferinletindex=Msgpack.Integerindexin{Api_result.name="buffer_get_line";params=[buffer;index];witness=String};;letbuffer_set_line~buffer~index~line=letbuffer=Buffer.to_msgpackbufferinletindex=Msgpack.Integerindexinletline=Msgpack.Stringlinein{Api_result.name="buffer_set_line";params=[buffer;index;line];witness=Nil};;letbuffer_del_line~buffer~index=letbuffer=Buffer.to_msgpackbufferinletindex=Msgpack.Integerindexin{Api_result.name="buffer_del_line";params=[buffer;index];witness=Nil};;letbuffer_get_line_slice~buffer~start~end_~include_start~include_end=letbuffer=Buffer.to_msgpackbufferinletstart=Msgpack.Integerstartinletend_=Msgpack.Integerend_inletinclude_start=Msgpack.Booleaninclude_startinletinclude_end=Msgpack.Booleaninclude_endin{Api_result.name="buffer_get_line_slice";params=[buffer;start;end_;include_start;include_end];witness=ArrayObject};;letbuffer_set_line_slice~buffer~start~end_~include_start~include_end~replacement=letbuffer=Buffer.to_msgpackbufferinletstart=Msgpack.Integerstartinletend_=Msgpack.Integerend_inletinclude_start=Msgpack.Booleaninclude_startinletinclude_end=Msgpack.Booleaninclude_endinletreplacement=Msgpack.Array(List.map~f:(funv->v)replacement)in{Api_result.name="buffer_set_line_slice";params=[buffer;start;end_;include_start;include_end;replacement];witness=Nil};;letbuffer_set_var~buffer~name~value=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="buffer_set_var";params=[buffer;name;value];witness=Object};;letbuffer_del_var~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="buffer_del_var";params=[buffer;name];witness=Object};;letwindow_set_var~window~name~value=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="window_set_var";params=[window;name;value];witness=Object};;letwindow_del_var~window~name=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnamein{Api_result.name="window_del_var";params=[window;name];witness=Object};;lettabpage_set_var~tabpage~name~value=lettabpage=Tabpage.to_msgpacktabpageinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="tabpage_set_var";params=[tabpage;name;value];witness=Object};;lettabpage_del_var~tabpage~name=lettabpage=Tabpage.to_msgpacktabpageinletname=Msgpack.Stringnamein{Api_result.name="tabpage_del_var";params=[tabpage;name];witness=Object};;letvim_set_var~name~value=letname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="vim_set_var";params=[name;value];witness=Object};;letvim_del_var~name=letname=Msgpack.Stringnamein{Api_result.name="vim_del_var";params=[name];witness=Object};;letnvim_tabpage_list_wins~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="nvim_tabpage_list_wins";params=[tabpage];witness=ArrayObject};;letnvim_tabpage_get_var~tabpage~name=lettabpage=Tabpage.to_msgpacktabpageinletname=Msgpack.Stringnamein{Api_result.name="nvim_tabpage_get_var";params=[tabpage;name];witness=Object};;letnvim_tabpage_set_var~tabpage~name~value=lettabpage=Tabpage.to_msgpacktabpageinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_tabpage_set_var";params=[tabpage;name;value];witness=Nil};;letnvim_tabpage_del_var~tabpage~name=lettabpage=Tabpage.to_msgpacktabpageinletname=Msgpack.Stringnamein{Api_result.name="nvim_tabpage_del_var";params=[tabpage;name];witness=Nil};;letnvim_tabpage_get_win~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="nvim_tabpage_get_win";params=[tabpage];witness=Window};;letnvim_tabpage_get_number~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="nvim_tabpage_get_number";params=[tabpage];witness=Integer};;letnvim_tabpage_is_valid~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="nvim_tabpage_is_valid";params=[tabpage];witness=Boolean};;letnvim_ui_attach~width~height~options=letwidth=Msgpack.Integerwidthinletheight=Msgpack.Integerheightinletoptions=Msgpack.Map(List.map~f:(fun(s,v)->s,v)options)in{Api_result.name="nvim_ui_attach";params=[width;height;options];witness=Nil};;letui_attach~width~height~enable_rgb=letwidth=Msgpack.Integerwidthinletheight=Msgpack.Integerheightinletenable_rgb=Msgpack.Booleanenable_rgbin{Api_result.name="ui_attach";params=[width;height;enable_rgb];witness=Nil};;letnvim_ui_detach={Api_result.name="nvim_ui_detach";params=[];witness=Nil}letnvim_ui_try_resize~width~height=letwidth=Msgpack.Integerwidthinletheight=Msgpack.Integerheightin{Api_result.name="nvim_ui_try_resize";params=[width;height];witness=Nil};;letnvim_ui_set_option~name~value=letname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_ui_set_option";params=[name;value];witness=Nil};;letnvim_ui_try_resize_grid~grid~width~height=letgrid=Msgpack.Integergridinletwidth=Msgpack.Integerwidthinletheight=Msgpack.Integerheightin{Api_result.name="nvim_ui_try_resize_grid";params=[grid;width;height];witness=Nil};;letnvim_ui_pum_set_height~height=letheight=Msgpack.Integerheightin{Api_result.name="nvim_ui_pum_set_height";params=[height];witness=Nil};;letnvim_ui_pum_set_bounds~width~height~row~col=letwidth=Msgpack.Floatingwidthinletheight=Msgpack.Floatingheightinletrow=Msgpack.Floatingrowinletcol=Msgpack.Floatingcolin{Api_result.name="nvim_ui_pum_set_bounds";params=[width;height;row;col];witness=Nil};;letnvim_exec~src~output=letsrc=Msgpack.Stringsrcinletoutput=Msgpack.Booleanoutputin{Api_result.name="nvim_exec";params=[src;output];witness=String};;letnvim_command~command=letcommand=Msgpack.Stringcommandin{Api_result.name="nvim_command";params=[command];witness=Nil};;letnvim_get_hl_by_name~name~rgb=letname=Msgpack.Stringnameinletrgb=Msgpack.Booleanrgbin{Api_result.name="nvim_get_hl_by_name";params=[name;rgb];witness=Dict};;letnvim_get_hl_by_id~hl_id~rgb=lethl_id=Msgpack.Integerhl_idinletrgb=Msgpack.Booleanrgbin{Api_result.name="nvim_get_hl_by_id";params=[hl_id;rgb];witness=Dict};;letnvim_get_hl_id_by_name~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_get_hl_id_by_name";params=[name];witness=Integer};;letnvim_set_hl~ns_id~name~val_=letns_id=Msgpack.Integerns_idinletname=Msgpack.Stringnameinletval_=Msgpack.Map(List.map~f:(fun(s,v)->s,v)val_)in{Api_result.name="nvim_set_hl";params=[ns_id;name;val_];witness=Nil};;letnvim_feedkeys~keys~mode~escape_csi=letkeys=Msgpack.Stringkeysinletmode=Msgpack.Stringmodeinletescape_csi=Msgpack.Booleanescape_csiin{Api_result.name="nvim_feedkeys";params=[keys;mode;escape_csi];witness=Nil};;letnvim_input~keys=letkeys=Msgpack.Stringkeysin{Api_result.name="nvim_input";params=[keys];witness=Integer};;letnvim_input_mouse~button~action~modifier~grid~row~col=letbutton=Msgpack.Stringbuttoninletaction=Msgpack.Stringactioninletmodifier=Msgpack.Stringmodifierinletgrid=Msgpack.Integergridinletrow=Msgpack.Integerrowinletcol=Msgpack.Integercolin{Api_result.name="nvim_input_mouse";params=[button;action;modifier;grid;row;col];witness=Nil};;letnvim_replace_termcodes~str~from_part~do_lt~special=letstr=Msgpack.Stringstrinletfrom_part=Msgpack.Booleanfrom_partinletdo_lt=Msgpack.Booleando_ltinletspecial=Msgpack.Booleanspecialin{Api_result.name="nvim_replace_termcodes";params=[str;from_part;do_lt;special];witness=String};;letnvim_eval~expr=letexpr=Msgpack.Stringexprin{Api_result.name="nvim_eval";params=[expr];witness=Object};;letnvim_exec_lua~code~args=letcode=Msgpack.Stringcodeinletargs=Msgpack.Array(List.map~f:(funv->v)args)in{Api_result.name="nvim_exec_lua";params=[code;args];witness=Object};;letnvim_notify~msg~log_level~opts=letmsg=Msgpack.Stringmsginletlog_level=Msgpack.Integerlog_levelinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_notify";params=[msg;log_level;opts];witness=Object};;letnvim_call_function~fn~args=letfn=Msgpack.Stringfninletargs=Msgpack.Array(List.map~f:(funv->v)args)in{Api_result.name="nvim_call_function";params=[fn;args];witness=Object};;letnvim_call_dict_function~dict~fn~args=letdict=dictinletfn=Msgpack.Stringfninletargs=Msgpack.Array(List.map~f:(funv->v)args)in{Api_result.name="nvim_call_dict_function";params=[dict;fn;args];witness=Object};;letnvim_strwidth~text=lettext=Msgpack.Stringtextin{Api_result.name="nvim_strwidth";params=[text];witness=Integer};;letnvim_list_runtime_paths={Api_result.name="nvim_list_runtime_paths";params=[];witness=ArrayObject};;letnvim_get_runtime_file~name~all=letname=Msgpack.Stringnameinletall=Msgpack.Booleanallin{Api_result.name="nvim_get_runtime_file";params=[name;all];witness=ArrayObject};;letnvim_set_current_dir~dir=letdir=Msgpack.Stringdirin{Api_result.name="nvim_set_current_dir";params=[dir];witness=Nil};;letnvim_get_current_line={Api_result.name="nvim_get_current_line";params=[];witness=String};;letnvim_set_current_line~line=letline=Msgpack.Stringlinein{Api_result.name="nvim_set_current_line";params=[line];witness=Nil};;letnvim_del_current_line={Api_result.name="nvim_del_current_line";params=[];witness=Nil};;letnvim_get_var~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_get_var";params=[name];witness=Object};;letnvim_set_var~name~value=letname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_set_var";params=[name;value];witness=Nil};;letnvim_del_var~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_del_var";params=[name];witness=Nil};;letnvim_get_vvar~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_get_vvar";params=[name];witness=Object};;letnvim_set_vvar~name~value=letname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_set_vvar";params=[name;value];witness=Nil};;letnvim_get_option~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_get_option";params=[name];witness=Object};;letnvim_get_all_options_info={Api_result.name="nvim_get_all_options_info";params=[];witness=Dict};;letnvim_get_option_info~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_get_option_info";params=[name];witness=Dict};;letnvim_set_option~name~value=letname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_set_option";params=[name;value];witness=Nil};;letnvim_echo~chunks~history~opts=letchunks=Msgpack.Array(List.map~f:(funv->v)chunks)inlethistory=Msgpack.Booleanhistoryinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_echo";params=[chunks;history;opts];witness=Nil};;letnvim_out_write~str=letstr=Msgpack.Stringstrin{Api_result.name="nvim_out_write";params=[str];witness=Nil};;letnvim_err_write~str=letstr=Msgpack.Stringstrin{Api_result.name="nvim_err_write";params=[str];witness=Nil};;letnvim_err_writeln~str=letstr=Msgpack.Stringstrin{Api_result.name="nvim_err_writeln";params=[str];witness=Nil};;letnvim_list_bufs={Api_result.name="nvim_list_bufs";params=[];witness=ArrayObject};;letnvim_get_current_buf={Api_result.name="nvim_get_current_buf";params=[];witness=Buffer};;letnvim_set_current_buf~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_set_current_buf";params=[buffer];witness=Nil};;letnvim_list_wins={Api_result.name="nvim_list_wins";params=[];witness=ArrayObject};;letnvim_get_current_win={Api_result.name="nvim_get_current_win";params=[];witness=Window};;letnvim_set_current_win~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_set_current_win";params=[window];witness=Nil};;letnvim_create_buf~listed~scratch=letlisted=Msgpack.Booleanlistedinletscratch=Msgpack.Booleanscratchin{Api_result.name="nvim_create_buf";params=[listed;scratch];witness=Buffer};;letnvim_open_term~buffer~opts=letbuffer=Buffer.to_msgpackbufferinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_open_term";params=[buffer;opts];witness=Integer};;letnvim_chan_send~chan~data=letchan=Msgpack.Integerchaninletdata=Msgpack.Stringdatain{Api_result.name="nvim_chan_send";params=[chan;data];witness=Nil};;letnvim_open_win~buffer~enter~config=letbuffer=Buffer.to_msgpackbufferinletenter=Msgpack.Booleanenterinletconfig=Msgpack.Map(List.map~f:(fun(s,v)->s,v)config)in{Api_result.name="nvim_open_win";params=[buffer;enter;config];witness=Window};;letnvim_list_tabpages={Api_result.name="nvim_list_tabpages";params=[];witness=ArrayObject};;letnvim_get_current_tabpage={Api_result.name="nvim_get_current_tabpage";params=[];witness=Tabpage};;letnvim_set_current_tabpage~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="nvim_set_current_tabpage";params=[tabpage];witness=Nil};;letnvim_create_namespace~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_create_namespace";params=[name];witness=Integer};;letnvim_get_namespaces={Api_result.name="nvim_get_namespaces";params=[];witness=Dict};;letnvim_paste~data~crlf~phase=letdata=Msgpack.Stringdatainletcrlf=Msgpack.Booleancrlfinletphase=Msgpack.Integerphasein{Api_result.name="nvim_paste";params=[data;crlf;phase];witness=Boolean};;letnvim_put~lines~type_~after~follow=letlines=Msgpack.Array(List.map~f:(funv->v)lines)inlettype_=Msgpack.Stringtype_inletafter=Msgpack.Booleanafterinletfollow=Msgpack.Booleanfollowin{Api_result.name="nvim_put";params=[lines;type_;after;follow];witness=Nil};;letnvim_subscribe~event=letevent=Msgpack.Stringeventin{Api_result.name="nvim_subscribe";params=[event];witness=Nil};;letnvim_unsubscribe~event=letevent=Msgpack.Stringeventin{Api_result.name="nvim_unsubscribe";params=[event];witness=Nil};;letnvim_get_color_by_name~name=letname=Msgpack.Stringnamein{Api_result.name="nvim_get_color_by_name";params=[name];witness=Integer};;letnvim_get_color_map={Api_result.name="nvim_get_color_map";params=[];witness=Dict};;letnvim_get_context~opts=letopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_get_context";params=[opts];witness=Dict};;letnvim_load_context~dict=letdict=Msgpack.Map(List.map~f:(fun(s,v)->s,v)dict)in{Api_result.name="nvim_load_context";params=[dict];witness=Object};;letnvim_get_mode={Api_result.name="nvim_get_mode";params=[];witness=Dict}letnvim_get_keymap~mode=letmode=Msgpack.Stringmodein{Api_result.name="nvim_get_keymap";params=[mode];witness=ArrayObject};;letnvim_set_keymap~mode~lhs~rhs~opts=letmode=Msgpack.Stringmodeinletlhs=Msgpack.Stringlhsinletrhs=Msgpack.Stringrhsinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_set_keymap";params=[mode;lhs;rhs;opts];witness=Nil};;letnvim_del_keymap~mode~lhs=letmode=Msgpack.Stringmodeinletlhs=Msgpack.Stringlhsin{Api_result.name="nvim_del_keymap";params=[mode;lhs];witness=Nil};;letnvim_get_commands~opts=letopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_get_commands";params=[opts];witness=Dict};;letnvim_get_api_info={Api_result.name="nvim_get_api_info";params=[];witness=ArrayObject};;letnvim_set_client_info~name~version~type_~methods~attributes=letname=Msgpack.Stringnameinletversion=Msgpack.Map(List.map~f:(fun(s,v)->s,v)version)inlettype_=Msgpack.Stringtype_inletmethods=Msgpack.Map(List.map~f:(fun(s,v)->s,v)methods)inletattributes=Msgpack.Map(List.map~f:(fun(s,v)->s,v)attributes)in{Api_result.name="nvim_set_client_info";params=[name;version;type_;methods;attributes];witness=Nil};;letnvim_get_chan_info~chan=letchan=Msgpack.Integerchanin{Api_result.name="nvim_get_chan_info";params=[chan];witness=Dict};;letnvim_list_chans={Api_result.name="nvim_list_chans";params=[];witness=ArrayObject};;letnvim_call_atomic~calls=letcalls=Msgpack.Array(List.map~f:(funv->v)calls)in{Api_result.name="nvim_call_atomic";params=[calls];witness=ArrayObject};;letnvim_parse_expression~expr~flags~highlight=letexpr=Msgpack.Stringexprinletflags=Msgpack.Stringflagsinlethighlight=Msgpack.Booleanhighlightin{Api_result.name="nvim_parse_expression";params=[expr;flags;highlight];witness=Dict};;letnvim_list_uis={Api_result.name="nvim_list_uis";params=[];witness=ArrayObject};;letnvim_get_proc_children~pid=letpid=Msgpack.Integerpidin{Api_result.name="nvim_get_proc_children";params=[pid];witness=ArrayObject};;letnvim_get_proc~pid=letpid=Msgpack.Integerpidin{Api_result.name="nvim_get_proc";params=[pid];witness=Object};;letnvim_select_popupmenu_item~item~insert~finish~opts=letitem=Msgpack.Integeriteminletinsert=Msgpack.Booleaninsertinletfinish=Msgpack.Booleanfinishinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_select_popupmenu_item";params=[item;insert;finish;opts];witness=Nil};;letnvim_set_decoration_provider~ns_id~opts=letns_id=Msgpack.Integerns_idinletopts=Msgpack.Map(List.map~f:(fun(s,v)->s,v)opts)in{Api_result.name="nvim_set_decoration_provider";params=[ns_id;opts];witness=Nil};;letnvim_win_get_buf~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_buf";params=[window];witness=Buffer};;letnvim_win_set_buf~window~buffer=letwindow=Window.to_msgpackwindowinletbuffer=Buffer.to_msgpackbufferin{Api_result.name="nvim_win_set_buf";params=[window;buffer];witness=Nil};;letnvim_win_get_cursor~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_cursor";params=[window];witness=ArrayObject};;letnvim_win_set_cursor~window~pos=letwindow=Window.to_msgpackwindowinletpos=Msgpack.Array(List.map~f:(funv->v)pos)in{Api_result.name="nvim_win_set_cursor";params=[window;pos];witness=Nil};;letnvim_win_get_height~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_height";params=[window];witness=Integer};;letnvim_win_set_height~window~height=letwindow=Window.to_msgpackwindowinletheight=Msgpack.Integerheightin{Api_result.name="nvim_win_set_height";params=[window;height];witness=Nil};;letnvim_win_get_width~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_width";params=[window];witness=Integer};;letnvim_win_set_width~window~width=letwindow=Window.to_msgpackwindowinletwidth=Msgpack.Integerwidthin{Api_result.name="nvim_win_set_width";params=[window;width];witness=Nil};;letnvim_win_get_var~window~name=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnamein{Api_result.name="nvim_win_get_var";params=[window;name];witness=Object};;letnvim_win_set_var~window~name~value=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_win_set_var";params=[window;name;value];witness=Nil};;letnvim_win_del_var~window~name=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnamein{Api_result.name="nvim_win_del_var";params=[window;name];witness=Nil};;letnvim_win_get_option~window~name=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnamein{Api_result.name="nvim_win_get_option";params=[window;name];witness=Object};;letnvim_win_set_option~window~name~value=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="nvim_win_set_option";params=[window;name;value];witness=Nil};;letnvim_win_get_position~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_position";params=[window];witness=ArrayObject};;letnvim_win_get_tabpage~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_tabpage";params=[window];witness=Tabpage};;letnvim_win_get_number~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_number";params=[window];witness=Integer};;letnvim_win_is_valid~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_is_valid";params=[window];witness=Boolean};;letnvim_win_set_config~window~config=letwindow=Window.to_msgpackwindowinletconfig=Msgpack.Map(List.map~f:(fun(s,v)->s,v)config)in{Api_result.name="nvim_win_set_config";params=[window;config];witness=Nil};;letnvim_win_get_config~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_get_config";params=[window];witness=Dict};;letnvim_win_hide~window=letwindow=Window.to_msgpackwindowin{Api_result.name="nvim_win_hide";params=[window];witness=Nil};;letnvim_win_close~window~force=letwindow=Window.to_msgpackwindowinletforce=Msgpack.Booleanforcein{Api_result.name="nvim_win_close";params=[window;force];witness=Nil};;letnvim_win_call~window~fun_=letwindow=Window.to_msgpackwindowinletfun_=Luaref.to_msgpackfun_in{Api_result.name="nvim_win_call";params=[window;fun_];witness=Object};;letbuffer_line_count~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="buffer_line_count";params=[buffer];witness=Integer};;letbuffer_get_lines~buffer~start~end_~strict_indexing=letbuffer=Buffer.to_msgpackbufferinletstart=Msgpack.Integerstartinletend_=Msgpack.Integerend_inletstrict_indexing=Msgpack.Booleanstrict_indexingin{Api_result.name="buffer_get_lines";params=[buffer;start;end_;strict_indexing];witness=ArrayObject};;letbuffer_set_lines~buffer~start~end_~strict_indexing~replacement=letbuffer=Buffer.to_msgpackbufferinletstart=Msgpack.Integerstartinletend_=Msgpack.Integerend_inletstrict_indexing=Msgpack.Booleanstrict_indexinginletreplacement=Msgpack.Array(List.map~f:(funv->v)replacement)in{Api_result.name="buffer_set_lines";params=[buffer;start;end_;strict_indexing;replacement];witness=Nil};;letbuffer_get_var~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="buffer_get_var";params=[buffer;name];witness=Object};;letbuffer_get_option~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="buffer_get_option";params=[buffer;name];witness=Object};;letbuffer_set_option~buffer~name~value=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="buffer_set_option";params=[buffer;name;value];witness=Nil};;letbuffer_get_name~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="buffer_get_name";params=[buffer];witness=String};;letbuffer_set_name~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="buffer_set_name";params=[buffer;name];witness=Nil};;letbuffer_is_valid~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="buffer_is_valid";params=[buffer];witness=Boolean};;letbuffer_get_mark~buffer~name=letbuffer=Buffer.to_msgpackbufferinletname=Msgpack.Stringnamein{Api_result.name="buffer_get_mark";params=[buffer;name];witness=ArrayObject};;letbuffer_add_highlight~buffer~ns_id~hl_group~line~col_start~col_end=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinlethl_group=Msgpack.Stringhl_groupinletline=Msgpack.Integerlineinletcol_start=Msgpack.Integercol_startinletcol_end=Msgpack.Integercol_endin{Api_result.name="buffer_add_highlight";params=[buffer;ns_id;hl_group;line;col_start;col_end];witness=Integer};;letvim_command_output~command=letcommand=Msgpack.Stringcommandin{Api_result.name="vim_command_output";params=[command];witness=String};;letbuffer_get_number~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="buffer_get_number";params=[buffer];witness=Integer};;letbuffer_clear_highlight~buffer~ns_id~line_start~line_end=letbuffer=Buffer.to_msgpackbufferinletns_id=Msgpack.Integerns_idinletline_start=Msgpack.Integerline_startinletline_end=Msgpack.Integerline_endin{Api_result.name="buffer_clear_highlight";params=[buffer;ns_id;line_start;line_end];witness=Nil};;lettabpage_get_windows~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="tabpage_get_windows";params=[tabpage];witness=ArrayObject};;lettabpage_get_var~tabpage~name=lettabpage=Tabpage.to_msgpacktabpageinletname=Msgpack.Stringnamein{Api_result.name="tabpage_get_var";params=[tabpage;name];witness=Object};;lettabpage_get_window~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="tabpage_get_window";params=[tabpage];witness=Window};;lettabpage_is_valid~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="tabpage_is_valid";params=[tabpage];witness=Boolean};;letui_detach={Api_result.name="ui_detach";params=[];witness=Nil}letui_try_resize~width~height=letwidth=Msgpack.Integerwidthinletheight=Msgpack.Integerheightin{Api_result.name="ui_try_resize";params=[width;height];witness=Object};;letvim_command~command=letcommand=Msgpack.Stringcommandin{Api_result.name="vim_command";params=[command];witness=Nil};;letvim_feedkeys~keys~mode~escape_csi=letkeys=Msgpack.Stringkeysinletmode=Msgpack.Stringmodeinletescape_csi=Msgpack.Booleanescape_csiin{Api_result.name="vim_feedkeys";params=[keys;mode;escape_csi];witness=Nil};;letvim_input~keys=letkeys=Msgpack.Stringkeysin{Api_result.name="vim_input";params=[keys];witness=Integer};;letvim_replace_termcodes~str~from_part~do_lt~special=letstr=Msgpack.Stringstrinletfrom_part=Msgpack.Booleanfrom_partinletdo_lt=Msgpack.Booleando_ltinletspecial=Msgpack.Booleanspecialin{Api_result.name="vim_replace_termcodes";params=[str;from_part;do_lt;special];witness=String};;letvim_eval~expr=letexpr=Msgpack.Stringexprin{Api_result.name="vim_eval";params=[expr];witness=Object};;letvim_call_function~fn~args=letfn=Msgpack.Stringfninletargs=Msgpack.Array(List.map~f:(funv->v)args)in{Api_result.name="vim_call_function";params=[fn;args];witness=Object};;letvim_strwidth~text=lettext=Msgpack.Stringtextin{Api_result.name="vim_strwidth";params=[text];witness=Integer};;letvim_list_runtime_paths={Api_result.name="vim_list_runtime_paths";params=[];witness=ArrayObject};;letvim_change_directory~dir=letdir=Msgpack.Stringdirin{Api_result.name="vim_change_directory";params=[dir];witness=Nil};;letvim_get_current_line={Api_result.name="vim_get_current_line";params=[];witness=String};;letvim_set_current_line~line=letline=Msgpack.Stringlinein{Api_result.name="vim_set_current_line";params=[line];witness=Nil};;letvim_del_current_line={Api_result.name="vim_del_current_line";params=[];witness=Nil};;letvim_get_var~name=letname=Msgpack.Stringnamein{Api_result.name="vim_get_var";params=[name];witness=Object};;letvim_get_vvar~name=letname=Msgpack.Stringnamein{Api_result.name="vim_get_vvar";params=[name];witness=Object};;letvim_get_option~name=letname=Msgpack.Stringnamein{Api_result.name="vim_get_option";params=[name];witness=Object};;letvim_set_option~name~value=letname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="vim_set_option";params=[name;value];witness=Nil};;letvim_out_write~str=letstr=Msgpack.Stringstrin{Api_result.name="vim_out_write";params=[str];witness=Nil};;letvim_err_write~str=letstr=Msgpack.Stringstrin{Api_result.name="vim_err_write";params=[str];witness=Nil};;letvim_report_error~str=letstr=Msgpack.Stringstrin{Api_result.name="vim_report_error";params=[str];witness=Nil};;letvim_get_buffers={Api_result.name="vim_get_buffers";params=[];witness=ArrayObject};;letvim_get_current_buffer={Api_result.name="vim_get_current_buffer";params=[];witness=Buffer};;letvim_set_current_buffer~buffer=letbuffer=Buffer.to_msgpackbufferin{Api_result.name="vim_set_current_buffer";params=[buffer];witness=Nil};;letvim_get_windows={Api_result.name="vim_get_windows";params=[];witness=ArrayObject};;letvim_get_current_window={Api_result.name="vim_get_current_window";params=[];witness=Window};;letvim_set_current_window~window=letwindow=Window.to_msgpackwindowin{Api_result.name="vim_set_current_window";params=[window];witness=Nil};;letvim_get_tabpages={Api_result.name="vim_get_tabpages";params=[];witness=ArrayObject};;letvim_get_current_tabpage={Api_result.name="vim_get_current_tabpage";params=[];witness=Tabpage};;letvim_set_current_tabpage~tabpage=lettabpage=Tabpage.to_msgpacktabpagein{Api_result.name="vim_set_current_tabpage";params=[tabpage];witness=Nil};;letvim_subscribe~event=letevent=Msgpack.Stringeventin{Api_result.name="vim_subscribe";params=[event];witness=Nil};;letvim_unsubscribe~event=letevent=Msgpack.Stringeventin{Api_result.name="vim_unsubscribe";params=[event];witness=Nil};;letvim_name_to_color~name=letname=Msgpack.Stringnamein{Api_result.name="vim_name_to_color";params=[name];witness=Integer};;letvim_get_color_map={Api_result.name="vim_get_color_map";params=[];witness=Dict};;letvim_get_api_info={Api_result.name="vim_get_api_info";params=[];witness=ArrayObject};;letwindow_get_buffer~window=letwindow=Window.to_msgpackwindowin{Api_result.name="window_get_buffer";params=[window];witness=Buffer};;letwindow_get_cursor~window=letwindow=Window.to_msgpackwindowin{Api_result.name="window_get_cursor";params=[window];witness=ArrayObject};;letwindow_set_cursor~window~pos=letwindow=Window.to_msgpackwindowinletpos=Msgpack.Array(List.map~f:(funv->v)pos)in{Api_result.name="window_set_cursor";params=[window;pos];witness=Nil};;letwindow_get_height~window=letwindow=Window.to_msgpackwindowin{Api_result.name="window_get_height";params=[window];witness=Integer};;letwindow_set_height~window~height=letwindow=Window.to_msgpackwindowinletheight=Msgpack.Integerheightin{Api_result.name="window_set_height";params=[window;height];witness=Nil};;letwindow_get_width~window=letwindow=Window.to_msgpackwindowin{Api_result.name="window_get_width";params=[window];witness=Integer};;letwindow_set_width~window~width=letwindow=Window.to_msgpackwindowinletwidth=Msgpack.Integerwidthin{Api_result.name="window_set_width";params=[window;width];witness=Nil};;letwindow_get_var~window~name=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnamein{Api_result.name="window_get_var";params=[window;name];witness=Object};;letwindow_get_option~window~name=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnamein{Api_result.name="window_get_option";params=[window;name];witness=Object};;letwindow_set_option~window~name~value=letwindow=Window.to_msgpackwindowinletname=Msgpack.Stringnameinletvalue=valuein{Api_result.name="window_set_option";params=[window;name;value];witness=Nil};;letwindow_get_position~window=letwindow=Window.to_msgpackwindowin{Api_result.name="window_get_position";params=[window];witness=ArrayObject};;letwindow_get_tabpage~window=letwindow=Window.to_msgpackwindowin{Api_result.name="window_get_tabpage";params=[window];witness=Tabpage};;letwindow_is_valid~window=letwindow=Window.to_msgpackwindowin{Api_result.name="window_is_valid";params=[window];witness=Boolean};;