{
  "version": {
    "major": 0,
    "api_level": 4,
    "api_prerelease": false,
    "patch": 1,
    "api_compatible": 0,
    "minor": 3
  },
  "ui_options": [
    "rgb",
    "ext_cmdline",
    "ext_popupmenu",
    "ext_tabline",
    "ext_wildmenu"
  ],
  "ui_events": [
    {
      "name": "resize",
      "parameters": [["Integer", "width"], ["Integer", "height"]],
      "since": 3
    },
    {"name": "clear", "parameters": [], "since": 3},
    {"name": "eol_clear", "parameters": [], "since": 3},
    {
      "name": "cursor_goto",
      "parameters": [["Integer", "row"], ["Integer", "col"]],
      "since": 3
    },
    {
      "name": "mode_info_set",
      "parameters": [["Boolean", "enabled"], ["Array", "cursor_styles"]],
      "since": 3
    },
    {"name": "update_menu", "parameters": [], "since": 3},
    {"name": "busy_start", "parameters": [], "since": 3},
    {"name": "busy_stop", "parameters": [], "since": 3},
    {"name": "mouse_on", "parameters": [], "since": 3},
    {"name": "mouse_off", "parameters": [], "since": 3},
    {
      "name": "mode_change",
      "parameters": [["String", "mode"], ["Integer", "mode_idx"]],
      "since": 3
    },
    {
      "name": "set_scroll_region",
      "parameters": [
        ["Integer", "top"],
        ["Integer", "bot"],
        ["Integer", "left"],
        ["Integer", "right"]
      ],
      "since": 3
    },
    {"name": "scroll", "parameters": [["Integer", "count"]], "since": 3},
    {
      "name": "highlight_set",
      "parameters": [["Dictionary", "attrs"]],
      "since": 3
    },
    {"name": "put", "parameters": [["String", "str"]], "since": 3},
    {"name": "bell", "parameters": [], "since": 3},
    {"name": "visual_bell", "parameters": [], "since": 3},
    {"name": "flush", "parameters": [], "since": 3},
    {"name": "update_fg", "parameters": [["Integer", "fg"]], "since": 3},
    {"name": "update_bg", "parameters": [["Integer", "bg"]], "since": 3},
    {"name": "update_sp", "parameters": [["Integer", "sp"]], "since": 3},
    {
      "name": "default_colors_set",
      "parameters": [
        ["Integer", "rgb_fg"],
        ["Integer", "rgb_bg"],
        ["Integer", "rgb_sp"],
        ["Integer", "cterm_fg"],
        ["Integer", "cterm_bg"]
      ],
      "since": 4
    },
    {"name": "suspend", "parameters": [], "since": 3},
    {"name": "set_title", "parameters": [["String", "title"]], "since": 3},
    {"name": "set_icon", "parameters": [["String", "icon"]], "since": 3},
    {
      "name": "option_set",
      "parameters": [["String", "name"], ["Object", "value"]],
      "since": 4
    },
    {
      "name": "popupmenu_show",
      "parameters": [
        ["Array", "items"],
        ["Integer", "selected"],
        ["Integer", "row"],
        ["Integer", "col"]
      ],
      "since": 3
    },
    {"name": "popupmenu_hide", "parameters": [], "since": 3},
    {
      "name": "popupmenu_select",
      "parameters": [["Integer", "selected"]],
      "since": 3
    },
    {
      "name": "tabline_update",
      "parameters": [["Tabpage", "current"], ["Array", "tabs"]],
      "since": 3
    },
    {
      "name": "cmdline_show",
      "parameters": [
        ["Array", "content"],
        ["Integer", "pos"],
        ["String", "firstc"],
        ["String", "prompt"],
        ["Integer", "indent"],
        ["Integer", "level"]
      ],
      "since": 3
    },
    {
      "name": "cmdline_pos",
      "parameters": [["Integer", "pos"], ["Integer", "level"]],
      "since": 3
    },
    {
      "name": "cmdline_special_char",
      "parameters": [
        ["String", "c"],
        ["Boolean", "shift"],
        ["Integer", "level"]
      ],
      "since": 3
    },
    {"name": "cmdline_hide", "parameters": [["Integer", "level"]], "since": 3},
    {
      "name": "cmdline_block_show",
      "parameters": [["Array", "lines"]],
      "since": 3
    },
    {
      "name": "cmdline_block_append",
      "parameters": [["Array", "lines"]],
      "since": 3
    },
    {"name": "cmdline_block_hide", "parameters": [], "since": 3},
    {"name": "wildmenu_show", "parameters": [["Array", "items"]], "since": 3},
    {
      "name": "wildmenu_select",
      "parameters": [["Integer", "selected"]],
      "since": 3
    },
    {"name": "wildmenu_hide", "parameters": [], "since": 3}
  ],
  "functions": [
    {
      "method": true,
      "name": "nvim_buf_line_count",
      "return_type": "Integer",
      "parameters": [["Buffer", "buffer"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_attach",
      "return_type": "Boolean",
      "parameters": [
        ["Buffer", "buffer"],
        ["Boolean", "send_buffer"],
        ["Dictionary", "opts"]
      ],
      "since": 4
    },
    {
      "method": true,
      "name": "nvim_buf_detach",
      "return_type": "Boolean",
      "parameters": [["Buffer", "buffer"]],
      "since": 4
    },
    {
      "method": true,
      "name": "nvim_buf_get_lines",
      "return_type": "ArrayOf(String)",
      "parameters": [
        ["Buffer", "buffer"],
        ["Integer", "start"],
        ["Integer", "end"],
        ["Boolean", "strict_indexing"]
      ],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_set_lines",
      "return_type": "void",
      "parameters": [
        ["Buffer", "buffer"],
        ["Integer", "start"],
        ["Integer", "end"],
        ["Boolean", "strict_indexing"],
        ["ArrayOf(String)", "replacement"]
      ],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_get_var",
      "return_type": "Object",
      "parameters": [["Buffer", "buffer"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_get_changedtick",
      "return_type": "Integer",
      "parameters": [["Buffer", "buffer"]],
      "since": 2
    },
    {
      "method": true,
      "name": "nvim_buf_set_var",
      "return_type": "void",
      "parameters": [
        ["Buffer", "buffer"],
        ["String", "name"],
        ["Object", "value"]
      ],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_del_var",
      "return_type": "void",
      "parameters": [["Buffer", "buffer"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_get_option",
      "return_type": "Object",
      "parameters": [["Buffer", "buffer"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_set_option",
      "return_type": "void",
      "parameters": [
        ["Buffer", "buffer"],
        ["String", "name"],
        ["Object", "value"]
      ],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_get_name",
      "return_type": "String",
      "parameters": [["Buffer", "buffer"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_set_name",
      "return_type": "void",
      "parameters": [["Buffer", "buffer"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_is_valid",
      "return_type": "Boolean",
      "parameters": [["Buffer", "buffer"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_buf_get_mark",
      "return_type": "ArrayOf(Integer, 2)",
      "parameters": [["Buffer", "buffer"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_tabpage_list_wins",
      "return_type": "ArrayOf(Window)",
      "parameters": [["Tabpage", "tabpage"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_tabpage_get_var",
      "return_type": "Object",
      "parameters": [["Tabpage", "tabpage"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_tabpage_set_var",
      "return_type": "void",
      "parameters": [
        ["Tabpage", "tabpage"],
        ["String", "name"],
        ["Object", "value"]
      ],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_tabpage_del_var",
      "return_type": "void",
      "parameters": [["Tabpage", "tabpage"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_tabpage_get_win",
      "return_type": "Window",
      "parameters": [["Tabpage", "tabpage"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_tabpage_get_number",
      "return_type": "Integer",
      "parameters": [["Tabpage", "tabpage"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_tabpage_is_valid",
      "return_type": "Boolean",
      "parameters": [["Tabpage", "tabpage"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_ui_detach",
      "return_type": "void",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_ui_try_resize",
      "return_type": "void",
      "parameters": [["Integer", "width"], ["Integer", "height"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_ui_set_option",
      "return_type": "void",
      "parameters": [["String", "name"], ["Object", "value"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_command",
      "return_type": "void",
      "parameters": [["String", "command"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_feedkeys",
      "return_type": "void",
      "parameters": [
        ["String", "keys"],
        ["String", "mode"],
        ["Boolean", "escape_csi"]
      ],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_call_atomic",
      "return_type": "void",
      "parameters": [["Array", "calls"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_command_output",
      "return_type": "String",
      "parameters": [["String", "command"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_eval",
      "return_type": "Object",
      "parameters": [["String", "expr"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_call_function",
      "return_type": "Object",
      "parameters": [["String", "fn"], ["Array", "args"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_call_dict_function",
      "return_type": "Object",
      "parameters": [["Object", "dict"], ["String", "fn"], ["Array", "args"]],
      "since": 4
    },
    {
      "method": false,
      "name": "nvim_strwidth",
      "return_type": "Integer",
      "parameters": [["String", "text"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_list_runtime_paths",
      "return_type": "ArrayOf(String)",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_current_dir",
      "return_type": "void",
      "parameters": [["String", "dir"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_current_line",
      "return_type": "String",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_current_line",
      "return_type": "void",
      "parameters": [["String", "line"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_del_current_line",
      "return_type": "void",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_var",
      "return_type": "Object",
      "parameters": [["String", "name"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_var",
      "return_type": "void",
      "parameters": [["String", "name"], ["Object", "value"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_del_var",
      "return_type": "void",
      "parameters": [["String", "name"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_vvar",
      "return_type": "Object",
      "parameters": [["String", "name"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_option",
      "return_type": "Object",
      "parameters": [["String", "name"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_option",
      "return_type": "void",
      "parameters": [["String", "name"], ["Object", "value"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_out_write",
      "return_type": "void",
      "parameters": [["String", "str"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_err_write",
      "return_type": "void",
      "parameters": [["String", "str"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_err_writeln",
      "return_type": "void",
      "parameters": [["String", "str"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_list_bufs",
      "return_type": "ArrayOf(Buffer)",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_current_buf",
      "return_type": "Buffer",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_current_buf",
      "return_type": "void",
      "parameters": [["Buffer", "buffer"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_list_wins",
      "return_type": "ArrayOf(Window)",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_current_win",
      "return_type": "Window",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_current_win",
      "return_type": "void",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_list_tabpages",
      "return_type": "ArrayOf(Tabpage)",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_current_tabpage",
      "return_type": "Tabpage",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_current_tabpage",
      "return_type": "void",
      "parameters": [["Tabpage", "tabpage"]],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_get_mode",
      "return_type": "Dictionary",
      "parameters": [],
      "since": 2
    },
    {
      "method": false,
      "name": "nvim_get_keymap",
      "return_type": "ArrayOf(Dictionary)",
      "parameters": [["String", "mode"]],
      "since": 3
    },
    {
      "method": false,
      "name": "nvim_get_commands",
      "return_type": "Dictionary",
      "parameters": [["Dictionary", "opts"]],
      "since": 4
    },
    {
      "method": false,
      "name": "nvim_get_api_info",
      "return_type": "Array",
      "parameters": [],
      "since": 1
    },
    {
      "method": false,
      "name": "nvim_set_client_info",
      "return_type": "void",
      "parameters": [
        ["String", "name"],
        ["Dictionary", "version"],
        ["String", "type"],
        ["Dictionary", "methods"],
        ["Dictionary", "attributes"]
      ],
      "since": 4
    },
    {
      "method": true,
      "name": "nvim_win_get_buf",
      "return_type": "Buffer",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_cursor",
      "return_type": "ArrayOf(Integer, 2)",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_set_cursor",
      "return_type": "void",
      "parameters": [["Window", "window"], ["ArrayOf(Integer, 2)", "pos"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_height",
      "return_type": "Integer",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_set_height",
      "return_type": "void",
      "parameters": [["Window", "window"], ["Integer", "height"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_width",
      "return_type": "Integer",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_set_width",
      "return_type": "void",
      "parameters": [["Window", "window"], ["Integer", "width"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_var",
      "return_type": "Object",
      "parameters": [["Window", "window"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_set_var",
      "return_type": "void",
      "parameters": [
        ["Window", "window"],
        ["String", "name"],
        ["Object", "value"]
      ],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_del_var",
      "return_type": "void",
      "parameters": [["Window", "window"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_option",
      "return_type": "Object",
      "parameters": [["Window", "window"], ["String", "name"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_set_option",
      "return_type": "void",
      "parameters": [
        ["Window", "window"],
        ["String", "name"],
        ["Object", "value"]
      ],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_position",
      "return_type": "ArrayOf(Integer, 2)",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_tabpage",
      "return_type": "Tabpage",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_get_number",
      "return_type": "Integer",
      "parameters": [["Window", "window"]],
      "since": 1
    },
    {
      "method": true,
      "name": "nvim_win_is_valid",
      "return_type": "Boolean",
      "parameters": [["Window", "window"]],
      "since": 1
    }
  ],
  "error_types": {"Validation": {"id": 1}, "Exception": {"id": 0}},
  "types": {
    "Window": {"id": 1, "prefix": "nvim_win_"},
    "Tabpage": {"id": 2, "prefix": "nvim_tabpage_"},
    "Buffer": {"id": 0, "prefix": "nvim_buf_"}
  }
}
