Ai
5 Star 27 Fork 0

Gitee 极速下载/neovim

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
此仓库是为了提升国内下载速度的镜像仓库,每日同步一次。 原始仓库: https://github.com/neovim/neovim
克隆/下载
gen_events.lua 1.85 KB
一键复制 编辑 原始数据 按行查看 历史
local fileio_enum_file = arg[1]
local names_file = arg[2]
local auevents_file = arg[3]
local hashy = require('gen.hashy')
local auevents = loadfile(auevents_file)()
local events = auevents.events
local aliases = auevents.aliases
--- @type string[]
local names = vim.tbl_keys(vim.tbl_extend('error', events, aliases))
table.sort(names, function(a, b)
return a:lower() < b:lower()
end)
local enum_tgt = assert(io.open(fileio_enum_file, 'w'))
local names_tgt = assert(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[NUM_EVENTS] = {]])
for i, name in ipairs(names) do
enum_tgt:write(('\n EVENT_%s = %u,'):format(name:upper(), i - 1))
local pref_name = aliases[name] ~= nil and aliases[name] or name
local win_local = events[pref_name]
assert(win_local ~= nil)
-- Events with positive keys aren't allowed in 'eventignorewin'.
names_tgt:write(
('\n [EVENT_%s] = {%u, "%s", %sEVENT_%s},'):format(
name:upper(),
#name,
name,
win_local and '-' or '',
pref_name:upper()
)
)
end
enum_tgt:write(('\n NUM_EVENTS = %u,'):format(#names))
enum_tgt:write('\n} event_T;\n')
enum_tgt:close()
names_tgt:write('\n};\n')
names_tgt:write('\nstatic AutoCmdVec autocmds[NUM_EVENTS] = { 0 };\n')
local hashorder = vim.tbl_map(string.lower, names)
local hashfun
hashorder, hashfun = hashy.hashy_hash('event_name2nr', hashorder, function(idx)
return 'event_names[event_hash[' .. idx .. ']].name'
end, true)
names_tgt:write([[
static const event_T event_hash[] = {]])
for _, lower_name in ipairs(hashorder) do
names_tgt:write(('\n EVENT_%s,'):format(lower_name:upper()))
end
names_tgt:write('\n};\n\n')
names_tgt:write('static ' .. hashfun)
names_tgt:close()
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/mirrors/neovim.git
git@gitee.com:mirrors/neovim.git
mirrors
neovim
neovim
master

搜索帮助