[doc] Autogenerate documentation for uicb from source code
Signed-off-by: Julien Danjou <julien@danjou.info>
This commit is contained in:
parent
4a40929d9b
commit
c834134cc8
|
@ -27,3 +27,4 @@ layoutgen.h
|
||||||
awesome-version-internal.h
|
awesome-version-internal.h
|
||||||
awesome-message
|
awesome-message
|
||||||
awesome-menu
|
awesome-menu
|
||||||
|
uicbdocgen.txt
|
||||||
|
|
|
@ -219,6 +219,7 @@ clean-local:
|
||||||
|
|
||||||
SUFFIXES += .1.xml .1
|
SUFFIXES += .1.xml .1
|
||||||
SUFFIXES += .5.xml .5
|
SUFFIXES += .5.xml .5
|
||||||
|
EXTRA_DIST += build-utils/extractdoc.py
|
||||||
if HAVE_XMLTO
|
if HAVE_XMLTO
|
||||||
.1.xml.1:
|
.1.xml.1:
|
||||||
$(XMLTO) man $<
|
$(XMLTO) man $<
|
||||||
|
@ -229,9 +230,11 @@ endif
|
||||||
SUFFIXES += .1.txt .1.xml
|
SUFFIXES += .1.txt .1.xml
|
||||||
SUFFIXES += .5.txt .5.xml
|
SUFFIXES += .5.txt .5.xml
|
||||||
if HAVE_ASCIIDOC
|
if HAVE_ASCIIDOC
|
||||||
|
uicbdocgen.txt:
|
||||||
|
$(top_srcdir)/build-utils/extractdoc.py $(top_srcdir)/*.c > uicbdocgen.txt
|
||||||
.1.txt.1.xml:
|
.1.txt.1.xml:
|
||||||
$(ASCIIDOC) -d manpage -b docbook -o $@ $<
|
$(ASCIIDOC) -d manpage -b docbook -o $@ $<
|
||||||
.5.txt.5.xml:
|
.5.txt.5.xml: uicbdocgen.txt
|
||||||
$(ASCIIDOC) -d manpage -b docbook -o $@ $<
|
$(ASCIIDOC) -d manpage -b docbook -o $@ $<
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
|
|
@ -246,101 +246,7 @@ In awesome, a lot of *functions* are available. These functions are called
|
||||||
uicb (User Interface Call Backs). Each function can be bound to a key shortcut
|
uicb (User Interface Call Backs). Each function can be bound to a key shortcut
|
||||||
or a mouse button.
|
or a mouse button.
|
||||||
|
|
||||||
General
|
include::uicbdocgen.txt[]
|
||||||
~~~~~~~
|
|
||||||
*quit*::
|
|
||||||
This function quits awesome.
|
|
||||||
*statusbar_toggle* statusbar-identifier::
|
|
||||||
Hide or show statusbar (with no argument, toggle all).
|
|
||||||
*spawn* client::
|
|
||||||
Execute an external program.
|
|
||||||
*exec* program::
|
|
||||||
Replace awesome with another window manager.
|
|
||||||
*restart*::
|
|
||||||
Restart awesome.
|
|
||||||
*widget_tell* widget-identifier data::
|
|
||||||
Feed information to your widgets.
|
|
||||||
|
|
||||||
Client
|
|
||||||
~~~~~~
|
|
||||||
*client_kill*::
|
|
||||||
Closes the focused client.
|
|
||||||
*client_moveresize* x y width height::
|
|
||||||
Dynamically move and resize floating windows.
|
|
||||||
Coordinates can be relative or absolute. Relative values must begin with + or -.
|
|
||||||
E.g: to move a window 10 pixels up: "+0 \+10 +0 +0" To move a window
|
|
||||||
in the upper left corner and increase its width by 10px: "0 0 \+0 +10"
|
|
||||||
*client_settrans* float::
|
|
||||||
Set client transparency, number can be a relative or absolute floating number in percentage.
|
|
||||||
*client_swapnext*::
|
|
||||||
Swap window placement with the next displayed window.
|
|
||||||
*client_swapprev*::
|
|
||||||
Swap window placement with the previous displayed window.
|
|
||||||
*client_focusnext*::
|
|
||||||
Focus next window.
|
|
||||||
*client_focusprev*::
|
|
||||||
Focus previous window.
|
|
||||||
*client_togglemax*::
|
|
||||||
Set window fullscreen. Calling this function another time will reset the window to its previous state.
|
|
||||||
*client_togglehorizontalmax*::
|
|
||||||
Set window's horizontal size to display width. Calling another time will reset the window to its previous state.
|
|
||||||
*client_toggleverticalmax*::
|
|
||||||
Set window's vertical size to display height. Calling another time will reset the window to its previous state.
|
|
||||||
*client_togglefloating*::
|
|
||||||
Set window floating or tiled.
|
|
||||||
*client_zoom*::
|
|
||||||
Set window as master window.
|
|
||||||
*client_movetoscreen* relative or absolute integer::
|
|
||||||
Move focused window to the nth screen, or next (+1) or previous (-1). If no screen_number is set, move to the next screen.
|
|
||||||
*client_tag* tag number::
|
|
||||||
Tag focused window with this tag.
|
|
||||||
*client_toggletag*::
|
|
||||||
Add or remove tag to focused window.
|
|
||||||
*client_movemouse*::
|
|
||||||
Move client window with mouse.
|
|
||||||
*client_resizemouse*::
|
|
||||||
Resize client window with mouse.
|
|
||||||
*client_setscratch*::
|
|
||||||
Set or unset client as being the scratch window.
|
|
||||||
*client_togglescratch*::
|
|
||||||
Toggle scratch window.
|
|
||||||
*client_toggletitlebar*::
|
|
||||||
Toggle window titlebar.
|
|
||||||
|
|
||||||
Tag
|
|
||||||
~~~
|
|
||||||
*tag_setlayout* relative or absolute integer::
|
|
||||||
Set layout number; or just switch to the next layout for current tag.
|
|
||||||
*tag_toggleview* tag::
|
|
||||||
Add windows tagged with tag number to current display.
|
|
||||||
*tag_view* tag number::
|
|
||||||
View windows tagged with tag number.
|
|
||||||
*tag_viewnext*::
|
|
||||||
Show windows tagged with next tag in list.
|
|
||||||
*tag_viewprev*::
|
|
||||||
Show windows tagged with previous tag in list.
|
|
||||||
*tag_prev_selected*::
|
|
||||||
Switch back to the previously displayed set of tags.
|
|
||||||
*tag_setmwfact* relative or absolute float::
|
|
||||||
Set master width factor.
|
|
||||||
*tag_setncol* relative or absolute integer::
|
|
||||||
Set number of columns for non-master windows.
|
|
||||||
*tag_setnmaster* relative or absolute integer::
|
|
||||||
Set number of master windows.
|
|
||||||
*tag_create* name::
|
|
||||||
Create a new tag with that name.
|
|
||||||
|
|
||||||
Focus
|
|
||||||
~~~~~
|
|
||||||
*focus_client_byname* string::
|
|
||||||
Give client focus by its name.
|
|
||||||
*focus_history* negative number::
|
|
||||||
Focus the client that had focused nth focus switch earlier.
|
|
||||||
|
|
||||||
Screen
|
|
||||||
~~~~~~
|
|
||||||
*screen_focus* relative or absolute integer::
|
|
||||||
Select Screen and focus first window and move mouse.
|
|
||||||
|
|
||||||
WIDGETS
|
WIDGETS
|
||||||
-------
|
-------
|
||||||
|
|
|
@ -0,0 +1,70 @@
|
||||||
|
#!/usr/bin/python
|
||||||
|
#
|
||||||
|
# extractdoc.py - extract uicb documentation from awesome sour code
|
||||||
|
# Copyright ® 2008 Julien Danjou <julien@danjou.info>
|
||||||
|
#
|
||||||
|
# This indeed crappy. Any better version, even with awk, would be welcome.
|
||||||
|
#
|
||||||
|
|
||||||
|
import sys
|
||||||
|
import os.path
|
||||||
|
|
||||||
|
def extract_doc(file):
|
||||||
|
function_doc = {}
|
||||||
|
doc = []
|
||||||
|
doc_begin = False
|
||||||
|
catch_name = 0
|
||||||
|
|
||||||
|
for line in file.readlines():
|
||||||
|
if catch_name == 1:
|
||||||
|
catch_name = 2
|
||||||
|
continue
|
||||||
|
if catch_name > 1:
|
||||||
|
# We only want functions with uicb
|
||||||
|
if line.startswith("uicb_"):
|
||||||
|
if line.endswith("arg __attribute__ ((unused)))\n"):
|
||||||
|
doc.append("No argument needed.")
|
||||||
|
uicb_name = line.split('_', 1)[1]
|
||||||
|
uicb_name = uicb_name.split('(', 1)[0]
|
||||||
|
function_doc[uicb_name] = doc
|
||||||
|
catch_name = False
|
||||||
|
else:
|
||||||
|
catch_name = 0
|
||||||
|
doc = []
|
||||||
|
if line.startswith("/**"):
|
||||||
|
doc_begin = True
|
||||||
|
doc.append(line[4:].replace("\n", ""))
|
||||||
|
if doc_begin and line.startswith(" * ") and not line.startswith(" * \\"):
|
||||||
|
doc.append(line[3:].replace("\n", ""))
|
||||||
|
if line.startswith(" */"):
|
||||||
|
doc_begin = False
|
||||||
|
catch_name = 1
|
||||||
|
|
||||||
|
return function_doc
|
||||||
|
|
||||||
|
def doc_print(function_doc, filename):
|
||||||
|
if not len(function_doc):
|
||||||
|
return
|
||||||
|
filename = os.path.basename(filename)
|
||||||
|
# Special case
|
||||||
|
if filename == "uicb.c":
|
||||||
|
filename = "general.c"
|
||||||
|
# Print header
|
||||||
|
tmptitle = filename.replace(".c", "")
|
||||||
|
title = tmptitle[0].upper() + tmptitle[1:]
|
||||||
|
print title
|
||||||
|
i = 0
|
||||||
|
underline = ""
|
||||||
|
while i < len(title):
|
||||||
|
underline += "~"
|
||||||
|
i += 1
|
||||||
|
print underline
|
||||||
|
# Print documentation
|
||||||
|
for uicb, doc in function_doc.items():
|
||||||
|
# Special case
|
||||||
|
print "*%s*::" % uicb
|
||||||
|
print " %s" % " ".join(doc)
|
||||||
|
print
|
||||||
|
|
||||||
|
for f in sys.argv[1:]:
|
||||||
|
doc_print(extract_doc(file(f)), f)
|
|
@ -11,8 +11,6 @@ do
|
||||||
do
|
do
|
||||||
shortname=$(echo $uicb | cut -d _ -f2-)
|
shortname=$(echo $uicb | cut -d _ -f2-)
|
||||||
echo " {\"$shortname\", $uicb},"
|
echo " {\"$shortname\", $uicb},"
|
||||||
grep -q "\*$shortname\*" ${top_srcdir}/awesomerc.5.txt || \
|
|
||||||
echo " WARNING: $uicb NOT documented" >&2
|
|
||||||
done
|
done
|
||||||
done
|
done
|
||||||
|
|
||||||
|
|
15
client.c
15
client.c
|
@ -848,8 +848,7 @@ client_find_visible(Client *sel, Bool reverse)
|
||||||
* \ingroup ui_callback
|
* \ingroup ui_callback
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uicb_client_swapprev(int screen __attribute__ ((unused)),
|
uicb_client_swapprev(int screen __attribute__ ((unused)), char *arg __attribute__ ((unused)))
|
||||||
char *arg __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
Client *prev;
|
Client *prev;
|
||||||
|
|
||||||
|
@ -866,8 +865,7 @@ uicb_client_swapprev(int screen __attribute__ ((unused)),
|
||||||
* \ingroup ui_callback
|
* \ingroup ui_callback
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uicb_client_swapnext(int screen __attribute__ ((unused)),
|
uicb_client_swapnext(int screen __attribute__ ((unused)), char *arg __attribute__ ((unused)))
|
||||||
char *arg __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
Client *next;
|
Client *next;
|
||||||
|
|
||||||
|
@ -1128,8 +1126,7 @@ uicb_client_focusprev(int screen, char *arg __attribute__ ((unused)))
|
||||||
* \ingroup ui_callback
|
* \ingroup ui_callback
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uicb_client_togglefloating(int screen __attribute__ ((unused)),
|
uicb_client_togglefloating(int screen __attribute__ ((unused)), char *arg __attribute__ ((unused)))
|
||||||
char *arg __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
if(globalconf.focus->client)
|
if(globalconf.focus->client)
|
||||||
client_setfloating(globalconf.focus->client, !globalconf.focus->client->isfloating);
|
client_setfloating(globalconf.focus->client, !globalconf.focus->client->isfloating);
|
||||||
|
@ -1141,8 +1138,7 @@ uicb_client_togglefloating(int screen __attribute__ ((unused)),
|
||||||
* \ingroup ui_callback
|
* \ingroup ui_callback
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uicb_client_setscratch(int screen,
|
uicb_client_setscratch(int screen, char *arg __attribute__ ((unused)))
|
||||||
char *arg __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
if(!globalconf.focus->client)
|
if(!globalconf.focus->client)
|
||||||
return;
|
return;
|
||||||
|
@ -1162,8 +1158,7 @@ uicb_client_setscratch(int screen,
|
||||||
* \ingroup ui_callback
|
* \ingroup ui_callback
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uicb_client_togglescratch(int screen,
|
uicb_client_togglescratch(int screen, char *arg __attribute__ ((unused)))
|
||||||
char *arg __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
if(globalconf.scratch.client)
|
if(globalconf.scratch.client)
|
||||||
{
|
{
|
||||||
|
|
|
@ -449,8 +449,7 @@ titlebar_update_geometry(Client *c, area_t geometry)
|
||||||
* \ingroup ui_callback
|
* \ingroup ui_callback
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uicb_client_toggletitlebar(int screen __attribute__ ((unused)),
|
uicb_client_toggletitlebar(int screen __attribute__ ((unused)), char *arg __attribute__ ((unused)))
|
||||||
char *arg __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
Client *c = globalconf.focus->client;
|
Client *c = globalconf.focus->client;
|
||||||
|
|
||||||
|
|
7
uicb.c
7
uicb.c
|
@ -47,15 +47,14 @@ extern AwesomeConf globalconf;
|
||||||
#include "uicbgen.h"
|
#include "uicbgen.h"
|
||||||
|
|
||||||
/** Restart awesome with the current command line
|
/** Restart awesome with the current command line
|
||||||
* \param screen ID (unused)
|
* \param screen ID
|
||||||
* \param arg arg (unused)
|
* \param arg arg (unused)
|
||||||
* \ingroup ui_callback
|
* \ingroup ui_callback
|
||||||
*/
|
*/
|
||||||
void
|
void
|
||||||
uicb_restart(int screen __attribute__ ((unused)),
|
uicb_restart(int screen, char *arg __attribute__ ((unused)))
|
||||||
char *arg __attribute__ ((unused)))
|
|
||||||
{
|
{
|
||||||
uicb_exec(0, globalconf.argv);
|
uicb_exec(screen, globalconf.argv);
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Execute another process, replacing the current instance of Awesome
|
/** Execute another process, replacing the current instance of Awesome
|
||||||
|
|
Loading…
Reference in New Issue