mirror of
https://github.com/ctruLua/ctruLua.git
synced 2025-10-27 08:29:31 +00:00
Added a way to build the documentation as .sublime-completions files (make build-doc-st)
Also replaced make build-doc with make build-doc-html so we can easily add new documentation formats in the future. To add ctrµLua API autocompletion to Sublime Text, simply copy the output directory (doc/sublimetext) to your ST's package directory.
This commit is contained in:
parent
e84ab0e3b2
commit
34c48f360e
3 changed files with 138 additions and 1 deletions
3
.gitignore
vendored
3
.gitignore
vendored
|
|
@ -1,3 +1,4 @@
|
||||||
/build/*
|
/build/*
|
||||||
/ctruLua.*
|
/ctruLua.*
|
||||||
/doc/html/*
|
/doc/html/*
|
||||||
|
/doc/sublimetext/*
|
||||||
|
|
|
||||||
18
Makefile
18
Makefile
|
|
@ -166,8 +166,17 @@ build-all:
|
||||||
@make build
|
@make build
|
||||||
|
|
||||||
build-doc:
|
build-doc:
|
||||||
|
@echo Building HTML documentation...
|
||||||
|
@make build-doc-html
|
||||||
|
@echo Building SublimeText documentation...
|
||||||
|
@make build-doc-st
|
||||||
|
|
||||||
|
build-doc-html:
|
||||||
@cd doc/ && ldoc . && cd ..
|
@cd doc/ && ldoc . && cd ..
|
||||||
|
|
||||||
|
build-doc-st:
|
||||||
|
@cd doc/ && ldoc . --template ./ --ext sublime-completions --dir ./sublimetext/ && cd ..
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
clean:
|
clean:
|
||||||
@rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf
|
@rm -fr $(BUILD) $(TARGET).3dsx $(OUTPUT).smdh $(TARGET).elf
|
||||||
|
|
@ -197,8 +206,17 @@ clean-all:
|
||||||
@make clean
|
@make clean
|
||||||
|
|
||||||
clean-doc:
|
clean-doc:
|
||||||
|
@echo Cleaning HTML documentation...
|
||||||
|
@make clean-doc-html
|
||||||
|
@echo Cleaning SublimeText documentation...
|
||||||
|
@make clean-doc-st
|
||||||
|
|
||||||
|
clean-doc-html:
|
||||||
@rm -rf doc/html
|
@rm -rf doc/html
|
||||||
|
|
||||||
|
clean-doc-st:
|
||||||
|
@rm -rf doc/sublimetext
|
||||||
|
|
||||||
|
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
else
|
else
|
||||||
|
|
|
||||||
118
doc/ldoc.ltp
Normal file
118
doc/ldoc.ltp
Normal file
|
|
@ -0,0 +1,118 @@
|
||||||
|
# -- LDoc template by Reuh.
|
||||||
|
# -- Generates sublime-completions files which can be used in Sublime Text 3 for autocompletion.
|
||||||
|
# -- Based on the HTML template, so generated files will contain lots of comments with additionnal data not handled by ST.
|
||||||
|
# -- I tried to make the generated files human-readable, so they may be used instead of the HTML documentation.
|
||||||
|
# -- Typical usage: ldoc . --template ./ --ext sublime-completions --dir ./sublimetext/
|
||||||
|
#
|
||||||
|
# local scope = "source.lua"
|
||||||
|
# local function e(str) return str:gsub("\"", "\\\"") end -- escape json string ("str")
|
||||||
|
# local function indent(indentation, str) -- indent str (except first line) with indentation
|
||||||
|
# return str:gsub("(.-)\n", indentation.."%1\n"):gsub("\n([^\n]*)$", "\n"..indentation.."%1"):gsub("^"..indentation, "")
|
||||||
|
# end
|
||||||
|
# local function displayName(item) return item.type == "function" and item.name..item.args or item.name end -- nice name
|
||||||
|
# local function autocompleteName(item) -- ST-autocomplete name
|
||||||
|
# if item.type == "function" then
|
||||||
|
# local i = 1
|
||||||
|
# local args = "("
|
||||||
|
# for arg in (item.args:match("^%((.*)%)$")..","):gmatch("%s*([^,]+)%,") do
|
||||||
|
# args = args.."${"..i..":"..arg.."}, "
|
||||||
|
# i = i +1
|
||||||
|
# end
|
||||||
|
# return item.name..args:gsub("%, $", "")..")"
|
||||||
|
# else return item.name end
|
||||||
|
# end
|
||||||
|
/*
|
||||||
|
Title: $(ldoc.title)
|
||||||
|
Project: $(ldoc.project)
|
||||||
|
Description: $(ldoc.description)
|
||||||
|
# if ldoc.single then
|
||||||
|
(Single module-project)
|
||||||
|
# end
|
||||||
|
# if not module then
|
||||||
|
|
||||||
|
Project contents:
|
||||||
|
# for kind, mods in ldoc.kinds() do
|
||||||
|
$(kind)
|
||||||
|
# for m in mods() do
|
||||||
|
$(m.name): $(m.summary)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
*/
|
||||||
|
# else -- if not module
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Module: $(module.name)
|
||||||
|
Summary: $(module.summary)
|
||||||
|
Description: $(module.description)
|
||||||
|
|
||||||
|
Module contents:
|
||||||
|
# for kind, items in module.kinds() do
|
||||||
|
$(kind)
|
||||||
|
# for item in items() do
|
||||||
|
$(item.type) $(displayName(item))
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Completions */
|
||||||
|
{
|
||||||
|
"scope": "$(e(scope))",
|
||||||
|
|
||||||
|
"completions": [
|
||||||
|
# for kind, items in module.kinds() do
|
||||||
|
/* $(kind) */
|
||||||
|
# for item in items() do
|
||||||
|
/*
|
||||||
|
$(item.type) $(displayName(item))
|
||||||
|
Summary: $(item.summary)
|
||||||
|
Description: $(indent("\t\t\t", item.description))
|
||||||
|
# if item.type == "function" then
|
||||||
|
Parameters:
|
||||||
|
# for p in item.params:iter() do
|
||||||
|
# local default = item:default_of_param(p)
|
||||||
|
# if default == true then default = "(optional)"
|
||||||
|
# elseif default then default = "(defaults to "..default..")" end
|
||||||
|
($(item:type_of_param(p))) $(item:display_name_of(p)):$(item.params.map[p]) $(default)
|
||||||
|
# end
|
||||||
|
# local retgroups = item.retgroups or {}
|
||||||
|
Returns:
|
||||||
|
# for i, group in ldoc.ipairs(retgroups) do
|
||||||
|
# for ret in group:iter() do
|
||||||
|
($(ret.type)) $(indent("\t\t\t", ret.text))
|
||||||
|
# end
|
||||||
|
# if i < #retgroups then
|
||||||
|
---or---
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# if item.usage then
|
||||||
|
Usage:
|
||||||
|
# for i, usage in ldoc.ipairs(item.usage) do
|
||||||
|
$(sep)$(indent("\t\t\t", usage:gsub("^\n", "")))
|
||||||
|
# if i < #item.usage then
|
||||||
|
--------
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# if item.see then
|
||||||
|
See also:
|
||||||
|
# for see in item.see:iter() do
|
||||||
|
$(see.mod.name): $(see.name)
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
*/
|
||||||
|
# for pos in (module.name.."."):gmatch("()[^.]+%.") do
|
||||||
|
# local prefix = e(module.name:sub(pos) .. (item.name:match("^[%.%:]") and "" or "."))
|
||||||
|
{
|
||||||
|
"trigger": "$(prefix)$(e(item.name))\t$(e(item.summary))",
|
||||||
|
"contents": "$(prefix)$(e(autocompleteName(item)))"
|
||||||
|
},
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
# end
|
||||||
|
]
|
||||||
|
}
|
||||||
|
# end -- if not module
|
||||||
|
|
||||||
|
/* Generated by LDoc; sublime-completions template by Reuh. Last updated $(ldoc.updatetime).*/
|
||||||
Loading…
Add table
Add a link
Reference in a new issue