aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/generators
diff options
context:
space:
mode:
authorBjörn Linse <bjorn.linse@gmail.com>2017-04-30 14:35:36 +0200
committerBjörn Linse <bjorn.linse@gmail.com>2017-05-10 17:36:31 +0200
commite82cb5de4adc8a88e8213d0aca85400362df4bd1 (patch)
treee658dd9042fc0191e5b65f96fc7d192b80d36f61 /src/nvim/generators
parent7d6af9985c057eef8f6bb2a625744df1b4ad0a72 (diff)
downloadrneovim-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.lua26
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()