diff options
Diffstat (limited to 'scripts/gen_lua_c_api_tags.lua')
-rwxr-xr-x | scripts/gen_lua_c_api_tags.lua | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/scripts/gen_lua_c_api_tags.lua b/scripts/gen_lua_c_api_tags.lua new file mode 100755 index 00000000..0bd56e13 --- /dev/null +++ b/scripts/gen_lua_c_api_tags.lua @@ -0,0 +1,19 @@ +#!/usr/bin/lua +-- Copyright 2007-2015 Mitchell mitchell.att.foicica.com. See LICENSE. + +local f = io.open('../modules/ansi_c/lua_tags', 'w') +-- Lua header files define API functions in a way ctags cannot detect. +-- For example: `LUA_API lua_State *(lua_newstate) (lua_Alloc f, void *ud);`. +-- The function name enclosed in parenthesis is causing the problem. A regex +-- must be used to capture those definitions. +local p = io.popen('ctags -o - --regex-c++="/\\(([a-zA-Z_]+)\\) +\\(/\\1/f/" '.. + '../src/lua/src/lua.h ../src/lua/src/lauxlib.h') +for line in p:read('*a'):gmatch('[^\n]+') do + -- Strip comment lines and replace file and ex_cmd fields with empty info. + if not line:find('^!') then + local tag, _, _, ext_fields = line:match('^(%S+)\t(%S+)\t(.-);"\t?(.*)$') + f:write(tag, '\t_\t0;"\t', ext_fields, '\n') + end +end +p:close() +f:close() |