Files
neovim/src/gen/gen_events.lua
Lewis Russell 0f24b0826a build: move all generator scripts to src/gen/
- Move all generator Lua scripts to the `src/gen/`
- Add a `.luarc.json` to `src/gen/`
- Add a `preload.lua` to `src/gen/`
  - Add `src` to `package.path` so it aligns with `.luarc.json'
- Fix all `require` statements in `src/gen/` so they are consistent:
    - `require('scripts.foo')` -> `require('gen.foo')`
    - `require('src.nvim.options')` -> `require('nvim.options')`
    - `require('api.dispatch_deprecated')` -> `require('nvim.api.dispatch_deprecated')`
2025-02-26 16:54:37 +00:00

43 lines
1.3 KiB
Lua

local fileio_enum_file = arg[1]
local names_file = arg[2]
local auevents = require('nvim.auevents')
local events = auevents.events
local enum_tgt = io.open(fileio_enum_file, 'w')
local names_tgt = io.open(names_file, 'w')
enum_tgt:write([[
// IWYU pragma: private, include "nvim/autocmd_defs.h"
typedef enum auto_event {]])
names_tgt:write([[
static const struct event_name {
size_t len;
char *name;
int event;
} event_names[] = {]])
local aliases = 0
for i, event in ipairs(events) do
enum_tgt:write(('\n EVENT_%s = %u,'):format(event[1]:upper(), i + aliases - 1))
-- Events with positive keys aren't allowed in 'eventignorewin'.
local event_int = ('%sEVENT_%s'):format(event[3] and '-' or '', event[1]:upper())
names_tgt:write(('\n {%u, "%s", %s},'):format(#event[1], event[1], event_int))
for _, alias in ipairs(event[2]) do
aliases = aliases + 1
names_tgt:write(('\n {%u, "%s", %s},'):format(#alias, alias, event_int))
enum_tgt:write(('\n EVENT_%s = %u,'):format(alias:upper(), i + aliases - 1))
end
if i == #events then -- Last item.
enum_tgt:write(('\n NUM_EVENTS = %u,'):format(i + aliases))
end
end
names_tgt:write('\n {0, NULL, (event_T)0},\n};\n')
names_tgt:write('\nstatic AutoCmdVec autocmds[NUM_EVENTS] = { 0 };\n')
names_tgt:close()
enum_tgt:write('\n} event_T;\n')
enum_tgt:close()