diff options
author | ZyX <kp-pav@yandex.ru> | 2014-09-20 20:11:19 +0400 |
---|---|---|
committer | ZyX <kp-pav@yandex.ru> | 2015-07-26 12:39:01 +0300 |
commit | 8ed2dbf6e2802516501c11e72e5d6d977e6a07f3 (patch) | |
tree | 30dd1d2ba7dbe11f833cab1e9386e69cafb34c71 /scripts/gen_events.lua | |
parent | 7a6bf3f418c5ad94ac2ac71f21275a87d08e87b9 (diff) | |
download | rneovim-8ed2dbf6e2802516501c11e72e5d6d977e6a07f3.tar.gz rneovim-8ed2dbf6e2802516501c11e72e5d6d977e6a07f3.tar.bz2 rneovim-8ed2dbf6e2802516501c11e72e5d6d977e6a07f3.zip |
fileio: Move event definitions to the generator script
Diffstat (limited to 'scripts/gen_events.lua')
-rw-r--r-- | scripts/gen_events.lua | 65 |
1 files changed, 65 insertions, 0 deletions
diff --git a/scripts/gen_events.lua b/scripts/gen_events.lua new file mode 100644 index 0000000000..75e0b3da3a --- /dev/null +++ b/scripts/gen_events.lua @@ -0,0 +1,65 @@ +if arg[1] == '--help' then + print('Usage: gen_events.lua src/nvim enum_file event_names_file') + os.exit(0) +end + +local nvimsrcdir = arg[1] +local fileio_enum_file = arg[2] +local names_file = arg[3] + +package.path = nvimsrcdir .. '/?.lua;' .. package.path + +local auevents = require('auevents') +local events = auevents.events +local aliases = auevents.aliases + +enum_tgt = io.open(fileio_enum_file, 'w') +names_tgt = io.open(names_file, 'w') + +enum_tgt:write('typedef enum auto_event {') +names_tgt:write([[ +static const struct event_name { + size_t len; + char *name; + event_T event; +} event_names[] = {]]) + +for i, event in ipairs(events) do + if i > 1 then + comma = ',\n' + else + comma = '\n' + end + enum_tgt:write(('%s EVENT_%s = %u'):format(comma, event:upper(), i - 1)) + names_tgt:write(('%s {%u, "%s", EVENT_%s}'):format(comma, #event, event, event:upper())) +end + +for alias, event in pairs(aliases) do + names_tgt:write((',\n {%u, "%s", EVENT_%s}'):format(#alias, alias, event:upper())) +end + +names_tgt:write(',\n {0, NULL, (event_T)0}') + +enum_tgt:write('\n} event_T;\n') +names_tgt:write('\n};\n') + +enum_tgt:write(('\n#define NUM_EVENTS %u\n'):format(#events)) +names_tgt:write('\nstatic AutoPat *first_autopat[NUM_EVENTS] = {\n ') +line_len = 1 +for i = 1,((#events) - 1) do + line_len = line_len + #(' NULL,') + if line_len > 80 then + names_tgt:write('\n ') + line_len = 1 + #(' NULL,') + end + names_tgt:write(' NULL,') +end +if line_len + #(' NULL') > 80 then + names_tgt:write('\n NULL') +else + names_tgt:write(' NULL') +end +names_tgt:write('\n};\n') + +enum_tgt:close() +names_tgt:close() |