awesome/docs/config.ld

234 lines
8.1 KiB
Plaintext

local args = ...
-- Configuration file for ldoc
project='awesome'
title='awesome API documentation'
description='API documentation for awesome, a highly configurable X window manager (version @AWESOME_VERSION@).'
-- More on it: https://github.com/stevedonovan/LDoc/blob/master/doc/doc.md#markdown-support
format='discount'
dir='../doc'
-- Make the docs prettier
pretty='lua'
style=true
template=true
backtick_references=true
merge=true
use_markdown_titles=true
wrap=true
full_description = [[
Welcome to the documentation for the awesome window manager. Below you find an
overview of the individual parts which links to the full documentation.
If you are a new user, you may want to read @{07-my-first-awesome.md} to get
started. In @{05-awesomerc.md}, the default configuration is explained.
If you already used awesome in the past, @{89-NEWS.md} and @{17-porting-tips.md}
should be useful for you.
]]
topics={
'00-authors.md',
'01-readme.md',
'02-contributing.md',
'03-declarative-layout.md',
'04-new-widgets.md',
'05-awesomerc.md',
'06-appearance.md',
'07-my-first-awesome.md',
'16-using-cairo.md',
'17-porting-tips.md',
'90-FAQ.md',
'89-NEWS.md',
}
-- Setup @client to be an alias for "@tparam client.object"
tparam_alias('client', 'client.object')
tparam_alias('tag', 'tag')
-- Should be default, but is not. Sets up "@tab" => "@tparam table".
tparam_alias('tab', 'table')
tparam_alias('screen', 'screen')
tparam_alias('screen_or_idx', 'screen|int')
-- Hack to get the functions on top of the signals and properties
new_type("function", "Functions", false, "Parameters")
-- Documentation for objects properties
new_type("property", "Object properties", false, "Type")
-- Documentation for objects deprecated properties
new_type("deprecatedproperty", "Deprecated object properties", false, "Type")
-- Use a custom type for the methods to bypass the faulty ldoc built-in detection.
-- (yes, the space after Methods *is* on purpose to avoid clashing with ldoc
-- internal "methods" concept)
new_type("method", "Object methods ", false, "Parameters")
-- New type for signals
new_type("signal", "Signals", false, "Arguments")
-- New type for signals connections
new_type("signalhandler", "Request handlers", false, "Arguments")
-- Allow objects to define a set of beautiful properties affecting them
new_type("beautiful", "Theme variables", false, "Type")
-- Put deprecated methods in their own section
new_type("deprecated", "Deprecated functions", false, "Parameters")
-- For the legacy stateless layout related functions
new_type("legacylayout", "Layout related functions", false, "Parameters")
-- Have a category for the client layouts
new_type("clientlayout", "Client layouts", false, "Parameters")
-- Source functions for the taglist/tasklist/layoutlist
new_type("sourcefunction", "List source functions", false)
-- Document some callback prototypes
new_type("callback", "Callback functions prototype", false, "Parameters")
-- gears.matcher / awful.rules sources
new_type("rulesources", "Rule sources", false, "Parameters")
-- gears.matcher / awful.rules rule components
new_type("rulecomponent", "Rule components", false, "Type")
-- Filter functions for the taglist/tasklist/layoutlist
new_type("filterfunction", "List filters", false)
-- Extra client properties available only in awful.rules/spawn constructs
new_type("clientruleproperty", "Extra properties available in awful.rules and awful.spawn", false, "Type")
-- More fitting section names
kind_names={topic='Documentation', module='Libraries', script='Sample files'}
-- Sort modules alphabetically
sort_modules=true
-- Add more project level (left side index) types.
new_type("widgetmod" , "Widgets" , true)
new_type("containermod", "Widget containers", true)
new_type("layoutmod" , "Widget layouts" , true)
new_type("coreclassmod", "Core components" , true)
new_type("popupmod" , "Popups and bars" , true)
new_type("utillib" , "Utility libraries", true)
new_type("themelib" , "Theme related libraries", true)
file = {
-- C parts of libraries
'../dbus.c',
'../luaa.c',
'../mouse.c',
'../mousegrabber.c',
'../root.c',
'../selection.c',
'../spawn.c',
'../xkb.c',
'../common/luaobject.c',
'../objects/button.c',
'../objects/client.c',
'../objects/drawable.c',
'../objects/key.c',
'../objects/screen.c',
'../objects/tag.c',
'../objects/window.c',
-- LUA libraries
'../lib/',
-- Auto generated scripts
'../script_files/',
exclude = {
-- exclude these modules, as they do not contain any written
-- documentation
'../lib/awful/autofocus.lua',
'../lib/awful/dbus.lua',
'../lib/awful/init.lua',
'../lib/awful/remote.lua',
'../lib/awful/startup_notification.lua',
'../lib/awful/mouse/drag_to_tag.lua',
'../lib/gears/init.lua',
'../lib/wibox/layout/init.lua',
'../lib/wibox/container/init.lua',
'../lib/naughty/constants.lua',
'../lib/naughty/dbus.lua',
-- Ignore some parts of the widget library
'../lib/awful/widget/init.lua',
'../lib/naughty/layout/init.lua',
-- Deprecated classes for one years or more don't deserve entries
-- in the index
'../lib/awful/widget/graph.lua',
'../lib/awful/widget/progressbar.lua',
'../lib/awful/widget/textclock.lua',
'../lib/awful/wibox.lua',
'../lib/wibox/layout/constraint.lua',
'../lib/wibox/layout/margin.lua',
'../lib/wibox/layout/mirror.lua',
'../lib/wibox/layout/rotate.lua',
'../lib/wibox/layout/scroll.lua',
'../lib/wibox/widget/background.lua',
}
}
-- Mimics the ldoc built-in method style, but better.
--
-- This custom renderer exists because using ldoc built-in method detection
-- turned out to be too unreliable and upstream is dead.
local function render_methods(item)
local ret = item.name
-- Some methods will have it depending on the weather. Most wont.
if not ret:find(":") then
ret = ":"..ret
end
return ret .. (item.args and " "..item.args or "")
end
local no_prefix = {
property = true, signal = true, clientruleproperty = true,
deprecatedproperty = true,
}
-- These modules merge the doc of their `awful` siblings.
local coreclassmap = {
tag = "tag<span class='listplusign'> and awful.tag</span>",
screen = "screen<span class='listplusign'> and awful.screen</span>",
client = "client<span class='listplusign'> and awful.client</span>",
mouse = "mouse<span class='listplusign'> and awful.mouse</span>",
}
custom_display_name_handler = function(item, default_handler)
-- Remove the "namespace" from the signals and properties
if no_prefix[item.type] then
local name = item.name:match("%.([^.]+)$")
return name ~= "" and name or item.name
end
-- Handle the left sidebar modules.
if item.type == "coreclassmod" and coreclassmap[item.name] then
return coreclassmap[item.name]
end
if item.type == "deprecated" or item.type == "deprecatedproperty" then
return default_handler(item) .. "<i class=\"deprecated_label\"> [deprecated]</i>"
end
if item.type == "method" then
return render_methods(item)
end
local ret = default_handler(item)
-- Get rid of the "module:" in front of method names. It is either wrong or
-- just redundant.
ret = ret:gsub("([^:]*)(:[^:])","%2")
-- Undocumented API to get rid of `module.rounded_rect` rather than
-- `gears.shape.rounded_rect`
if ret:sub(1, 7) == "module." and module then
return ret:gsub("^module", item.module.name)
end
-- Undocumented API to make the libraries and classmod "function" section
-- more consistent. Right now some have their full awful.foo.bar while other
-- have "just" `bar`. Given we use constructors from metatables, we have no
-- choice but to use the full function name. It also makes copy/paste easier.
if item.type == "function" and (not ret:find(".", 1, true)) and (not ret:find(":", 1, true)) then
return item.module.name .. "." .. ret
end
return ret
end
-- vim: filetype=lua:expandtab:shiftwidth=4:tabstop=8:softtabstop=4:textwidth=80