diff options
| author | Björn Linse <bjorn.linse@gmail.com> | 2017-04-30 14:35:36 +0200 |
|---|---|---|
| committer | Björn Linse <bjorn.linse@gmail.com> | 2017-05-10 17:36:31 +0200 |
| commit | e82cb5de4adc8a88e8213d0aca85400362df4bd1 (patch) | |
| tree | e658dd9042fc0191e5b65f96fc7d192b80d36f61 /src/nvim/generators | |
| parent | 7d6af9985c057eef8f6bb2a625744df1b4ad0a72 (diff) | |
| download | rneovim-e82cb5de4adc8a88e8213d0aca85400362df4bd1.tar.gz rneovim-e82cb5de4adc8a88e8213d0aca85400362df4bd1.tar.bz2 rneovim-e82cb5de4adc8a88e8213d0aca85400362df4bd1.zip | |
api: add metadata for ui events
Diffstat (limited to 'src/nvim/generators')
| -rw-r--r-- | src/nvim/generators/gen_api_ui_events.lua | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/src/nvim/generators/gen_api_ui_events.lua b/src/nvim/generators/gen_api_ui_events.lua index 28007d2266..6f76eb5aab 100644 --- a/src/nvim/generators/gen_api_ui_events.lua +++ b/src/nvim/generators/gen_api_ui_events.lua @@ -3,12 +3,13 @@ mpack = require('mpack') local nvimdir = arg[1] package.path = nvimdir .. '/?.lua;' .. package.path -assert(#arg == 6) +assert(#arg == 7) input = io.open(arg[2], 'rb') proto_output = io.open(arg[3], 'wb') call_output = io.open(arg[4], 'wb') remote_output = io.open(arg[5], 'wb') bridge_output = io.open(arg[6], 'wb') +metadata_output = io.open(arg[7], 'wb') c_grammar = require('generators.c_grammar') local events = c_grammar.grammar:match(input:read('*all')) @@ -53,6 +54,12 @@ for i = 1, #events do ev = events[i] assert(ev.return_type == 'void') + if ev.since == nil then + print("Ui event "..ev.name.." lacks since field.\n") + os.exit(1) + end + ev.since = tonumber(ev.since) + if not ev.remote_only then proto_output:write(' void (*'..ev.name..')') write_signature(proto_output, ev, 'UI *ui') @@ -134,3 +141,20 @@ end proto_output:close() call_output:close() remote_output:close() + +-- don't expose internal attributes like "impl_name" in public metadata +exported_attributes = {'name', 'parameters', + 'since', 'deprecated_since'} +exported_events = {} +for _,ev in ipairs(events) do + local f_exported = {} + for _,attr in ipairs(exported_attributes) do + f_exported[attr] = ev[attr] + end + exported_events[#exported_events+1] = f_exported +end + +packed = mpack.pack(exported_events) +dump_bin_array = require("generators.dump_bin_array") +dump_bin_array(metadata_output, 'ui_events_metadata', packed) +metadata_output:close() |