Skip to content

Rewrite of API Generation#23

Open
arkaragian wants to merge 47 commits intoneovim:masterfrom
arkaragian:develop
Open

Rewrite of API Generation#23
arkaragian wants to merge 47 commits intoneovim:masterfrom
arkaragian:develop

Conversation

@arkaragian
Copy link
Copy Markdown

This pull request is a general maintenance of the project revolving around the following directions:

  1. Elimination of all compilation warnings
  2. Removing too much functional code and replacing it with code that is easier to maintain and is more familiar to anyone who write C# code.. Of course this is not achieved in all aspects of the codebase but feedback is welcome.
  3. Establishment of an .editorconfig style.
  4. Migration to .net 10

This is WIP and not yet ready for introduction to the master branch. That is why I have a develop branch in place. The scope of the PR is to receive some honest feedback regarding the project.

At the moment the generated code does not compile. This is due to incorrect type mappings between lua and C# types. due to my inexperience with neovim source code. Thus feedback is required by anyone who would like to help.

Aris Karagiannidis added 30 commits December 27, 2025 18:08
[AttributeUsage(AttributeTargets.Method)]
public class NvimFunctionAttribute : Attribute {
public string? Name { get; set; }
} No newline at end of file
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Set your editor or whatever to ensure all files end with a newline.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. Is there any specific reason to do so?

}
List<ArgumentConverter> argumentConverters = [];
if (evalParameterIndices.Count is not 0) {
argumentConverters.Add(
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

did you increase the indent to 4 spaces? it will help a lot to keep the 2-space indent. otherwise there is a huge amount of churn and it is harder to review. also, we generally just prefer 2 space indent.

Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ok. I will update all the .editorconfigs

@justinmk
Copy link
Copy Markdown
Member

At the moment the generated code does not compile. This is due to incorrect type mappings between lua and C# types.

No one is likely to pull down this PR and debug it. If you have a specific question we can try to answer it.

Also, the amount of changes here makes it very hard to review. Is there any way to do this in smaller stages

@arkaragian
Copy link
Copy Markdown
Author

arkaragian commented Jan 28, 2026

I had this in mind when making soooo many changes. And that's ok. I will guide you through all the points one by one. By also comparing the work of the current master branch. I will also write this in the project documentation for future developers. Please bear with me since I am also trying to find my modus operandi in this project. Here is a brief overview of what is happening. At this point let's focus on the NvimClient.APIGenerator project since this is backbone that will keep us in sync with future nvim releases.

The general idea is that the NvimClient.APIGenerator spawns a doxygen process and an nvim process.

  1. doxygen is pointed to the nvim source code in order to generate xml documentation.
  2. nvim is spawned with the --api-info flag in order to parse api definitions.

Then the doxygen xml is converted into C# xml tags. Similarly the api definitions into C# an NvimAPI partial class along with supported definitions. Please see the diagram bellow.

flowchart TB

exe["nvim"]
xml
gen[NvimClient.APIGenerator]
gen2[NvimClient.APIGenerator]

mem["In Memory"]


gen -- Calls Nvim Exe --> exe -- Parse and Store--> mem
gen -- Calls Doxygen --> doxygen -- Uses nvim src --> xml -- Parses XML And Stores--> mem

mem --> gen2

gen2 -- Generates --> cssrc["NvimAPI.Generated.cs"]
gen2 -- Generates --> Types[".cs Nvim Types"]
gen2 -- Generates --> Events[".cs Nvim EventArgs Files"]
Loading

I will get back with additional information.

@arkaragian
Copy link
Copy Markdown
Author

So when I generate the api I get the following output:

$ ./NvimClient.APIGenerator.exe $REPOS/nvim.net/src/NvimClient.API/  $REPOS/neovim/
Neovim Source read from: D:/source/repos/neovim/
==== Metadata ====
Version: NvimVersion { Major = 0, Minor = 11, Patch = 5, IsPrerelease = False, ApiLevel = 13, ApiCompatible = 0, ApiPrerelease = False, Build = g9fa7c0a046 }
========== Functions ==========
Nvim Function:   nvim_get_autocmds             [ Dict ] Returns: Array Active Since Api Level  9
Nvim Function:   nvim_create_autocmd           [ Object, Dict ] Returns: Integer Active Since Api Level  9
Nvim Function:   nvim_del_autocmd              [ Integer ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_clear_autocmds           [ Dict ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_create_augroup           [ String, Dict ] Returns: Integer Active Since Api Level  9
Nvim Function:   nvim_del_augroup_by_id        [ Integer ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_del_augroup_by_name      [ String ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_exec_autocmds            [ Object, Dict ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_buf_line_count           [ Buffer ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_buf_attach               [ Buffer, Boolean, Dict ] Returns: Boolean Active Since Api Level  4
Nvim Function:   nvim_buf_detach               [ Buffer ] Returns: Boolean Active Since Api Level  4
Nvim Function:   nvim_buf_get_lines            [ Buffer, Integer, Integer, Boolean ] Returns: ArrayOf(String) Active Since Api Level  1
Nvim Function:   nvim_buf_set_lines            [ Buffer, Integer, Integer, Boolean, ArrayOf(String) ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_buf_set_text             [ Buffer, Integer, Integer, Integer, Integer, ArrayOf(String) ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_buf_get_text             [ Buffer, Integer, Integer, Integer, Integer, Dict ] Returns: ArrayOf(String) Active Since Api Level  9
Nvim Function:   nvim_buf_get_offset           [ Buffer, Integer ] Returns: Integer Active Since Api Level  5
Nvim Function:   nvim_buf_get_var              [ Buffer, String ] Returns: Object Active Since Api Level  1
Nvim Function:   nvim_buf_get_changedtick      [ Buffer ] Returns: Integer Active Since Api Level  2
Nvim Function:   nvim_buf_get_keymap           [ Buffer, String ] Returns: ArrayOf(Dict) Active Since Api Level  3
Nvim Function:   nvim_buf_set_keymap           [ Buffer, String, String, String, Dict ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_buf_del_keymap           [ Buffer, String, String ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_buf_set_var              [ Buffer, String, Object ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_buf_del_var              [ Buffer, String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_buf_get_name             [ Buffer ] Returns: String Active Since Api Level  1
Nvim Function:   nvim_buf_set_name             [ Buffer, String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_buf_is_loaded            [ Buffer ] Returns: Boolean Active Since Api Level  5
Nvim Function:   nvim_buf_delete               [ Buffer, Dict ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_buf_is_valid             [ Buffer ] Returns: Boolean Active Since Api Level  1
Nvim Function:   nvim_buf_del_mark             [ Buffer, String ] Returns: Boolean Active Since Api Level  8
Nvim Function:   nvim_buf_set_mark             [ Buffer, String, Integer, Integer, Dict ] Returns: Boolean Active Since Api Level  8
Nvim Function:   nvim_buf_get_mark             [ Buffer, String ] Returns: ArrayOf(Integer, 2) Active Since Api Level  1
Nvim Function:   nvim_buf_call                 [ Buffer, LuaRef ] Returns: Object Active Since Api Level  7
Nvim Function:   nvim_parse_cmd                [ String, Dict ] Returns: Dict Active Since Api Level  10
Nvim Function:   nvim_cmd                      [ Dict, Dict ] Returns: String Active Since Api Level  10
Nvim Function:   nvim_create_user_command      [ String, Object, Dict ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_del_user_command         [ String ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_buf_create_user_command  [ Buffer, String, Object, Dict ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_buf_del_user_command     [ Buffer, String ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_get_commands             [ Dict ] Returns: Dict Active Since Api Level  4
Nvim Function:   nvim_buf_get_commands         [ Buffer, Dict ] Returns: Dict Active Since Api Level  4
Nvim Function:   nvim_exec                      Deprecated Since Api Level 11
Nvim Function:   nvim_command_output            Deprecated Since Api Level 7
Nvim Function:   nvim_execute_lua               Deprecated Since Api Level 7
Nvim Function:   nvim_buf_get_number            Deprecated Since Api Level 2
Nvim Function:   nvim_buf_clear_highlight       Deprecated Since Api Level 7
Nvim Function:   nvim_buf_add_highlight         Deprecated Since Api Level 13
Nvim Function:   nvim_buf_set_virtual_text      Deprecated Since Api Level 8
Nvim Function:   nvim_get_hl_by_id              Deprecated Since Api Level 9
Nvim Function:   nvim_get_hl_by_name            Deprecated Since Api Level 9
Nvim Function:   buffer_insert                  Deprecated Since Api Level 1
Nvim Function:   buffer_get_line                Deprecated Since Api Level 1
Nvim Function:   buffer_set_line                Deprecated Since Api Level 1
Nvim Function:   buffer_del_line                Deprecated Since Api Level 1
Nvim Function:   buffer_get_line_slice          Deprecated Since Api Level 1
Nvim Function:   buffer_set_line_slice          Deprecated Since Api Level 1
Nvim Function:   buffer_set_var                 Deprecated Since Api Level 1
Nvim Function:   buffer_del_var                 Deprecated Since Api Level 1
Nvim Function:   window_set_var                 Deprecated Since Api Level 1
Nvim Function:   window_del_var                 Deprecated Since Api Level 1
Nvim Function:   tabpage_set_var                Deprecated Since Api Level 1
Nvim Function:   tabpage_del_var                Deprecated Since Api Level 1
Nvim Function:   vim_set_var                    Deprecated Since Api Level 1
Nvim Function:   vim_del_var                    Deprecated Since Api Level 1
Nvim Function:   nvim_get_option_info           Deprecated Since Api Level 11
Nvim Function:   nvim_set_option                Deprecated Since Api Level 11
Nvim Function:   nvim_get_option                Deprecated Since Api Level 11
Nvim Function:   nvim_buf_get_option            Deprecated Since Api Level 11
Nvim Function:   nvim_buf_set_option            Deprecated Since Api Level 11
Nvim Function:   nvim_win_get_option            Deprecated Since Api Level 11
Nvim Function:   nvim_win_set_option            Deprecated Since Api Level 11
Nvim Function:   nvim_call_atomic               Deprecated Since Api Level 12
Nvim Function:   nvim_subscribe                 Deprecated Since Api Level 13
Nvim Function:   nvim_unsubscribe               Deprecated Since Api Level 13
Nvim Function:   nvim_out_write                 Deprecated Since Api Level 13
Nvim Function:   nvim_err_write                 Deprecated Since Api Level 13
Nvim Function:   nvim_err_writeln               Deprecated Since Api Level 13
Nvim Function:   nvim_notify                    Deprecated Since Api Level 13
Nvim Function:   nvim_create_namespace         [ String ] Returns: Integer Active Since Api Level  5
Nvim Function:   nvim_get_namespaces           [ None ] Returns: Dict Active Since Api Level  5
Nvim Function:   nvim_buf_get_extmark_by_id    [ Buffer, Integer, Integer, Dict ] Returns: ArrayOf(Integer) Active Since Api Level  7
Nvim Function:   nvim_buf_get_extmarks         [ Buffer, Integer, Object, Object, Dict ] Returns: Array Active Since Api Level  7
Nvim Function:   nvim_buf_set_extmark          [ Buffer, Integer, Integer, Integer, Dict ] Returns: Integer Active Since Api Level  7
Nvim Function:   nvim_buf_del_extmark          [ Buffer, Integer, Integer ] Returns: Boolean Active Since Api Level  7
Nvim Function:   nvim_buf_clear_namespace      [ Buffer, Integer, Integer, Integer ] Returns: void Active Since Api Level  5
Nvim Function:   nvim_set_decoration_provider  [ Integer, Dict ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_get_option_value         [ String, Dict ] Returns: Object Active Since Api Level  9
Nvim Function:   nvim_set_option_value         [ String, Object, Dict ] Returns: void Active Since Api Level  9
Nvim Function:   nvim_get_all_options_info     [ None ] Returns: Dict Active Since Api Level  7
Nvim Function:   nvim_get_option_info2         [ String, Dict ] Returns: Dict Active Since Api Level  11
Nvim Function:   nvim_tabpage_list_wins        [ Tabpage ] Returns: ArrayOf(Window) Active Since Api Level  1
Nvim Function:   nvim_tabpage_get_var          [ Tabpage, String ] Returns: Object Active Since Api Level  1
Nvim Function:   nvim_tabpage_set_var          [ Tabpage, String, Object ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_tabpage_del_var          [ Tabpage, String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_tabpage_get_win          [ Tabpage ] Returns: Window Active Since Api Level  1
Nvim Function:   nvim_tabpage_set_win          [ Tabpage, Window ] Returns: void Active Since Api Level  12
Nvim Function:   nvim_tabpage_get_number       [ Tabpage ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_tabpage_is_valid         [ Tabpage ] Returns: Boolean Active Since Api Level  1
Nvim Function:   nvim_ui_attach                [ Integer, Integer, Dict ] Returns: void Active Since Api Level  1
Nvim Function:   ui_attach                      Deprecated Since Api Level 1
Nvim Function:   nvim_ui_set_focus             [ Boolean ] Returns: void Active Since Api Level  11
Nvim Function:   nvim_ui_detach                [ None ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_ui_try_resize            [ Integer, Integer ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_ui_set_option            [ String, Object ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_ui_try_resize_grid       [ Integer, Integer, Integer ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_ui_pum_set_height        [ Integer ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_ui_pum_set_bounds        [ Float, Float, Float, Float ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_ui_term_event            [ String, Object ] Returns: void Active Since Api Level  12
Nvim Function:   nvim_get_hl_id_by_name        [ String ] Returns: Integer Active Since Api Level  7
Nvim Function:   nvim_get_hl                   [ Integer, Dict ] Returns: Dict Active Since Api Level  11
Nvim Function:   nvim_set_hl                   [ Integer, String, Dict ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_get_hl_ns                [ Dict ] Returns: Integer Active Since Api Level  12
Nvim Function:   nvim_set_hl_ns                [ Integer ] Returns: void Active Since Api Level  10
Nvim Function:   nvim_set_hl_ns_fast           [ Integer ] Returns: void Active Since Api Level  10
Nvim Function:   nvim_feedkeys                 [ String, String, Boolean ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_input                    [ String ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_input_mouse              [ String, String, String, Integer, Integer, Integer ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_replace_termcodes        [ String, Boolean, Boolean, Boolean ] Returns: String Active Since Api Level  1
Nvim Function:   nvim_exec_lua                 [ String, Array ] Returns: Object Active Since Api Level  7
Nvim Function:   nvim_strwidth                 [ String ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_list_runtime_paths       [ None ] Returns: ArrayOf(String) Active Since Api Level  1
Nvim Function:   nvim_get_runtime_file         [ String, Boolean ] Returns: ArrayOf(String) Active Since Api Level  7
Nvim Function:   nvim_set_current_dir          [ String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_get_current_line         [ None ] Returns: String Active Since Api Level  1
Nvim Function:   nvim_set_current_line         [ String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_del_current_line         [ None ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_get_var                  [ String ] Returns: Object Active Since Api Level  1
Nvim Function:   nvim_set_var                  [ String, Object ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_del_var                  [ String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_get_vvar                 [ String ] Returns: Object Active Since Api Level  1
Nvim Function:   nvim_set_vvar                 [ String, Object ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_echo                     [ Array, Boolean, Dict ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_list_bufs                [ None ] Returns: ArrayOf(Buffer) Active Since Api Level  1
Nvim Function:   nvim_get_current_buf          [ None ] Returns: Buffer Active Since Api Level  1
Nvim Function:   nvim_set_current_buf          [ Buffer ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_list_wins                [ None ] Returns: ArrayOf(Window) Active Since Api Level  1
Nvim Function:   nvim_get_current_win          [ None ] Returns: Window Active Since Api Level  1
Nvim Function:   nvim_set_current_win          [ Window ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_create_buf               [ Boolean, Boolean ] Returns: Buffer Active Since Api Level  6
Nvim Function:   nvim_open_term                [ Buffer, Dict ] Returns: Integer Active Since Api Level  7
Nvim Function:   nvim_chan_send                [ Integer, String ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_list_tabpages            [ None ] Returns: ArrayOf(Tabpage) Active Since Api Level  1
Nvim Function:   nvim_get_current_tabpage      [ None ] Returns: Tabpage Active Since Api Level  1
Nvim Function:   nvim_set_current_tabpage      [ Tabpage ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_paste                    [ String, Boolean, Integer ] Returns: Boolean Active Since Api Level  6
Nvim Function:   nvim_put                      [ ArrayOf(String), String, Boolean, Boolean ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_get_color_by_name        [ String ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_get_color_map            [ None ] Returns: Dict Active Since Api Level  1
Nvim Function:   nvim_get_context              [ Dict ] Returns: Dict Active Since Api Level  6
Nvim Function:   nvim_load_context             [ Dict ] Returns: Object Active Since Api Level  6
Nvim Function:   nvim_get_mode                 [ None ] Returns: Dict Active Since Api Level  2
Nvim Function:   nvim_get_keymap               [ String ] Returns: ArrayOf(Dict) Active Since Api Level  3
Nvim Function:   nvim_set_keymap               [ String, String, String, Dict ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_del_keymap               [ String, String ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_get_api_info             [ None ] Returns: Array Active Since Api Level  1
Nvim Function:   nvim_set_client_info          [ String, Dict, String, Dict, Dict ] Returns: void Active Since Api Level  4
Nvim Function:   nvim_get_chan_info            [ Integer ] Returns: Dict Active Since Api Level  4
Nvim Function:   nvim_list_chans               [ None ] Returns: Array Active Since Api Level  4
Nvim Function:   nvim_list_uis                 [ None ] Returns: Array Active Since Api Level  4
Nvim Function:   nvim_get_proc_children        [ Integer ] Returns: Array Active Since Api Level  4
Nvim Function:   nvim_get_proc                 [ Integer ] Returns: Object Active Since Api Level  4
Nvim Function:   nvim_select_popupmenu_item    [ Integer, Boolean, Boolean, Dict ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_del_mark                 [ String ] Returns: Boolean Active Since Api Level  8
Nvim Function:   nvim_get_mark                 [ String, Dict ] Returns: Array Active Since Api Level  8
Nvim Function:   nvim_eval_statusline          [ String, Dict ] Returns: Dict Active Since Api Level  8
Nvim Function:   nvim_exec2                    [ String, Dict ] Returns: Dict Active Since Api Level  11
Nvim Function:   nvim_command                  [ String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_eval                     [ String ] Returns: Object Active Since Api Level  1
Nvim Function:   nvim_call_function            [ String, Array ] Returns: Object Active Since Api Level  1
Nvim Function:   nvim_call_dict_function       [ Object, String, Array ] Returns: Object Active Since Api Level  4
Nvim Function:   nvim_parse_expression         [ String, String, Boolean ] Returns: Dict Active Since Api Level  4
Nvim Function:   nvim_open_win                 [ Buffer, Boolean, Dict ] Returns: Window Active Since Api Level  6
Nvim Function:   nvim_win_set_config           [ Window, Dict ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_win_get_config           [ Window ] Returns: Dict Active Since Api Level  6
Nvim Function:   nvim_win_get_buf              [ Window ] Returns: Buffer Active Since Api Level  1
Nvim Function:   nvim_win_set_buf              [ Window, Buffer ] Returns: void Active Since Api Level  5
Nvim Function:   nvim_win_get_cursor           [ Window ] Returns: ArrayOf(Integer, 2) Active Since Api Level  1
Nvim Function:   nvim_win_set_cursor           [ Window, ArrayOf(Integer, 2) ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_win_get_height           [ Window ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_win_set_height           [ Window, Integer ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_win_get_width            [ Window ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_win_set_width            [ Window, Integer ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_win_get_var              [ Window, String ] Returns: Object Active Since Api Level  1
Nvim Function:   nvim_win_set_var              [ Window, String, Object ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_win_del_var              [ Window, String ] Returns: void Active Since Api Level  1
Nvim Function:   nvim_win_get_position         [ Window ] Returns: ArrayOf(Integer, 2) Active Since Api Level  1
Nvim Function:   nvim_win_get_tabpage          [ Window ] Returns: Tabpage Active Since Api Level  1
Nvim Function:   nvim_win_get_number           [ Window ] Returns: Integer Active Since Api Level  1
Nvim Function:   nvim_win_is_valid             [ Window ] Returns: Boolean Active Since Api Level  1
Nvim Function:   nvim_win_hide                 [ Window ] Returns: void Active Since Api Level  7
Nvim Function:   nvim_win_close                [ Window, Boolean ] Returns: void Active Since Api Level  6
Nvim Function:   nvim_win_call                 [ Window, LuaRef ] Returns: Object Active Since Api Level  7
Nvim Function:   nvim_win_set_hl_ns            [ Window, Integer ] Returns: void Active Since Api Level  10
Nvim Function:   nvim_win_text_height          [ Window, Dict ] Returns: Dict Active Since Api Level  12
Nvim Function:   buffer_line_count              Deprecated Since Api Level 1
Nvim Function:   buffer_get_lines               Deprecated Since Api Level 1
Nvim Function:   buffer_set_lines               Deprecated Since Api Level 1
Nvim Function:   buffer_get_var                 Deprecated Since Api Level 1
Nvim Function:   buffer_get_name                Deprecated Since Api Level 1
Nvim Function:   buffer_set_name                Deprecated Since Api Level 1
Nvim Function:   buffer_is_valid                Deprecated Since Api Level 1
Nvim Function:   buffer_get_mark                Deprecated Since Api Level 1
Nvim Function:   vim_command_output             Deprecated Since Api Level 1
Nvim Function:   buffer_get_number              Deprecated Since Api Level 1
Nvim Function:   buffer_clear_highlight         Deprecated Since Api Level 1
Nvim Function:   buffer_add_highlight           Deprecated Since Api Level 1
Nvim Function:   vim_set_option                 Deprecated Since Api Level 1
Nvim Function:   vim_get_option                 Deprecated Since Api Level 1
Nvim Function:   buffer_get_option              Deprecated Since Api Level 1
Nvim Function:   buffer_set_option              Deprecated Since Api Level 1
Nvim Function:   window_get_option              Deprecated Since Api Level 1
Nvim Function:   window_set_option              Deprecated Since Api Level 1
Nvim Function:   vim_subscribe                  Deprecated Since Api Level 1
Nvim Function:   vim_unsubscribe                Deprecated Since Api Level 1
Nvim Function:   vim_out_write                  Deprecated Since Api Level 1
Nvim Function:   vim_err_write                  Deprecated Since Api Level 1
Nvim Function:   vim_report_error               Deprecated Since Api Level 1
Nvim Function:   tabpage_get_windows            Deprecated Since Api Level 1
Nvim Function:   tabpage_get_var                Deprecated Since Api Level 1
Nvim Function:   tabpage_get_window             Deprecated Since Api Level 1
Nvim Function:   tabpage_is_valid               Deprecated Since Api Level 1
Nvim Function:   ui_detach                      Deprecated Since Api Level 1
Nvim Function:   ui_try_resize                  Deprecated Since Api Level 1
Nvim Function:   vim_feedkeys                   Deprecated Since Api Level 1
Nvim Function:   vim_input                      Deprecated Since Api Level 1
Nvim Function:   vim_replace_termcodes          Deprecated Since Api Level 1
Nvim Function:   vim_strwidth                   Deprecated Since Api Level 1
Nvim Function:   vim_list_runtime_paths         Deprecated Since Api Level 1
Nvim Function:   vim_change_directory           Deprecated Since Api Level 1
Nvim Function:   vim_get_current_line           Deprecated Since Api Level 1
Nvim Function:   vim_set_current_line           Deprecated Since Api Level 1
Nvim Function:   vim_del_current_line           Deprecated Since Api Level 1
Nvim Function:   vim_get_var                    Deprecated Since Api Level 1
Nvim Function:   vim_get_vvar                   Deprecated Since Api Level 1
Nvim Function:   vim_get_buffers                Deprecated Since Api Level 1
Nvim Function:   vim_get_current_buffer         Deprecated Since Api Level 1
Nvim Function:   vim_set_current_buffer         Deprecated Since Api Level 1
Nvim Function:   vim_get_windows                Deprecated Since Api Level 1
Nvim Function:   vim_get_current_window         Deprecated Since Api Level 1
Nvim Function:   vim_set_current_window         Deprecated Since Api Level 1
Nvim Function:   vim_get_tabpages               Deprecated Since Api Level 1
Nvim Function:   vim_get_current_tabpage        Deprecated Since Api Level 1
Nvim Function:   vim_set_current_tabpage        Deprecated Since Api Level 1
Nvim Function:   vim_name_to_color              Deprecated Since Api Level 1
Nvim Function:   vim_get_color_map              Deprecated Since Api Level 1
Nvim Function:   vim_get_api_info               Deprecated Since Api Level 1
Nvim Function:   vim_command                    Deprecated Since Api Level 1
Nvim Function:   vim_eval                       Deprecated Since Api Level 1
Nvim Function:   vim_call_function              Deprecated Since Api Level 1
Nvim Function:   window_get_buffer              Deprecated Since Api Level 1
Nvim Function:   window_get_cursor              Deprecated Since Api Level 1
Nvim Function:   window_set_cursor              Deprecated Since Api Level 1
Nvim Function:   window_get_height              Deprecated Since Api Level 1
Nvim Function:   window_set_height              Deprecated Since Api Level 1
Nvim Function:   window_get_width               Deprecated Since Api Level 1
Nvim Function:   window_set_width               Deprecated Since Api Level 1
Nvim Function:   window_get_var                 Deprecated Since Api Level 1
Nvim Function:   window_get_position            Deprecated Since Api Level 1
Nvim Function:   window_get_tabpage             Deprecated Since Api Level 1
Nvim Function:   window_is_valid                Deprecated Since Api Level 1

========== Nvim UI Events ==========
Nvim UI Event:   mode_info_set            [ Boolean, Array ] Active Since Api Level 3
Nvim UI Event:   update_menu              [ None ] Active Since Api Level 3
Nvim UI Event:   busy_start               [ None ] Active Since Api Level 3
Nvim UI Event:   busy_stop                [ None ] Active Since Api Level 3
Nvim UI Event:   mouse_on                 [ None ] Active Since Api Level 3
Nvim UI Event:   mouse_off                [ None ] Active Since Api Level 3
Nvim UI Event:   mode_change              [ String, Integer ] Active Since Api Level 3
Nvim UI Event:   bell                     [ None ] Active Since Api Level 3
Nvim UI Event:   visual_bell              [ None ] Active Since Api Level 3
Nvim UI Event:   flush                    [ None ] Active Since Api Level 3
Nvim UI Event:   suspend                  [ None ] Active Since Api Level 3
Nvim UI Event:   set_title                [ String ] Active Since Api Level 3
Nvim UI Event:   set_icon                 [ String ] Active Since Api Level 3
Nvim UI Event:   screenshot               [ String ] Active Since Api Level 7
Nvim UI Event:   option_set               [ String, Object ] Active Since Api Level 4
Nvim UI Event:   chdir                    [ String ] Active Since Api Level 12
Nvim UI Event:   update_fg                [ Integer ] Active Since Api Level 3
Nvim UI Event:   update_bg                [ Integer ] Active Since Api Level 3
Nvim UI Event:   update_sp                [ Integer ] Active Since Api Level 3
Nvim UI Event:   resize                   [ Integer, Integer ] Active Since Api Level 3
Nvim UI Event:   clear                    [ None ] Active Since Api Level 3
Nvim UI Event:   eol_clear                [ None ] Active Since Api Level 3
Nvim UI Event:   cursor_goto              [ Integer, Integer ] Active Since Api Level 3
Nvim UI Event:   highlight_set            [ Dictionary ] Active Since Api Level 3
Nvim UI Event:   put                      [ String ] Active Since Api Level 3
Nvim UI Event:   set_scroll_region        [ Integer, Integer, Integer, Integer ] Active Since Api Level 3
Nvim UI Event:   scroll                   [ Integer ] Active Since Api Level 3
Nvim UI Event:   default_colors_set       [ Integer, Integer, Integer, Integer, Integer ] Active Since Api Level 4
Nvim UI Event:   hl_attr_define           [ Integer, Dictionary, Dictionary, Array ] Active Since Api Level 5
Nvim UI Event:   hl_group_set             [ String, Integer ] Active Since Api Level 6
Nvim UI Event:   grid_resize              [ Integer, Integer, Integer ] Active Since Api Level 5
Nvim UI Event:   grid_clear               [ Integer ] Active Since Api Level 5
Nvim UI Event:   grid_cursor_goto         [ Integer, Integer, Integer ] Active Since Api Level 5
Nvim UI Event:   grid_line                [ Integer, Integer, Integer, Array, Boolean ] Active Since Api Level 5
Nvim UI Event:   grid_scroll              [ Integer, Integer, Integer, Integer, Integer, Integer, Integer ] Active Since Api Level 5
Nvim UI Event:   grid_destroy             [ Integer ] Active Since Api Level 6
Nvim UI Event:   win_pos                  [ Integer, Window, Integer, Integer, Integer, Integer ] Active Since Api Level 6
Nvim UI Event:   win_float_pos            [ Integer, Window, String, Integer, Float, Float, Boolean, Integer ] Active Since Api Level 6
Nvim UI Event:   win_external_pos         [ Integer, Window ] Active Since Api Level 6
Nvim UI Event:   win_hide                 [ Integer ] Active Since Api Level 6
Nvim UI Event:   win_close                [ Integer ] Active Since Api Level 6
Nvim UI Event:   msg_set_pos              [ Integer, Integer, Boolean, String ] Active Since Api Level 6
Nvim UI Event:   win_viewport             [ Integer, Window, Integer, Integer, Integer, Integer, Integer, Integer ] Active Since Api Level 7
Nvim UI Event:   win_viewport_margins     [ Integer, Window, Integer, Integer, Integer, Integer ] Active Since Api Level 12
Nvim UI Event:   win_extmark              [ Integer, Window, Integer, Integer, Integer, Integer ] Active Since Api Level 10
Nvim UI Event:   popupmenu_show           [ Array, Integer, Integer, Integer, Integer ] Active Since Api Level 3
Nvim UI Event:   popupmenu_hide           [ None ] Active Since Api Level 3
Nvim UI Event:   popupmenu_select         [ Integer ] Active Since Api Level 3
Nvim UI Event:   tabline_update           [ Tabpage, Array, Buffer, Array ] Active Since Api Level 3
Nvim UI Event:   cmdline_show             [ Array, Integer, String, String, Integer, Integer, Integer ] Active Since Api Level 3
Nvim UI Event:   cmdline_pos              [ Integer, Integer ] Active Since Api Level 3
Nvim UI Event:   cmdline_special_char     [ String, Boolean, Integer ] Active Since Api Level 3
Nvim UI Event:   cmdline_hide             [ Integer, Boolean ] Active Since Api Level 3
Nvim UI Event:   cmdline_block_show       [ Array ] Active Since Api Level 3
Nvim UI Event:   cmdline_block_append     [ Array ] Active Since Api Level 3
Nvim UI Event:   cmdline_block_hide       [ None ] Active Since Api Level 3
Nvim UI Event:   wildmenu_show            [ Array ] Active Since Api Level 3
Nvim UI Event:   wildmenu_select          [ Integer ] Active Since Api Level 3
Nvim UI Event:   wildmenu_hide            [ None ] Active Since Api Level 3
Nvim UI Event:   msg_show                 [ String, Array, Boolean, Boolean ] Active Since Api Level 6
Nvim UI Event:   msg_clear                [ None ] Active Since Api Level 6
Nvim UI Event:   msg_showcmd              [ Array ] Active Since Api Level 6
Nvim UI Event:   msg_showmode             [ Array ] Active Since Api Level 6
Nvim UI Event:   msg_ruler                [ Array ] Active Since Api Level 6
Nvim UI Event:   msg_history_show         [ Array ] Active Since Api Level 6
Nvim UI Event:   msg_history_clear        [ None ] Active Since Api Level 10
Nvim UI Event:   error_exit               [ Integer ] Active Since Api Level 12

========== Nvim UI Options ==========
rgb
ext_cmdline
ext_popupmenu
ext_tabline
ext_wildmenu
ext_messages
ext_linegrid
ext_multigrid
ext_hlstate
ext_termcolors

========== ErrorCodes ==========
Exception       Value: 0
Validation      Value: 1

========== NvimTypes ==========
Buffer          Value: 0
Window          Value: 1
Tabpage         Value: 2


======== Nvim API Metadata Finish =========


Reading doxygen configuration from: NvimClient.APIGenerator.doxygen.config
Configuration Read is:
OUTPUT_DIRECTORY          =  {0}
INPUT                     =  {1}
INPUT_ENCODING            =  UTF-8
FILE_PATTERNS             =  *.h *.c
RECURSIVE                 =  YES
INPUT_FILTER              =  "{2}"
EXCLUDE                   =
EXCLUDE_SYMLINKS          =  NO
EXCLUDE_PATTERNS          =  */private/*
EXCLUDE_SYMBOLS           =
                          =
GENERATE_HTML             =  NO
GENERATE_DOCSET           =  NO
GENERATE_HTMLHELP         =  NO
GENERATE_QHP              =  NO
GENERATE_TREEVIEW         =  NO
GENERATE_LATEX            =  NO
GENERATE_RTF              =  NO
GENERATE_MAN              =  NO
GENERATE_DOCBOOK          =  NO
GENERATE_AUTOGEN_DEF      =  NO
                          =
GENERATE_XML              =  YES
XML_OUTPUT                =  xml
XML_PROGRAMLISTING        =  NO
                          =
ENABLE_PREPROCESSING      =  YES
MACRO_EXPANSION           =  YES
EXPAND_ONLY_PREDEF        =  NO
Generated Files in: C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi
Reading doxygen files from C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\index.xml
Processing File: autocmd_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\autocmd_8c.xml
Processing File: buffer_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\buffer_8c.xml
Processing File: command_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\command_8c.xml
Processing File: deprecated_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\deprecated_8c.xml
Processing File: extmark_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\extmark_8c.xml
Processing File: options_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\options_8c.xml
Processing File: tabpage_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\tabpage_8c.xml
Processing File: ui_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\ui_8c.xml
Processing File: vim_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\vim_8c.xml
Processing File: vimscript_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\vimscript_8c.xml
Processing File: win__config_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\win__config_8c.xml
Processing File: window_8c will read file C:\Users\Admin\AppData\Local\Temp\rekjbqx4.voi\xml\window_8c.xml
Parsed 0 Functions
=========== Starting Code Generation ===========
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\NvimAPI.Generated.cs


=========== Generating Nvim Types ===========
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\Types\NvimBuffer.cs Containing 5 Functions selected for NvimBuffer
Member       nvim_buf_clear_highlight    Deprecated Since Api Level 7
Member         nvim_buf_add_highlight    Deprecated Since Api Level 13
Member      nvim_buf_set_virtual_text    Deprecated Since Api Level 8
Member            nvim_buf_get_option    Deprecated Since Api Level 11
Member            nvim_buf_set_option    Deprecated Since Api Level 11
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\Types\NvimWindow.cs Containing 2 Functions selected for NvimWindow
Member            nvim_win_get_option    Deprecated Since Api Level 11
Member            nvim_win_set_option    Deprecated Since Api Level 11
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\Types\NvimTabpage.cs Containing no Functions for NvimTabpage


=========== Generating Nvim Events ===========
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\ModeInfoSetEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\UpdateMenuEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\BusyStartEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\BusyStopEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\MouseOnEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\MouseOffEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\ModeChangeEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\BellEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\VisualBellEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\FlushEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\SuspendEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\SetTitleEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\SetIconEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\OptionSetEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\UpdateFgEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\UpdateBgEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\UpdateSpEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\ResizeEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\ClearEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\EolClearEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CursorGotoEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\HighlightSetEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\PutEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\SetScrollRegionEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\ScrollEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\DefaultColorsSetEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\PopupmenuShowEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\PopupmenuHideEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\PopupmenuSelectEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\TablineUpdateEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CmdlineShowEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CmdlinePosEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CmdlineSpecialCharEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CmdlineHideEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CmdlineBlockShowEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CmdlineBlockAppendEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\CmdlineBlockHideEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\WildmenuShowEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\WildmenuSelectEventArgs.cs
Generating File: D:/source/repos/nvim.net/src/NvimClient.API/Generated\EventArgs\WildmenuHideEventArgs.cs

Let's make some comments and start the basic questions:

Some functions receive Dict and also return Dict. How should I map this type to a specific C# type? Currently I have it mapped to Dictionary<string, object?> but I don't know if this is right. Also some nvim types come with fully obsolete methods. I am not sure how to deal with those.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants