]> git.decadent.org.uk Git - ion3.git/commitdiff
[svn-upgrade] Integrating new upstream version, ion3 (20071109) 20071109
authorBen Hutchings <ben@decadent.org.uk>
Sun, 2 Nov 2008 12:15:41 +0000 (12:15 +0000)
committerBen Hutchings <ben@decadent.org.uk>
Sun, 2 Nov 2008 12:15:41 +0000 (12:15 +0000)
144 files changed:
ChangeLog
RELNOTES
doc/ChangeLog [deleted file]
doc/LICENSE [deleted file]
doc/Makefile [deleted file]
doc/README [deleted file]
doc/artikel3.perl [deleted file]
doc/conf-bindings.tex [deleted file]
doc/conf-menus.tex [deleted file]
doc/conf-statusbar.tex [deleted file]
doc/conf-winprops.tex [deleted file]
doc/conf.tex [deleted file]
doc/confintro.tex [deleted file]
doc/cstyle.tex [deleted file]
doc/de.tex [deleted file]
doc/designnotes.tex [deleted file]
doc/exact-version [deleted file]
doc/fnref.tex [deleted file]
doc/fullhierarchy.tex [deleted file]
doc/gpl.tex [deleted file]
doc/hookref.tex [deleted file]
doc/ionconf.dvi.gz [deleted file]
doc/ionconf.out [deleted file]
doc/ionconf.ps.gz [deleted file]
doc/ionconf.tex [deleted file]
doc/ionconf/WARNINGS [deleted file]
doc/ionconf/contents.png [deleted file]
doc/ionconf/images.aux [deleted file]
doc/ionconf/images.idx [deleted file]
doc/ionconf/images.log [deleted file]
doc/ionconf/images.out [deleted file]
doc/ionconf/images.pl [deleted file]
doc/ionconf/images.tex [deleted file]
doc/ionconf/img1.png [deleted file]
doc/ionconf/img2.png [deleted file]
doc/ionconf/img3.png [deleted file]
doc/ionconf/img4.png [deleted file]
doc/ionconf/img5.png [deleted file]
doc/ionconf/img6.png [deleted file]
doc/ionconf/index.html [deleted file]
doc/ionconf/index.png [deleted file]
doc/ionconf/internals.pl [deleted file]
doc/ionconf/ionconf.css [deleted file]
doc/ionconf/ionconf.html [deleted file]
doc/ionconf/labels.pl [deleted file]
doc/ionconf/next.png [deleted file]
doc/ionconf/next_g.png [deleted file]
doc/ionconf/node1.html [deleted file]
doc/ionconf/node10.html [deleted file]
doc/ionconf/node11.html [deleted file]
doc/ionconf/node12.html [deleted file]
doc/ionconf/node13.html [deleted file]
doc/ionconf/node2.html [deleted file]
doc/ionconf/node3.html [deleted file]
doc/ionconf/node4.html [deleted file]
doc/ionconf/node5.html [deleted file]
doc/ionconf/node6.html [deleted file]
doc/ionconf/node7.html [deleted file]
doc/ionconf/node8.html [deleted file]
doc/ionconf/node9.html [deleted file]
doc/ionconf/prev.png [deleted file]
doc/ionconf/prev_g.png [deleted file]
doc/ionconf/up.png [deleted file]
doc/ionnotes.dvi.gz [deleted file]
doc/ionnotes.out [deleted file]
doc/ionnotes.ps.gz [deleted file]
doc/ionnotes.tex [deleted file]
doc/ionnotes/WARNINGS [deleted file]
doc/ionnotes/contents.png [deleted file]
doc/ionnotes/crossref.png [deleted file]
doc/ionnotes/index.html [deleted file]
doc/ionnotes/index.png [deleted file]
doc/ionnotes/internals.pl [deleted file]
doc/ionnotes/ionnotes.css [deleted file]
doc/ionnotes/ionnotes.html [deleted file]
doc/ionnotes/labels.pl [deleted file]
doc/ionnotes/next.png [deleted file]
doc/ionnotes/next_g.png [deleted file]
doc/ionnotes/node1.html [deleted file]
doc/ionnotes/node2.html [deleted file]
doc/ionnotes/node3.html [deleted file]
doc/ionnotes/node4.html [deleted file]
doc/ionnotes/node5.html [deleted file]
doc/ionnotes/node6.html [deleted file]
doc/ionnotes/node7.html [deleted file]
doc/ionnotes/node8.html [deleted file]
doc/ionnotes/node9.html [deleted file]
doc/ionnotes/prev.png [deleted file]
doc/ionnotes/prev_g.png [deleted file]
doc/ionnotes/up.png [deleted file]
doc/luaif.tex [deleted file]
doc/macros.tex [deleted file]
doc/miscref.tex [deleted file]
doc/objects.tex [deleted file]
doc/objectsimpl.tex [deleted file]
doc/predist.sh [deleted file]
doc/prelim.tex [deleted file]
doc/rapport3.perl [deleted file]
doc/statusd.tex [deleted file]
doc/tricks.tex [deleted file]
exact-version
ioncore/detach.c
ioncore/exec.c
ioncore/exec.h
ioncore/fullscreen.c
ioncore/group-cw.c
ioncore/group-ws.c
ioncore/group.c
ioncore/group.h
ioncore/ioncore_tabnum.lua
ioncore/manage.c
ioncore/manage.h
ioncore/mplex.c
ioncore/mplexpholder.c
ioncore/mplexpholder.h
ioncore/region.c
ioncore/sizepolicy.c
ioncore/stacking.c
ioncore/stacking.h
mod_query/mod_query.lua
mod_statusbar/Makefile
mod_statusbar/ion-statusd/Makefile [deleted file]
mod_statusbar/ion-statusd/exec.c [deleted file]
mod_statusbar/ion-statusd/extlrx.c [deleted file]
mod_statusbar/ion-statusd/ion-statusd.c [deleted file]
mod_statusbar/ion-statusd/statusd_date.lua [deleted file]
mod_statusbar/ion-statusd/statusd_load.lua [deleted file]
mod_statusbar/ion-statusd/statusd_mail.lua [deleted file]
mod_statusbar/main.c
mod_statusbar/mod_statusbar.lua
mod_statusbar/statusd-launch.c [new file with mode: 0644]
mod_tiling/placement.h
mod_tiling/split.c
mod_tiling/tiling.c
mod_tiling/tiling.h
utils/Makefile
utils/ion-statusd/Makefile [new file with mode: 0644]
utils/ion-statusd/exec.c [new file with mode: 0644]
utils/ion-statusd/extlrx.c [new file with mode: 0644]
utils/ion-statusd/ion-statusd.c [new file with mode: 0644]
utils/ion-statusd/statusd_date.lua [new file with mode: 0644]
utils/ion-statusd/statusd_load.lua [new file with mode: 0644]
utils/ion-statusd/statusd_mail.lua [new file with mode: 0644]
version.h

index 3d13196a811f3d9541286fc53c9cbd95f85702e0..e73da79d78fd78a618ce600d34607e80e956b6b5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,84 @@
+2007-11-09 14:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  tagged ion-3rc-20071109
+
+2007-11-09 14:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Release notes
+
+2007-11-09 14:44 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added "forget" parameter to ioncore.detach and improved doc.
+
+2007-11-08 18:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed redundant is_fullscreen.
+
+2007-11-06 07:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Some cleanup to better separate ion-statusd from mod_statusbar 
+  and allow for better statusd as an add-on.
+
+2007-11-05 17:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Improved stdisp placement in non-tiled groups.
+
+2007-11-05 17:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Stretch size policies support gravity (for alignment after size hints).
+
+2007-11-05 17:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Improved split resize behaviour
+
+2007-11-04 17:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Initial focus fixes for modal stacking levels.
+
+2007-11-04 12:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * attach_framed wasn't supporting typical group attach parameters.
+
+2007-11-03 23:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * I knew it! Recent focus code changes broke something.
+  (Modal stacking levels within groups.)
+
+2007-11-03 23:21 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, copy-paste.
+
+2007-11-01 17:11 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changed disposeroot policy for WGroupCW.
+  Last managed region disposed always disposes the group (if possible).
+
+2007-11-01 17:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Oops, some of the rescue code hacks broke other things..
+  (Shouldn't try to rescue whole WGroupCWs without further info.)
+
+2007-10-27 12:44 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Further rescue code hacks.
+
+2007-11-01 14:21 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * query_exec completor uses mplex working directory.
+
+2007-11-01 14:10 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Added 'wd' parameter to popen_bgread.
+  (As the last one. It's a bit ugly that the order of parameters isn't similar
+  to exec_on, but I'm not going to start breaking the Lua-side API at RC stage.)
+
+2007-10-27 12:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Suppressed dead object warnings from tab number script.
+
+2007-10-26 14:10 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Changes in WMPlex placeholder ordering.
+   - Attaching now moves the attach-pholder after the new mx-region.
+   - Rescue pholder is placed at the end of the list.
+
+2007-10-26 14:06 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Support for rescue code pholder attach flags and masks.
+
+2007-10-19 16:24 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Fixed doc. comment
+
+2007-10-15 15:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Cleaned up non-existent function from headers.
+
+2007-10-15 15:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Do not optimise away region_managed_prepare_focus call.
+  Tiling internal focus tracking can become confused if this is done.
+
+2007-10-15 05:57 UTC  Tuomo Valkonen <tuomov@iki.fi>
+  * Removed redundant restack in tiling code
+
 2007-09-27 16:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
   tagged ion-3rc-20070927
 
index b9bcfca15a651bffaee7a1b333a5333159a6b927..0d09d47ff6b74a9b2b64d54097e13ea73cb38b5b 100644 (file)
--- a/RELNOTES
+++ b/RELNOTES
@@ -1,4 +1,16 @@
 
+ion-3rc-20071109
+----------------
+
+It seems people are a bit slow, or only scaring them with a final
+release makes them report issues. So, still no stable release but
+a candidate, with many minor fixes and improvements wrt. important
+omissions. The most important changes are better behaviour of the 
+unsplit operation, better handling of main window being closed
+before a transient, and use of the workspace's working directory
+for run query file name completion.
+
+
 ion-3rc-20070927
 ----------------
 
diff --git a/doc/ChangeLog b/doc/ChangeLog
deleted file mode 100644 (file)
index bf16748..0000000
+++ /dev/null
@@ -1,820 +0,0 @@
-2007-09-27 16:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3rc-20070927
-
-2007-09-11 07:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Notes on config file modification
-
-2007-09-02 13:41 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3rc-20070902
-
-2007-07-14 21:59 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Removed obsolete TODO note
-
-2007-07-14 20:34 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Documented orientation winprop
-
-2007-07-08 09:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3rc-20070708
-
-2007-06-08 16:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3rc-20070608
-
-2007-05-06 14:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3rc-20070506
-
-2007-05-06 14:25 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * mod_mgmtmode removal
-
-2007-05-06 13:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Removed obsolete example
-
-2007-05-04 21:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixes and updates to binding docs
-
-2007-05-04 16:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Documen the submap leave/enter stuff
-
-2007-04-26 22:44 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Improved string marking
-
-2007-04-26 22:28 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Drawing stuff doc improvements
-
-2007-04-22 18:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Document is_dockapp
-
-2007-04-22 12:29 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Winprop doc. improvements/fixes
-
-2007-04-22 00:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Minor fixes and improvements
-
-2007-04-20 16:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Document is_transient
-
-2007-04-15 12:33 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updates to implementation notes
-
-2007-04-08 12:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Removed quotation abuse
-
-2007-04-08 12:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Size policy documentation
-
-2007-04-08 11:53 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Quote changes
-
-2007-04-08 11:49 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed typos etc.
-
-2007-04-08 11:34 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Intro improvements
-
-2007-04-06 11:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Systray stuff improvs
-
-2007-04-06 11:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Year changed..
-
-2007-04-06 11:17 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Function reference building improvements
-
-2007-04-05 16:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Bah, stupid latex2html
-
-2007-04-05 16:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * mod_statusbar documentation
-
-2007-04-05 15:21 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Oops, mod_statusbar.lua was missing from sources
-
-2007-03-20 11:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixes
-
-2007-03-18 20:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20070318
-
-2007-03-17 19:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * cfg_ion.lua walkthrough updates
-
-2007-03-17 11:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * border_sides doc
-
-2007-02-25 19:48 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Note on "userpos" winprop.
-
-2007-02-20 02:47 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Winprop doc updates
-
-2007-02-20 02:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Removed outdated winprop
-
-2007-02-19 16:09 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updated manager-managed figure
-
-2007-02-03 17:32 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Oops, still missing some statusbar stuff
-
-2007-02-03 17:30 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Minor fixes
-
-2007-02-03 15:04 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20070203
-
-2007-02-03 15:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Style configuration documentation updates
-
-2007-02-02 21:38 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Statusbar stuff was missing
-
-2007-01-30 18:29 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Documented new_group
-
-2007-01-26 18:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Hook reference updates
-
-2007-01-18 07:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updates
-
-2007-01-17 19:28 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updated class hierarchies
-
-2007-01-13 18:43 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Update
-
-2007-01-13 16:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updated hook documentation
-
-2007-01-03 19:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Document focuslist and focuslist_ menus
-
-2007-01-03 15:31 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added missing clientwin_property_change_hook documentation
-
-2006-12-23 15:00 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20061223
-
-2006-10-30 21:08 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updates
-
-2006-10-28 23:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20061029
-
-2006-10-17 22:02 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Mention the 'float' winprop
-
-2006-10-15 17:53 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20061015
-
-2006-10-15 14:36 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Documentation updates.
-
-2006-08-03 09:05 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * much->match
-
-2006-06-20 18:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20060620
-
-2006-06-08 17:58 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Moving usepackage{dvipdfm} before everything else seems to fix things.
-
-2006-02-12 15:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added documentation for region_activity_hook.
-
-2006-01-25 23:23 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updated bar_inside_border stuf.
-
-2006-01-07 21:03 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20060107
-
-2005-12-10 20:46 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20051210
-
-2005-12-10 00:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added missing min_size winprop and changes in winprop listing.
-
-2005-11-10 20:22 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updated frame style documentation.
-
-2005-10-23 22:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20051023
-
-2005-08-26 17:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * List oneshot winprop.
-
-2005-08-20 11:37 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050820
-
-2005-07-28 17:40 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050728
-
-2005-06-25 15:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050625
-
-2005-06-07 13:14 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050607
-
-2005-06-07 13:13 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * predist.sh updates.
-
-2005-06-01 17:07 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added a note on NoModifier.
-
-2005-05-02 14:56 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050502
-
-2005-03-25 17:41 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added documentation on ion-statusd monitors.
-
-2005-03-25 17:41 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed a typo, etc.
-
-2005-03-22 14:34 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050322
-
-2005-03-21 00:16 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed typos.
-
-2005-03-19 13:55 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added documentation on ioncore_sigchld_hook.
-
-2005-03-13 12:34 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed typos etc.
-
-2005-03-13 12:27 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * fnrefx macro was still wrong.
-
-2005-03-09 23:12 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Moved new layer documentation to scripting chapter.
-
-2005-03-09 22:23 UTC  Matthieu.Moy@imag.fr
-  * More doc on layer 2 and placement hooks
-  
-  Be warned that:
-  
-  * I missed some LaTeX package, and therefore couldn't compile my
-    changes,
-  
-  * I don't know ion's internal well enough to be sure of what I write.
-  
-
-2005-03-07 09:35 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Fixed copy-paste error.
-
-2005-03-04 08:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050304
-
-2005-03-03 18:42 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Added a note on hooks being called in protected mode.
-
-2005-03-03 18:39 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  * Updated ionws_placement_alt documentation.
-
-2005-02-27 13:19 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3ds-20050227
-
-2005-02-22 22:54 UTC  Tuomo Valkonen <tuomov@iki.fi>
-  tagged ion-doc-3-svn2darcs
-
-2005-01-16 11:52 UTC  tuomov
-  tagged ion-doc-3ds-20050116
-
-2005-01-16 11:29 UTC  tuomov
-  * trunk: changeset 1931
-  fixed predist.sh
-
-2005-01-16 11:08 UTC  tuomov
-  * trunk: changeset 1930
-  Fixed undefined references.
-
-2005-01-15 21:33 UTC  tuomov
-  * trunk: changeset 1928
-  Updated some scripting docs.
-
-2005-01-15 21:20 UTC  tuomov
-  * trunk: changeset 1926
-  tabularx header changes.
-
-2005-01-15 21:03 UTC  tuomov
-  * trunk: changeset 1924
-  Tuning for latex2html etc.
-
-2005-01-15 17:29 UTC  tuomov
-  * trunk: changeset 1923
-  Added hook reference and updated hook documentation.
-
-2005-01-15 17:29 UTC  tuomov
-  * trunk: changeset 1922
-  Improved function reference macros to use lists instead of tables.
-
-2005-01-14 14:47 UTC  tuomov
-  * trunk: changeset 1920
-  Some minor fixes.
-
-2005-01-14 14:25 UTC  tuomov
-  * trunk: changeset 1918
-  - Improved menu documentation.
-  
-  - Other minor improvements.
-
-2005-01-13 16:49 UTC  tuomov
-  * trunk: changeset 1917
-  Updated graphical styles documentation.
-
-2005-01-13 14:40 UTC  tuomov
-  * trunk: changeset 1915
-  Updated winprop documentation.
-
-2005-01-13 14:27 UTC  tuomov
-  * trunk: changeset 1914
-  Updated binding and menu definition documentation.
-
-2005-01-11 20:18 UTC  tuomov
-  * trunk: changeset 1913
-  Brought config file intro up-to-date
-
-2005-01-11 15:31 UTC  tuomov
-  * trunk: changeset 1912
-  Updated class hierarchy documentation etc.
-
-2004-10-11 14:16 UTC  tuomov
-  * trunk: changeset 1821
-  Just testing some settings...
-
-2004-10-09 06:16 UTC  tuomov
-  * trunk: changeset 1804
-  libextl related changes.
-
-2004-10-09 05:56 UTC  tuomov
-  * trunk: changeset 1801
-  Added predist.sh
-
-2004-10-09 05:56 UTC  tuomov
-  * trunk: changeset 1800
-  Fixed a typo.
-
-2004-09-16 22:04 UTC  tuomov
-  * trunk: changeset 1754
-  Source file path updates.
-
-2004-07-31 22:25 UTC  tuomov
-  * trunk: changeset 1697
-  Updated Makefile to point to the new location of mkexports.lua.
-
-2004-07-26 21:57 UTC  tuomov
-  * trunk: changeset 1646
-  Function reference generation updates.
-
-2004-05-14 12:29 UTC  tuomov
-  * trunk: changeset 1485
-  Fixed punctuation.
-
-2004-03-15 16:32 UTC  tuomov
-  * trunk: changeset 1402
-  Changed makefile to account for changes in Ion module directories.
-
-2004-03-15 16:23 UTC  tuomov
-  * trunk: changeset 1400
-  Added install target to Makefile.
-
-2004-03-15 08:35 UTC  tuomov
-  * trunk: changeset 1398
-  Brought document generation up-to-date with module name changes.
-
-2004-03-10 21:57 UTC  tuomov
-  * trunk: changeset 1383
-  Merged omission and other fixes from stable branch.
-
-2004-03-05 23:49 UTC  tuomov
-  * trunk: changeset 1346
-  Some more minor documentation fixes. Just to test this new svn setup.
-
-2004-03-05 23:00 UTC  tuomov
-  * trunk: changeset 1345
-  Minor documentation fixes.
-
-2004-02-16 20:33 UTC  tuomov
-  * trunk: changeset 1323
-  Build process changed for Ion3.
-
-2004-02-07 01:55 UTC  tuomov
-  * trunk: changeset 1255
-  Added documentation on alternative get_winprop implementations.
-
-2004-02-07 01:42 UTC  tuomov
-  * trunk: changeset 1254
-  Removed unobfuscated email addresses.
-
-2004-01-28 22:04 UTC  tuomov
-  * trunk: changeset 1239
-  Removed extra word, added function reference.
-
-2004-01-27 22:30 UTC  tuomov
-  * trunk: changeset 1235
-  Added 'are' in 'that they are transient for'
-
-2004-01-27 22:26 UTC  tuomov
-  * trunk: changeset 1234
-  Improved xprop/transient help and winprop examples.
-
-2004-01-27 13:54 UTC  tuomov
-  * trunk: changeset 1231
-  Minor spelling mistake fix.
-
-2004-01-25 18:42 UTC  tuomov
-  * trunk: changeset 1225
-  Some minor clarifications in a few sentences and put URL:s on their
-  own lines.
-
-2004-01-25 18:05 UTC  tuomov
-  * trunk: changeset 1222
-  Typo and spelling fixes.
-
-2004-01-23 17:32 UTC  tuomov
-  * trunk: changeset 1215
-  Fixed a few typos and added an example.
-
-2004-01-22 21:25 UTC  tuomov
-  * trunk: changeset 1213
-  Added dock documentation.
-
-2004-01-14 22:29 UTC  tuomov
-  * trunk: changeset 1193
-  Minor cleanup.
-
-2004-01-08 22:32 UTC  tuomov
-  * trunk: changeset 1183
-  Updated winprop documentation.
-
-2003-12-22 23:58 UTC  tuomov
-  * trunk: changeset 162
-  Added discussion on modules and improved the main introduction and
-  object hierarchy introduction.
-
-2003-12-21 00:17 UTC  tuomov
-  * trunk: changeset 161
-  Removed duplicate label.
-
-2003-12-20 19:49 UTC  tuomov
-  * trunk: changeset 160
-  Added a list of functions.
-
-2003-12-20 15:18 UTC  tuomov
-  * trunk: changeset 159
-  Fixed a typo.
-
-2003-12-20 15:15 UTC  tuomov
-  * trunk: changeset 158
-  Oops.
-
-2003-12-20 15:14 UTC  tuomov
-  * trunk: changeset 157
-  Added a section on object references.
-
-2003-12-19 22:08 UTC  tuomov
-  * trunk: changeset 156
-  Mention stylemenu.
-
-2003-12-18 21:37 UTC  tuomov
-  * trunk: changeset 155
-  Added a section on special menus.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20031211
-
-2003-12-11 17:29 UTC  tuomov
-  * trunk: changeset 154
-  Updates for 20031211 release.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20031119
-
-2003-11-19 21:57 UTC  tuomov
-  * trunk: changeset 153
-  Removed 'executive' from summary.
-
-2003-11-19 21:57 UTC  tuomov
-  * trunk: changeset 152
-  Removed mplexfns reference.
-
-2003-11-17 00:42 UTC  tuomov
-  * trunk: changeset 151
-  Added an "executive summary" to the object hierarchy chapter.
-
-2003-11-14 18:15 UTC  tuomov
-  * trunk: changeset 150
-  Documented menus. Changes to reflect changes in configuration files.
-
-2003-10-30 10:04 UTC  tuomov
-  * trunk: changeset 149
-  Get documentation from luaextl/*.c as well.
-
-2003-10-29 12:05 UTC  tuomov
-  * trunk: changeset 148
-  LICENSE file changed to GPL.
-
-2003-10-29 11:55 UTC  tuomov
-  * trunk: changeset 147
-  Removed fdl.tex.
-
-2003-10-29 11:55 UTC  tuomov
-  * trunk: changeset 146
-  Changed license to GPL due to problems with the GFDL.
-
-2003-10-29 11:54 UTC  tuomov
-  * trunk: changeset 145
-  Changed \chapter->\xchapter, \section*->\xsectionstar
-
-2003-10-29 11:22 UTC  tuomov
-  * trunk: changeset 144
-  Added gpl.tex; GNU General Public License.
-
-2003-10-29 11:20 UTC  tuomov
-  * trunk: changeset 143
-  Added menu reference and updated drawing engine documentation to
-  reflect the change in style names.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20030811
-
-2003-08-10 23:45 UTC  tuomov
-  * trunk: changeset 142
-  Fixed a few more typos and such.
-
-2003-08-10 23:37 UTC  tuomov
-  * trunk: changeset 141
-  Fixed a typo.
-
-2003-08-10 23:37 UTC  tuomov
-  * trunk: changeset 140
-  The files draw-DISPLAY.SCREEN.lua were still being referenced to.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20030810
-
-2003-08-09 12:48 UTC  tuomov
-  * trunk: changeset 139
-  Added a quote.
-
-2003-08-09 12:45 UTC  tuomov
-  * trunk: changeset 138
-  Added a few spaces.
-
-2003-08-09 12:45 UTC  tuomov
-  * trunk: changeset 137
-  Added a walk-through of ioncore.lua.
-
-2003-08-08 21:56 UTC  tuomov
-  * trunk: changeset 136
-  Added an introduction and some design decision rationale.
-
-2003-08-07 21:45 UTC  tuomov
-  * trunk: changeset 135
-  Added information on winprop name field and improved winprop lookup
-  order explanation.
-
-2003-08-06 15:08 UTC  tuomov
-  * trunk: changeset 134
-  look-cleanviolet.lua was changed and so the example.
-
-2003-08-06 15:06 UTC  tuomov
-  * trunk: changeset 133
-  The 'urgent' attributes was renamed 'activity'.
-
-2003-08-01 05:54 UTC  tuomov
-  * trunk: changeset 132
-  Added mention of ignore_cfgrq.
-
-2003-07-31 21:24 UTC  tuomov
-  * trunk: changeset 131
-  Started a new chapter on assorted tricks.
-
-2003-07-31 15:21 UTC  tuomov
-  * trunk: changeset 130
-  A few fixes.
-
-2003-07-31 15:17 UTC  tuomov
-  * trunk: changeset 129
-  Improved drawing engine and style documentation.
-
-2003-07-30 22:47 UTC  tuomov
-  * trunk: changeset 128
-  Added a \docode kludge to have latex2html interpret figure
-  environments instead of generating images.
-
-2003-07-30 22:27 UTC  tuomov
-  * trunk: changeset 127
-  Started documenting drawing engines.
-
-2003-07-25 20:48 UTC  tuomov
-  * trunk: changeset 126
-  Moved WRootWin under WWindow in class hierarchy.
-
-2003-07-24 19:35 UTC  tuomov
-  * trunk: changeset 125
-  Some bindings setup documentation improvements.
-
-2003-07-13 22:16 UTC  tuomov
-  * trunk: changeset 124
-  Changes to accommodate for more OO bindings.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20030710
-
-2003-07-10 17:18 UTC  tuomov
-  * trunk: changeset 123
-  Class explanations improved.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20030628
-
-2003-06-27 22:58 UTC  tuomov
-  * trunk: changeset 122
-  Typos etc.
-
-2003-06-27 20:56 UTC  tuomov
-  * trunk: changeset 121
-  Fixed QueryLib introduction.
-
-2003-06-17 21:02 UTC  tuomov
-  * trunk: changeset 120
-  Removed mention of region_close and make_current_or_self_fn as this
-  binding does not work.
-
-2003-06-17 10:25 UTC  tuomov
-  * trunk: changeset 119
-  Added notes on C coding style.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20030614
-
-2003-06-14 19:06 UTC  tuomov
-  * trunk: changeset 118
-  Fixed "or"->"are".
-
-2003-06-14 18:01 UTC  tuomov
-  * trunk: changeset 117
-  \date{} setting moved to distribution building script.
-
-2003-06-14 17:54 UTC  tuomov
-  * trunk: changeset 116
-  Minor bug was fixed.
-
-2003-06-14 17:53 UTC  tuomov
-  * trunk: changeset 115
-  Some clarifications were made in a few explanations and a note on
-  anonymous functions was added.
-
-2003-06-14 17:53 UTC  tuomov
-  * trunk: changeset 114
-  Redefined the itemize environment to look better.
-
-2003-06-14 15:10 UTC  tuomov
-  * trunk: changeset 113
-  Updated the documentation to use the new binding setting functions.
-
-2003-06-08 17:58 UTC  tuomov
-  * trunk: changeset 112
-  Added FDL as a plaintext file LICENSE.
-
-2003-06-08 17:56 UTC  tuomov
-  * trunk: changeset 111
-  Documentation updated to mention WMPlexes.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20030531
-
-2003-05-31 15:39 UTC  tuomov
-  * trunk: changeset 110
-  Dates updated.
-
-2003-05-30 21:32 UTC  tuomov
-  * trunk: changeset 109
-  Updated the parts that refer to the files that were moved to SHAREDIR.
-
-2003-05-29 13:11 UTC  tuomov
-  * trunk: changeset 108
-  Added a note on char* and const char *.
-
-2003-05-29 12:51 UTC  tuomov
-  * trunk: changeset 107
-  Added one more note on deferred destroy.
-
-2003-05-29 12:47 UTC  tuomov
-  * trunk: changeset 106
-  Added a note on deferred destroy.
-
-2003-05-17 13:33 UTC  tuomov
-  * trunk: changeset 105
-  Updated the documentation to switch to using WRootWins for X screens
-  and WScreens for physical screens.
-
-2003-05-13 05:22 UTC  tuomov
-  * trunk: changeset 104
-  Some minor fixes.
-
-2003-12-23 20:18 UTC  unknown
-  tagged ion-doc-20030510
-
-2003-05-10 20:09 UTC  tuomov
-  * trunk: changeset 103
-  Removed repeated word.
-
-2003-05-10 20:02 UTC  tuomov
-  * trunk: changeset 102
-  Fixed some typos.
-
-2003-05-10 18:55 UTC  tuomov
-  * trunk: changeset 101
-  Oops. The all-ps rule was broken.
-
-2003-05-10 18:51 UTC  tuomov
-  * trunk: changeset 100
-  License notes changed to use \copyright instead of "(c)"
-
-2003-05-10 18:28 UTC  tuomov
-  * trunk: changeset 99
-  A README was added.
-
-2003-05-10 18:26 UTC  tuomov
-  * trunk: changeset 98
-  File removed.
-
-2003-05-10 18:26 UTC  tuomov
-  * trunk: changeset 97
-  Object system implementation was split out from the chapter/section on
-  object and class hierarchies.
-
-2003-05-10 18:25 UTC  tuomov
-  * trunk: changeset 96
-  Added implementation of artikel3 for latex2html.
-
-2003-05-10 18:24 UTC  tuomov
-  * trunk: changeset 95
-  Implementation of rapport3 for latex2html was added.
-
-2003-05-10 18:24 UTC  tuomov
-  * trunk: changeset 94
-  The macros were cleaned up
-
-2003-05-10 18:24 UTC  tuomov
-  * trunk: changeset 93
-  Better Makefile
-
-2003-05-10 18:23 UTC  tuomov
-  * trunk: changeset 92
-  FDL was modified to use the \xchapter etc. macros to enable embedding
-  it in articles.
-
-2003-05-10 18:23 UTC  tuomov
-  * trunk: changeset 91
-  Clarifications (hopefully) ein the explanation of the object and class
-  hierarchies.
-
-2003-05-10 18:22 UTC  tuomov
-  * trunk: changeset 90
-  The configuration files were documented.
-
-2003-05-10 18:22 UTC  tuomov
-  * trunk: changeset 89
-  The original document "Ion: Objects and extending" was split into
-  separate documents "Ion: Configuring and extending with Lua" and "Ion:
-  notes for the module and patch writer".
-
-2003-05-10 15:50 UTC  tuomov
-  * trunk: changeset 88
-  Added the GNU Free Documentation License.
-
-2003-05-08 18:31 UTC  tuomov
-  * trunk: changeset 87
-  Added more documentation on binding configuration.
-
-2003-05-07 18:43 UTC  tuomov
-  * trunk: changeset 86
-  Added QueryLib and Ioncorelib references. Moved function reference
-  .tex generation code here from ion.
-
-2003-05-06 19:46 UTC  tuomov
-  * trunk: changeset 85
-  Did some reorganization and added links to Lua documentation.
-
-2003-05-06 17:48 UTC  tuomov
-  * trunk: changeset 84
-  Added a \hline in the type table.
-
-2003-05-06 17:35 UTC  tuomov
-  * trunk: changeset 83
-  Added Makefile rules to generate postscript and pdf
-
-2003-05-06 17:33 UTC  tuomov
-  * trunk: changeset 82
-  Added a Makefile
-
-2005-02-16 07:18 UTC  tailor@f281.ttorni.ton.tut.fi
-  * Tailorization of trunk
-  Import of the upstream sources from the repository
-  
-   http://tao.uab.es/ion/svn/ion-doc/trunk
-  
-  as of revision 80
-  
diff --git a/doc/LICENSE b/doc/LICENSE
deleted file mode 100644 (file)
index d60c31a..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-                   GNU GENERAL PUBLIC LICENSE
-                      Version 2, June 1991
-
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-                           Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-License is intended to guarantee your freedom to share and change free
-software--to make sure the software is free for all its users.  This
-General Public License applies to most of the Free Software
-Foundation's software and to any other program whose authors commit to
-using it.  (Some other Free Software Foundation software is covered by
-the GNU Library General Public License instead.)  You can apply it to
-your programs, too.
-
-  When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-this service if you wish), that you receive source code or can get it
-if you want it, that you can change the software or use pieces of it
-in new free programs; and that you know you can do these things.
-
-  To protect your rights, we need to make restrictions that forbid
-anyone to deny you these rights or to ask you to surrender the rights.
-These restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-  For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must give the recipients all the rights that
-you have.  You must make sure that they, too, receive or can get the
-source code.  And you must show them these terms so they know their
-rights.
-
-  We protect your rights with two steps: (1) copyright the software, and
-(2) offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-  Also, for each author's protection and ours, we want to make certain
-that everyone understands that there is no warranty for this free
-software.  If the software is modified by someone else and passed on, we
-want its recipients to know that what they have is not the original, so
-that any problems introduced by others will not reflect on the original
-authors' reputations.
-
-  Finally, any free program is threatened constantly by software
-patents.  We wish to avoid the danger that redistributors of a free
-program will individually obtain patent licenses, in effect making the
-program proprietary.  To prevent this, we have made it clear that any
-patent must be licensed for everyone's free use or not licensed at all.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.
-\f
-                   GNU GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License applies to any program or other work which contains
-a notice placed by the copyright holder saying it may be distributed
-under the terms of this General Public License.  The "Program", below,
-refers to any such program or work, and a "work based on the Program"
-means either the Program or any derivative work under copyright law:
-that is to say, a work containing the Program or a portion of it,
-either verbatim or with modifications and/or translated into another
-language.  (Hereinafter, translation is included without limitation in
-the term "modification".)  Each licensee is addressed as "you".
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-  1. You may copy and distribute verbatim copies of the Program's
-source code as you receive it, in any medium, provided that you
-conspicuously and appropriately publish on each copy an appropriate
-copyright notice and disclaimer of warranty; keep intact all the
-notices that refer to this License and to the absence of any warranty;
-and give any other recipients of the Program a copy of this License
-along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and
-you may at your option offer warranty protection in exchange for a fee.
-
-  2. You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) You must cause the modified files to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    b) You must cause any work that you distribute or publish, that in
-    whole or in part contains or is derived from the Program or any
-    part thereof, to be licensed as a whole at no charge to all third
-    parties under the terms of this License.
-
-    c) If the modified program normally reads commands interactively
-    when run, you must cause it, when started running for such
-    interactive use in the most ordinary way, to print or display an
-    announcement including an appropriate copyright notice and a
-    notice that there is no warranty (or else, saying that you provide
-    a warranty) and that users may redistribute the program under
-    these conditions, and telling the user how to view a copy of this
-    License.  (Exception: if the Program itself is interactive but
-    does not normally print such an announcement, your work based on
-    the Program is not required to print an announcement.)
-\f
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-    a) Accompany it with the complete corresponding machine-readable
-    source code, which must be distributed under the terms of Sections
-    1 and 2 above on a medium customarily used for software interchange; or,
-
-    b) Accompany it with a written offer, valid for at least three
-    years, to give any third party, for a charge no more than your
-    cost of physically performing source distribution, a complete
-    machine-readable copy of the corresponding source code, to be
-    distributed under the terms of Sections 1 and 2 above on a medium
-    customarily used for software interchange; or,
-
-    c) Accompany it with the information you received as to the offer
-    to distribute corresponding source code.  (This alternative is
-    allowed only for noncommercial distribution and only if you
-    received the program in object code or executable form with such
-    an offer, in accord with Subsection b above.)
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-\f
-  4. You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-  5. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-  6. Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-  7. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-\f
-  8. If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-  9. The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and "any
-later version", you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-  10. If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-                           NO WARRANTY
-
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.
-
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.
-
-                    END OF TERMS AND CONDITIONS
-\f
-           How to Apply These Terms to Your New Programs
-
-  If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these terms.
-
-  To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least
-the "copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the program's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This program is free software; you can redistribute it and/or modify
-    it under the terms of the GNU General Public License as published by
-    the Free Software Foundation; either version 2 of the License, or
-    (at your option) any later version.
-
-    This program is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-    GNU General Public License for more details.
-
-    You should have received a copy of the GNU General Public License
-    along with this program; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-    Gnomovision version 69, Copyright (C) year  name of author
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-    This is free software, and you are welcome to redistribute it
-    under certain conditions; type `show c' for details.
-
-The hypothetical commands `show w' and `show c' should show the appropriate
-parts of the General Public License.  Of course, the commands you use may
-be called something other than `show w' and `show c'; they could even be
-mouse-clicks or menu items--whatever suits your program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.
-
-  <signature of Ty Coon>, 1 April 1989
-  Ty Coon, President of Vice
-
-This General Public License does not permit incorporating your program into
-proprietary programs.  If your program is a subroutine library, you may
-consider it more useful to permit linking proprietary applications with the
-library.  If this is what you want to do, use the GNU Library General
-Public License instead of this License.
diff --git a/doc/Makefile b/doc/Makefile
deleted file mode 100644 (file)
index ca10058..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-# Settings
-######################################
-
-TOPDIR=../ion-3
-
-include $(TOPDIR)/build/system-inc.mk
-
-L2H=latex2html -show_section_numbers -short_index -local_icons -noaddress \
-    -up_url http://iki.fi/tuomov/ion/ -up_title "Ion homepage" -nofootnode\
-##    -style greyviolet.css
-
-
-# Function documentation to build
-######################################
-
-DOCS=ionconf ionnotes
-
-FNTEXES=ioncore.exports mod_tiling.exports \
-       mod_query.exports de.exports mod_menu.exports \
-       mod_dock.exports mod_sp.exports mod_statusbar.exports
-
-# Generic rules
-######################################
-
-nothing:
-       @ echo "Please read the README first."
-
-%.ps: %.dvi
-       dvips $<
-
-%.pdf: %.dvi
-       dvipdfm -p a4 $<
-
-%.dvi: %.tex
-       latex $<
-
-# Install
-######################################
-
-install:
-       $(INSTALLDIR) $(DOCDIR); \
-       for d in $(DOCS); do \
-           for e in ps pdf dvi; do \
-             test -f $$d.$$e && $(INSTALL) -m $(DATA_MODE) $$d.$$e $(DOCDIR); \
-            done; \
-           $(INSTALLDIR) $(DOCDIR)/$$d; \
-            for i in $$d/*; do \
-                $(INSTALL) -m $(DATA_MODE) $$i $(DOCDIR)/$$i; \
-           done; \
-        done
-
-# ionconf rules
-######################################
-ionconf-dvi-full:
-       latex ionconf
-       latex ionconf
-       latex ionconf
-       makeindex ionconf.idx
-       latex ionconf
-
-ionconf-html: 
-       $(L2H) -split 3 ionconf
-
-fntexes: $(FNTEXES)
-
-ionconf-all: fntexes fnlist.tex ionconf-dvi-full ionconf-html
-
-# ionnotes rules
-######################################
-
-ionnotes-dvi-full:
-       latex ionnotes
-       latex ionnotes
-       latex ionnotes
-       makeindex ionnotes.idx
-       latex ionnotes
-
-ionnotes-html: 
-       $(L2H) -split 4 ionnotes
-
-ionnotes-all: ionnotes-dvi-full ionnotes-html
-
-# More generic rules
-######################################
-
-all: ionconf-all ionnotes-all
-
-all-ps: ionconf.ps ionnotes.ps
-
-all-pdf: ionconf.pdf ionnotes.pdf
-
-
-# Clean
-######################################
-
-clean:
-       rm -f $(FNTEXES) fnlist.tex
-       rm -f *.aux *.toc *.log
-       rm -f *.idx *.ild *.ilg *.ind
-        
-realclean: clean
-       rm -f *.ps *.pdf *.dvi
-       rm -rf $(DOCS)
-
-
-# Function reference rules
-######################################
-
-include $(TOPDIR)/libmainloop/rx.mk
-
-$(TOPDIR)/%/exports.tex:
-       $(MAKE) -C $$(dirname $@) _exports_doc
-
-%.exports: $(TOPDIR)/%/exports.tex
-       cp $< $@
-
-# Function list
-######################################
-
-fnlist.tex: $(FNTEXES)
-       grep hyperlabel $+ | \
-       sed 's/.*fn:\([^}]*\).*/\\fnlisti{\1}/;'|sort -d -f \
-       > $@
diff --git a/doc/README b/doc/README
deleted file mode 100644 (file)
index 604bf85..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-
-Ion-doc
-
-Tuomo Valkonen <tuomov at iki.fi>
-
-
-This package contains some (advanced user and module writer)
-documentation for the Ion window manager.
-
-You will need to install latex2html to build the HTML documents.
-
-How to build:
-
- 1. Modify TOPDIR in Makefile point to your top-level Ion source
-    directory, containing a working system.mk (or system-ac.mk).
-
- 3. After the above has been done, you may run 'make all' to build the
-    (hyperlinked) DVI and HTML versions of the documents. You may have
-    increase TeX pool size.
-
- 4. If you want Postcript versions of the documents, run 'make all-ps'.
-    For PDF you need to have dvipdfm installed. The PDF:s are obviously
-    built with 'make all-pdf'.
diff --git a/doc/artikel3.perl b/doc/artikel3.perl
deleted file mode 100644 (file)
index 110f32c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-# artikel3.perl by Tuomo Valkonen, <tuomov at iki.fi>, 2003-05-10
-#
-# Implementation of the documentclass for latex2html. Just load
-# article.
-#
-
-package main;
-
-&do_require_package("article");
-
-1;
-
diff --git a/doc/conf-bindings.tex b/doc/conf-bindings.tex
deleted file mode 100644 (file)
index efec6a4..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-\section{Keys and rodents}
-\label{sec:bindings}
-
-In the stock configuration file setup, most key and mouse bindings are set
-from the file \file{cfg\_ioncore.lua} while module-specific bindings
-are set from the modules' main configuration files (\file{cfg\_modname.lua}).
-This, however, does not have to be so as long as the module has been
-loaded prior to defining any module-specific bindings.
-
-Bindings are defined by calling the function 
-\fnrefx{ioncore}{defbindings} with the ``context'' of the
-bindings and the a table of new bindings to make. The context is simply
-string indicating one of the classes of regions (or modes such as
-\type{WMoveresMode}) introduced in section \ref{sec:objects}, and fully
-listed in appendix \ref{app:fullhierarchy}, although not all define
-a binding map. For example, the following skeleton would be used to 
-define new bindings for all frames:
-
-\begin{verbatim}
-defbindings("WFrame", {
-    -- List of bindings to make goes here.
-})
-\end{verbatim}
-
-There has been some confusion among users about the need to define the
-``context'' for each binding, so let me try to explain this design
-decision here. The thing is that if there was a just a simple 'bind this 
-key to this action' method without knowledge of the context, some 
-limitations would have to be made on the available actions and writing 
-custom handlers would be more complicated. In addition one may want to 
-bind the same function to different key for different types of objects.
-Indeed, the workspace and frame tab switching functions are the same both
-classes being based on \type{WMPlex}, and in the stock configuration the 
-switch to $n$:th workspaces is bound to \key{Mod1+n} while the switch to 
-$n$:th tab is bound to the sequence \key{Mod1+k n}.
-
-Currently known contexts include: 
-\codestr{WScreen},
-\codestr{WMPlex},
-\codestr{WMPlex.toplevel},
-\codestr{WFrame},
-\codestr{WFrame.toplevel},
-\codestr{WFrame.floating},
-\codestr{WFrame.tiled},
-\codestr{WFrame.transient},
-\codestr{WMoveresMode},
-\codestr{WGroup},
-\codestr{WGroupCW},
-\codestr{WGroupWS},
-\codestr{WClientWin},
-\codestr{WTiling}, and
-\codestr{WStatusBar}.
-Most of these should be self-explanatory, corresponding to objects
-of class with the same name. The ones with \codestr{.toplevel} suffix
-refer to screens and ``toplevel''  frames, i.e. frames that are
-not used for transient windows. Likewise \codestr{.transient} refers
-to frames in transient mode, and \codestr{.tiled} and \codestr{.floating}
-to frames in, respectively, tiled and floating modes. 
-
-                                                        
-
-The following subsections describe how to construct elements of the
-binding table. Note that \fnrefx{ioncore}{defbindings} adds
-the the newly defined bindings to the previous bindings of the context,
-overriding duplicates. To unbind an event, set the handler parameter
-to \code{nil} for each of the functions to be described in the following
-subsections.
-
-Also note that when multiple objects want to handle a binding, the 
-innermost (when the root window is considered the outermost) active object
-in the parent--child hierarchy (see Figure \ref{fig:parentship}) of objects 
-gets to handle the action.
-
-
-\subsection{Binding handlers and special variables}
-
-Unlike in Ion2, in Ion3 binding handlers are not normally passed as
-``anonymous functions'', although this is still possible. The preferred
-method now is to pass the code of the handler as a string. Two following
-special variables are available in this code.
-
-\begin{tabularx}{\linewidth}{lX}
-    \tabhead{Variable & Description}
-    \code{_} (underscore) &
-      Reference to the object on which the 
-      binding was triggered. The object is of the same class as the the
-      context of the \fnrefx{ioncore}{defbindings} call
-      defining the binding. \\
-    \code{_sub} &
-      Usually, the currently active \emph{managed object} of the 
-      object referred to by \code{_}, but sometimes (e.g. mouse actions
-      on tabs of frames) something else relevant to the action triggering
-      the binding. \\
-    \code{_chld} &
-      Object corresponding to the currently active child window of the
-       object referred to by \code{_}. This should seldom be needed.
-\end{tabularx}
-
-For example, supposing \code{_} (underscore) is a \type{WFrame}, the 
-following handler should move the active window to the right, if 
-possible:
-
-\begin{verbatim}
-"_:inc_index(_sub)"
-\end{verbatim}
-
-\subsection{Guards}
-
-To suppress error messages, each binding handler may also be accompanied
-by a ``guard'' expression that blocks the handler from being called when
-the guard condition is not met. Currently the following guard expressions
-are supported (for both \code{_sub} and \code{_chld}):
-
-\begin{tabularx}{\linewidth}{lX}
-    \tabhead{Guard & Description}
-    \codestr{\_sub:non-nil} & The \code{_sub} parameter must be set. \\
-    \codestr{\_sub:SomeClass} & The \code{_sub} parameter must be member
-      of class \type{SomeClass}. \\
-\end{tabularx}
-
-
-\subsection{Defining the bindings}
-\label{sec:binddef}
-
-The descriptions of the individual bindings in the binding table argument
-to \fnrefx{ioncore}{defbindings} should be constructed with the following
-functions.
-
-Key presses:
-\begin{itemize}
-    \item \fnrefx{ioncore}{kpress}, and
-          \fnrefx{ioncore}{kpress_wait}\code{(keyspec, handler [, guard])}.
-    \item \fnrefx{ioncore}{submap}\code{(keyspec, \{ ... more key bindings ... \})}.
-    \item \fnrefx{ioncore}{submap_enter}, and
-          \fnrefx{ioncore}{submap_wait}\code{(handler [, guard])}.
-\end{itemize}
-Mouse actions:
-\begin{itemize}
-    \item \fnrefx{ioncore}{mclick},
-          \fnrefx{ioncore}{mdblclick},
-          \fnrefx{ioncore}{mpress}, and
-          \fnrefx{ioncore}{mdrag}\code{(buttonspec, handler [, guard])}.
-\end{itemize}
-
-The actions that most of these functions correspond to should be clear
-and as explained in the reference, \fnrefx{ioncore}{kpress_wait} is simply
-\fnrefx{ioncore}{kpress} with a flag set instructing Ioncore wait for
-all modifiers to be released before processing any further actions.
-This is to stop one from accidentally calling e.g.
-\fnref{WRegion.rqclose} multiple times in a row. The 
-\fnrefx{ioncore}{submap} function is used to define submaps or
-``prefix maps''. The second argument to this function is table listing
-the key press actions (\fnrefx{ioncore}{kpress}) in the submap. 
-The \fnrefx{ioncore}{submap_enter} handler is called when the submap
-is entered, in which this handler is defined. Likewise, the
-\fnrefx{ioncore}{submap_wait} handler is  called when all modifiers
-have been released while waiting for further key presses in the submap.
-
-The parameters \var{keyspec} and \var{buttonspec} are explained below
-in detail. The parameter \var{handler} is the handler for the binding,
-and the optional parameter \var{guard} its guard. These should normally
-be strings as explained above. 
-
-\subsection{Examples}
-
-For example, to just bind the key \key{Mod1+1} to switch to the first
-workspace and \key{Mod1+Right} to the next workspace, you would make the
-following call
-\begin{verbatim}
-defbindings("WScreen", {
-    kpress("Mod1+Right", "_:switch_next()"),
-    kpress("Mod1+1", "_:switch_nth(1)"),
-})
-\end{verbatim}
-
-Note that \code{_:switch_nth(1)} is the same as calling
-\fnref{WMPlex.switch_next}\code{(_, 1)} as \type{WScreen} inherits
-\type{WMPlex} and this is where the function is actually defined.
-
-Similarly to the above example, to bind the key sequence \key{Mod1+k n} 
-switch to the next managed object within a frame, and \key{Mod1+k 1} to the
-first, you would issue the following call:
-\begin{verbatim}
-defbindings("WFrame", {
-    submap("Mod1+K", {
-        kpress("Right", "_:switch_next()"),
-        kpress("1", "_:switch_nth(1)"),
-   }),
-})
-\end{verbatim}
-
-
-\subsection{Key specifications}
-
-As seen above, the functions that create key binding specifications require
-a \var{keyspec} argument. This argument should be a string containing the
-name of a key as listed in the X header file \file{keysymdef.h}%
-\footnote{This file can usually be found in the directory
-\file{/usr/X11R6/include/X11/}.} without the \code{XK_} prefix.
-\index{keysymdef.h@\file{keysymdef.h}}
-Most of the key names are quite intuitive while some are not. For example,
-the \key{Enter} key on the main part of the keyboard has the less common
-name \key{Return} while the one the numpad is called \key{KP\_Enter}.
-
-The \var{keyspec} string may optionally have multiple ``modifier'' names
-followed by a plus sign (\code{+}) as a prefix. X defines the following
-modifiers:
-
-\key{Shift}, \key{Control}, \key{Mod1} to \key{Mod5},
-\key{AnyModifier} and \key{Lock}.
-\index{Shift@\key{Shift}}
-\index{Control@\key{Control}}
-\index{ModN@\key{ModN}}
-\index{AnyModifier@\key{AnyModifier}}
-\index{Lock@\key{Lock}}
-
-X allows binding all of these modifiers to almost any key and while this
-list of modifiers does not explicitly list keys such as 
-\key{Alt}\index{Alt@\key{Alt}} that are common on modern keyboards, such
-keys are bound to one of the \key{ModN}. On systems running XFree86
-\key{Alt} is usually \key{Mod1}. On Suns \key{Mod1} is the diamond key
-and \key{Alt} something else. One of the ``flying window'' keys on so
-called Windows-keyboards is probably mapped to \key{Mod3} if you have
-such a key. Use the program \file{xmodmap}\index{xmodmap@\file{xmodmap}}
-to find out what exactly is bound where. 
-
-Ion defaults to \key{AnyModifier} in submaps. This can sometimes lead to
-unwanted effects when the same key is used with and without explicitly
-specified modifiers in nested regions. For this reason, Ion recognises
-\key{NoModifier} as a special modifier that can be used to reset this
-default.
-
-Ion ignores the \key{Lock} modifier and any \key{ModN} ($N=1{\ldots} 5$)
-bound to \key{NumLock}\index{NumLock@\key{NumLock}} or
-\key{ScrollLock}\index{ScrollLock@\key{ScrollLock}}
-by default because such\footnote{Completely useless keys that should be
-gotten rid of in the author's opinion.} locking keys may otherwise
-cause confusion.
-
-
-\subsection{Button specifications}
-
-Button specifications are similar to key definitions but now
-instead of specifying modifiers and a key, you specify modifiers
-and one of the button names \key{Button1} to
-\key{Button5}\index{Button-n@\key{Button-n}}. Additionally the
-specification may end with an optional area name following an @-sign.
-Only frames currently support areas, and the supported values in this
-case are
-\codestr{border}, \codestr{tab}, \codestr{empty\_tab}, \codestr{client} 
-and \code{nil} (for the whole frame).
-
-For example, the following code binds dragging a tab with the first 
-button pressed to initiate tab drag\&drop handling:
-
-\begin{verbatim}
-defbindings("WFrame", {
-    mdrag("Button1@tab", "_:p_tabdrag()"),
-})
-\end{verbatim}
-
-
-\subsection{A further note on the default binding configuration}
-
-The default binding configuration contains references to the variables
-\code{META} and \code{ALTMETA} instead of directly using the default
-values of \codestr{Mod1+} and \codestr{} (nothing). As explained in
-section \ref{sec:walkthrough}, the definitions of these variables
-appear in \file{cfg\_ion.lua}. This way you can easily change the the
-modifiers used by all bindings in the default configuration without 
-changing the whole binding configuration. Quite a few people prefer 
-to use the Windows keys as modifiers because many applications already
-use \key{Alt}. Nevertheless, \key{Mod1} is the default as a key bound 
-to it is available virtually everywhere.
-
diff --git a/doc/conf-menus.tex b/doc/conf-menus.tex
deleted file mode 100644 (file)
index 531f63a..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-\section{Menus}
-\label{sec:menus}
-
-\subsection{Defining menus}
-
-\index{menus}
-\index{defmenu@\code{defmenu}}
-\index{menuentry@\code{menuentry}}
-\index{submenu@\code{submenu}}
-In the stock configuration file setup, menus are defined in the file
-\file{cfg\_menus.lua} as previously mentioned. The \file{mod\_menu} module
-must be loaded for one to be able to define menus, and this is done with
-the function \fnrefx{mod_menu}{defmenu} provided by it.
-
-Here's an example of the definition of a rather simple menu with a submenu:
-
-\begin{verbatim}
-defmenu("exitmenu", {
-    menuentry("Restart", "ioncore.restart()"),
-    menuentry("Exit", "ioncore.shutdown()"),
-})
-
-defmenu("mainmenu", {
-    menuentry("Lock screen", "ioncore.exec('xlock')"),
-    menuentry("Help", "mod_query.query_man(_)"),
-    submenu("Exit", "exitmenu"),
-})
-\end{verbatim}
-
-
-The \fnrefx{mod_menu}{menuentry} function is used to create an entry in the 
-menu with a title and an entry handler to be called when the menu entry
-is activated. The parameters to the handler are similar to those of binding
-handlers, and usually the same as those of the binding that opened the menu.
-
-The \fnrefx{mod_menu}{submenu} function is used to insert a submenu at that 
-point in the menu. (One could as well just pass a table with the menu
-entries, but it is not encouraged.)
-
-\subsection{Special menus}
-
-The menu module predefines the following special menus. These can be used
-just like the menus defined as above.
-
-\begin{tabularx}{\linewidth}{lX}
-    \tabhead{Menu name & Description}
-    \codestr{windowlist} & 
-    List of all client windows. Activating an entry jumps to that window. \\
-    \codestr{workspacelist} & 
-    List of all workspaces. Activating an entry jumps to that workspaces. \\
-    \codestr{focuslist} & 
-    List of client windows with recent activity in them, followed by 
-    previously focused client windows. \\
-    \codestr{focuslist\_} & 
-    List of previously focused client windows. \\
-    \codestr{stylemenu} &
-    List of available \file{look\_*.lua} style files. Activating an entry
-    loads that style and ask to save the selection. \\
-    \codestr{ctxmenu} &
-    Context menu for given object. \\
-\end{tabularx}
-
-
-\subsection{Defining context menus}
-
-The ``ctxmenu'' is a special menu that is assembled from a defined context
-menu for the object for which the menu was opened for, but also includes
-the context menus for the manager objects as submenus.
-
-Context menus for a given region class are defined with the
-\fnrefx{mod_menu}{defctxmenu} function. This is other ways similar to
-\fnrefx{mod_menu}{defmenu}, but the first argument instead being the name
-of the menu, the name of the region class to define context menu for.
-For example, here's part of the stock \type{WFrame} context menu 
-definition:
-
-\begin{verbatim}
-defctxmenu("WFrame", {
-    menuentry("Close", "WRegion.rqclose_propagate(_, _sub)"),
-    menuentry("Kill",  "WClientWin.kill(_sub)", "_sub:WClientWin"),
-})
-\end{verbatim}
-
-Some of the same ``modes'' as were available for some bindings
-may also be used: \codestr{WFrame.tiled}, \codestr{WFrame.floating},
-and \codestr{WFrame.transient}.
-
-
-\subsection{Displaying menus}
-\label{sec:menudisp}
-
-The following functions may be used to display menus from binding
-handlers (and elsewhere):
-
-\begin{tabularx}{\linewidth}{lX}
-    \tabhead{Function & Description}
-    \fnref{mod_menu.menu} &
-      Keyboard (or mouse) operated menus that open in the bottom-left corner
-      of a screen or frame. \\
-    \fnref{mod_menu.bigmenu} &
-      Same as previous, but uses another graphical style. \\
-    \fnref{mod_menu.pmenu} &
-      Mouse-operated drop-down menus. This function can only be called from a
-      mouse press or drag handler. \\
-    \fnref{mod_menu.grabmenu} &
-      A special version of \fnref{mod_menu.menu} that grabs the keyboard
-      and is scrolled with a given key until all modifiers have been released,
-      after which the selected entry is activated. \\
-\end{tabularx}
-
-The \fnrefx{mod_menu}{grabmenu} function takes the extra key parameter, but
-aside from that each of these functions takes three arguments, which when
-called from a binding handler, should be the parameters to the handler, and
-the name of the menu. For example, the following snippet of of code binds
-the both ways to open a context menu for a frame:
-
-\begin{verbatim}
-defbindings("WFrame", {
-    kpress(MOD1.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"),
-    mpress("Button3", "mod_menu.pmenu(_, _sub, 'ctxmenu')"),
-})
-\end{verbatim}
diff --git a/doc/conf-statusbar.tex b/doc/conf-statusbar.tex
deleted file mode 100644 (file)
index 2475552..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-\section{The statusbar}
-\label{sec:statusbar}
-
-The \file{mod\_statusbar} module provides a statusbar that adapts to 
-layouts of tilings, using only the minimal space needed. Ion only 
-supports one adaptive ``status display'' object per screen, so this
-statusbar is mutually exclusive with the embedded mode of \file{mod\_dock} 
-docks. 
-
-The statusbar is configured in \file{cfg\_statusbar.lua}. Typically,
-the configuration consists of two steps: creating a statusbar with
-\fnref{mod\_statusbar.create}, and then launching the separate
-\command{ion-statusd} status daemon process with 
-\fnref{mod_statusbar.launch_statusd}. This latter phase is done
-automatically, if it was not done by the configuration file, but
-the configuration file may pass extra parameters to \command{ion-statusd}
-monitors. (See Section \ref{sec:statusd} for more information on
-writing \command{ion-statusd} monitors.)
-
-A typical \file{cfg\_statusbar.lua} configuration might look as follows:
-
-
-\begin{verbatim}
--- Create a statusbar
-mod_statusbar.create{
-    screen = 0,     -- First screen, 
-    pos = 'bl',     -- bottom left corner
-    systray = true, -- Swallow systray windows
-
-    -- The template
-    template = "[ %date || load:% %>load || mail:% %>mail_new/%>mail_total ]"
-               .. " %filler%systray",
-}
-
--- Launch ion-statusd. 
-mod_statusbar.launch_statusd{
-    -- Date meter
-    date={
-        -- ISO-8601 date format with additional abbreviated day name
-        date_format='%a %Y-%m-%d %H:%M',
-    },      
-}
-\end{verbatim}
-
-
-\subsection{The template}
-
-The template specifies what is shown on the statusbar; for information
-on the other options to \fnref{mod_statusbar.create}, see the reference. 
-Strings of the form \codestr{\%spec} tokens specially interpreter by
-the statusbar; the rest appears verbatim. The \code{spec} typically
-consists of the name of the value/meter to display (beginning with a latin
-alphabet), but may be preceded by an alignment specifier and a number
-specifying the minimum width. The alignment specifiers are: \codestr{>}
-for right, \codestr{<} for left,  and \codestr{|} for centring. Additionally,
-space following \codestr{\%} (that is, the string \codestr{\% }), adds
-``stretchable space'' at that point. The special string \codestr{\%filler}
-may be used to flush the rest of the template to the right end of 
-the statusbar. 
-
-The stretchable space works as follows: \file{mod\_statusbar} remembers
-the widest string (in terms of graphical presentation) that it has
-seen for each meter, unless the width has been otherwise constrained.
-If there is stretchable space in the template, it tries to make the
-meter always take this much space, by stretching any space found in
-the direction indicated by the alignment specifier: the opposite
-direction for left or right alignment, and both for centring.
-
-\subsection{The systray}
-
-The special \codestr{\%systray} and \codestr{\%systray\_*}
-(\codestr{*} varying) monitors indicate where to place system tray 
-windows.  There may be multiple of these. KDE-protocol system tray
-icons are placed in \codestr{\%systray} automatically, unless disabled 
-with the \var{systray} option. Otherwise the \var{statusbar} winprop may
-be used to place any window in any particular \codestr{\%systray\_*}.
-
-\subsection{Monitors}
-
-The part before the first
-underscore of each monitor name, describes the script/plugin/module
-that provides the meter, and any configuration should be passed
-in the a corresponding sub-table \fnref{mod_statusbar.launch_statusd}.
-Ion comes with date, load and mail (for plain old mbox) 
-\command{ion-statusd} monitor scripts. More may be obtained from 
-the scripts repository \cite{scripts}. These included scripts 
-provide the following monitors and their options
-
-\subsubsection{Date}
-
-Options: \var{date_format}: The date format in as seen above, 
-in the usual \code{strftime} format. \code{formats}: table of
-formats for additional date monitors, the key being the name
-of the monitor (without the \codestr{date\_} prefix).
-
-Monitors: \codestr{date} and other user-specified ones with the
-\codestr{date\_} prefix.
-
-
-\subsubsection{Load}
-
-Options: \var{update_interval}: Update interval in milliseconds
-(default 10s). \var{important_threshold}: Threshold above which 
-the load is marked as important (default 1.5), so that the 
-drawing engine may be suitably hinted. \var{critical_threshold}: 
-Threshold above which  the load is marked as critical (default 4.0).
-
-
-Monitors: \codestr{load} (for all three values), 
-\codestr{load\_1min}, \codestr{load\_5min} and \codestr{load\_15min}.
-
-
-\subsubsection{Mail}
-
-Options: \var{update_interval}: Update interval in milliseconds
-(default 1min). \var{mbox}: mbox-format mailbox location
-(default \verb!$MAIL!). 
-\var{files}: list of additional mailboxes, the key giving the 
-name of the monitor.
-
-Monitors: \codestr{mail\_new}, \codestr{mail\_unread},
-\codestr{mail\_total}, and corresponding
-\codestr{mail\_*\_new}, \codestr{mail\_*\_unread}, and \codestr{mail\_*\_total}
-for the additional mailboxes (\codestr{*} varying).
diff --git a/doc/conf-winprops.tex b/doc/conf-winprops.tex
deleted file mode 100644 (file)
index db70e5f..0000000
+++ /dev/null
@@ -1,288 +0,0 @@
-\section{Winprops}
-\label{sec:winprops}
-
-The so-called ``winprops''\index{Winprops} can be used to change how
-specific windows are handled and to set up some kludges to deal with
-badly behaving applications. They are defined by calling the function
-\code{defwinprop} with a table containing the properties to set and the
-necessary information to identify a window. The currently supported
-winprops are listed below, and the subsequent subsections explain the
-usual method of identifying windows, and how to obtain this information.
-
-%\begin{table}
-%\begin{htmlonly}
-%\docode % latex2html kludge
-%\end{htmlonly}
-%\caption{Supported winprops}
-%\label{tab:winprops}
-
-\newenvironment{winprop}[2]{
-  \begin{function}%
-      % Sigh. (La)TeX is a mess.
-      %\index{%
-      %  \ifx\\#1\\%
-      %  #2\else#1\fi%
-      %  @\expandafter\var{#2}}
-      \item[Winprop:] \var{#1} (#2)
-      \item[Description:]
-}
-{
-  \end{function}
-}
-
-
-\begin{winprop}{acrobatic}{boolean}
-    \index{acrobatic@\var{acrobatic}}
-    Set this to \code{true} for Acrobat Reader. It has an annoying
-    habit of trying to manage its dialogs instead of setting them as
-    transients and letting the window manager do its job, causing
-    Ion and acrobat go a window-switching loop when a dialog is
-    opened. 
-\end{winprop}
-
-
-\begin{winprop}{float}{boolean}
-    \index{float@\var{float}}
-    Set this to open the window in a floating frame, when
-    in a group.
-\end{winprop}
-
-
-\begin{winprop}{fullscreen}{boolean}
-    \index{fullscreen@\var{fullscreen}}
-    Should the window be initially in full screen mode?
-\end{winprop}
-
-
-\begin{winprop}{ignore_cfgrq}{boolean}
-    \index{ignore-cfgrq@\var{ignore_cfgrq}}
-    Should configure requests on the window be ignored?
-    Only has effect on floating windows.
-\end{winprop}
-
-
-\begin{winprop}{ignore_net_active_window}{boolean}
-    \index{ignore-net-active-window@\var{ignore_net_active_window}}
-    Ignore extended WM hints \code{_NET_ACTIVE_WINDOW} request. 
-\end{winprop}
-
-
-\begin{winprop}{jumpto}{boolean}
-    \index{jumpto@\var{jumpto}}
-    Should a newly created client window always be made
-    active, even if the allocated frame isn't. 
-\end{winprop}
-
-
-\begin{winprop}{new_group}{string}
-    \index{new-group@\var{new_group}}
-    If the region specified by \code{target} winprop does not exist
-    (or that winprop is not set), create a new workspace using the 
-    previously stored layout (see \fnref{ioncore.deflayout}) named by
-    this property. After creating the workspace, \code{target} is 
-    attempted to be found again. (If that still fails, the newly 
-    created workspace is still asked to manage the client window.)
-\end{winprop}
-
-
-\begin{winprop}{oneshot}{boolean}
-    \index{oneshot@\var{oneshot}}
-    Discard this winprop after first use. 
-\end{winprop}
-
-
-\begin{winprop}{orientation}{string}
-    \index{orientation@\var{orientation}}
-    The orientation of the window: one of \codestr{vertical} or
-    \codestr{horizontal}. This is only useful when using the
-    window as a status display.
-\end{winprop}
-
-
-\begin{winprop}{statusbar}{string}
-    \index{statusbar@\var{statusbar}}
-    Put the window in the statusbar, in the named tray component,
-    (The default tray component is called simply \codestr{systray}, 
-    and others you give names to in your custom template, always 
-    prefixed by \codestr{systray\_}.
-\end{winprop}
-
-
-\begin{winprop}{switchto}{boolean}
-    \index{switchto@\var{switchto}}
-    Should a newly mapped client window be switched to within
-    its frame.
-\end{winprop}
-        
-
-\begin{winprop}{target}{string}
-    \index{target@\var{target}}
-    The name of an object (workspace, frame) that should manage 
-    windows of this type. See also \code{new_group}.
-\end{winprop}
-
-        
-\begin{winprop}{transient_mode}{string}
-    \index{transient-mode@\var{transient_mode}}
-    \codestr{normal}: No change in behaviour. \codestr{current}:
-    The window should be thought of as a transient for the current
-    active client window (if any) even if it is not marked as a
-    transient by the application. \codestr{off}: The window should 
-    be handled as a normal window even if it is marked as a
-    transient by the application. 
-\end{winprop}
-
-
-\begin{winprop}{transparent}{boolean}
-    \index{transparent@\var{transparent}}
-    Should frames be made transparent when this window is selected? \\
-\end{winprop}
-
-
-\subsection{Sizehint winprops}
-
-Additionally, the winprops 
-\code{max_size}\index{max-size@\var{max_size}},
-\code{min_size}\index{min-size@\var{min_size}},
-\code{aspect}\index{aspect@\var{aspect}},
-\code{resizeinc}\index{aspect@\var{resizeinc}},
-and
-\code{ignore_max_size}\index{ignore-max-size@\var{ignore_max_size}},
-\code{ignore_min_size}\index{ignore-min-size@\var{ignore_min_size}},
-\code{ignore_aspect}\index{ignore-aspect@\var{ignore_aspect}},
-\code{ignore_resizeinc}\index{ignore-aspect@\var{ignore_resizeinc}},
-may be used to override application-supplied size hints. The four
-first ones are tables with the fields \var{w} and \var{h}, indicating
-the width and height size hints in pixels, and the latter ignore
-winprop is a boolean. 
-
-Finally, the boolean
-\code{userpos}\index{userpos@\var{userpos}} option may be used to
-override the \code{USPosition} flag of the size hints. Normally,
-when this flag is set, Ion tries to respect the supplied window
-position more than when it is not set. Obviously, this makes sense
-only for floating windows.
-
-
-\subsection{Classes, roles and instances}
-\label{sec:classesrolesinstances}
-
-The identification information supported are
-\var{class}\index{class@\var{class}!winprop},
-\var{role}\index{role@\var{role}!winprop},
-\var{instance}\index{instance@\var{instance}!winprop},
-\var{name}\index{name@\var{name}!winprop},
-\var{is_transient}\index{is-transient@\var{is_transient}!winprop}, and
-\var{is_dockapp}\index{is-dockapp@\var{is_dockapp}!winprop}.
-It is not necessary to specify all of these fields.
-The first three are strings, and must exactly match the
-corresponding information obtained from the window's properties.
-The \var{name} field is a Lua-style regular expression matched against
-the window's title. The \var{is_transient} field is a boolean that can
-be used to include or exclude transients only, while the \var{is_dockapp}
-field is set by Ion for the dock windows of Window Maker dockapp protocol
-dockapps. Usually this is the only information available for these 
-\emph{icon} windows. 
-
-Ion looks for a matching winprop in the order listed by the following
-table. An 'E' indicates that the field must be set in the winprop
-and it must match the window's corresponding property exactly or, in
-case of \var{name}, the regular expression must match the window
-title. An asterisk '*' indicates that a winprop where the field is
-not specified (or is itself an asterisk in case of the first three
-fields) is tried.
-
-\begin{center}
-\begin{tabular}{llll}
-  \tabhead{\var{class} & \var{role} & \var{instance} & other}
-  E           & E          & E              & E \\
-  E           & E          & E              & * \\
-  E           & E          & *              & E \\
-  E           & E          & *              & * \\
-  E           & *          & E              & E \\
-  E           & *          & E              & * \\
-  E           & *          & *              & E \\
-  \vdots       & \vdots     & \vdots         & etc. \\
-\end{tabular}
-\end{center}
-
-If there are multiple matching winprops with the same
-\var{class}, \var{role} and \var{instance}, but other information
-different, the most recently defined one is used.
-
-
-\subsection{Finding window identification}
-
-The 'Window info' context menu entry (\key{Mod1+M} or \key{Button3} on a tab)
-can be used to list the identification information required to set winprops
-for a window and all the transient windows managed within it. 
-
-\index{xprop} 
-Another way to get the identification information is to use \command{xprop}.
-Simply run To get class and instance, simply run \command{xprop WM_CLASS}
-and click on the particular window of interest. The class is the latter of
-the strings while the instance is the former.  To get the role -- few
-windows have this property -- use the command \command{xprop WM_ROLE}. 
-This method, however, will not work on transients. 
-
-\index{transient}
-So-called ``transient windows'' are usually short-lived dialogs (although
-some programs abuse this property) that have a parent window that they are
-``transient for''. On tiled workspaces Ion displays these windows 
-simultaneously with the parent window at the bottom of the same frame.
-Unfortunately \command{xprop} is stupid and can't cope with this situation,
-returning the parent window's properties when the transient is clicked on.
-For this reason you'll have to do a little extra work to get the properties
-for that window.\footnote{There's a patch to \command{xprop} to
-fix this, but nothing seems to be happening with respect to including it in 
-XFree86.}
-
-Finally, it should be mentioned that too many authors these days
-``forget'' to set this vital identification to anything meaningful:
-everything except name is the same for all of the program's 
-windows, for example. Some other programs only set this information
-after the window has been mapped, i.e. the window manager has been
-told to start managing it, which is obviously too late. 
-Gtk applications in particular are often guilty on both counts.
-
-
-\subsection{Some common examples}
-
-\subsubsection{Acrobat Reader}
-
-The following is absolutely necessary for Acrobat reader:
-
-\begin{verbatim}
-defwinprop{
-    class = "AcroRead",
-    instance = "documentShell",
-    acrobatic = true,
-}
-\end{verbatim}
-
-\subsubsection{Forcing newly created windows in named frames}
-
-The following winprop should place xterm started with command-line parameter
-\mbox{\code{-name sysmon}} and running a system monitoring program in a
-particular frame:
-\begin{verbatim}
-defwinprop{
-    class = "XTerm",
-    instance = "sysmon",
-    target = "sysmonframe",
-}
-\end{verbatim}
-
-For this example to work, we have to somehow create a frame named
-\codestr{sysmonframe}. One way to do this is to make the following
-call in the \key{Mod1+F3} Lua code query:
-
-\begin{verbatim}
-mod_query.query_renameframe(_)
-\end{verbatim}
-
-Recall that \code{_} points to the multiplexer (frame or screen) in which 
-the query was opened. Running this code should open a new query prefilled
-with the current name of the frame. In our example we would change the 
-name to \codestr{sysmonframe}, but we could just as well have used the 
-default name formed from the frame's class name and an instance number.
diff --git a/doc/conf.tex b/doc/conf.tex
deleted file mode 100644 (file)
index 6ec99ec..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-
-\chapter{Basic configuration}
-\label{chap:config}
-
-This chapter should help your configure Ion to your liking. As  the your
-probably already know, Ion uses Lua as a configuration and extension 
-language. If you're new to it, you might first want to read some Lua 
-documentation as already suggested and pointed to in the Introduction
-before continuing with this chapter.
-
-Section \ref{sec:conffiles} is an overview of the multiple configuration
-files Ion uses and as a perhaps more understandable introduction to the
-general layout of the configuration files, a walk-through of the main 
-configuration file \file{cfg\_ion.lua} is provided in section 
-\ref{sec:walkthrough}.
-How keys and mouse action are bound to functions is described in detail
-in \ref{sec:bindings} and in section \ref{sec:winprops} winprops are
-explained. Finally, the statusbar is explained in \ref{sec:statusbar}.
-For a reference on exported functions, see section \ref{sec:exports}.
-
-\section{The configuration files}
-\label{sec:conffiles}
-
-Ion3, to which document applies, stores its stock configuration files in
-\file{/usr/local/etc/ion3/} unless you, the OS package maintainer or 
-whoever  installed the package on the system has modified the variables
-\code{PREFIX}\index{PREFIX@\code{PREFIX}} or
-\code{ETCDIR}\index{ETCDIR@\code{ETCDIR}} in
-\file{system.mk}\index{system.mk@\file{system.mk}} before compiling Ion.
-In the first case you probably know where to find the files and in 
-the other case the system administrator or the OS package maintainer
-should  have provided documentation to point to the correct location. 
-If these instructions are no help in locating the correct directory, 
-the command \code{locate cfg_ion.lua} might help provided \code{updatedb} 
-has been run recently. 
-
-User configuration files go in \file{\~{}/.ion3/}. 
-Ion always searches the user configuration file directory before the stock
-configuration file directory for files. Therefore, if you want to change
-some setting, it is advised against that you modify the stock configuration
-files in-place as subsequent installs of Ion will restore the stock
-configuration files. Instead you should always make a copy of the stock
-file in \file{\~{}/.ion3/} and modify this file. For sake of maintainability
-of your customised configuration, it is recommended against copying all of
-the files there. Only copy those files you actually need to modify. Most 
-simple customisations, such as changes in a few bindings, are best done 
-entirely within \file{cfg\_ion.lua}.
-
-All the configuration files are named \file{cfg\_*.lua} with the ``\file{*}''
-part varying. The configuration file for each module \file{mod\_modname} is
-\file{cfg\_modname.lua}, with \file{modname} varying by the module in
-question. Configuration files can also be compiled into \file{.lc} files,
-and these are attempted by the configuration file search routines before
-\file{.lua} files.
-
-The following table summarises these and other configuration
-files:
-
-\begin{tabularx}{\linewidth}{
-      p{\widthof{cfg-bindings.lua}}%
-      X}
-    \hline
-    File & Description \\
-    \hline
-    \file{cfg\_ion.lua} & 
-    The main configuration file \\
-    %
-    \file{cfg\_ioncore.lua} & 
-    Configuration file for Ion's core library.
-    Most of the bindings and menus are configured here. Bindings that are
-    specific to some module are configured in the module's configuration
-    file. For details, see section \ref{sec:bindings}. \\
-    %
-    \file{cfg\_kludges.lua} & 
-    Settings to get some applications behave more nicely have been 
-    collected here. See section \ref{sec:winprops}. \\
-    %
-    \file{cfg\_layouts.lua} & 
-    Some workspace layouts are defined here. \\
-    %
-    \file{cfg\_tiling.lua} 
-    \file{cfg\_query.lua} 
-    \file{cfg\_menu.lua} 
-    \file{cfg\_dock.lua} 
-    \file{cfg\_statusbar.lua} 
-    \dots & Configuration files for different modules. \\
-\end{tabularx}
-
-Additionally, there's the file \file{look.lua} that configures the 
-drawing engine, but it is covered in chapter \ref{chap:gr}.
-
-\section{A walk through \file{cfg\_ion.lua}}
-\label{sec:walkthrough}
-
-As already mentioned \file{cfg\_ion.lua} is Ion's main configuration
-file. Some basic 'feel' settings are usually configured there and
-the necessary modules and other configuration files configuring some 
-more specific aspects of Ion are loaded there. In this section we
-take a walk through the stock \file{cfg\_ion.lua}.
-Notice that most of the settings are commented-out (\verb!--! is a 
-line comment in Lua) in the actual file, as they're the defaults
-nevertheless.
-
-The first thing done in the file, is to set
-\begin{verbatim}
-META="Mod1+"
-ALTMETA=""
-\end{verbatim}
-These settings cause most of Ion's key bindings to use \key{Mod1} as the
-modifier key. If \code{ALTMETA} is set, it is used as modifier for the
-keys that don't normally use a modifier. Note that these two are Lua 
-variables used in the configuration files only, and not Ion settings. 
-For details on modifiers and key binding setup in general, see section
-\ref{sec:bindings}.
-
-Next we do some basic feel configuration:
-
-\begin{verbatim}
-ioncore.set{
-    dblclick_delay=250,
-    kbresize_delay=1500,
-}
-\end{verbatim}
-
-These two will set the delay between button presses in a double click, and
-the timeout to quit resize mode in milliseconds.
-
-\begin{verbatim}
-ioncore.set{
-    opaque_resize=true,
-    warp=true
-}
-\end{verbatim}
-
-The first of these two settings enables opaque resize mode: in move/resize
-move frames and other objects mirror you actions immediately. If opaque
-resize is disabled, a XOR rubber band is shown during the mode instead.
-This will, unfortunately, cause Ion to also grab the X server and has some
-side effects. 
-
-There are some other options as well; see the documentation
-for \fnref{ioncore.set} for details.
-
-As a next step, in the actual \file{cfg\_ion.lua} file, we load
-\file{cfg\_defaults.lua}. However, it is merely a convenience file for
-doing exactly what we will going through below, and what is commented
-out in the actual file. If you do not want to load what 
-\file{cfg\_defaults.lua} loads, just comment out the corresponding 
-line, and uncomment the lines for the files that you want:
-
-\begin{verbatim}
---dopath("cfg_defaults")
-dopath("cfg_ioncore")
-dopath("cfg_kludges")
-dopath("cfg_layouts")
-\end{verbatim}
-
-Most bindings and menus are defined in \file{cfg\_ioncore.lua}.
-Details on making such definitions follow in sections \ref{sec:bindings} 
-and \ref{sec:menus}, respectively. 
-some kludges or ``winprops'' to make some applications behave better
-under Ion are collected in \file{cfg\_kludges.lua}; see section
-\ref{sec:winprops} for details. In addition to these, this file
-lists quite a few statements of the form
-\begin{verbatim}
-ioncore.defshortening("[^:]+: (.*)(<[0-9]+>)", "$1$2$|$1$<...$2")
-\end{verbatim}
-These are used to configure how Ion attempts to shorten window titles
-when they do not fit in a Tab. The first argument is a POSIX regular
-expression that is used to match against the title and the next is
-a rule to construct a new title of a match occurs. This particular
-rule is used to shorten e.g. 'Foo: barbaz<3>' to 'barba{\ldots}<3>'; for
-details see the function reference entry for \fnref{ioncore.defshortening}.
-Finally, \file{cfg\_layouts.lua} defines some workspace layouts, available
-through the \key{F9} workspace creation query.
-
-To actually be able to do something besides display windows in full screen
-mode, we must next load some modules:
-
-\begin{verbatim}
-dopath("mod_query")
-dopath("mod_menu")
-dopath("mod_tiling")
-dopath("mod_statusbar")
---dopath("mod_dock")
-dopath("mod_sp")
-\end{verbatim}
-
-
-\input{conf-bindings.tex}
-
-\input{conf-menus.tex}
-
-\input{conf-winprops.tex}
-
-\input{conf-statusbar.tex}
-
-
diff --git a/doc/confintro.tex b/doc/confintro.tex
deleted file mode 100644 (file)
index a04af82..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-
-\chapter{Introduction}
-
-This document is an ``advanced user'' manual for the X11 window manager
-Ion, version 3. It is an attempt at documenting things that go into Ion's
-configuration files, how to configure Ion by simple modifications 
-to these files and how to write more complex extensions in Lua, the 
-lightweight configuration and scripting language used by Ion. 
-
-Readers unfamiliar with Lua might first want to first glance at some 
-Lua documentation at
-
-\begin{center}
-    \url{http://www.lua.org/docs.html}, or \\
-    \url{http://lua-users.org/wiki/LuaTutorial},
-\end{center}
-
-although this should not be strictly necessary for basic modifications
-of configuration files for anyone with at least some familiarity with
-programming languages.
-
-Back in this document, first in chapter \ref{chap:prelim} some key
-concepts and relations are explained. These include the module system,
-and Ion's object (or ``region'') and class hierarchies. While it may
-not be necessary to study the latter for basic copy-paste modifications
-of configuration files -- for that you should not really need this
-manual either -- it is, however, essential to for more extensive
-customisation, due to the semi-object-oriented nature of most of
-Ion's scripting interface. Knowing the different object types also
-helps dealing with the different binding ``contexts'' (see
-Section \ref{sec:bindings}) that to some extent mirror these classes.
-
-The new user, fed up with the default key bindings and eager to 
-just quickly configure Ion to his liking, may therefore just want
-to skip to Chapter \ref{chap:config}, and attempt to work from therefore.
-That chapter provides the very basic Ion configuration know-how
-is provided: all the different configuration files and their locations
-are explained, instructions are given to allow the reader to
-configure bindings and so-called ``winprops'', and the statusbar
-templates are also explained. 
-
-Next, Chapter \ref{chap:gr} explains the notion of drawing engines
-and graphical styles and how to write new looks for Ion. More advanced
-aspects of Ion's scripting interface are documented in Chapter 
-\ref{chap:tricks}. 
-Finally, most of the functions provided by Ion's scripting interface
-are listed and documented in the Function reference in Chapter
-\ref{sec:exports}. At the end of the document an alphabetical
-listing of all these functions may be found.
-
diff --git a/doc/cstyle.tex b/doc/cstyle.tex
deleted file mode 100644 (file)
index e7f5917..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-\section{C coding style}
-
-If you want to submit patches to Ion, you \textbf{must} follow my coding 
-style, even if you think it is the root of all evil. We don't want
-the code to be an incomprehensible mess of styles and I have better
-things to do than fix other people's style to match mine. The style
-should be obvious by studying the source, but here's a list of some
-things to take note of.
-
-\subsection{Whitespace}
-
-\begin{itemize}
-  \item Indentations of 4 with spaces.
-    
-  \item No extra spaces between operators, delimiters etc. except
-    \begin{itemize}
-      \item around logical and, or (\code{&&}, \code{||})
-      \item around the conditional \code{a ? b : c}
-      \item after commas and semicolons
-    \end{itemize}  
-    In my opinion this helps pointing out arithmetic or other
-    expressions within logical expressions or parameter lists.
-    
-  \item All kinds of labels are out-tended to the level of the higher
-    level block. For example:
-
-\begin{verbatim}    
-void foo()
-{
-again:
-    switch(asdf){
-    case 1:
-        ...
-        break;
-    default:
-        ...
-        break;
-    }
-}
-\end{verbatim}
-\end{itemize}
-
-\subsection{Braces}
-
-\begin{itemize}
-\item Opening brace is at the end of the line, except in function
-    bodies, where it is at the beginning of the line following
-    the definition.
-
-\item Never put the body of a control statement on the same line
-    with the statement (e.g. \verb!if(foo){ bar() }!).
-
-For example, the block
-\begin{verbatim}    
-void foo(int a, int b)
-{
-    if(a==b && c+d==e){
-        ...
-    }
-}
-\end{verbatim}
-
-has correct style while the block
-
-\begin{verbatim}   
-void foo(int a,int b) {
-    if (a == b && c + d == e) {
-        ...
-    }
-}
-\end{verbatim}
-
-does not.
-
-  \item The \code{else} keyword follows immediately after the closing brace of
-    previous \code{if}, if any. (This might change so I don't care if you put
-    it on the next line.)
-    
-  \item I have used the convention that control statement bodies containing
-    a single statement do not need braces around the block if, in case of
-    the \code{if} all the blocks in  \code{if ...  else if ... else}
-    contain just one statement. If you want to, just use braces in every 
-    case.
-\end{itemize}
-
-\subsection{Names}
-
-\begin{itemize}
-  \item Function and variable names only have lower case letters. Type
-    names are in mixed case while constants and macros (\code{#define}s)
-    are in upper case letters.
-\end{itemize}
-
-\subsection{Miscellaneous}
-
-\begin{itemize}
-  \item In the definition of a pointer variable, the asterisk is attached
-    to the variable name: \code{char *s;}. (One could claim this an 
-    exception to the second rule.)
-    
-  \item You might optionally want to use Jed's foldings to group blocks
-    of related code in a file to keep it organized:
-
-\begin{verbatim}    
-/*{{{ Many related functions */
-       
-void code()
-{
-    ...        
-}
-
-...
-
-/*}}}*/
-\end{verbatim}
-\end{itemize}
-
-I think that's mostly it. Study the source when in doubt.
diff --git a/doc/de.tex b/doc/de.tex
deleted file mode 100644 (file)
index 93402a7..0000000
+++ /dev/null
@@ -1,421 +0,0 @@
-
-\chapter{Graphical styles}
-\label{chap:gr}
-
-This chapter first gives in section \ref{sec:engines} a general outline 
-of how drawing engines are used, of style specifications and then
-in section \ref{sec:defaultde} describes how to specify styles
-for the default drawing engine. Some additional settings and
-user attributes are explained in Sections \ref{sec:grmisc}.
-
-
-\section{Drawing engines, style specifications and sub-styles}
-\label{sec:engines}
-\index{style}\index{drawing engine}
-
-Ion's drawing routines are abstracted into so-called drawing engine
-modules that can, again depending on the system, be dynamically
-loaded as needed. The drawing engine modules provide ``brushes''
-that objects can use to draw some high-level primitives such
-as borders and text boxes (in addition to simple text and rectangle
-drawing) on their windows and configure e.g. the shape and 
-background of the window. While the drawing engines therefore
-do not directly implement looks for each possible object (that
-would hardly be maintainable), different brush styles can be
-used to give a distinctive look to different objects and engines
-could interpret some styles as special cases. Style specifications 
-are strings of the form
-
-\begin{verbatim}
-element1-element2-...-elementn
-\end{verbatim}
-
-An example of such a style specification is \codestr{tab-frame};
-see the table in subsection \ref{sec:styles} for more styles.
-
-When an object asks for a brush of certain style, the selected
-drawing engine will attempt to find the closest match to this
-specification. The styles/brushes defined by the drawing engines 
-may have asterisks (\codestr{*}) as some of the elements indicating
-a match to anything. Exact matches are preferred to asterisk
-matches and longer matches to shorter. For example, let a brush
-for style \codestr{foo-bar-baz} be queried, then the following
-brushes are in order of preference:
-
-\begin{verbatim}
-foo-bar-baz
-foo-*-baz
-foo-bar
-*
-\end{verbatim}
-
-Some of the drawing primitives allow extra attributes to be
-specified, also in the form
-\begin{verbatim}
-attr1-attr2-...-attrn
-\end{verbatim}
-These extra attributes are called \emph{substyles}\index{substyle}
-and allow, for example, the state of the object to be indicated 
-by  different colour sets while keeping the interface at an 
-abstract level and the drawing engine completely ignorant 
-of the semantics -- only the writer of the drawing engine
-configuration file has to know them. However the drawing 
-engine can again interpret known substyles as special cases
-and the default engine indeed does so with frame tab 
-tag and drag states.)
-
-
-\subsection{Known styles and substyles}
-\label{sec:styles}
-
-\subsubsection{Frames}
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Style name & Description}
-\codestr{frame} & Style for frames. 
-       Substyle attributes: \codestr{active}/\codestr{inactive} 
-       (mutually exclusive) and
-       \codestr{quasiactive}/\codestr{not\_quasiactive}. 
-       A frame is ``quasiactive'' when an active region
-       has a back-link to it, such as a detached window. \\
-\codestr{frame-tiled} & A more specific style for tiled frames.
-        Substyle attributes as for \codestr{frame}. \\
-\codestr{frame-tiled-alt} & An alternative style for tiled frames.
-        Often used to disable the tab-bar. \\
-\codestr{frame-floating} & A more specific style for floating
-        frames. \\
-\codestr{frame-transient} & A more specific style for frames
-        containing transient windows. \\
-\end{tabularx}
-
-\subsubsection{Tabs and menu entries}
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Style name & Description}
-\codestr{tab} & Style for frames' tabs and menu entries. 
-       Substyle attributes:
-       \codestr{active}/\codestr{inactive} and
-       \codestr{selected}/\codestr{unselected} \\
-\codestr{tab-frame} & A more specific style for frames' tabs.
-        Additional substyle attributes include:
-       \codestr{tagged}/\codestr{not\_tagged},
-       \codestr{dragged}/\codestr{not\_dragged},
-       \codestr{activity}/\codestr{no\_activity},
-       \codestr{quasiactive}/\codestr{not\_quasiactive}. \\
-\codestr{tab-frame-tiled}, & \\
-\codestr{tab-frame-tiled-alt}, & \\
-\codestr{tab-frame-floating}, & \\
-\codestr{tab-frame-transient} & More specific styles for frames in the
-        different modes. \\
-\codestr{tab-menuentry} & A more specific style for entries in \type{WMenu}s. 
-        Additional substyle attributes include \codestr{submenu} and
-        occasionally also \codestr{activity} is used.\\
-\codestr{tab-menuentry-bigmenu} & 
-        An alternate style for entries in \type{WMenu}s. \\
-\end{tabularx}
-
-\subsubsection{The rest}
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Style name & Description}
-\codestr{input} & A style for \type{WInput}s. \\
-\codestr{input-edln} & A more specific style for \type{WEdln}s. 
-       Substyle attributes: \codestr{selection} for selected text and
-       \codestr{cursor} for the cursor indicating current editing point. \\
-\codestr{input-message} & A more specific style for \type{WMessage}s. \\
-\codestr{input-menu} & A more specific style for \type{WMenu}s. \\
-\codestr{input-menu-bigmenu} & An alternate style for \type{WMenu}s. \\
-\codestr{moveres\_display} & The box displaying position/size when
-       moving or resizing frames. \\
-\codestr{stdisp} & Any status display. \\
-\codestr{stdisp-dock} & The dock. \\
-\codestr{stdisp-statusbar} & The statusbar. Substyles include:
-    the name of any monitor/meter (such as \codestr{date}), and 
-    the supplied hint. Typical hints are: \codestr{normal},
-    \codestr{important}, and \codestr{critical}. \\
-\end{tabularx}
-
-
-\section{Defining styles for the default drawing engine}
-\label{sec:defaultde}
-
-Drawing engine style files are usually named
-\file{look\_foo.lua} where \file{foo} is the name of the
-style. The file that Ion loads on startup or when
-\fnref{gr.read_config} is called, however, is \file{look.lua}
-and should usually be symlinked to or a copy of of some
-\file{look\_foo.lua}.
-
-\subsection{The structure of the configuration files}
-
-The first thing to do in a style file is to choose the drawing
-engine, possibly loading the module as well. This is done
-with the following chunk of code.
-
-\begin{verbatim}
-if not gr.select_engine("de") then 
-    return 
-end
-\end{verbatim}
-
-The \fnref{gr.select_engine} function sees if the engine
-given as argument is registered (the default drawing engine is
-simply called ``de''). If the engine could not be found, it
-tries to load a module of the same name. If the engine still
-is not registered, \fnref{gr.select_engine} returns \codestr{false}
-and in this case we also exit the style setup script.
-If the engine was found, \fnref{gr.select_engine} sees that
-further requests for brushes are forwarded to that engine
-and returns \codestr{true}.
-
-Before defining new styles it may be a good idea to clear old
-styles from memory so if the old configuration defines more
-specific styles than the new, the old styles don't override 
-those specified by the new configuration. That can be done by
-calling
-
-\begin{verbatim}
-de.reset()
-\end{verbatim}
-
-After this the new styles can be defined with \fnref{de.defstyle}
-as explained in the next subsection. Finally, after the styles have
-been defined we must ask objects on the screen to look up new brushes
-to reflect the changes in configuration. This is done with
-
-\begin{verbatim}
-gr.refresh()
-\end{verbatim}
-
-\subsection{Defining the styles}
-
-Styles for the default drawing engine are defined with the
-function \fnref{de.defstyle}. It has two arguments the first being
-a style specification as explained in previous sections and the second
-a table whose fields describe the style:
-
-\begin{verbatim}
-de.defstyle("some-style", {
-    attribute = value,
-    ...
-})
-\end{verbatim}
-
-The supported attributes are described in tables below. The different
-border elements and styles referred to there are explained in Figure
-\ref{fig:borders}.
-
-\begin{figure}
-\begin{htmlonly}
-\docode % Kludge to make latex2html interpret contents instead of
-       % creating an image.
-\end{htmlonly}    
-\begin{verbatim}
-Elevated:        Inlaid:         Ridge:            Groove:        
-  hhhhhhhhhhhs     ............           hhhhhhhhhhhs      sssssssssssh
-  h..........s     .sssssssssh.           h..........s      s..........h
-  h.        .s     .s        h.           h.sssssssh.s      s.hhhhhhhs.h
-  h.        .s     .s        h.           h.s      h.s      s.h      s.h
-  h.        .s     .s        h.           h.shhhhhhh.s      s.hsssssss.h
-  h..........s     .shhhhhhhhh.           h..........s      s..........h
-  hsssssssssss     ............           hsssssssssss      shhhhhhhhhhh
-
-h = highlight, s = shadow, . = padding
-\end{verbatim}
-\caption{Sketch of different border styles and elements}
-\label{fig:borders}
-\end{figure}
-
-\subsubsection{Colours}
-
-Each of these fields a string of the form that can be
-passed to \code{XAllocNamedColor}. Valid strings are e.g.
-hexadecimal RGB specifications of the form
-\code{#RRGGBB} and colour names as specified
-in \file{/usr/X11R6/lib/X11/rgb.txt} (exact path varying).
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Field  & Description}
-\var{highlight_colour} &  
-       Colour for the ``highlight'' part of a border. \\
-\var{shadow_colour}    &  
-       Colour for the ``shadow'' part of a border. \\
-\var{foreground_colour} &  
-       Colour for the normal drawing operations, e.g. text. \\
-\var{background_colour} &  
-       Window background colour (unless transparency is enabled) and
-       background colour boxes. \\
-\var{padding_colour} &  
-       Colour for the ``padding'' part of a border border. Set to 
-       \var{background_colour} if unset. \\
-\end{tabularx}
-
-
-\subsubsection{Borders and widths}
-
-All other fields below except \var{border_style} are non-negative integers
-indicating a number of pixels.
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Field  & Description}
-\var{border_style} & A string indicating the style of border; one of
-                    \codestr{elevated}/\codestr{inlaid}/\codestr{ridge}/\codestr{groove}
-                    as seen in the above sketch. \\
-\var{border_sides} & A string indicating which sides of the border
-                     to draw: \codestr{all}/\codestr{tb}/\codestr{lr} for all, 
-                     top and bottom, and left and right. To control between
-                     left/right and top/bottom, use the pixel options below. \\
-\var{highlight_pixels} &  
-       Width of the highlight part of the border in pixels. \\
-\var{shadow_pixels}    &  
-       Width of the shadow part of the border in pixels. \\
-\var{padding_pixels} &  
-       Width of the padding part of the border in pixels. \\
-\var{spacing} &
-       Space to be left between all kinds of boxes. \\
-\end{tabularx}
-
-
-\subsubsection{Text}
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Field  & Description}
-\var{font} & Font to be used in text-drawing operations; standard X font
-            name. \\
-\var{text_align} & How text is to be aligned in text boxes/tabs; one of
-                  the strings \codestr{left}/\codestr{right}/\codestr{center}. \\
-\end{tabularx}
-
-
-\subsubsection{Miscellaneous}
-
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Field  & Description}
-\var{transparent_background} & Should windows' that use this style
-       background be transparent? true/false. \\
-\var{based_on} & The name of a previously defined style that this
-       style should be based on. \\
-\end{tabularx}
-
-
-\subsubsection{Substyles}
-
-As discussed in previous sections, styles may have substyles to e.g.
-indicate different states of the object being drawn. The ``de'' engine
-limits what can be configured in substyles to the set of colours in the
-first table above, but also specifically interprets for the main style
-\codestr{tab-frame} the substyles \codestr{*-*-tagged} and \codestr{*-*-*-dragged}
-by, respectively, drawing a right angle shape at the top right corner 
-of a tab and by shading the tab with a stipple pattern. Also for
-menus the substyles \codestr{*-*-submenu} are handled as a special case.
-
-Substyles are defined with the function \fnref{de.substyle} within the
-table defining the main style. The parameters to this function are 
-similar to those of \fnref{de.defstyle}.
-
-\begin{verbatim}
-de.defstyle("some-style", {
-   ...
-   de.substyle("some-substyle", {
-      ...
-   }),
-   ...
-})
-\end{verbatim}
-
-
-\subsection{An example}
-
-The following shortened segment from \file{look\_cleanviolet.lua}
-should help to clarify the matters discussed in the previous
-subsection.
-
-\begin{verbatim}
-de.defstyle("*", {
-    -- Gray background
-    highlight_colour = "#eeeeee",
-    shadow_colour = "#eeeeee",
-    background_colour = "#aaaaaa",
-    foreground_colour = "#000000",
-    
-    shadow_pixels = 1,
-    highlight_pixels = 1,
-    padding_pixels = 1,
-    spacing = 0,
-    border_style = "elevated",
-    
-    font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*",
-    text_align = "center",
-})
-
-de.defstyle("tab-frame", {
-    based_on = "*",
-    
-    de.substyle("active-selected", {
-        -- Violet tab
-        highlight_colour = "#aaaacc",
-        shadow_colour = "#aaaacc",
-        background_colour = "#666699",
-        foreground_colour = "#eeeeee",
-    }),
-
-    --  More substyles would follow ...
-})
-\end{verbatim}
-
-
-\section{Miscellaneous settings}
-\label{sec:grmisc}
-
-
-\subsection{Frame user attributes}
-
-The function \fnref{WFrame.set_grattr} may be used to give frames
-(and their tabs) arbitrary extra attributes to be passed to the
-drawing engine. Hence, by configuring such substyles in the style
-configuration files, and turning on the attribute when needed, 
-scripts may display visual cues related to the frame. There is
-also one extra attribute specially interpreted by the default
-drawing engine: the \codestr{numbered} attribute, which causes 
-numbers to be displayed on the tabs.
-
-
-\subsection{Extra fields for style \codestr{frame}}
-
-The following style fields are independent of the drawing engine used,
-but are related to objects' styles and therefore configured in the drawing
-engine configuration file.
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Field  & Description}
-\code{bar} & Controls the style of the tab-bar. Possible values
-        are the strings \codestr{none}, \codestr{inside}, \codestr{outside}
-        and \codestr{shaped}, with the last providing the PWM-style
-        tab-bars for floating frames. \\
-\code{floatframe_tab_min_w} & Minimum tab width in pixels for
-        the shaped style, given that this number times number of tabs
-        doesn't exceed frame width. \\
-\code{floatframe_bar_max_w_q} & Maximum tab-bar width quotient of
-       frame width for the shaped styles. A number in the 
-       interval $(0, 1]$.
-\end{tabularx}
-
-
-
-\subsection{Extra fields for style \codestr{dock}}
-
-\begin{tabularx}{\linewidth}{lX}
-\tabhead{Field  & Description}
-\code{outline_style} & How borders are drawn:
-                       \codestr{none} -- no border,
-                       \codestr{all} -- border around whole dock,
-                       \codestr{each} -- border around each dockapp. \\
-\code{tile_size} & A table with entries \codestr{width} and \codestr{height},
-       indicating the width and height of tiles in pixels.
-\end{tabularx}
-
-
-Hopefully that's enough to get you started in writing new style
-configuration files for Ion. When in doubt, study the existing
-style configuration files.
diff --git a/doc/designnotes.tex b/doc/designnotes.tex
deleted file mode 100644 (file)
index e22ed89..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-\section{Miscellaneous design notes}
-
-\subsection{Destroying \type{WObj}:s}
-
-To keep Ion's code as simple as possible yet safe, there are restrictions
-when the \type{WObj}
-\code{destroy_obj}\index{destroy-obj@\code{destroy_obj}}
-function that calls watches, the deinit routine and frees memory may
-be called directly. In all other cases the \code{mainloop_defer_destroy}%
-\index{mainloop-defer-destroy@\code{mainloop_defer_destroy}}
-function should be used to defer the call of \code{destroy_obj} until
-Ioncore returns to its main event loop. 
-
-Calling the \code{destroy_obj} function directly is allowed in the
-following cases:
-\begin{itemize}
-    \item In the deinit handler for another object. Usually managed objects
-      are destroyed this way.
-    \item The object was created during the current call to the function
-      that wants to get rid of the object. This is the case, for example,
-      when the function created a frame to manage some other object but for
-      some reason failed to reparent the object to this frame.
-    \item In a deferred action handler set with \code{mainloop_defer_action}%
-      \index{mainloop-defer-action@\code{mainloop_defer_action}}.
-      Like deferred destroys, other deferred actions are called when
-      Ioncore has returned to the main loop.
-    \item You are absolute sure that C code outside your code has no
-      references to the object.
-\end{itemize}
-
-If there are no serious side effects from deferring destroying the
-object or you're unsure whether it is safe to destroy the object
-immediately, use \code{mainloop_defer_destroy}.
-
-\subsection{The types \code{char*} and \code{const char*} as function
-  parameters and return values}
-
-The following rules should apply to using strings as return values and
-parameters to functions. 
-
-\begin{tabularx}{\linewidth}{lXX}
-    \tabhead{Type & Return value & Parameter}
-    \code{const char*} & The string is owned by the called function
-       and the caller is only quaranteed short-term read access to the
-       string. &
-       The called function may only read the string during its execution.
-       For further reference a copy must be made. \\
-    \code{char*} & The string is the caller's responsibility and it
-       \emph{must} free it when no longer needed. &
-       The called function may modify the string but the ``owner'' of
-       the string is case-dependant. \\
-\end{tabularx}
-
-
diff --git a/doc/exact-version b/doc/exact-version
deleted file mode 100644 (file)
index b4bfe8c..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-
-Context:
-
-[TAG ion-doc-3rc-20070927
-Tuomo Valkonen <tuomov@iki.fi>**20070927162337] 
diff --git a/doc/fnref.tex b/doc/fnref.tex
deleted file mode 100644 (file)
index 7c6e45a..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-\chapter{Function reference}
-\label{sec:exports}
-
-\section{Functions defined in \file{ioncore}}
-\label{sec:ioncoreref}
-\input{ioncore.exports}
-
-\section{Functions defined in \file{mod\_tiling}}
-\label{sec:tilingref}
-\input{mod_tiling.exports}
-
-%\section{Functions defined in \file{mod\_panews}}
-%\label{sec:panewsref}
-%\input{mod_panews.exports}
-
-\section{Functions defined in \file{mod\_query}}
-\label{sec:queryref}
-\input{mod_query.exports}
-
-\section{Functions defined in \file{mod\_menu}}
-\label{sec:menuref}
-\input{mod_menu.exports}
-
-\section{Functions defined in \file{mod\_dock}}
-\label{sec:dockref}
-\input{mod_dock.exports}
-
-\section{Functions defined in \file{mod\_sp}}
-\label{sec:spref}
-\input{mod_sp.exports}
-
-\section{Functions defined in \file{mod\_statusbar}}
-\label{sec:statusbarref}
-\input{mod_statusbar.exports}
-
-\section{Functions defined in \file{de}}
-\label{sec:deref}
-\input{de.exports}
-
-\section{Hooks}
-\label{sec:hookref}
-\input{hookref}
-
-\section{Miscellaneous}
-\label{sec:miscref}
-\input{miscref}
diff --git a/doc/fullhierarchy.tex b/doc/fullhierarchy.tex
deleted file mode 100644 (file)
index 51a0e84..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-\chapter{Full class hierarchy visible to Lua-side}
-\label{app:fullhierarchy}
-  
-%\begin{figure}
-%\begin{htmlonly}
-%\docode % latex2html kludge
-%\end{htmlonly}
-{\small
-\begin{verbatim}
-    Obj
-     |-->WHook
-     |-->WTimer
-     |-->WMoveresMode
-     |-->WRegion
-     |    |-->WClientWin
-     |    |-->WWindow
-     |    |    |-->WMPlex
-     |    |    |    |-->WFrame
-     |    |    |    |-->WScreen
-     |    |    |         |->WRootWin
-     |    |    |-->WInfoWin
-     |    |    |    |-->WStatusBar (mod_statusbar)
-     |    |    |-->WMenu (mod_menu)
-     |    |    |-->WInput (mod_query)
-     |    |         |-->WEdln (mod_query)
-     |    |         |-->WMessage (mod_query)
-     |    |-->WGroup
-     |    |    |-->WGroupWS
-     |    |    |-->WGroupCW
-     |    |-->WTiling (mod_tiling)
-     |-->WSplit (mod_tiling)
-          |-->WSplitInner (mod_tiling)
-          |    |-->WSplitSplit (mod_tiling)
-          |         |-->WSplitFloat (mod_tiling)
-          |-->WSplitRegion (mod_tiling)
-               |-->WSplitST (mod_tiling)
-\end{verbatim}
-}
-%\caption{Full Ioncore and most common modules' class hierarchy
-%  visible to Lua side.}
-%\label{fig:fullclasshierarchy}
-%\end{figure}
diff --git a/doc/gpl.tex b/doc/gpl.tex
deleted file mode 100644 (file)
index d4de1de..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-\xchapter{The GNU General Public License}
-
-\begin{center}
-{\parindent 0in
-
-Version 2, June 1991
-
-Copyright \copyright\ 1989, 1991 Free Software Foundation, Inc.
-
-\bigskip
-
-59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
-
-\bigskip
-
-Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-}
-\end{center}
-
-\begin{center}
-{\bf\large Preamble}
-\end{center}
-
-
-The licenses for most software are designed to take away your freedom to
-share and change it.  By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software---to
-make sure the software is free for all its users.  This General Public
-License applies to most of the Free Software Foundation's software and to
-any other program whose authors commit to using it.  (Some other Free
-Software Foundation software is covered by the GNU Library General Public
-License instead.)  You can apply it to your programs, too.
-
-When we speak of free software, we are referring to freedom, not price.
-Our General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service
-if you wish), that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free programs;
-and that you know you can do these things.
-
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights.  These
-restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-For example, if you distribute copies of such a program, whether gratis or
-for a fee, you must give the recipients all the rights that you have.  You
-must make sure that they, too, receive or can get the source code.  And
-you must show them these terms so they know their rights.
-
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software.  If
-the software is modified by someone else and passed on, we want its
-recipients to know that what they have is not the original, so that any
-problems introduced by others will not reflect on the original authors'
-reputations.
-
-Finally, any free program is threatened constantly by software patents.
-We wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program
-proprietary.  To prevent this, we have made it clear that any patent must
-be licensed for everyone's free use or not licensed at all.
-
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-\begin{center}
-{\Large \sc Terms and Conditions For Copying, Distribution and
-  Modification}
-\end{center}
-
-
-%\renewcommand{\theenumi}{\alpha{enumi}}
-\begin{enumerate}
-
-\addtocounter{enumi}{-1}
-
-\item 
-
-This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the
-terms of this General Public License.  The ``Program'', below, refers to
-any such program or work, and a ``work based on the Program'' means either
-the Program or any derivative work under copyright law: that is to say, a
-work containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language.  (Hereinafter,
-translation is included without limitation in the term ``modification''.)
-Each licensee is addressed as ``you''.
-
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-\item You may copy and distribute verbatim copies of the Program's source
-  code as you receive it, in any medium, provided that you conspicuously
-  and appropriately publish on each copy an appropriate copyright notice
-  and disclaimer of warranty; keep intact all the notices that refer to
-  this License and to the absence of any warranty; and give any other
-  recipients of the Program a copy of this License along with the Program.
-
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-\item
-
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-\begin{enumerate}
-
-\item 
-
-You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-\item
-
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-\item
-If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License.  (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-
-\end{enumerate}
-
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-\item
-You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-\begin{enumerate}
-
-\item
-
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-\item
-
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-\item
-
-Accompany it with the information you received as to the offer
-to distribute corresponding source code.  (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-
-\end{enumerate}
-
-
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-\item
-You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-\item
-You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-\item
-Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-\item
-If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-\item
-If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-\item
-The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-\item
-If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-\begin{center}
-{\Large\sc
-No Warranty
-}
-\end{center}
-
-\item
-{\sc Because the program is licensed free of charge, there is no warranty
-for the program, to the extent permitted by applicable law.  Except when
-otherwise stated in writing the copyright holders and/or other parties
-provide the program ``as is'' without warranty of any kind, either expressed
-or implied, including, but not limited to, the implied warranties of
-merchantability and fitness for a particular purpose.  The entire risk as
-to the quality and performance of the program is with you.  Should the
-program prove defective, you assume the cost of all necessary servicing,
-repair or correction.}
-
-\item
-{\sc In no event unless required by applicable law or agreed to in writing
-will any copyright holder, or any other party who may modify and/or
-redistribute the program as permitted above, be liable to you for damages,
-including any general, special, incidental or consequential damages arising
-out of the use or inability to use the program (including but not limited
-to loss of data or data being rendered inaccurate or losses sustained by
-you or third parties or a failure of the program to operate with any other
-programs), even if such holder or other party has been advised of the
-possibility of such damages.}
-
-\end{enumerate}
-
-
-\begin{center}
-{\Large\sc End of Terms and Conditions}
-\end{center}
-
-
-\pagebreak[2]
-
-\xsectionstar{Appendix: How to Apply These Terms to Your New Programs}
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
-  To do so, attach the following notices to the program.  It is safest to
-  attach them to the start of each source file to most effectively convey
-  the exclusion of warranty; and each file should have at least the
-  ``copyright'' line and a pointer to where the full notice is found.
-
-\begin{quote}
-one line to give the program's name and a brief idea of what it does. \\
-Copyright (C) yyyy  name of author \\
-
-This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-\end{quote}
-
-Also add information on how to contact you by electronic and paper mail.
-
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-\begin{quote}
-Gnomovision version 69, Copyright (C) yyyy  name of author \\
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. \\
-This is free software, and you are welcome to redistribute it
-under certain conditions; type `show c' for details.
-\end{quote}
-
-
-The hypothetical commands {\tt show w} and {\tt show c} should show the
-appropriate parts of the General Public License.  Of course, the commands
-you use may be called something other than {\tt show w} and {\tt show c};
-they could even be mouse-clicks or menu items---whatever suits your
-program.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary.  Here is a sample; alter the names:
-
-\begin{quote}
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program \\
-`Gnomovision' (which makes passes at compilers) written by James Hacker. \\
-
-signature of Ty Coon, 1 April 1989 \\
-Ty Coon, President of Vice
-\end{quote}
-
-
-This General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications
-with the library.  If this is what you want to do, use the GNU Library
-General Public License instead of this License.
diff --git a/doc/hookref.tex b/doc/hookref.tex
deleted file mode 100644 (file)
index 5e0c05f..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-
-\begin{function}
-    \index{clientwin-do-manage-alt@\code{clientwin_do_manage_alt}}
-    \hookname{clientwin_do_manage_alt}
-    \hookparams{(WClientWin, table)}
-    \begin{funcdesc}
-      Called when we want to manage a new client window.
-      The table argument contains the following fields:
-      
-      \begin{tabularx}{\linewidth}{llX}
-          \tabhead{Field & Type & Description}
-          \var{switchto} & bool & Do we want to switch to the client window. \\
-          \var{jumpto} & bool & Do we want to jump to the client window. \\
-          \var{userpos} & bool & Geometry set by user. \\
-          \var{dockapp} & bool & Client window is a dock-app. \\
-          \var{maprq} & bool & Map request (and not initialisation scan). \\
-          \var{gravity} & number & Window gravity. \\
-          \var{geom} & table & Requested geometry; \var{x}, \var{y}, \var{w}, \var{h}.\\
-          \var{tfor} & WClientWin & Transient for window.
-      \end{tabularx}
-
-      This hook is not called in protected mode and can be used for
-      arbitrary placement policies (deciding in which workspace a new
-      \type{WClientWin} should go). In this case, you can call
-\begin{verbatim}
-reg:attach(cwin)
-\end{verbatim}
-      where \var{reg} is the region where the window should go, and
-      \var{cwin} is the first argument of the function added to the
-      hook.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{clientwin-mapped-hook@\code{clientwin_mapped_hook}}
-    \hookname{clientwin_mapped_hook}
-    \hookparams{WClientWin}
-    \begin{funcdesc}
-      Called when we have started to manage a client window.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{clientwin-property-change-hook@\code{clientwin_property_change_hook}}
-    \hookname{clientwin_property_change_hook}
-    \hookparams{(WClientWin, integer)}
-    \begin{funcdesc}
-      Called when the property identified by the parameter atom id
-      (integer) has changed on a client window.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{clientwin-unmapped-hook@\code{clientwin_unmapped_hook}}
-    \hookname{clientwin_unmapped_hook}
-    \hookparams{number}
-    \begin{funcdesc}
-      Called when we no longer manage a client window. The parameter
-      is the X ID of the window; see \fnref{WClientWin.xid}.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{frame-managed-changed-hook@\code{frame_managed_changed_hook}}
-    \hookname{frame_managed_changed_hook}
-    \hookparams{table}
-    \begin{funcdesc}
-      Called when there are changes in the objects managed by a frame
-      or their order. The table parameter has the following fields:
-
-      \begin{tabularx}{\linewidth}{llX}
-          \tabhead{Field & Type & Description}
-          \var{reg} & WFrame & The frame in question \\
-          \var{mode} & string & \codestr{switchonly}, \codestr{reorder},
-                                \codestr{add} or \codestr{remove} \\
-          \var{sw} & bool & Switch occurred \\
-          \var{sub} & WRegion & The managed region (primarily) affected \\
-      \end{tabularx}
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{ioncore-sigchld-hook@\code{ioncore_sigchld_hook}}
-    \hookname{ioncore_sigchld_hook}
-    \hookparams{integer}
-    \begin{funcdesc}
-      Called when a child process has exited. The parameter
-      is the PID of the process.
-    \end{funcdesc}
-\end{function}
-
-\begin{function}
-    \index{ioncore-deinit-hook@\code{ioncore_deinit_hook}}
-    \hookname{ioncore_deinit_hook}
-    \hookparams{()}
-    \begin{funcdesc}
-      Called when Ion is deinitialising and about to quit.
-    \end{funcdesc}
-\end{function}
-
-%ioncore_handle_event_alt -- not available to lua side
-
-\begin{function}
-    \index{ioncore-post-layout-setup-hook@\code{ioncore_post_layout_setup_hook}}
-    \hookname{ioncore_post_layout_setup_hook}
-    \hookparams{()}
-    \begin{funcdesc}
-      Called when Ion has done all initialisation and is almost ready to
-      enter the main-loop, except no windows are yet being managed.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{ioncore-snapshot-hook@\code{ioncore_snapshot_hook}}
-    \hookname{ioncore_snapshot_hook}
-    \hookparams{()}
-    \begin{funcdesc}
-      Called to signal scripts and modules to save their state (if any).
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{ioncore-submap-ungrab-hook@\code{ioncore_submap_ungrab_hook}}
-    \hookname{ioncore_submap_ungrab_hook}
-    \hookparams{()}
-    \begin{funcdesc}
-      This hook is used to signal whenever Ion leaves the submap grab mode.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{tiling-placement-alt@\code{tiling_placement_alt}}
-    \hookname{tiling_placement_alt}
-    \hookparams{table}
-    \begin{funcdesc}
-      Called when a client window is about to be managed by a \type{WTiling}
-      to allow for alternative placement policies. The table has the
-      following fields:
-      \begin{tabularx}{\linewidth}{llX}
-          \tabhead{Field & Type & Description}
-          \var{tiling} & \type{WTiling} & The tiling \\
-          \var{reg} & \type{WRegion} & The region (always a WClientWin at 
-              the moment) to be placed \\
-          \var{mp} & \type{table} & This table contains the same fields as
-            the parameter of \fnref{clientwin_do_manage_alt} \\
-          \var{res_frame} & \type{WFrame} & A successful handler should 
-            return the target frame here. \\
-      \end{tabularx}
-      This hook is just for placing within a given workspace after the
-      workspace has been decided by the default workspace selection
-      policy. It is called in protected mode. For arbitrary placement
-      policies, \fnref{clientwin_do_manage_alt} should be used; it
-      isn't called in protected mode,
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{region-do-warp-alt@\code{region_do_warp_alt}}
-    \hookname{region_do_warp_alt}
-    \hookparams{WRegion}
-    \begin{funcdesc}
-      This alt-hook exist to allow for alternative pointer warping
-      implementations.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{screen-managed-changed-hook@\code{screen_managed_changed_hook}}
-    \hookname{screen_managed_changed_hook}
-    \hookparams{table}
-    \begin{funcdesc}
-      Called when there are changes in the objects managed by a screen
-      or their order. The table parameter is similar to that of
-      \fnref{frame_managed_changed_hook}.
-    \end{funcdesc}
-\end{function}
-
-
-\begin{function}
-    \index{region-notify-hook@\code{region_notify_hook}}
-    \hookname{region_notify_hook}
-    \hookparams{(WRegion, string)}
-    \begin{funcdesc}
-      Signalled when something (minor) has changed in relation to 
-      the first parameter region. The string argument gives the
-      change:
-      
-      \begin{tabularx}{\linewidth}{lX}
-          \tabhead{String & Description}
-          \code{deinit} & The region is about to be deinitialised. \\
-          \code{activated} & The region has received focus. \\
-          \code{inactivated} & The region has lost focus. \\
-          \code{activity} & There's been activity in the region itself. \\
-          \code{sub_activity} & There's been activity in some sub-region. \\
-          \code{name} & The name of the region has changed. \\
-          \code{unset_manager} & The region no longer has a manager. \\
-          \code{set_manager} & The region now has a manager. \\
-          \code{tag} & Tagging state has changed. \\
-          \code{pseudoactivated} & The region has become pseudo-active
-                      (see below). \\
-          \code{pseudoinactivated} & The region is no longer pseudo-active. \\
-      \end{tabularx}
-
-      A region is pseudo-active, when a) it is itself not active (does
-      not not have the focus, and may not even have a window that could
-      have it), but b) some region managed by it is active.
-    \end{funcdesc}
-\end{function}
-
-
diff --git a/doc/ionconf.dvi.gz b/doc/ionconf.dvi.gz
deleted file mode 100644 (file)
index 4c8973b..0000000
Binary files a/doc/ionconf.dvi.gz and /dev/null differ
diff --git a/doc/ionconf.out b/doc/ionconf.out
deleted file mode 100644 (file)
index a8fb3c0..0000000
+++ /dev/null
@@ -1,95 +0,0 @@
-\BOOKMARK [0][-]{chapter.1}{ Introduction}{}
-\BOOKMARK [0][-]{chapter.2}{ Preliminaries: Key concepts and relations}{}
-\BOOKMARK [1][-]{section.2.1}{ Modules}{chapter.2}
-\BOOKMARK [1][-]{section.2.2}{ Class and object hierarchies}{chapter.2}
-\BOOKMARK [2][-]{subsection.2.2.1}{ Class hierarchy}{section.2.2}
-\BOOKMARK [2][-]{subsection.2.2.2}{ Object hierarchies: WRegion parents and managers}{section.2.2}
-\BOOKMARK [2][-]{subsection.2.2.3}{ Summary}{section.2.2}
-\BOOKMARK [0][-]{chapter.3}{ Basic configuration}{}
-\BOOKMARK [1][-]{section.3.1}{ The configuration files}{chapter.3}
-\BOOKMARK [1][-]{section.3.2}{ A walk through cfg\137ion.lua}{chapter.3}
-\BOOKMARK [1][-]{section.3.3}{ Keys and rodents}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.3.1}{ Binding handlers and special variables}{section.3.3}
-\BOOKMARK [2][-]{subsection.3.3.2}{ Guards}{section.3.3}
-\BOOKMARK [2][-]{subsection.3.3.3}{ Defining the bindings}{section.3.3}
-\BOOKMARK [2][-]{subsection.3.3.4}{ Examples}{section.3.3}
-\BOOKMARK [2][-]{subsection.3.3.5}{ Key specifications}{section.3.3}
-\BOOKMARK [2][-]{subsection.3.3.6}{ Button specifications}{section.3.3}
-\BOOKMARK [2][-]{subsection.3.3.7}{ A further note on the default binding configuration}{section.3.3}
-\BOOKMARK [1][-]{section.3.4}{ Menus}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.4.1}{ Defining menus}{section.3.4}
-\BOOKMARK [2][-]{subsection.3.4.2}{ Special menus}{section.3.4}
-\BOOKMARK [2][-]{subsection.3.4.3}{ Defining context menus}{section.3.4}
-\BOOKMARK [2][-]{subsection.3.4.4}{ Displaying menus}{section.3.4}
-\BOOKMARK [1][-]{section.3.5}{ Winprops}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.5.1}{ Sizehint winprops}{section.3.5}
-\BOOKMARK [2][-]{subsection.3.5.2}{ Classes, roles and instances}{section.3.5}
-\BOOKMARK [2][-]{subsection.3.5.3}{ Finding window identification}{section.3.5}
-\BOOKMARK [2][-]{subsection.3.5.4}{ Some common examples}{section.3.5}
-\BOOKMARK [1][-]{section.3.6}{ The statusbar}{chapter.3}
-\BOOKMARK [2][-]{subsection.3.6.1}{ The template}{section.3.6}
-\BOOKMARK [2][-]{subsection.3.6.2}{ The systray}{section.3.6}
-\BOOKMARK [2][-]{subsection.3.6.3}{ Monitors}{section.3.6}
-\BOOKMARK [0][-]{chapter.4}{ Graphical styles}{}
-\BOOKMARK [1][-]{section.4.1}{ Drawing engines, style specifications and sub-styles}{chapter.4}
-\BOOKMARK [2][-]{subsection.4.1.1}{ Known styles and substyles}{section.4.1}
-\BOOKMARK [1][-]{section.4.2}{ Defining styles for the default drawing engine}{chapter.4}
-\BOOKMARK [2][-]{subsection.4.2.1}{ The structure of the configuration files}{section.4.2}
-\BOOKMARK [2][-]{subsection.4.2.2}{ Defining the styles}{section.4.2}
-\BOOKMARK [2][-]{subsection.4.2.3}{ An example}{section.4.2}
-\BOOKMARK [1][-]{section.4.3}{ Miscellaneous settings}{chapter.4}
-\BOOKMARK [2][-]{subsection.4.3.1}{ Frame user attributes}{section.4.3}
-\BOOKMARK [2][-]{subsection.4.3.2}{ Extra fields for style `frame'}{section.4.3}
-\BOOKMARK [2][-]{subsection.4.3.3}{ Extra fields for style `dock'}{section.4.3}
-\BOOKMARK [0][-]{chapter.5}{ Scripting}{}
-\BOOKMARK [1][-]{section.5.1}{ Hooks}{chapter.5}
-\BOOKMARK [1][-]{section.5.2}{ Referring to regions}{chapter.5}
-\BOOKMARK [2][-]{subsection.5.2.1}{ Direct object references}{section.5.2}
-\BOOKMARK [2][-]{subsection.5.2.2}{ Name-based lookups}{section.5.2}
-\BOOKMARK [1][-]{section.5.3}{ Alternative winprop selection criteria}{chapter.5}
-\BOOKMARK [1][-]{lstlisting.5.-267}{ Writing !ion-statusd! monitors}{chapter.5}
-\BOOKMARK [0][-]{chapter.6}{ Function reference}{}
-\BOOKMARK [1][-]{section.6.1}{ Functions defined in ioncore}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.1.1}{ WClientWin functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.2}{ WFrame functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.3}{ WGroup functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.4}{ WGroupCW functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.5}{ WGroupWS functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.6}{ WHook functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.7}{ WInfoWin functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.8}{ WMPlex functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.9}{ WMoveresMode functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.10}{ WRegion functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.11}{ WRootWin functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.12}{ WScreen functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.13}{ WTimer functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.14}{ WWindow functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.15}{ global functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.16}{ gr functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.17}{ string functions}{section.6.1}
-\BOOKMARK [2][-]{subsection.6.1.18}{ table functions}{section.6.1}
-\BOOKMARK [1][-]{section.6.2}{ Functions defined in mod\137tiling}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.2.1}{ WSplit functions}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.2}{ WSplitInner functions}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.3}{ WSplitRegion functions}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.4}{ WSplitSplit functions}{section.6.2}
-\BOOKMARK [2][-]{subsection.6.2.5}{ WTiling functions}{section.6.2}
-\BOOKMARK [1][-]{section.6.3}{ Functions defined in mod\137query}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.3.1}{ WComplProxy functions}{section.6.3}
-\BOOKMARK [2][-]{subsection.6.3.2}{ WEdln functions}{section.6.3}
-\BOOKMARK [2][-]{subsection.6.3.3}{ WInput functions}{section.6.3}
-\BOOKMARK [1][-]{section.6.4}{ Functions defined in mod\137menu}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.4.1}{ WMenu functions}{section.6.4}
-\BOOKMARK [1][-]{section.6.5}{ Functions defined in mod\137dock}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.5.1}{ WDock functions}{section.6.5}
-\BOOKMARK [1][-]{section.6.6}{ Functions defined in mod\137sp}{chapter.6}
-\BOOKMARK [1][-]{section.6.7}{ Functions defined in mod\137statusbar}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.7.1}{ WStatusBar functions}{section.6.7}
-\BOOKMARK [1][-]{section.6.8}{ Functions defined in de}{chapter.6}
-\BOOKMARK [1][-]{section.6.9}{ Hooks}{chapter.6}
-\BOOKMARK [1][-]{section.6.10}{ Miscellaneous}{chapter.6}
-\BOOKMARK [2][-]{subsection.6.10.1}{ Size policies}{section.6.10}
-\BOOKMARK [0][-]{appendix.A}{ The GNU General Public License}{}
-\BOOKMARK [0][-]{appendix.B}{ Full class hierarchy visible to Lua-side}{}
-\BOOKMARK [0][-]{section*.19}{Index}{}
-\BOOKMARK [0][-]{section*.21}{Bibliography}{}
diff --git a/doc/ionconf.ps.gz b/doc/ionconf.ps.gz
deleted file mode 100644 (file)
index ae751c6..0000000
Binary files a/doc/ionconf.ps.gz and /dev/null differ
diff --git a/doc/ionconf.tex b/doc/ionconf.tex
deleted file mode 100644 (file)
index aa4aaa6..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-\documentclass[english,a4paper,11pt,oldtoc,mctitle]{rapport3}
-\input{macros}
-
-% For including some files from articles
-\newcommand{\xchapter}[1]{\chapter{#1}}
-\newcommand{\xsection}[1]{\section{#1}}
-\newcommand{\xsectionstar}[1]{\section*{#1}}
-\newcommand{\xsubsection}[1]{\subsection{#1}}
-
-
-\title{Configuring and extending Ion3 with Lua}
-\author{Tuomo Valkonen \\ tuomov at iki.fi}
-\date{2007-09-27}
-
-\makeindex
-
-
-\begin{document}
-
-\maketitle
-
-Configuring and extending Ion3 with Lua\\
-Copyright \copyright\  2003--2007 Tuomo Valkonen.
-
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-chapter entitled ``GNU General Public License'' for more details.
-
-\tableofcontents
-
-\input{confintro}
-
-\input{prelim}
-
-\input{conf}
-
-\input{de}
-
-\input{tricks}
-
-\input{fnref}
-
-\appendix
-
-\input{gpl}
-
-\input{fullhierarchy}
-
-\chapter*{List of functions}
-\markboth{\MakeUppercase{List of functions}}%
-         {\MakeUppercase{List of functions}}%
-
-%begin{latexonly}
-\makeatletter
-\def\fnlisti#1{\@dottedtocline{1}{0em}{1.5em}{\lstinline!#1!}{\pageref{fn:#1}}}
-{\parskip\z@\input{fnlist}}
-\makeatother
-%end{latexonly}
-
-\begin{htmlonly}
-\newcommand{\fnlisti}[1]{\fnref{#1}\\}
-\input{fnlist}
-\end{htmlonly}
-
-\printindex
-
-\begin{thebibliography}{9}
-    \bibitem{scripts} The Ion 3 scripts repository,
-        \url{http://iki.fi/tuomov/repos/ion-scripts-3/}.
-\end{thebibliography}
-
-\end{document}
diff --git a/doc/ionconf/WARNINGS b/doc/ionconf/WARNINGS
deleted file mode 100644 (file)
index 726c0ef..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-No implementation found for style `hyperref'
-No implementation found for style `ae'
-No implementation found for style `url'
-No implementation found for style `tocbibind'
-No implementation found for style `geometry'
-No implementation found for style `calc'
-
-Substitution of arg to newlabelxx delayed.
diff --git a/doc/ionconf/contents.png b/doc/ionconf/contents.png
deleted file mode 100644 (file)
index 0c752c6..0000000
Binary files a/doc/ionconf/contents.png and /dev/null differ
diff --git a/doc/ionconf/images.aux b/doc/ionconf/images.aux
deleted file mode 100644 (file)
index 3b687b9..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-\relax 
-\ifx\hyper@anchor\@undefined
-\global \let \oldcontentsline\contentsline
-\gdef \contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
-\global \let \oldnewlabel\newlabel
-\gdef \newlabel#1#2{\newlabelxx{#1}#2}
-\gdef \newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
-\AtEndDocument{\let \contentsline\oldcontentsline
-\let \newlabel\oldnewlabel}
-\else
-\global \let \hyper@last\relax 
-\fi
-
-\select@language{english}
-\@writefile{toc}{\select@language{english}}
-\@writefile{lof}{\select@language{english}}
-\@writefile{lot}{\select@language{english}}
-\@ifundefined{unitindent}{\newdimen\unitindent\let \@indentset\relax }{}
-\global \unitindent=38.41783pt\relax\@indentset\relax
diff --git a/doc/ionconf/images.idx b/doc/ionconf/images.idx
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/doc/ionconf/images.log b/doc/ionconf/images.log
deleted file mode 100644 (file)
index 7dcd34b..0000000
+++ /dev/null
@@ -1,396 +0,0 @@
-This is pdfeTeX, Version 3.141592-1.21a-2.2 (Web2C 7.5.4) (format=latex 2007.4.8)  27 SEP 2007 19:26
-entering extended mode
-**./images.tex
-(./images.tex
-LaTeX2e <2003/12/01>
-Babel <v3.8d> and hyphenation patterns for american, french, german, ngerman, b
-ahasa, basque, bulgarian, catalan, croatian, czech, danish, dutch, esperanto, e
-stonian, finnish, greek, icelandic, irish, italian, latin, magyar, norsk, polis
-h, portuges, romanian, russian, serbian, slovak, slovene, spanish, swedish, tur
-kish, ukrainian, nohyphenation, loaded.
-
-(/usr/share/texmf-tetex/tex/latex/ntgclass/rapport3.cls
-Document Class: rapport3 2004/06/07 v2.1a NTG LaTeX document class
-(/usr/share/texmf-tetex/tex/latex/ntgclass/ntg11.clo
-File: ntg11.clo 2004/06/07 v2.1a NTG LaTeX file (size option)
-)
-\unitindent=\dimen102
-\othermargin=\dimen103
-\c@part=\count79
-\c@chapter=\count80
-\c@section=\count81
-\c@subsection=\count82
-\c@subsubsection=\count83
-\c@paragraph=\count84
-\c@subparagraph=\count85
-\c@figure=\count86
-\c@table=\count87
-\abovecaptionskip=\skip41
-\belowcaptionskip=\skip42
-LaTeX Info: Redefining \em on input line 826.
-\bibindent=\dimen104
-) (/usr/share/texmf-tetex/tex/latex/base/ifthen.sty
-Package: ifthen 2001/05/26 v1.1c Standard LaTeX ifthen package (DPC)
-) (/usr/share/texmf-tetex/tex/generic/babel/babel.sty
-Package: babel 2004/11/20 v3.8d The Babel package
-(/usr/share/texmf-tetex/tex/generic/babel/english.ldf
-Language: english 2004/06/14 v3.3o English support from the babel system
-(/usr/share/texmf-tetex/tex/generic/babel/babel.def
-File: babel.def 2004/11/20 v3.8d Babel common definitions
-\babel@savecnt=\count88
-\U@D=\dimen105
-)
-\l@british = a dialect from \language\l@english 
-\l@UKenglish = a dialect from \language\l@english 
-\l@canadian = a dialect from \language\l@american 
-\l@australian = a dialect from \language\l@british 
-\l@newzealand = a dialect from \language\l@british 
-)) (/usr/share/texmf-tetex/tex/latex/base/inputenc.sty
-Package: inputenc 2004/02/05 v1.0d Input encoding file
-(/usr/share/texmf-tetex/tex/latex/base/latin1.def
-File: latin1.def 2004/02/05 v1.0d Input encoding file
-)) (/usr/share/texmf-tetex/tex/latex/hyperref/hyperref.sty
-Package: hyperref 2003/11/30 v6.74m Hypertext links for LaTeX
-(/usr/share/texmf-tetex/tex/latex/graphics/keyval.sty
-Package: keyval 1999/03/16 v1.13 key=value parser (DPC)
-\KV@toks@=\toks14
-)
-\@linkdim=\dimen106
-\Hy@linkcounter=\count89
-\Hy@pagecounter=\count90
-(/usr/share/texmf-tetex/tex/latex/hyperref/pd1enc.def
-File: pd1enc.def 2003/11/30 v6.74m Hyperref: PDFDocEncoding definition (HO)
-) (/usr/share/texmf-tetex/tex/latex/hyperref/hyperref.cfg
-File: hyperref.cfg 2002/06/06 v1.2 hyperref configuration of TeXLive and teTeX
-)
-Package hyperref Info: Hyper figures OFF on input line 1880.
-Package hyperref Info: Link nesting OFF on input line 1885.
-Package hyperref Info: Hyper index ON on input line 1888.
-Package hyperref Info: Plain pages ON on input line 1893.
-Package hyperref Info: Backreferencing OFF on input line 1900.
-Implicit mode ON; LaTeX internals redefined
-Package hyperref Info: Bookmarks ON on input line 2004.
-(/usr/share/texmf/tex/latex/latex2html/url.sty
-Package: url 1999/03/02  ver 1.4  Verb mode for urls, email addresses, and file
- names
-)
-LaTeX Info: Redefining \url on input line 2143.
-\Fld@menulength=\count91
-\Field@Width=\dimen107
-\Fld@charsize=\dimen108
-\Choice@toks=\toks15
-\Field@toks=\toks16
-Package hyperref Info: Hyper figures OFF on input line 2618.
-Package hyperref Info: Link nesting OFF on input line 2623.
-Package hyperref Info: Hyper index ON on input line 2626.
-Package hyperref Info: backreferencing OFF on input line 2633.
-Package hyperref Info: Link coloring OFF on input line 2638.
-\c@Item=\count92
-\c@Hfootnote=\count93
-)
-*hyperref using driver hdvipdfm*
-(/usr/share/texmf-tetex/tex/latex/hyperref/hdvipdfm.def
-File: hdvipdfm.def 2003/11/30 v6.74m Hyperref driver for dvipdfm
-\pdfm@box=\box26
-\Fld@listcount=\count94
-\@outlinefile=\write3
-) (/usr/share/texmf-tetex/tex/latex/ae/ae.sty
-Package: ae 2001/02/12 1.3 Almost European Computer Modern
-(/usr/share/texmf-tetex/tex/latex/base/fontenc.sty
-Package: fontenc 2004/02/22 v1.99f Standard LaTeX package
-(/usr/share/texmf-tetex/tex/latex/base/t1enc.def
-File: t1enc.def 2004/02/22 v1.99f Standard LaTeX file
-LaTeX Font Info:    Redeclaring font encoding T1 on input line 43.
-)
-LaTeX Font Info:    Try loading font information for T1+aer on input line 100.
-(/usr/share/texmf-tetex/tex/latex/ae/t1aer.fd
-File: t1aer.fd 1997/11/16 Font definitions for T1/aer.
-))) (/usr/share/texmf/tex/latex/html/html.sty
-Package: html 1999/07/19 v1.38 hypertext commands for latex2html (nd, hws, rrm)
-
-\c@lpart=\count95
-\c@lchapter=\count96
-\c@lsection=\count97
-\c@lsubsection=\count98
-\c@lsubsubsection=\count99
-\c@lparagraph=\count100
-\c@lsubparagraph=\count101
-\c@lsubsubparagraph=\count102
-\ptrfile=\write4
-) (/usr/share/texmf-tetex/tex/latex/base/makeidx.sty
-Package: makeidx 2000/03/29 v1.0m Standard LaTeX package
-) (/usr/share/texmf-tetex/tex/latex/tools/tabularx.sty
-Package: tabularx 1999/01/07 v2.07 `tabularx' package (DPC)
-(/usr/share/texmf-tetex/tex/latex/tools/array.sty
-Package: array 2003/12/17 v2.4a Tabular extension package (FMi)
-\col@sep=\dimen109
-\extrarowheight=\dimen110
-\NC@list=\toks17
-\extratabsurround=\skip43
-\backup@length=\skip44
-)
-\TX@col@width=\dimen111
-\TX@old@table=\dimen112
-\TX@old@col=\dimen113
-\TX@target=\dimen114
-\TX@delta=\dimen115
-\TX@cols=\count103
-\TX@ftn=\toks18
-) (/usr/share/texmf-tetex/tex/latex/base/textcomp.sty
-Package: textcomp 2004/02/22 v1.99f Standard LaTeX package
-Package textcomp Info: Sub-encoding information:
-(textcomp)               5 = only ISO-Adobe without \textcurrency
-(textcomp)               4 = 5 + \texteuro
-(textcomp)               3 = 4 + \textohm
-(textcomp)               2 = 3 + \textestimated + \textcurrency
-(textcomp)               1 = TS1 - \textcircled - \t
-(textcomp)               0 = TS1 (full)
-(textcomp)             Font families with sub-encoding setting implement
-(textcomp)             only a restricted character set as indicated.
-(textcomp)             Family '?' is the default used for unknown fonts.
-(textcomp)             See the documentation for details.
-Package textcomp Info: Setting ? sub-encoding to TS1/1 on input line 71.
-(/usr/share/texmf-tetex/tex/latex/base/ts1enc.def
-File: ts1enc.def 2001/06/05 v3.0e (jk/car/fm) Standard LaTeX file
-)
-LaTeX Info: Redefining \oldstylenums on input line 266.
-Package textcomp Info: Setting cmr sub-encoding to TS1/0 on input line 281.
-Package textcomp Info: Setting cmss sub-encoding to TS1/0 on input line 282.
-Package textcomp Info: Setting cmtt sub-encoding to TS1/0 on input line 283.
-Package textcomp Info: Setting cmvtt sub-encoding to TS1/0 on input line 284.
-Package textcomp Info: Setting cmbr sub-encoding to TS1/0 on input line 285.
-Package textcomp Info: Setting cmtl sub-encoding to TS1/0 on input line 286.
-Package textcomp Info: Setting ccr sub-encoding to TS1/0 on input line 287.
-Package textcomp Info: Setting ptm sub-encoding to TS1/4 on input line 288.
-Package textcomp Info: Setting pcr sub-encoding to TS1/4 on input line 289.
-Package textcomp Info: Setting phv sub-encoding to TS1/4 on input line 290.
-Package textcomp Info: Setting ppl sub-encoding to TS1/3 on input line 291.
-Package textcomp Info: Setting pag sub-encoding to TS1/4 on input line 292.
-Package textcomp Info: Setting pbk sub-encoding to TS1/4 on input line 293.
-Package textcomp Info: Setting pnc sub-encoding to TS1/4 on input line 294.
-Package textcomp Info: Setting pzc sub-encoding to TS1/4 on input line 295.
-Package textcomp Info: Setting bch sub-encoding to TS1/4 on input line 296.
-Package textcomp Info: Setting put sub-encoding to TS1/5 on input line 297.
-Package textcomp Info: Setting uag sub-encoding to TS1/5 on input line 298.
-Package textcomp Info: Setting ugq sub-encoding to TS1/5 on input line 299.
-Package textcomp Info: Setting ul8 sub-encoding to TS1/4 on input line 300.
-Package textcomp Info: Setting ul9 sub-encoding to TS1/4 on input line 301.
-Package textcomp Info: Setting augie sub-encoding to TS1/5 on input line 302.
-Package textcomp Info: Setting dayrom sub-encoding to TS1/3 on input line 303.
-Package textcomp Info: Setting dayroms sub-encoding to TS1/3 on input line 304.
-
-Package textcomp Info: Setting pxr sub-encoding to TS1/0 on input line 305.
-Package textcomp Info: Setting pxss sub-encoding to TS1/0 on input line 306.
-Package textcomp Info: Setting pxtt sub-encoding to TS1/0 on input line 307.
-Package textcomp Info: Setting txr sub-encoding to TS1/0 on input line 308.
-Package textcomp Info: Setting txss sub-encoding to TS1/0 on input line 309.
-Package textcomp Info: Setting txtt sub-encoding to TS1/0 on input line 310.
-Package textcomp Info: Setting futs sub-encoding to TS1/4 on input line 311.
-Package textcomp Info: Setting futx sub-encoding to TS1/4 on input line 312.
-Package textcomp Info: Setting futj sub-encoding to TS1/4 on input line 313.
-Package textcomp Info: Setting hlh sub-encoding to TS1/3 on input line 314.
-Package textcomp Info: Setting hls sub-encoding to TS1/3 on input line 315.
-Package textcomp Info: Setting hlst sub-encoding to TS1/3 on input line 316.
-Package textcomp Info: Setting hlct sub-encoding to TS1/5 on input line 317.
-Package textcomp Info: Setting hlx sub-encoding to TS1/5 on input line 318.
-Package textcomp Info: Setting hlce sub-encoding to TS1/5 on input line 319.
-Package textcomp Info: Setting hlcn sub-encoding to TS1/5 on input line 320.
-Package textcomp Info: Setting hlcw sub-encoding to TS1/5 on input line 321.
-Package textcomp Info: Setting hlcf sub-encoding to TS1/5 on input line 322.
-Package textcomp Info: Setting pplx sub-encoding to TS1/3 on input line 323.
-Package textcomp Info: Setting pplj sub-encoding to TS1/3 on input line 324.
-Package textcomp Info: Setting ptmx sub-encoding to TS1/4 on input line 325.
-Package textcomp Info: Setting ptmj sub-encoding to TS1/4 on input line 326.
-) (/usr/share/texmf-tetex/tex/latex/tocbibind/tocbibind.sty
-Package: tocbibind 2003/03/13 v1.5g extra ToC listings
-
-Package tocbibind Note: The document has chapter divisions.
-
-
-Package tocbibind Note: Using chapter style headings, unless overridden.
-
-) (/usr/share/texmf-tetex/tex/latex/tools/enumerate.sty
-Package: enumerate 1999/03/05 v3.00 enumerate extensions (DPC)
-\@enLab=\toks19
-) (/usr/share/texmf-tetex/tex/latex/geometry/geometry.sty
-Package: geometry 2002/07/08 v3.2 Page Geometry
-\Gm@cnth=\count104
-\Gm@cntv=\count105
-\c@Gm@tempcnt=\count106
-\Gm@bindingoffset=\dimen116
-\Gm@wd@mp=\dimen117
-\Gm@odd@mp=\dimen118
-\Gm@even@mp=\dimen119
-\Gm@dimlist=\toks20
-(/usr/share/texmf-tetex/tex/latex/geometry/geometry.cfg)) (/usr/share/texmf-tet
-ex/tex/latex/tools/calc.sty
-Package: calc 1998/07/07 v4.1b Infix arithmetic (KKT,FJ)
-\calc@Acount=\count107
-\calc@Bcount=\count108
-\calc@Adimen=\dimen120
-\calc@Bdimen=\dimen121
-\calc@Askip=\skip45
-\calc@Bskip=\skip46
-LaTeX Info: Redefining \setlength on input line 59.
-LaTeX Info: Redefining \addtolength on input line 60.
-\calc@denominator=\count109
-)
-\@indexfile=\write5
-\openout5 = `images.idx'.
-
-Writing index file images.idx
-(/usr/share/texmf-tetex/tex/latex/graphics/color.sty
-Package: color 1999/02/16 v1.0i Standard LaTeX Color (DPC)
-(/usr/share/texmf-tetex/tex/latex/graphics/color.cfg
-File: color.cfg 2005/02/03 v1.3 color configuration of teTeX/TeXLive
-)
-Package color Info: Driver file: dvips.def on input line 125.
-(/usr/share/texmf-tetex/tex/latex/graphics/dvips.def
-File: dvips.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
-) (/usr/share/texmf-tetex/tex/latex/graphics/dvipsnam.def
-File: dvipsnam.def 1999/02/16 v3.0i Driver-dependant file (DPC,SPQR)
-))
-\sizebox=\box27
-\lthtmlwrite=\write6
-(./images.aux)
-\openout1 = `images.aux'.
-
-LaTeX Font Info:    Checking defaults for OML/cmm/m/it on input line 198.
-LaTeX Font Info:    ... okay on input line 198.
-LaTeX Font Info:    Checking defaults for T1/cmr/m/n on input line 198.
-LaTeX Font Info:    ... okay on input line 198.
-LaTeX Font Info:    Checking defaults for OT1/cmr/m/n on input line 198.
-LaTeX Font Info:    ... okay on input line 198.
-LaTeX Font Info:    Checking defaults for OMS/cmsy/m/n on input line 198.
-LaTeX Font Info:    ... okay on input line 198.
-LaTeX Font Info:    Checking defaults for OMX/cmex/m/n on input line 198.
-LaTeX Font Info:    ... okay on input line 198.
-LaTeX Font Info:    Checking defaults for U/cmr/m/n on input line 198.
-LaTeX Font Info:    ... okay on input line 198.
-LaTeX Font Info:    Checking defaults for PD1/pdf/m/n on input line 198.
-LaTeX Font Info:    ... okay on input line 198.
-LaTeX Font Info:    Checking defaults for TS1/cmr/m/n on input line 198.
-LaTeX Font Info:    Try loading font information for TS1+cmr on input line 198.
-
-(/usr/share/texmf-tetex/tex/latex/base/ts1cmr.fd
-File: ts1cmr.fd 1999/05/25 v2.5h Standard LaTeX font definitions
-)
-LaTeX Font Info:    ... okay on input line 198.
-Package hyperref Info: Link coloring OFF on input line 198.
-(/usr/share/texmf-tetex/tex/latex/hyperref/nameref.sty
-Package: nameref 2003/12/03 v2.21 Cross-referencing by name of section
-\c@section@level=\count110
-)
-LaTeX Info: Redefining \ref on input line 198.
-LaTeX Info: Redefining \pageref on input line 198.
-\openout3 = `images.out'.
-
--------------------- Geometry parameters
-paper: a4paper
-landscape: --
-twocolumn: --
-twoside: --
-asymmetric: --
-h-parts: 89.62709pt, 0.7\paperwidth , 89.6271pt (default)
-v-parts: 101.40665pt, 0.7\paperheight , 152.11pt (default)
-hmarginratio: 1:1
-vmarginratio: 2:3
-lines: --
-heightrounded: --
-bindingoffset: 0.0pt
-truedimen: --
-includehead: --
-includefoot: --
-includemp: --
-driver: 
--------------------- Page layout dimensions and switches
-\paperwidth  597.50787pt
-\paperheight 845.04684pt
-\textwidth  349.0pt
-\textheight 650.66685pt
-\oddsidemargin  17.3571pt
-\evensidemargin 17.3571pt
-\topmargin  0.0pt
-\headheight 0.0pt
-\headsep    0.0pt
-\footskip   0.0pt
-\marginparwidth 71.0pt
-\marginparsep   10.0pt
-\columnsep  10.0pt
-\skip\footins  10.0pt plus 4.0pt minus 2.0pt
-\hoffset 0.0pt
-\voffset 0.0pt
-\mag 1000
-
-(1in=72.27pt, 1cm=28.45pt)
------------------------
-
-latex2htmlLength hsize=349.0pt
-
-latex2htmlLength vsize=650.66685pt
-
-latex2htmlLength hoffset=0.0pt
-
-latex2htmlLength voffset=0.0pt
-
-latex2htmlLength topmargin=0.0pt
-
-latex2htmlLength topskip=0.00003pt
-
-latex2htmlLength headheight=0.0pt
-
-latex2htmlLength headsep=0.0pt
-
-latex2htmlLength parskip=6.8pt plus 1.36008pt minus 1.36008pt
-
-latex2htmlLength oddsidemargin=17.3571pt
-
-latex2htmlLength evensidemargin=17.3571pt
-
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <10.95> on input line 235.
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <8> on input line 235.
-LaTeX Font Info:    External font `cmex10' loaded for size
-(Font)              <6> on input line 235.
-l2hSize :tex2html_wrap_inline1059:7.0626pt::0.0pt::7.1201pt.
-[1
-
-
-
-]
-l2hSize :tex2html_wrap_inline1063:7.48248pt::0.0pt::48.86426pt.
-[2
-
-
-]
-l2hSize :tex2html_wrap_inline2263:8.7125pt::8.7125pt::23.6642pt.
-[3
-
-
-]
-l2hSize :tex2html_wrap_inline5540:7.5626pt::7.5626pt::14.53923pt.
-[4
-
-
-]
-l2hSize :tex2html_wrap_inline5542:7.5626pt::7.5626pt::14.53923pt.
-[5
-
-
-]
-l2hSize :tex2html_wrap_inline7792:8.7125pt::8.7125pt::86.9574pt.
-[6
-
-
-] (./images.aux) ) 
-Here is how much of TeX's memory you used:
- 4467 strings out of 94501
- 63452 string characters out of 1175795
- 123529 words of memory out of 1000000
- 7611 multiletter control sequences out of 10000+50000
- 7874 words of font info for 24 fonts, out of 500000 for 2000
- 580 hyphenation exceptions out of 8191
- 28i,5n,21p,200b,182s stack positions out of 1500i,500n,5000p,200000b,5000s
-
-Output written on images.dvi (6 pages, 3608 bytes).
diff --git a/doc/ionconf/images.out b/doc/ionconf/images.out
deleted file mode 100644 (file)
index e69de29..0000000
diff --git a/doc/ionconf/images.pl b/doc/ionconf/images.pl
deleted file mode 100644 (file)
index d6e7651..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-# LaTeX2HTML 2002-2-1 (1.71)
-# Associate images original text with physical files.
-
-
-$key = q/-1;MSF=1.6;LFS=11;AAT/;
-$cached_env_img{$key} = q|<IMG
- WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
- SRC="|."$dir".q|img4.png"
- ALT="$-1$">|; 
-
-$key = q/(0,1];MSF=1.6;LFS=11;AAT/;
-$cached_env_img{$key} = q|<IMG
- WIDTH="42" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
- SRC="|."$dir".q|img3.png"
- ALT="$(0, 1]$">|; 
-
-$key = q/N=1{ldots}5;MSF=1.6;LFS=11;AAT/;
-$cached_env_img{$key} = q|<IMG
- WIDTH="82" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
- SRC="|."$dir".q|img2.png"
- ALT="$N=1{\ldots} 5$">|; 
-
-$key = q/-2;MSF=1.6;LFS=11;AAT/;
-$cached_env_img{$key} = q|<IMG
- WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
- SRC="|."$dir".q|img5.png"
- ALT="$-2$">|; 
-
-$key = q/n;MSF=1.6;LFS=11;AAT/;
-$cached_env_img{$key} = q|<IMG
- WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
- SRC="|."$dir".q|img1.png"
- ALT="$n$">|; 
-
-$key = q/{t,m,b}times{t,c,b};MSF=1.6;LFS=11;AAT/;
-$cached_env_img{$key} = q|<IMG
- WIDTH="142" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
- SRC="|."$dir".q|img6.png"
- ALT="$\{t,m,b\}\times\{t,c,b\}$">|; 
-
-1;
-
diff --git a/doc/ionconf/images.tex b/doc/ionconf/images.tex
deleted file mode 100644 (file)
index ebd32e5..0000000
+++ /dev/null
@@ -1,385 +0,0 @@
-\batchmode
-\documentclass[english,a4paper,11pt,oldtoc,mctitle]{rapport3}
-\RequirePackage{ifthen}
-
-
-\usepackage{babel}
-\usepackage[latin1]{inputenc}
-\usepackage[dvipdfm]{hyperref}
-\usepackage{ae}
-\usepackage{url}
-\usepackage{html}
-\usepackage{makeidx}
-\usepackage{tabularx}
-\usepackage{textcomp}
-\usepackage[nottoc]{tocbibind}
-\usepackage{enumerate} 
-\usepackage[a4paper]{geometry}
-\usepackage{calc}
-
-
-\urlstyle{tt}
-
-%
-\providecommand{\note}[1]{\color{red}**#1**}%
-\providecommand{\file}[1]{\emph{#1}}%
-\providecommand{\type}[1]{#1}%
-\providecommand{\spec}[1]{#1}%
-\providecommand{\indextype}[1]{\index{#1@#1}} 
-
-%
-\providecommand{\key}[1]{\textbf{#1}}%
-\providecommand{\code}[1]{\texttt{#1}}%
-\providecommand{\codestr}[1]{`\texttt{#1}'}%
-\providecommand{\var}[1]{\texttt{#1}}%
-\providecommand{\command}[1]{\texttt{#1}} 
-
-%
-\providecommand{\hyperlabel}[1]{\label{#1}}%
-\providecommand{\fnref}[1]{\htmlref{\texttt{#1}}{fn:#1}}%
-\providecommand{\fnrefx}[2]{\htmlref{\texttt{#2}}{fn:#1.#2}}%
-\providecommand{\myhref}[2]{\htmlref{#2}{#1}} 
-
-%
-\providecommand{\tabhead}[1]{\hline #1 \\\hline} 
-
-
-
-%
-\newenvironment{function}{
-  \begin{description}
-}{
-  \end{description}
-} 
-
-%
-\providecommand{\synopsis}[1]{
-  \item[Synopsis:] \texttt{#1}
-}%
-\providecommand{\funcname}[1]{
-  \item[Function:] \texttt{#1}
-}%
-\providecommand{\hookname}[1]{
-  \item[Hook name:] \label{#1}\texttt{#1}
-}%
-\providecommand{\hookparams}[1]{
-  \item[Parameters:] \texttt{#1}
-} 
-
-%
-\newenvironment{funcdesc}{
-  \item[Description:]
-}{} 
-
-
-
-%
-\providecommand{\xchapter}[1]{\chapter{#1}}%
-\providecommand{\xsection}[1]{\section{#1}}%
-\providecommand{\xsectionstar}[1]{\section*{#1}}%
-\providecommand{\xsubsection}[1]{\subsection{#1}} 
-
-
-\title{Configuring and extending Ion3 with Lua}
-\author{Tuomo Valkonen \\tuomov at iki.fi}
-\date{2007-09-27}
-
-
-\makeindex
-
-
-
-
-\usepackage[dvips]{color}
-
-
-\pagecolor[gray]{.7}
-
-\usepackage[latin1]{inputenc}
-
-
-
-\makeatletter
-
-\makeatletter
-\count@=\the\catcode`\_ \catcode`\_=8 
-\newenvironment{tex2html_wrap}{}{}%
-\catcode`\<=12\catcode`\_=\count@
-\newcommand{\providedcommand}[1]{\expandafter\providecommand\csname #1\endcsname}%
-\newcommand{\renewedcommand}[1]{\expandafter\providecommand\csname #1\endcsname{}%
-  \expandafter\renewcommand\csname #1\endcsname}%
-\newcommand{\newedenvironment}[1]{\newenvironment{#1}{}{}\renewenvironment{#1}}%
-\let\newedcommand\renewedcommand
-\let\renewedenvironment\newedenvironment
-\makeatother
-\let\mathon=$
-\let\mathoff=$
-\ifx\AtBeginDocument\undefined \newcommand{\AtBeginDocument}[1]{}\fi
-\newbox\sizebox
-\setlength{\hoffset}{0pt}\setlength{\voffset}{0pt}
-\addtolength{\textheight}{\footskip}\setlength{\footskip}{0pt}
-\addtolength{\textheight}{\topmargin}\setlength{\topmargin}{0pt}
-\addtolength{\textheight}{\headheight}\setlength{\headheight}{0pt}
-\addtolength{\textheight}{\headsep}\setlength{\headsep}{0pt}
-\setlength{\textwidth}{349pt}
-\newwrite\lthtmlwrite
-\makeatletter
-\let\realnormalsize=\normalsize
-\global\topskip=2sp
-\def\preveqno{}\let\real@float=\@float \let\realend@float=\end@float
-\def\@float{\let\@savefreelist\@freelist\real@float}
-\def\liih@math{\ifmmode$\else\bad@math\fi}
-\def\end@float{\realend@float\global\let\@freelist\@savefreelist}
-\let\real@dbflt=\@dbflt \let\end@dblfloat=\end@float
-\let\@largefloatcheck=\relax
-\let\if@boxedmulticols=\iftrue
-\def\@dbflt{\let\@savefreelist\@freelist\real@dbflt}
-\def\adjustnormalsize{\def\normalsize{\mathsurround=0pt \realnormalsize
- \parindent=0pt\abovedisplayskip=0pt\belowdisplayskip=0pt}%
- \def\phantompar{\csname par\endcsname}\normalsize}%
-\def\lthtmltypeout#1{{\let\protect\string \immediate\write\lthtmlwrite{#1}}}%
-\newcommand\lthtmlhboxmathA{\adjustnormalsize\setbox\sizebox=\hbox\bgroup\kern.05em }%
-\newcommand\lthtmlhboxmathB{\adjustnormalsize\setbox\sizebox=\hbox to\hsize\bgroup\hfill }%
-\newcommand\lthtmlvboxmathA{\adjustnormalsize\setbox\sizebox=\vbox\bgroup %
- \let\ifinner=\iffalse \let\)\liih@math }%
-\newcommand\lthtmlboxmathZ{\@next\next\@currlist{}{\def\next{\voidb@x}}%
- \expandafter\box\next\egroup}%
-\newcommand\lthtmlmathtype[1]{\gdef\lthtmlmathenv{#1}}%
-\newcommand\lthtmllogmath{\dimen0\ht\sizebox \advance\dimen0\dp\sizebox
-  \ifdim\dimen0>.95\vsize
-   \lthtmltypeout{%
-*** image for \lthtmlmathenv\space is too tall at \the\dimen0, reducing to .95 vsize ***}%
-   \ht\sizebox.95\vsize \dp\sizebox\z@ \fi
-  \lthtmltypeout{l2hSize %
-:\lthtmlmathenv:\the\ht\sizebox::\the\dp\sizebox::\the\wd\sizebox.\preveqno}}%
-\newcommand\lthtmlfigureA[1]{\let\@savefreelist\@freelist
-       \lthtmlmathtype{#1}\lthtmlvboxmathA}%
-\newcommand\lthtmlpictureA{\bgroup\catcode`\_=8 \lthtmlpictureB}%
-\newcommand\lthtmlpictureB[1]{\lthtmlmathtype{#1}\egroup
-       \let\@savefreelist\@freelist \lthtmlhboxmathB}%
-\newcommand\lthtmlpictureZ[1]{\hfill\lthtmlfigureZ}%
-\newcommand\lthtmlfigureZ{\lthtmlboxmathZ\lthtmllogmath\copy\sizebox
-       \global\let\@freelist\@savefreelist}%
-\newcommand\lthtmldisplayA{\bgroup\catcode`\_=8 \lthtmldisplayAi}%
-\newcommand\lthtmldisplayAi[1]{\lthtmlmathtype{#1}\egroup\lthtmlvboxmathA}%
-\newcommand\lthtmldisplayB[1]{\edef\preveqno{(\theequation)}%
-  \lthtmldisplayA{#1}\let\@eqnnum\relax}%
-\newcommand\lthtmldisplayZ{\lthtmlboxmathZ\lthtmllogmath\lthtmlsetmath}%
-\newcommand\lthtmlinlinemathA{\bgroup\catcode`\_=8 \lthtmlinlinemathB}
-\newcommand\lthtmlinlinemathB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA
-  \vrule height1.5ex width0pt }%
-\newcommand\lthtmlinlineA{\bgroup\catcode`\_=8 \lthtmlinlineB}%
-\newcommand\lthtmlinlineB[1]{\lthtmlmathtype{#1}\egroup\lthtmlhboxmathA}%
-\newcommand\lthtmlinlineZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
-  \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetinline}
-\newcommand\lthtmlinlinemathZ{\egroup\expandafter\ifdim\dp\sizebox>0pt %
-  \expandafter\centerinlinemath\fi\lthtmllogmath\lthtmlsetmath}
-\newcommand\lthtmlindisplaymathZ{\egroup %
-  \centerinlinemath\lthtmllogmath\lthtmlsetmath}
-\def\lthtmlsetinline{\hbox{\vrule width.1em \vtop{\vbox{%
-  \kern.1em\copy\sizebox}\ifdim\dp\sizebox>0pt\kern.1em\else\kern.3pt\fi
-  \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
-\def\lthtmlsetmath{\hbox{\vrule width.1em\kern-.05em\vtop{\vbox{%
-  \kern.1em\kern0.8 pt\hbox{\hglue.17em\copy\sizebox\hglue0.8 pt}}\kern.3pt%
-  \ifdim\dp\sizebox>0pt\kern.1em\fi \kern0.8 pt%
-  \ifdim\hsize>\wd\sizebox \hrule depth1pt\fi}}}
-\def\centerinlinemath{%
-  \dimen1=\ifdim\ht\sizebox<\dp\sizebox \dp\sizebox\else\ht\sizebox\fi
-  \advance\dimen1by.5pt \vrule width0pt height\dimen1 depth\dimen1 
- \dp\sizebox=\dimen1\ht\sizebox=\dimen1\relax}
-
-\def\lthtmlcheckvsize{\ifdim\ht\sizebox<\vsize 
-  \ifdim\wd\sizebox<\hsize\expandafter\hfill\fi \expandafter\vfill
-  \else\expandafter\vss\fi}%
-\providecommand{\selectlanguage}[1]{}%
-\makeatletter \tracingstats = 1 
-
-
-\begin{document}
-\pagestyle{empty}\thispagestyle{empty}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength hsize=\the\hsize}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength vsize=\the\vsize}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength hoffset=\the\hoffset}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength voffset=\the\voffset}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength topmargin=\the\topmargin}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength topskip=\the\topskip}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength headheight=\the\headheight}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength headsep=\the\headsep}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength parskip=\the\parskip}\lthtmltypeout{}%
-\lthtmltypeout{latex2htmlLength oddsidemargin=\the\oddsidemargin}\lthtmltypeout{}%
-\makeatletter
-\if@twoside\lthtmltypeout{latex2htmlLength evensidemargin=\the\evensidemargin}%
-\else\lthtmltypeout{latex2htmlLength evensidemargin=\the\oddsidemargin}\fi%
-\lthtmltypeout{}%
-\makeatother
-\setcounter{page}{1}
-\onecolumn
-
-% !!! IMAGES START HERE !!!
-
-\stepcounter{chapter}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{subsection}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-{\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline1059}%
-$n$%
-\lthtmlinlinemathZ
-\lthtmlcheckvsize\clearpage}
-
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-{\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline1063}%
-$N=1{\ldots} 5$%
-\lthtmlinlinemathZ
-\lthtmlcheckvsize\clearpage}
-
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{section}
-
-
-\newedenvironment{winprop}[2]{
-  
-  \begin{description}
-%
-      \item[Winprop:] \texttt{#1} (#2)
-      \item[Description:]
-}
-{
-  
-  \end{description}
-}%
-
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{subsubsection}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-{\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline2263}%
-$(0, 1]$%
-\lthtmlinlinemathZ
-\lthtmlcheckvsize\clearpage}
-
-\stepcounter{subsection}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{chapter}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-{\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline5540}%
-$-1$%
-\lthtmlinlinemathZ
-\lthtmlcheckvsize\clearpage}
-
-{\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline5542}%
-$-2$%
-\lthtmlinlinemathZ
-\lthtmlcheckvsize\clearpage}
-
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{subsection}
-{\newpage\clearpage
-\lthtmlinlinemathA{tex2html_wrap_inline7792}%
-$\{t,m,b\}\times\{t,c,b\}$%
-\lthtmlinlinemathZ
-\lthtmlcheckvsize\clearpage}
-
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{subsection}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{section}
-\stepcounter{subsection}
-\appendix
-\stepcounter{chapter}
-\addtocounter{enumi}{-1}
-\stepcounter{chapter}
-
-%
-\providecommand{\fnlisti}[1]{\htmlref{\texttt{#1}}{fn:#1}\\}%
-
-
-\end{document}
diff --git a/doc/ionconf/img1.png b/doc/ionconf/img1.png
deleted file mode 100644 (file)
index ef6ac05..0000000
Binary files a/doc/ionconf/img1.png and /dev/null differ
diff --git a/doc/ionconf/img2.png b/doc/ionconf/img2.png
deleted file mode 100644 (file)
index fbbef0c..0000000
Binary files a/doc/ionconf/img2.png and /dev/null differ
diff --git a/doc/ionconf/img3.png b/doc/ionconf/img3.png
deleted file mode 100644 (file)
index 4f60c17..0000000
Binary files a/doc/ionconf/img3.png and /dev/null differ
diff --git a/doc/ionconf/img4.png b/doc/ionconf/img4.png
deleted file mode 100644 (file)
index 17e520f..0000000
Binary files a/doc/ionconf/img4.png and /dev/null differ
diff --git a/doc/ionconf/img5.png b/doc/ionconf/img5.png
deleted file mode 100644 (file)
index eab0084..0000000
Binary files a/doc/ionconf/img5.png and /dev/null differ
diff --git a/doc/ionconf/img6.png b/doc/ionconf/img6.png
deleted file mode 100644 (file)
index c7c8364..0000000
Binary files a/doc/ionconf/img6.png and /dev/null differ
diff --git a/doc/ionconf/index.html b/doc/ionconf/index.html
deleted file mode 100644 (file)
index 0ea44a0..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Configuring and extending Ion3 with Lua</TITLE>
-<META NAME="description" CONTENT="Configuring and extending Ion3 with Lua">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node1.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html18"
-  HREF="node1.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html12"
-  HREF="http://iki.fi/tuomov/ion/">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
-<A NAME="tex2html14"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html16"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html19"
-  HREF="node1.html">Contents</A>
-<B> Up:</B> <A NAME="tex2html13"
-  HREF="http://iki.fi/tuomov/ion/">Ion homepage</A>
- &nbsp; <B>  <A NAME="tex2html15"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html17"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<P>
-<H1 ALIGN="CENTER">Configuring and extending Ion3 with Lua</H1>
-<DIV CLASS="author_info">
-
-<P ALIGN="CENTER"><STRONG>Tuomo Valkonen</STRONG></P>
-<P ALIGN="CENTER"><I>tuomov at iki.fi</I></P>
-<P ALIGN="CENTER"><STRONG>2007-09-27</STRONG></P>
-</DIV>
-
-<P>
-Configuring and extending Ion3 with Lua
-<BR>
-Copyright &#169;  2003-2007 Tuomo Valkonen.
-
-<P>
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-<P>
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-chapter entitled ``GNU General Public License'' for more details.
-
-<P>
-<BR><HR>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html20"
-  HREF="node1.html">Contents</A>
-<LI><A NAME="tex2html21"
-  HREF="node2.html"><SPAN CLASS="arabic">1</SPAN>. Introduction</A>
-<LI><A NAME="tex2html22"
-  HREF="node3.html"><SPAN CLASS="arabic">2</SPAN>. Preliminaries: Key concepts and relations</A>
-<UL>
-<LI><A NAME="tex2html23"
-  HREF="node3.html#SECTION00310000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules</A>
-<LI><A NAME="tex2html24"
-  HREF="node3.html#SECTION00320000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies</A>
-<UL>
-<LI><A NAME="tex2html25"
-  HREF="node3.html#SECTION00321000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html26"
-  HREF="node3.html#SECTION00322000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-<UL>
-<LI><A NAME="tex2html27"
-  HREF="node3.html#SECTION00322100000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html28"
-  HREF="node3.html#SECTION00322200000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</UL>
-<LI><A NAME="tex2html29"
-  HREF="node3.html#SECTION00323000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html30"
-  HREF="node4.html"><SPAN CLASS="arabic">3</SPAN>. Basic configuration</A>
-<UL>
-<LI><A NAME="tex2html31"
-  HREF="node4.html#SECTION00410000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> The configuration files</A>
-<LI><A NAME="tex2html32"
-  HREF="node4.html#SECTION00420000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> A walk through <SPAN  CLASS="textit">cfg_ion.lua</SPAN></A>
-<LI><A NAME="tex2html33"
-  HREF="node4.html#SECTION00430000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Keys and rodents</A>
-<UL>
-<LI><A NAME="tex2html34"
-  HREF="node4.html#SECTION00431000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Binding handlers and special variables</A>
-<LI><A NAME="tex2html35"
-  HREF="node4.html#SECTION00432000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Guards</A>
-<LI><A NAME="tex2html36"
-  HREF="node4.html#SECTION00433000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining the bindings</A>
-<LI><A NAME="tex2html37"
-  HREF="node4.html#SECTION00434000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Examples</A>
-<LI><A NAME="tex2html38"
-  HREF="node4.html#SECTION00435000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Key specifications</A>
-<LI><A NAME="tex2html39"
-  HREF="node4.html#SECTION00436000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> Button specifications</A>
-<LI><A NAME="tex2html40"
-  HREF="node4.html#SECTION00437000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">7</SPAN> A further note on the default binding configuration</A>
-</UL>
-<LI><A NAME="tex2html41"
-  HREF="node4.html#SECTION00440000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Menus</A>
-<UL>
-<LI><A NAME="tex2html42"
-  HREF="node4.html#SECTION00441000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Defining menus</A>
-<LI><A NAME="tex2html43"
-  HREF="node4.html#SECTION00442000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Special menus</A>
-<LI><A NAME="tex2html44"
-  HREF="node4.html#SECTION00443000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining context menus</A>
-<LI><A NAME="tex2html45"
-  HREF="node4.html#SECTION00444000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">4</SPAN> Displaying menus</A>
-</UL>
-<LI><A NAME="tex2html46"
-  HREF="node4.html#SECTION00450000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Winprops</A>
-<UL>
-<LI><A NAME="tex2html47"
-  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
-<LI><A NAME="tex2html48"
-  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances</A>
-<LI><A NAME="tex2html49"
-  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
-<LI><A NAME="tex2html50"
-  HREF="node4.html#SECTION00454000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
-<UL>
-<LI><A NAME="tex2html51"
-  HREF="node4.html#SECTION00454100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
-<LI><A NAME="tex2html52"
-  HREF="node4.html#SECTION00454200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Forcing newly created windows in named frames</A>
-</UL>
-</UL>
-<LI><A NAME="tex2html53"
-  HREF="node4.html#SECTION00460000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> The statusbar</A>
-<UL>
-<LI><A NAME="tex2html54"
-  HREF="node4.html#SECTION00461000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> The template</A>
-<LI><A NAME="tex2html55"
-  HREF="node4.html#SECTION00462000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> The systray</A>
-<LI><A NAME="tex2html56"
-  HREF="node4.html#SECTION00463000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Monitors</A>
-<UL>
-<LI><A NAME="tex2html57"
-  HREF="node4.html#SECTION00463100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Date</A>
-<LI><A NAME="tex2html58"
-  HREF="node4.html#SECTION00463200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Load</A>
-<LI><A NAME="tex2html59"
-  HREF="node4.html#SECTION00463300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Mail</A>
-</UL>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html60"
-  HREF="node5.html"><SPAN CLASS="arabic">4</SPAN>. Graphical styles</A>
-<UL>
-<LI><A NAME="tex2html61"
-  HREF="node5.html#SECTION00510000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles</A>
-<UL>
-<LI><A NAME="tex2html62"
-  HREF="node5.html#SECTION00511000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Known styles and substyles</A>
-<UL>
-<LI><A NAME="tex2html63"
-  HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
-<LI><A NAME="tex2html64"
-  HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
-<LI><A NAME="tex2html65"
-  HREF="node5.html#SECTION00511300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> The rest</A>
-</UL>
-</UL>
-<LI><A NAME="tex2html66"
-  HREF="node5.html#SECTION00520000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining styles for the default drawing engine</A>
-<UL>
-<LI><A NAME="tex2html67"
-  HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
-<LI><A NAME="tex2html68"
-  HREF="node5.html#SECTION00522000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining the styles</A>
-<UL>
-<LI><A NAME="tex2html69"
-  HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
-<LI><A NAME="tex2html70"
-  HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
-<LI><A NAME="tex2html71"
-  HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
-<LI><A NAME="tex2html72"
-  HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-<LI><A NAME="tex2html73"
-  HREF="node5.html#SECTION00522500000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> Substyles</A>
-</UL>
-<LI><A NAME="tex2html74"
-  HREF="node5.html#SECTION00523000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> An example</A>
-</UL>
-<LI><A NAME="tex2html75"
-  HREF="node5.html#SECTION00530000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Miscellaneous settings</A>
-<UL>
-<LI><A NAME="tex2html76"
-  HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frame user attributes</A>
-<LI><A NAME="tex2html77"
-  HREF="node5.html#SECTION00532000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Extra fields for style `<TT>frame</TT>'</A>
-<LI><A NAME="tex2html78"
-  HREF="node5.html#SECTION00533000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Extra fields for style `<TT>dock</TT>'</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html79"
-  HREF="node6.html"><SPAN CLASS="arabic">5</SPAN>. Scripting</A>
-<UL>
-<LI><A NAME="tex2html80"
-  HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
-<LI><A NAME="tex2html81"
-  HREF="node6.html#SECTION00620000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Referring to regions</A>
-<UL>
-<LI><A NAME="tex2html82"
-  HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
-<LI><A NAME="tex2html83"
-  HREF="node6.html#SECTION00622000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Name-based lookups</A>
-</UL>
-<LI><A NAME="tex2html84"
-  HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
-<LI><A NAME="tex2html85"
-  HREF="node6.html#SECTION00640000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Writing <TT>ion-statusd</TT> monitors</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html86"
-  HREF="node7.html"><SPAN CLASS="arabic">6</SPAN>. Function reference</A>
-<UL>
-<LI><A NAME="tex2html87"
-  HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN></A>
-<UL>
-<LI><A NAME="tex2html88"
-  HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
-<LI><A NAME="tex2html89"
-  HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
-<LI><A NAME="tex2html90"
-  HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
-<LI><A NAME="tex2html91"
-  HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
-<LI><A NAME="tex2html92"
-  HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
-<LI><A NAME="tex2html93"
-  HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
-<LI><A NAME="tex2html94"
-  HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
-<LI><A NAME="tex2html95"
-  HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
-<LI><A NAME="tex2html96"
-  HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
-<LI><A NAME="tex2html97"
-  HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
-<LI><A NAME="tex2html98"
-  HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
-<LI><A NAME="tex2html99"
-  HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
-<LI><A NAME="tex2html100"
-  HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
-<LI><A NAME="tex2html101"
-  HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
-<LI><A NAME="tex2html102"
-  HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
-<LI><A NAME="tex2html103"
-  HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
-<LI><A NAME="tex2html104"
-  HREF="node7.html#SECTION007117000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
-<LI><A NAME="tex2html105"
-  HREF="node7.html#SECTION007118000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
-</UL>
-<LI><A NAME="tex2html106"
-  HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN></A>
-<UL>
-<LI><A NAME="tex2html107"
-  HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
-<LI><A NAME="tex2html108"
-  HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
-<LI><A NAME="tex2html109"
-  HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
-<LI><A NAME="tex2html110"
-  HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
-<LI><A NAME="tex2html111"
-  HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
-</UL>
-<LI><A NAME="tex2html112"
-  HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN></A>
-<UL>
-<LI><A NAME="tex2html113"
-  HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
-<LI><A NAME="tex2html114"
-  HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
-<LI><A NAME="tex2html115"
-  HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
-</UL>
-<LI><A NAME="tex2html116"
-  HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN></A>
-<UL>
-<LI><A NAME="tex2html117"
-  HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
-</UL>
-<LI><A NAME="tex2html118"
-  HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN></A>
-<UL>
-<LI><A NAME="tex2html119"
-  HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
-</UL>
-<LI><A NAME="tex2html120"
-  HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
-<LI><A NAME="tex2html121"
-  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN></A>
-<UL>
-<LI><A NAME="tex2html122"
-  HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
-</UL>
-<LI><A NAME="tex2html123"
-  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
-<LI><A NAME="tex2html124"
-  HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
-<LI><A NAME="tex2html125"
-  HREF="node7.html#SECTION007100000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous</A>
-<UL>
-<LI><A NAME="tex2html126"
-  HREF="node7.html#SECTION007101000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html127"
-  HREF="node8.html">A. The GNU General Public License</A>
-<UL>
-<LI><A NAME="tex2html128"
-  HREF="node8.html#SECTION00810000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html129"
-  HREF="node9.html">B. Full class hierarchy visible to Lua-side</A>
-<LI><A NAME="tex2html130"
-  HREF="node10.html">List of functions</A>
-<LI><A NAME="tex2html131"
-  HREF="node11.html">Index</A>
-<LI><A NAME="tex2html132"
-  HREF="node12.html">Bibliography</A>
-<LI><A NAME="tex2html133"
-  HREF="node13.html">About this document ...</A>
-</UL>
-<!--End of Table of Child-Links-->
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/index.png b/doc/ionconf/index.png
deleted file mode 100644 (file)
index 698f09c..0000000
Binary files a/doc/ionconf/index.png and /dev/null differ
diff --git a/doc/ionconf/internals.pl b/doc/ionconf/internals.pl
deleted file mode 100644 (file)
index e2b61be..0000000
+++ /dev/null
@@ -1,1462 +0,0 @@
-# LaTeX2HTML 2002-2-1 (1.71)
-# Associate internals original text with physical files.
-
-
-$key = q/sec:queryref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.version/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_nth/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.select_engine/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.add/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_window_property/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.context/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tabnum.clear/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_exec/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_first/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.quote_next/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.insstr/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_renameworkspace/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.is_shaded/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:sizepolicies/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.set/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_activity/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap_enter/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.create_ws/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.farthest/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.finish/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bskip_word/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.mark/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_prev/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.unsplit_at/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.dec_index/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.current/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:hookref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:config/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.kpress/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_prev_screen/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_mapped/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:ioncoreref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.transpose_words/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.statusbars/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defbindings/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.p_resize/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WComplProxy.set_completions/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.shutdown/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.launch_statusd/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getbindings/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:styles/;
-$ref_files{$key} = "$dir".q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.get_stdisp/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defmenu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.reset/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:borders/;
-$ref_files{$key} = "$dir".q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.navi_next/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.reset/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_get/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_script/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WScreen.id/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_mode/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.resize/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusbar/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_nth/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.mode/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.warn_traced/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.create_timer/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.managed_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_next/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:modules/;
-$ref_files{$key} = "$dir".q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defctxmenu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.mkbottom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.tl/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set_selection/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.scrollup/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_nth/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_name_exact/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.prev_completion/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.exec_on/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.menuentry/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_grattr/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.forward/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.menu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.set/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_sp.set_shown/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.find_screen_id/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:bindings/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInfoWin.set_text/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.snapshot/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tabnum.show/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/region_do_warp_alt/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.resign/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_unmapped_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.write_savefile/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.inform/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:exports/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:hooks/;
-$ref_files{$key} = "$dir".q|node6.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.xid/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusbarref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.get_ident/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:classhierarchy/;
-$ref_files{$key} = "$dir".q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_sp.set_shown_on/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.set_floating/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.history_prev/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:binddef/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_to_eol/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_editfile/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.read_config/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_at/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.p_tabdrag/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/cite_scripts/;
-$ref_files{$key} = "$dir".q|node12.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.clientwin_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_clear/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.screen_of/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_next/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.bottom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.unsqueeze/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_search/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.node_of/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRootWin.current_scr/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.navi_first/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_to_bol/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.load_module/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menuref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menudisp/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.maximize_vert/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitInner.current/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.attach/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_tagged/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/app:fullhierarchy/;
-$ref_files{$key} = "$dir".q|node9.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/frame_managed_changed_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:tricks/;
-$ref_files{$key} = "$dir".q|node6.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_savefile/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.groupleader_of/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_clientwin/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.get/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_push/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.restart/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_set_text_property/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:winprops/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getctxmenu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.parent/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.rqgeom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.get_template_table/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.maximize_horiz/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.region_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.is_fullscreen/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.p_move/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:objects/;
-$ref_files{$key} = "$dir".q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WScreen.set_managed_offset/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_dir_for/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.set/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.point/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defer/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_prev/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_next/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:engines/;
-$ref_files{$key} = "$dir".q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.pmenu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_dock.set_floating_shown_on/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_ssh/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_atom_name/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_workspace/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.managed_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.typeahead_clear/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.copy/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.rqgeom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.managed_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.set_mark/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/screen_managed_changed_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_count/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.attach/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:managership/;
-$ref_files{$key} = "$dir".q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_menu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.move/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.get/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.flip_at/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_region/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defshortening/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.listed/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.refresh_stylelist/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.show_about_ion/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.inc_index/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_delete_property/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqclose/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_activity/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_runfile/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.set_context/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.show_tree/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.contents/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.exec/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_current/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.message/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.untile/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.compile_cmd/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:deref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bol/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submenu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.br/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_restart/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:string.shell_safe/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.set/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.backspace/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.defstyle/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroupWS.attach_framed/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:dockref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.set_floating_at/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.warn/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.current/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqclose_propagate/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/region_notify_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.clear_mark/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.focushistory_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/tiling_placement_alt/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.warn/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.begin_kbresize/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:classesrolesinstances/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.deflayout/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_attach/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_tagged/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.next_completion/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_hidden/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.cancel/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.nudge/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.geom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_nth_screen/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_mapped_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.paste/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.detach/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:miscref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.xid/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.name/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_text_property/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_attachclient/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_property_change_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.append/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mclick/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.update/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_index/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_clear/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.p_switch_tab/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_intern_atom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.finish/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_gotoclient/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_deinit_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.geom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_previous/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.find_manager/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.match_winprop_dflt/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_paths/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_first/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:walkthrough/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.update/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.cancel/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_active/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bkill_word/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.attach_new/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.create/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.attach/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mdblclick/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_top/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.flip/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.progname/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.popen_completions/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.popen_bgread/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defwinprop/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_systray/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mdrag/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.transpose/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.kill/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap_wait/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_snapshot_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.dir/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.map/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_stdisp/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_shaded/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.is_systray/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.manager/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_change_property/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.parent/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.cancel/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.back/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.finish/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.TR/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menus/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_renameframe/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.geom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.kpress_wait/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.transpose_at/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rootwin_of/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_do_manage_alt/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_sigchld_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_template_table/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.nextto/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.get/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.substyle/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.copy/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.is_histcompl/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getmenu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.is_i18n/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.refresh/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqorder/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.grabmenu/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitRegion.reg/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.size_hints/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.delete/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getwinprop/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.remove/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.request_selection/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_man/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.cut/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.goto/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_next_screen/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set_paths/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:conffiles/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.aboutmsg/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:grmisc/;
-$ref_files{$key} = "$dir".q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:prelim/;
-$ref_files{$key} = "$dir".q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getlayout/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:parentship/;
-$ref_files{$key} = "$dir".q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_template/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.read_savefile/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.restart_other/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_activity/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusd/;
-$ref_files{$key} = "$dir".q|node6.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqgeom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.scrolldown/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_table/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:defaultde/;
-$ref_files{$key} = "$dir".q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.activity_i/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.set_fullscreen/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mpress/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:tilingref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.is_set/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_name/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.join/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.activity_first/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:spref/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.is_hidden/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.get_configuration/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.get/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_yesno/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.history_next/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.eol/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.set_bottom/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.defcmd/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.bdoc/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.chdir_for/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_lua/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:export/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:gr/;
-$ref_files{$key} = "$dir".q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.set/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_word/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.defstyle_rootwin/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_post_layout_setup_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.icat/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_line/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.resize/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_shutdown/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.get_index/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.skip_word/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_submap_ungrab_hook/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.attach_new/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.complete/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.transpose_chars/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_tree/;
-$ref_files{$key} = "$dir".q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-1;
-
diff --git a/doc/ionconf/ionconf.css b/doc/ionconf/ionconf.css
deleted file mode 100644 (file)
index 86d99dc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
-.MATH    { font-family: "Century Schoolbook", serif; }
-.MATH I  { font-family: "Century Schoolbook", serif; font-style: italic }
-.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
-
-/* implement both fixed-size and relative sizes */
-SMALL.XTINY            { font-size : xx-small }
-SMALL.TINY             { font-size : x-small  }
-SMALL.SCRIPTSIZE       { font-size : smaller  }
-SMALL.FOOTNOTESIZE     { font-size : small    }
-SMALL.SMALL            {  }
-BIG.LARGE              {  }
-BIG.XLARGE             { font-size : large    }
-BIG.XXLARGE            { font-size : x-large  }
-BIG.HUGE               { font-size : larger   }
-BIG.XHUGE              { font-size : xx-large }
-
-/* heading styles */
-H1             {  }
-H2             {  }
-H3             {  }
-H4             {  }
-H5             {  }
-
-/* mathematics styles */
-DIV.displaymath                { }     /* math displays */
-TD.eqno                        { }     /* equation-number cells */
-
-
-/* document-specific styles come next */
-DIV.navigation         {   }
-DIV.flushleft          {   }
-DIV.center             {   }
-SPAN.sc                {   }
-DIV.quote              {   }
-PRE.preform            {   }
-SPAN.textit            { font-style: italic  }
-SPAN.arabic            {   }
-SPAN.textbf            { font-weight: bold  }
diff --git a/doc/ionconf/ionconf.html b/doc/ionconf/ionconf.html
deleted file mode 100644 (file)
index 0ea44a0..0000000
+++ /dev/null
@@ -1,379 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Configuring and extending Ion3 with Lua</TITLE>
-<META NAME="description" CONTENT="Configuring and extending Ion3 with Lua">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node1.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html18"
-  HREF="node1.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html12"
-  HREF="http://iki.fi/tuomov/ion/">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
-<A NAME="tex2html14"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html16"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html19"
-  HREF="node1.html">Contents</A>
-<B> Up:</B> <A NAME="tex2html13"
-  HREF="http://iki.fi/tuomov/ion/">Ion homepage</A>
- &nbsp; <B>  <A NAME="tex2html15"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html17"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<P>
-<H1 ALIGN="CENTER">Configuring and extending Ion3 with Lua</H1>
-<DIV CLASS="author_info">
-
-<P ALIGN="CENTER"><STRONG>Tuomo Valkonen</STRONG></P>
-<P ALIGN="CENTER"><I>tuomov at iki.fi</I></P>
-<P ALIGN="CENTER"><STRONG>2007-09-27</STRONG></P>
-</DIV>
-
-<P>
-Configuring and extending Ion3 with Lua
-<BR>
-Copyright &#169;  2003-2007 Tuomo Valkonen.
-
-<P>
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-<P>
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-chapter entitled ``GNU General Public License'' for more details.
-
-<P>
-<BR><HR>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html20"
-  HREF="node1.html">Contents</A>
-<LI><A NAME="tex2html21"
-  HREF="node2.html"><SPAN CLASS="arabic">1</SPAN>. Introduction</A>
-<LI><A NAME="tex2html22"
-  HREF="node3.html"><SPAN CLASS="arabic">2</SPAN>. Preliminaries: Key concepts and relations</A>
-<UL>
-<LI><A NAME="tex2html23"
-  HREF="node3.html#SECTION00310000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules</A>
-<LI><A NAME="tex2html24"
-  HREF="node3.html#SECTION00320000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies</A>
-<UL>
-<LI><A NAME="tex2html25"
-  HREF="node3.html#SECTION00321000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html26"
-  HREF="node3.html#SECTION00322000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-<UL>
-<LI><A NAME="tex2html27"
-  HREF="node3.html#SECTION00322100000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html28"
-  HREF="node3.html#SECTION00322200000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</UL>
-<LI><A NAME="tex2html29"
-  HREF="node3.html#SECTION00323000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html30"
-  HREF="node4.html"><SPAN CLASS="arabic">3</SPAN>. Basic configuration</A>
-<UL>
-<LI><A NAME="tex2html31"
-  HREF="node4.html#SECTION00410000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> The configuration files</A>
-<LI><A NAME="tex2html32"
-  HREF="node4.html#SECTION00420000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> A walk through <SPAN  CLASS="textit">cfg_ion.lua</SPAN></A>
-<LI><A NAME="tex2html33"
-  HREF="node4.html#SECTION00430000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Keys and rodents</A>
-<UL>
-<LI><A NAME="tex2html34"
-  HREF="node4.html#SECTION00431000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Binding handlers and special variables</A>
-<LI><A NAME="tex2html35"
-  HREF="node4.html#SECTION00432000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Guards</A>
-<LI><A NAME="tex2html36"
-  HREF="node4.html#SECTION00433000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining the bindings</A>
-<LI><A NAME="tex2html37"
-  HREF="node4.html#SECTION00434000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Examples</A>
-<LI><A NAME="tex2html38"
-  HREF="node4.html#SECTION00435000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Key specifications</A>
-<LI><A NAME="tex2html39"
-  HREF="node4.html#SECTION00436000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> Button specifications</A>
-<LI><A NAME="tex2html40"
-  HREF="node4.html#SECTION00437000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">7</SPAN> A further note on the default binding configuration</A>
-</UL>
-<LI><A NAME="tex2html41"
-  HREF="node4.html#SECTION00440000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Menus</A>
-<UL>
-<LI><A NAME="tex2html42"
-  HREF="node4.html#SECTION00441000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Defining menus</A>
-<LI><A NAME="tex2html43"
-  HREF="node4.html#SECTION00442000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Special menus</A>
-<LI><A NAME="tex2html44"
-  HREF="node4.html#SECTION00443000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining context menus</A>
-<LI><A NAME="tex2html45"
-  HREF="node4.html#SECTION00444000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">4</SPAN> Displaying menus</A>
-</UL>
-<LI><A NAME="tex2html46"
-  HREF="node4.html#SECTION00450000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Winprops</A>
-<UL>
-<LI><A NAME="tex2html47"
-  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
-<LI><A NAME="tex2html48"
-  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances</A>
-<LI><A NAME="tex2html49"
-  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
-<LI><A NAME="tex2html50"
-  HREF="node4.html#SECTION00454000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
-<UL>
-<LI><A NAME="tex2html51"
-  HREF="node4.html#SECTION00454100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
-<LI><A NAME="tex2html52"
-  HREF="node4.html#SECTION00454200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Forcing newly created windows in named frames</A>
-</UL>
-</UL>
-<LI><A NAME="tex2html53"
-  HREF="node4.html#SECTION00460000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> The statusbar</A>
-<UL>
-<LI><A NAME="tex2html54"
-  HREF="node4.html#SECTION00461000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> The template</A>
-<LI><A NAME="tex2html55"
-  HREF="node4.html#SECTION00462000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> The systray</A>
-<LI><A NAME="tex2html56"
-  HREF="node4.html#SECTION00463000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Monitors</A>
-<UL>
-<LI><A NAME="tex2html57"
-  HREF="node4.html#SECTION00463100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Date</A>
-<LI><A NAME="tex2html58"
-  HREF="node4.html#SECTION00463200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Load</A>
-<LI><A NAME="tex2html59"
-  HREF="node4.html#SECTION00463300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Mail</A>
-</UL>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html60"
-  HREF="node5.html"><SPAN CLASS="arabic">4</SPAN>. Graphical styles</A>
-<UL>
-<LI><A NAME="tex2html61"
-  HREF="node5.html#SECTION00510000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles</A>
-<UL>
-<LI><A NAME="tex2html62"
-  HREF="node5.html#SECTION00511000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Known styles and substyles</A>
-<UL>
-<LI><A NAME="tex2html63"
-  HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
-<LI><A NAME="tex2html64"
-  HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
-<LI><A NAME="tex2html65"
-  HREF="node5.html#SECTION00511300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> The rest</A>
-</UL>
-</UL>
-<LI><A NAME="tex2html66"
-  HREF="node5.html#SECTION00520000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining styles for the default drawing engine</A>
-<UL>
-<LI><A NAME="tex2html67"
-  HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
-<LI><A NAME="tex2html68"
-  HREF="node5.html#SECTION00522000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining the styles</A>
-<UL>
-<LI><A NAME="tex2html69"
-  HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
-<LI><A NAME="tex2html70"
-  HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
-<LI><A NAME="tex2html71"
-  HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
-<LI><A NAME="tex2html72"
-  HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-<LI><A NAME="tex2html73"
-  HREF="node5.html#SECTION00522500000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> Substyles</A>
-</UL>
-<LI><A NAME="tex2html74"
-  HREF="node5.html#SECTION00523000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> An example</A>
-</UL>
-<LI><A NAME="tex2html75"
-  HREF="node5.html#SECTION00530000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Miscellaneous settings</A>
-<UL>
-<LI><A NAME="tex2html76"
-  HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frame user attributes</A>
-<LI><A NAME="tex2html77"
-  HREF="node5.html#SECTION00532000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Extra fields for style `<TT>frame</TT>'</A>
-<LI><A NAME="tex2html78"
-  HREF="node5.html#SECTION00533000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Extra fields for style `<TT>dock</TT>'</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html79"
-  HREF="node6.html"><SPAN CLASS="arabic">5</SPAN>. Scripting</A>
-<UL>
-<LI><A NAME="tex2html80"
-  HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
-<LI><A NAME="tex2html81"
-  HREF="node6.html#SECTION00620000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Referring to regions</A>
-<UL>
-<LI><A NAME="tex2html82"
-  HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
-<LI><A NAME="tex2html83"
-  HREF="node6.html#SECTION00622000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Name-based lookups</A>
-</UL>
-<LI><A NAME="tex2html84"
-  HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
-<LI><A NAME="tex2html85"
-  HREF="node6.html#SECTION00640000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Writing <TT>ion-statusd</TT> monitors</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html86"
-  HREF="node7.html"><SPAN CLASS="arabic">6</SPAN>. Function reference</A>
-<UL>
-<LI><A NAME="tex2html87"
-  HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN></A>
-<UL>
-<LI><A NAME="tex2html88"
-  HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
-<LI><A NAME="tex2html89"
-  HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
-<LI><A NAME="tex2html90"
-  HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
-<LI><A NAME="tex2html91"
-  HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
-<LI><A NAME="tex2html92"
-  HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
-<LI><A NAME="tex2html93"
-  HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
-<LI><A NAME="tex2html94"
-  HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
-<LI><A NAME="tex2html95"
-  HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
-<LI><A NAME="tex2html96"
-  HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
-<LI><A NAME="tex2html97"
-  HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
-<LI><A NAME="tex2html98"
-  HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
-<LI><A NAME="tex2html99"
-  HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
-<LI><A NAME="tex2html100"
-  HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
-<LI><A NAME="tex2html101"
-  HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
-<LI><A NAME="tex2html102"
-  HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
-<LI><A NAME="tex2html103"
-  HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
-<LI><A NAME="tex2html104"
-  HREF="node7.html#SECTION007117000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
-<LI><A NAME="tex2html105"
-  HREF="node7.html#SECTION007118000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
-</UL>
-<LI><A NAME="tex2html106"
-  HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN></A>
-<UL>
-<LI><A NAME="tex2html107"
-  HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
-<LI><A NAME="tex2html108"
-  HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
-<LI><A NAME="tex2html109"
-  HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
-<LI><A NAME="tex2html110"
-  HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
-<LI><A NAME="tex2html111"
-  HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
-</UL>
-<LI><A NAME="tex2html112"
-  HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN></A>
-<UL>
-<LI><A NAME="tex2html113"
-  HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
-<LI><A NAME="tex2html114"
-  HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
-<LI><A NAME="tex2html115"
-  HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
-</UL>
-<LI><A NAME="tex2html116"
-  HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN></A>
-<UL>
-<LI><A NAME="tex2html117"
-  HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
-</UL>
-<LI><A NAME="tex2html118"
-  HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN></A>
-<UL>
-<LI><A NAME="tex2html119"
-  HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
-</UL>
-<LI><A NAME="tex2html120"
-  HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
-<LI><A NAME="tex2html121"
-  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN></A>
-<UL>
-<LI><A NAME="tex2html122"
-  HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
-</UL>
-<LI><A NAME="tex2html123"
-  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
-<LI><A NAME="tex2html124"
-  HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
-<LI><A NAME="tex2html125"
-  HREF="node7.html#SECTION007100000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous</A>
-<UL>
-<LI><A NAME="tex2html126"
-  HREF="node7.html#SECTION007101000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html127"
-  HREF="node8.html">A. The GNU General Public License</A>
-<UL>
-<LI><A NAME="tex2html128"
-  HREF="node8.html#SECTION00810000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html129"
-  HREF="node9.html">B. Full class hierarchy visible to Lua-side</A>
-<LI><A NAME="tex2html130"
-  HREF="node10.html">List of functions</A>
-<LI><A NAME="tex2html131"
-  HREF="node11.html">Index</A>
-<LI><A NAME="tex2html132"
-  HREF="node12.html">Bibliography</A>
-<LI><A NAME="tex2html133"
-  HREF="node13.html">About this document ...</A>
-</UL>
-<!--End of Table of Child-Links-->
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/labels.pl b/doc/ionconf/labels.pl
deleted file mode 100644 (file)
index 54a83c4..0000000
+++ /dev/null
@@ -1,2921 +0,0 @@
-# LaTeX2HTML 2002-2-1 (1.71)
-# Associate labels original text with physical files.
-
-
-$key = q/sec:queryref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.version/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_nth/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.select_engine/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.add/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_window_property/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.context/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tabnum.clear/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_exec/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_first/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.quote_next/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.insstr/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_renameworkspace/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.is_shaded/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:sizepolicies/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.set/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_activity/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap_enter/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.create_ws/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.farthest/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.finish/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bskip_word/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.mark/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_prev/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.unsplit_at/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.dec_index/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.current/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:hookref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:config/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.kpress/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_prev_screen/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_mapped/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:ioncoreref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.transpose_words/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.statusbars/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defbindings/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.p_resize/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WComplProxy.set_completions/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.shutdown/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.launch_statusd/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getbindings/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:styles/;
-$external_labels{$key} = "$URL/" . q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.get_stdisp/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defmenu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.reset/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:borders/;
-$external_labels{$key} = "$URL/" . q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.navi_next/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.reset/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_get/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_script/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WScreen.id/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_mode/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.resize/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusbar/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_nth/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.mode/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.warn_traced/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.create_timer/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.managed_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_next/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:modules/;
-$external_labels{$key} = "$URL/" . q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defctxmenu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.mkbottom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.tl/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set_selection/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.scrollup/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_nth/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_name_exact/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.prev_completion/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.exec_on/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.menuentry/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_grattr/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.forward/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.menu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.set/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_sp.set_shown/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.find_screen_id/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:bindings/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInfoWin.set_text/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.snapshot/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tabnum.show/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/region_do_warp_alt/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.resign/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_unmapped_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.write_savefile/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.inform/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:exports/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:hooks/;
-$external_labels{$key} = "$URL/" . q|node6.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.xid/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusbarref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.get_ident/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:classhierarchy/;
-$external_labels{$key} = "$URL/" . q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_sp.set_shown_on/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.set_floating/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.history_prev/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:binddef/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_to_eol/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_editfile/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.read_config/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_at/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.p_tabdrag/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/cite_scripts/;
-$external_labels{$key} = "$URL/" . q|node12.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.clientwin_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_clear/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.screen_of/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_next/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.bottom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.unsqueeze/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_search/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.node_of/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRootWin.current_scr/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.navi_first/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_to_bol/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.load_module/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menuref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menudisp/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.maximize_vert/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitInner.current/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.attach/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_tagged/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/app:fullhierarchy/;
-$external_labels{$key} = "$URL/" . q|node9.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/frame_managed_changed_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:tricks/;
-$external_labels{$key} = "$URL/" . q|node6.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_savefile/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.groupleader_of/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_clientwin/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.get/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_push/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.restart/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_set_text_property/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:winprops/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getctxmenu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.parent/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.rqgeom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.get_template_table/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.maximize_horiz/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.region_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.is_fullscreen/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.p_move/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:objects/;
-$external_labels{$key} = "$URL/" . q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WScreen.set_managed_offset/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_dir_for/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.set/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.point/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defer/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_prev/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_next/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:engines/;
-$external_labels{$key} = "$URL/" . q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.pmenu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_dock.set_floating_shown_on/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_ssh/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_atom_name/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_workspace/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.managed_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.typeahead_clear/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.copy/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.rqgeom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.managed_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.set_mark/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/screen_managed_changed_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_count/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.attach/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:managership/;
-$external_labels{$key} = "$URL/" . q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_menu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.move/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.get/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.flip_at/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_region/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defshortening/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.listed/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.refresh_stylelist/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.show_about_ion/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.inc_index/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_delete_property/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqclose/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_activity/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_runfile/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.set_context/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.show_tree/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.contents/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.exec/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_current/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.message/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.untile/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.compile_cmd/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:deref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bol/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submenu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.br/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_restart/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:string.shell_safe/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.set/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.backspace/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.defstyle/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroupWS.attach_framed/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:dockref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.set_floating_at/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.warn/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.current/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqclose_propagate/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/region_notify_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.clear_mark/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.focushistory_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/tiling_placement_alt/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.warn/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.begin_kbresize/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:classesrolesinstances/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.deflayout/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_attach/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_tagged/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.next_completion/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_hidden/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.cancel/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.nudge/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.geom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_nth_screen/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_mapped_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.paste/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.detach/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:miscref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.xid/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.name/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_text_property/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_attachclient/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_property_change_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.append/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mclick/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.update/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_index/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_clear/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.p_switch_tab/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_intern_atom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.finish/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_gotoclient/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_deinit_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.geom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_previous/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.find_manager/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.match_winprop_dflt/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_paths/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_first/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:walkthrough/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.update/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.cancel/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_active/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bkill_word/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.attach_new/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.create/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.attach/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mdblclick/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_top/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.flip/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.progname/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.popen_completions/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.popen_bgread/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defwinprop/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_systray/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mdrag/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.transpose/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.kill/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap_wait/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_snapshot_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.dir/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.map/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_stdisp/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_shaded/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.is_systray/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.manager/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_change_property/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.parent/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.cancel/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.back/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.finish/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.TR/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menus/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_renameframe/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.geom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.kpress_wait/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.transpose_at/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rootwin_of/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_do_manage_alt/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_sigchld_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_template_table/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.nextto/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.get/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.substyle/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.copy/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.is_histcompl/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getmenu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.is_i18n/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.refresh/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqorder/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.grabmenu/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitRegion.reg/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.size_hints/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.delete/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getwinprop/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.remove/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.request_selection/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_man/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.cut/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.goto/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_next_screen/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set_paths/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:conffiles/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.aboutmsg/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:grmisc/;
-$external_labels{$key} = "$URL/" . q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:prelim/;
-$external_labels{$key} = "$URL/" . q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getlayout/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:parentship/;
-$external_labels{$key} = "$URL/" . q|node3.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_template/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.read_savefile/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.restart_other/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_activity/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusd/;
-$external_labels{$key} = "$URL/" . q|node6.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqgeom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.scrolldown/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_table/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:defaultde/;
-$external_labels{$key} = "$URL/" . q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.activity_i/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.set_fullscreen/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mpress/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:tilingref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.is_set/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_name/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.join/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.activity_first/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:spref/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.is_hidden/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.get_configuration/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.get/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_yesno/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.history_next/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.eol/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.set_bottom/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.defcmd/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.bdoc/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.chdir_for/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_lua/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:export/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:gr/;
-$external_labels{$key} = "$URL/" . q|node5.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.set/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_word/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.defstyle_rootwin/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_post_layout_setup_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.icat/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_line/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.resize/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_shutdown/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.get_index/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.skip_word/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_submap_ungrab_hook/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.attach_new/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.complete/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.transpose_chars/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_tree/;
-$external_labels{$key} = "$URL/" . q|node7.html|; 
-$noresave{$key} = "$nosave";
-
-1;
-
-
-# LaTeX2HTML 2002-2-1 (1.71)
-# labels from external_latex_labels array.
-
-
-$key = q/sec:queryref/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.version/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_nth/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.select_engine/;
-$external_latex_labels{$key} = q|6.1.16|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.add/;
-$external_latex_labels{$key} = q|6.1.6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_window_property/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.context/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_hook/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tabnum.clear/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_exec/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_first/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.quote_next/;
-$external_latex_labels{$key} = q|6.1.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.insstr/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_renameworkspace/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.is_shaded/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:sizepolicies/;
-$external_latex_labels{$key} = q|6.10.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.set/;
-$external_latex_labels{$key} = q|6.1.13|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_activity/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap_enter/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.create_ws/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.farthest/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.finish/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bskip_word/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.mark/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_prev/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.unsplit_at/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.dec_index/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.current/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:hookref/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:config/;
-$external_latex_labels{$key} = q|3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.kpress/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_prev_screen/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_mapped/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:ioncoreref/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.transpose_words/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.statusbars/;
-$external_latex_labels{$key} = q|6.7|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defbindings/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.p_resize/;
-$external_latex_labels{$key} = q|6.1.14|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WComplProxy.set_completions/;
-$external_latex_labels{$key} = q|6.3.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.shutdown/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.launch_statusd/;
-$external_latex_labels{$key} = q|6.7|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getbindings/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:styles/;
-$external_latex_labels{$key} = q|4.1.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.get_stdisp/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defmenu/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.reset/;
-$external_latex_labels{$key} = q|6.1.13|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:borders/;
-$external_latex_labels{$key} = q|4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.navi_next/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.reset/;
-$external_latex_labels{$key} = q|6.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_get/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_script/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WScreen.id/;
-$external_latex_labels{$key} = q|6.1.12|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_mode/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.resize/;
-$external_latex_labels{$key} = q|6.1.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusbar/;
-$external_latex_labels{$key} = q|3.6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_nth/;
-$external_latex_labels{$key} = q|6.4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.mode/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.warn_traced/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.create_timer/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.managed_i/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_next/;
-$external_latex_labels{$key} = q|6.4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:modules/;
-$external_latex_labels{$key} = q|2.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defctxmenu/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.mkbottom/;
-$external_latex_labels{$key} = q|6.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.tl/;
-$external_latex_labels{$key} = q|6.2.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set_selection/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.scrollup/;
-$external_latex_labels{$key} = q|6.3.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_nth/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_name_exact/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.prev_completion/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.exec_on/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.menuentry/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_grattr/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.forward/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.menu/;
-$external_latex_labels{$key} = q|6.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.set/;
-$external_latex_labels{$key} = q|6.5.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_sp.set_shown/;
-$external_latex_labels{$key} = q|6.6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.find_screen_id/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:bindings/;
-$external_latex_labels{$key} = q|3.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInfoWin.set_text/;
-$external_latex_labels{$key} = q|6.1.7|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.snapshot/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tabnum.show/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/region_do_warp_alt/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.resign/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_unmapped_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.write_savefile/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.inform/;
-$external_latex_labels{$key} = q|6.7|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_i/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:exports/;
-$external_latex_labels{$key} = q|6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:hooks/;
-$external_latex_labels{$key} = q|5.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.xid/;
-$external_latex_labels{$key} = q|6.1.14|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusbarref/;
-$external_latex_labels{$key} = q|6.7|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.get_ident/;
-$external_latex_labels{$key} = q|6.1.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:classhierarchy/;
-$external_latex_labels{$key} = q|2.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_sp.set_shown_on/;
-$external_latex_labels{$key} = q|6.6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.set_floating/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.history_prev/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:binddef/;
-$external_latex_labels{$key} = q|3.3.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_to_eol/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_editfile/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.read_config/;
-$external_latex_labels{$key} = q|6.1.16|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_at/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.p_tabdrag/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.clientwin_i/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_clear/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.screen_of/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.switch_next/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.bottom/;
-$external_latex_labels{$key} = q|6.1.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.unsqueeze/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_search/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.node_of/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRootWin.current_scr/;
-$external_latex_labels{$key} = q|6.1.11|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.navi_first/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_to_bol/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.load_module/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menuref/;
-$external_latex_labels{$key} = q|6.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menudisp/;
-$external_latex_labels{$key} = q|3.4.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.maximize_vert/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitInner.current/;
-$external_latex_labels{$key} = q|6.2.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.attach/;
-$external_latex_labels{$key} = q|6.5.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_tagged/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/app:fullhierarchy/;
-$external_latex_labels{$key} = q|B|; 
-$noresave{$key} = "$nosave";
-
-$key = q/frame_managed_changed_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:tricks/;
-$external_latex_labels{$key} = q|5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.groupleader_of/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_savefile/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_clientwin/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.get/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_push/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.restart/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_set_text_property/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:winprops/;
-$external_latex_labels{$key} = q|3.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getctxmenu/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.parent/;
-$external_latex_labels{$key} = q|6.2.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.rqgeom/;
-$external_latex_labels{$key} = q|6.1.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.get_template_table/;
-$external_latex_labels{$key} = q|6.7.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.maximize_horiz/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.region_i/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.is_fullscreen/;
-$external_latex_labels{$key} = q|6.1.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WWindow.p_move/;
-$external_latex_labels{$key} = q|6.1.14|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:objects/;
-$external_latex_labels{$key} = q|2.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WScreen.set_managed_offset/;
-$external_latex_labels{$key} = q|6.1.12|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_dir_for/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.set/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.point/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defer/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.select_prev/;
-$external_latex_labels{$key} = q|6.4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_next/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:engines/;
-$external_latex_labels{$key} = q|4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.pmenu/;
-$external_latex_labels{$key} = q|6.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_dock.set_floating_shown_on/;
-$external_latex_labels{$key} = q|6.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_ssh/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_atom_name/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_workspace/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.managed_i/;
-$external_latex_labels{$key} = q|6.1.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.typeahead_clear/;
-$external_latex_labels{$key} = q|6.4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.copy/;
-$external_latex_labels{$key} = q|6.1.18|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.rqgeom/;
-$external_latex_labels{$key} = q|6.2.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.managed_i/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.set_mark/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/screen_managed_changed_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_count/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.attach/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:managership/;
-$external_latex_labels{$key} = q|2.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_menu/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.move/;
-$external_latex_labels{$key} = q|6.1.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.get/;
-$external_latex_labels{$key} = q|6.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.flip_at/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.lookup_region/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defshortening/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.listed/;
-$external_latex_labels{$key} = q|6.1.6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.refresh_stylelist/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.show_about_ion/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.inc_index/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_delete_property/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqclose/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_activity/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_runfile/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.set_context/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.show_tree/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.contents/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.exec/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_current/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.message/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.untile/;
-$external_latex_labels{$key} = q|6.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.compile_cmd/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:deref/;
-$external_latex_labels{$key} = q|6.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bol/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submenu/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.br/;
-$external_latex_labels{$key} = q|6.2.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_restart/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:string.shell_safe/;
-$external_latex_labels{$key} = q|6.1.17|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_tiling.set/;
-$external_latex_labels{$key} = q|6.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.backspace/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.defstyle/;
-$external_latex_labels{$key} = q|6.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroupWS.attach_framed/;
-$external_latex_labels{$key} = q|6.1.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:dockref/;
-$external_latex_labels{$key} = q|6.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.set_floating_at/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.warn/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.current/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqclose_propagate/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/region_notify_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.clear_mark/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.focushistory_i/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/tiling_placement_alt/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.warn/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.begin_kbresize/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:classesrolesinstances/;
-$external_latex_labels{$key} = q|3.5.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.deflayout/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_attach/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_tagged/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.next_completion/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_hidden/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.cancel/;
-$external_latex_labels{$key} = q|6.4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.nudge/;
-$external_latex_labels{$key} = q|6.1.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.geom/;
-$external_latex_labels{$key} = q|6.1.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_nth_screen/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_mapped_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.paste/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.detach/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:miscref/;
-$external_latex_labels{$key} = q|6.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.xid/;
-$external_latex_labels{$key} = q|6.1.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.name/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_get_text_property/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_attachclient/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_property_change_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.append/;
-$external_latex_labels{$key} = q|6.1.18|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mclick/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.update/;
-$external_latex_labels{$key} = q|6.7.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_index/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_clear/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.p_switch_tab/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_intern_atom/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.finish/;
-$external_latex_labels{$key} = q|6.1.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_gotoclient/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_deinit_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.geom/;
-$external_latex_labels{$key} = q|6.2.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_previous/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.find_manager/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.match_winprop_dflt/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.get_paths/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.tagged_first/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:walkthrough/;
-$external_latex_labels{$key} = q|3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.update/;
-$external_latex_labels{$key} = q|6.7|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMoveresMode.cancel/;
-$external_latex_labels{$key} = q|6.1.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_active/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.bkill_word/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.attach_new/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_statusbar.create/;
-$external_latex_labels{$key} = q|6.7|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.attach/;
-$external_latex_labels{$key} = q|6.1.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mdblclick/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.flip/;
-$external_latex_labels{$key} = q|6.2.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_top/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.progname/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.popen_completions/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.popen_bgread/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.defwinprop/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_systray/;
-$external_latex_labels{$key} = q|6.7.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mdrag/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplit.transpose/;
-$external_latex_labels{$key} = q|6.2.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WClientWin.kill/;
-$external_latex_labels{$key} = q|6.1.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.submap_wait/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_snapshot_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitSplit.dir/;
-$external_latex_labels{$key} = q|6.2.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.map/;
-$external_latex_labels{$key} = q|6.1.18|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.set_stdisp/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WFrame.set_shaded/;
-$external_latex_labels{$key} = q|6.1.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.is_systray/;
-$external_latex_labels{$key} = q|6.7.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.manager/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.x_change_property/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.parent/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.cancel/;
-$external_latex_labels{$key} = q|6.3.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.back/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMenu.finish/;
-$external_latex_labels{$key} = q|6.4.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.TR/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:menus/;
-$external_latex_labels{$key} = q|3.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_renameframe/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.geom/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.kpress_wait/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.transpose_at/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rootwin_of/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.mx_i/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/clientwin_do_manage_alt/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_sigchld_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_template_table/;
-$external_latex_labels{$key} = q|6.7.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.nextto/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.get/;
-$external_latex_labels{$key} = q|6.5.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.substyle/;
-$external_latex_labels{$key} = q|6.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.copy/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.is_histcompl/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getmenu/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.is_i18n/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:gr.refresh/;
-$external_latex_labels{$key} = q|6.1.16|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqorder/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.grabmenu/;
-$external_latex_labels{$key} = q|6.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WSplitRegion.reg/;
-$external_latex_labels{$key} = q|6.2.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.size_hints/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.delete/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getwinprop/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WHook.remove/;
-$external_latex_labels{$key} = q|6.1.6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.request_selection/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_man/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.cut/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.goto/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.goto_next_screen/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set_paths/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:conffiles/;
-$external_latex_labels{$key} = q|3.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.aboutmsg/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:grmisc/;
-$external_latex_labels{$key} = q|4.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:prelim/;
-$external_latex_labels{$key} = q|2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.getlayout/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:parentship/;
-$external_latex_labels{$key} = q|2.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WStatusBar.set_template/;
-$external_latex_labels{$key} = q|6.7.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.read_savefile/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.restart_other/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.is_activity/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:statusd/;
-$external_latex_labels{$key} = q|5.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.rqgeom/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WInput.scrolldown/;
-$external_latex_labels{$key} = q|6.3.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.history_table/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:defaultde/;
-$external_latex_labels{$key} = q|4.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.set/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.activity_i/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.set_fullscreen/;
-$external_latex_labels{$key} = q|6.1.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.mpress/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:tilingref/;
-$external_latex_labels{$key} = q|6.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTimer.is_set/;
-$external_latex_labels{$key} = q|6.1.13|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.set_name/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.join/;
-$external_latex_labels{$key} = q|6.1.18|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.activity_first/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:spref/;
-$external_latex_labels{$key} = q|6.6|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.is_hidden/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WRegion.get_configuration/;
-$external_latex_labels{$key} = q|6.1.10|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.get/;
-$external_latex_labels{$key} = q|6.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_yesno/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.history_next/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.eol/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.set_bottom/;
-$external_latex_labels{$key} = q|6.1.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.defcmd/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.bdoc/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:ioncore.chdir_for/;
-$external_latex_labels{$key} = q|6.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_lua/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:export/;
-$external_latex_labels{$key} = q|6.1.15|; 
-$noresave{$key} = "$nosave";
-
-$key = q/chap:gr/;
-$external_latex_labels{$key} = q|4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_menu.set/;
-$external_latex_labels{$key} = q|6.4|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_word/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:de.defstyle_rootwin/;
-$external_latex_labels{$key} = q|6.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_post_layout_setup_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:table.icat/;
-$external_latex_labels{$key} = q|6.1.18|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.kill_line/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WDock.resize/;
-$external_latex_labels{$key} = q|6.5.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:mod_query.query_shutdown/;
-$external_latex_labels{$key} = q|6.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WMPlex.get_index/;
-$external_latex_labels{$key} = q|6.1.8|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.skip_word/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/ioncore_submap_ungrab_hook/;
-$external_latex_labels{$key} = q|6.9|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WGroup.attach_new/;
-$external_latex_labels{$key} = q|6.1.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.complete/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WEdln.transpose_chars/;
-$external_latex_labels{$key} = q|6.3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fn:WTiling.split_tree/;
-$external_latex_labels{$key} = q|6.2.5|; 
-$noresave{$key} = "$nosave";
-
-1;
-
diff --git a/doc/ionconf/next.png b/doc/ionconf/next.png
deleted file mode 100644 (file)
index 1628652..0000000
Binary files a/doc/ionconf/next.png and /dev/null differ
diff --git a/doc/ionconf/next_g.png b/doc/ionconf/next_g.png
deleted file mode 100644 (file)
index 9d3f591..0000000
Binary files a/doc/ionconf/next_g.png and /dev/null differ
diff --git a/doc/ionconf/node1.html b/doc/ionconf/node1.html
deleted file mode 100644 (file)
index 8027def..0000000
+++ /dev/null
@@ -1,308 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Contents</TITLE>
-<META NAME="description" CONTENT="Contents">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node2.html">
-<LINK REL="previous" HREF="ionconf.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node2.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html144"
-  HREF="node2.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html140"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html134"
-  HREF="ionconf.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>  
-<A NAME="tex2html142"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html145"
-  HREF="node2.html">1. Introduction</A>
-<B> Up:</B> <A NAME="tex2html141"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html135"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
- &nbsp; <B>  <A NAME="tex2html143"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<BR>
-
-<H2><A NAME="SECTION00100000000000000000">
-Contents</A>
-</H2>
-<!--Table of Contents-->
-
-<UL CLASS="TofC">
-<LI><A NAME="tex2html146"
-  HREF="node2.html">1. Introduction</A>
-<LI><A NAME="tex2html147"
-  HREF="node3.html">2. Preliminaries: Key concepts and relations</A>
-<UL>
-<LI><A NAME="tex2html148"
-  HREF="node3.html#SECTION00310000000000000000">2.1 Modules</A>
-<LI><A NAME="tex2html149"
-  HREF="node3.html#SECTION00320000000000000000">2.2 Class and object hierarchies</A>
-<UL>
-<LI><A NAME="tex2html150"
-  HREF="node3.html#SECTION00321000000000000000">2.2.1 Class hierarchy</A>
-<LI><A NAME="tex2html151"
-  HREF="node3.html#SECTION00322000000000000000">2.2.2 Object hierarchies: WRegion parents and managers</A>
-<LI><A NAME="tex2html152"
-  HREF="node3.html#SECTION00323000000000000000">2.2.3 Summary</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html153"
-  HREF="node4.html">3. Basic configuration</A>
-<UL>
-<LI><A NAME="tex2html154"
-  HREF="node4.html#SECTION00410000000000000000">3.1 The configuration files</A>
-<LI><A NAME="tex2html155"
-  HREF="node4.html#SECTION00420000000000000000">3.2 A walk through cfg_ion.lua</A>
-<LI><A NAME="tex2html156"
-  HREF="node4.html#SECTION00430000000000000000">3.3 Keys and rodents</A>
-<UL>
-<LI><A NAME="tex2html157"
-  HREF="node4.html#SECTION00431000000000000000">3.3.1 Binding handlers and special variables</A>
-<LI><A NAME="tex2html158"
-  HREF="node4.html#SECTION00432000000000000000">3.3.2 Guards</A>
-<LI><A NAME="tex2html159"
-  HREF="node4.html#SECTION00433000000000000000">3.3.3 Defining the bindings</A>
-<LI><A NAME="tex2html160"
-  HREF="node4.html#SECTION00434000000000000000">3.3.4 Examples</A>
-<LI><A NAME="tex2html161"
-  HREF="node4.html#SECTION00435000000000000000">3.3.5 Key specifications</A>
-<LI><A NAME="tex2html162"
-  HREF="node4.html#SECTION00436000000000000000">3.3.6 Button specifications</A>
-<LI><A NAME="tex2html163"
-  HREF="node4.html#SECTION00437000000000000000">3.3.7 A further note on the default binding configuration</A>
-</UL>
-<LI><A NAME="tex2html164"
-  HREF="node4.html#SECTION00440000000000000000">3.4 Menus</A>
-<UL>
-<LI><A NAME="tex2html165"
-  HREF="node4.html#SECTION00441000000000000000">3.4.1 Defining menus</A>
-<LI><A NAME="tex2html166"
-  HREF="node4.html#SECTION00442000000000000000">3.4.2 Special menus</A>
-<LI><A NAME="tex2html167"
-  HREF="node4.html#SECTION00443000000000000000">3.4.3 Defining context menus</A>
-<LI><A NAME="tex2html168"
-  HREF="node4.html#SECTION00444000000000000000">3.4.4 Displaying menus</A>
-</UL>
-<LI><A NAME="tex2html169"
-  HREF="node4.html#SECTION00450000000000000000">3.5 Winprops</A>
-<UL>
-<LI><A NAME="tex2html170"
-  HREF="node4.html#SECTION00451000000000000000">3.5.1 Sizehint winprops</A>
-<LI><A NAME="tex2html171"
-  HREF="node4.html#SECTION00452000000000000000">3.5.2 Classes, roles and instances</A>
-<LI><A NAME="tex2html172"
-  HREF="node4.html#SECTION00453000000000000000">3.5.3 Finding window identification</A>
-<LI><A NAME="tex2html173"
-  HREF="node4.html#SECTION00454000000000000000">3.5.4 Some common examples</A>
-</UL>
-<LI><A NAME="tex2html174"
-  HREF="node4.html#SECTION00460000000000000000">3.6 The statusbar</A>
-<UL>
-<LI><A NAME="tex2html175"
-  HREF="node4.html#SECTION00461000000000000000">3.6.1 The template</A>
-<LI><A NAME="tex2html176"
-  HREF="node4.html#SECTION00462000000000000000">3.6.2 The systray</A>
-<LI><A NAME="tex2html177"
-  HREF="node4.html#SECTION00463000000000000000">3.6.3 Monitors</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html178"
-  HREF="node5.html">4. Graphical styles</A>
-<UL>
-<LI><A NAME="tex2html179"
-  HREF="node5.html#SECTION00510000000000000000">4.1 Drawing engines, style specifications and sub-styles</A>
-<UL>
-<LI><A NAME="tex2html180"
-  HREF="node5.html#SECTION00511000000000000000">4.1.1 Known styles and substyles</A>
-</UL>
-<LI><A NAME="tex2html181"
-  HREF="node5.html#SECTION00520000000000000000">4.2 Defining styles for the default drawing engine</A>
-<UL>
-<LI><A NAME="tex2html182"
-  HREF="node5.html#SECTION00521000000000000000">4.2.1 The structure of the configuration files</A>
-<LI><A NAME="tex2html183"
-  HREF="node5.html#SECTION00522000000000000000">4.2.2 Defining the styles</A>
-<LI><A NAME="tex2html184"
-  HREF="node5.html#SECTION00523000000000000000">4.2.3 An example</A>
-</UL>
-<LI><A NAME="tex2html185"
-  HREF="node5.html#SECTION00530000000000000000">4.3 Miscellaneous settings</A>
-<UL>
-<LI><A NAME="tex2html186"
-  HREF="node5.html#SECTION00531000000000000000">4.3.1 Frame user attributes</A>
-<LI><A NAME="tex2html187"
-  HREF="node5.html#SECTION00532000000000000000">4.3.2 Extra fields for style `frame'</A>
-<LI><A NAME="tex2html188"
-  HREF="node5.html#SECTION00533000000000000000">4.3.3 Extra fields for style `dock'</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html189"
-  HREF="node6.html">5. Scripting</A>
-<UL>
-<LI><A NAME="tex2html190"
-  HREF="node6.html#SECTION00610000000000000000">5.1 Hooks</A>
-<LI><A NAME="tex2html191"
-  HREF="node6.html#SECTION00620000000000000000">5.2 Referring to regions</A>
-<UL>
-<LI><A NAME="tex2html192"
-  HREF="node6.html#SECTION00621000000000000000">5.2.1 Direct object references</A>
-<LI><A NAME="tex2html193"
-  HREF="node6.html#SECTION00622000000000000000">5.2.2 Name-based lookups</A>
-</UL>
-<LI><A NAME="tex2html194"
-  HREF="node6.html#SECTION00630000000000000000">5.3 Alternative winprop selection criteria</A>
-<LI><A NAME="tex2html195"
-  HREF="node6.html#SECTION00640000000000000000">5.4 Writing ion-statusd monitors</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html196"
-  HREF="node7.html">6. Function reference</A>
-<UL>
-<LI><A NAME="tex2html197"
-  HREF="node7.html#SECTION00710000000000000000">6.1 Functions defined in ioncore</A>
-<UL>
-<LI><A NAME="tex2html198"
-  HREF="node7.html#SECTION00711000000000000000">6.1.1 WClientWin functions</A>
-<LI><A NAME="tex2html199"
-  HREF="node7.html#SECTION00712000000000000000">6.1.2 WFrame functions</A>
-<LI><A NAME="tex2html200"
-  HREF="node7.html#SECTION00713000000000000000">6.1.3 WGroup functions</A>
-<LI><A NAME="tex2html201"
-  HREF="node7.html#SECTION00714000000000000000">6.1.4 WGroupCW functions</A>
-<LI><A NAME="tex2html202"
-  HREF="node7.html#SECTION00715000000000000000">6.1.5 WGroupWS functions</A>
-<LI><A NAME="tex2html203"
-  HREF="node7.html#SECTION00716000000000000000">6.1.6 WHook functions</A>
-<LI><A NAME="tex2html204"
-  HREF="node7.html#SECTION00717000000000000000">6.1.7 WInfoWin functions</A>
-<LI><A NAME="tex2html205"
-  HREF="node7.html#SECTION00718000000000000000">6.1.8 WMPlex functions</A>
-<LI><A NAME="tex2html206"
-  HREF="node7.html#SECTION00719000000000000000">6.1.9 WMoveresMode functions</A>
-<LI><A NAME="tex2html207"
-  HREF="node7.html#SECTION007110000000000000000">6.1.10 WRegion functions</A>
-<LI><A NAME="tex2html208"
-  HREF="node7.html#SECTION007111000000000000000">6.1.11 WRootWin functions</A>
-<LI><A NAME="tex2html209"
-  HREF="node7.html#SECTION007112000000000000000">6.1.12 WScreen functions</A>
-<LI><A NAME="tex2html210"
-  HREF="node7.html#SECTION007113000000000000000">6.1.13 WTimer functions</A>
-<LI><A NAME="tex2html211"
-  HREF="node7.html#SECTION007114000000000000000">6.1.14 WWindow functions</A>
-<LI><A NAME="tex2html212"
-  HREF="node7.html#SECTION007115000000000000000">6.1.15 global functions</A>
-<LI><A NAME="tex2html213"
-  HREF="node7.html#SECTION007116000000000000000">6.1.16 gr functions</A>
-<LI><A NAME="tex2html214"
-  HREF="node7.html#SECTION007117000000000000000">6.1.17 string functions</A>
-<LI><A NAME="tex2html215"
-  HREF="node7.html#SECTION007118000000000000000">6.1.18 table functions</A>
-</UL>
-<LI><A NAME="tex2html216"
-  HREF="node7.html#SECTION00720000000000000000">6.2 Functions defined in mod_tiling</A>
-<UL>
-<LI><A NAME="tex2html217"
-  HREF="node7.html#SECTION00721000000000000000">6.2.1 WSplit functions</A>
-<LI><A NAME="tex2html218"
-  HREF="node7.html#SECTION00722000000000000000">6.2.2 WSplitInner functions</A>
-<LI><A NAME="tex2html219"
-  HREF="node7.html#SECTION00723000000000000000">6.2.3 WSplitRegion functions</A>
-<LI><A NAME="tex2html220"
-  HREF="node7.html#SECTION00724000000000000000">6.2.4 WSplitSplit functions</A>
-<LI><A NAME="tex2html221"
-  HREF="node7.html#SECTION00725000000000000000">6.2.5 WTiling functions</A>
-</UL>
-<LI><A NAME="tex2html222"
-  HREF="node7.html#SECTION00730000000000000000">6.3 Functions defined in mod_query</A>
-<UL>
-<LI><A NAME="tex2html223"
-  HREF="node7.html#SECTION00731000000000000000">6.3.1 WComplProxy functions</A>
-<LI><A NAME="tex2html224"
-  HREF="node7.html#SECTION00732000000000000000">6.3.2 WEdln functions</A>
-<LI><A NAME="tex2html225"
-  HREF="node7.html#SECTION00733000000000000000">6.3.3 WInput functions</A>
-</UL>
-<LI><A NAME="tex2html226"
-  HREF="node7.html#SECTION00740000000000000000">6.4 Functions defined in mod_menu</A>
-<UL>
-<LI><A NAME="tex2html227"
-  HREF="node7.html#SECTION00741000000000000000">6.4.1 WMenu functions</A>
-</UL>
-<LI><A NAME="tex2html228"
-  HREF="node7.html#SECTION00750000000000000000">6.5 Functions defined in mod_dock</A>
-<UL>
-<LI><A NAME="tex2html229"
-  HREF="node7.html#SECTION00751000000000000000">6.5.1 WDock functions</A>
-</UL>
-<LI><A NAME="tex2html230"
-  HREF="node7.html#SECTION00760000000000000000">6.6 Functions defined in mod_sp</A>
-<LI><A NAME="tex2html231"
-  HREF="node7.html#SECTION00770000000000000000">6.7 Functions defined in mod_statusbar</A>
-<UL>
-<LI><A NAME="tex2html232"
-  HREF="node7.html#SECTION00771000000000000000">6.7.1 WStatusBar functions</A>
-</UL>
-<LI><A NAME="tex2html233"
-  HREF="node7.html#SECTION00780000000000000000">6.8 Functions defined in de</A>
-<LI><A NAME="tex2html234"
-  HREF="node7.html#SECTION00790000000000000000">6.9 Hooks</A>
-<LI><A NAME="tex2html235"
-  HREF="node7.html#SECTION007100000000000000000">6.10 Miscellaneous</A>
-<UL>
-<LI><A NAME="tex2html236"
-  HREF="node7.html#SECTION007101000000000000000">6.10.1 Size policies</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html237"
-  HREF="node8.html">A. The GNU General Public License</A>
-<LI><A NAME="tex2html238"
-  HREF="node9.html">B. Full class hierarchy visible to Lua-side</A>
-<LI><A NAME="tex2html239"
-  HREF="node11.html">Index</A>
-<LI><A NAME="tex2html240"
-  HREF="node12.html">Bibliography</A>
-</UL>
-<!--End of Table of Contents-->
-<P>
-
-<P>
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node10.html b/doc/ionconf/node10.html
deleted file mode 100644 (file)
index d15711c..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>List of functions</TITLE>
-<META NAME="description" CONTENT="List of functions">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node11.html">
-<LINK REL="previous" HREF="node9.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node11.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html466"
-  HREF="node11.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html460"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html454"
-  HREF="node9.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html462"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html464"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html467"
-  HREF="node11.html">Index</A>
-<B> Up:</B> <A NAME="tex2html461"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html455"
-  HREF="node9.html">B. Full class hierarchy</A>
- &nbsp; <B>  <A NAME="tex2html463"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html465"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<H1><A NAME="SECTION001000000000000000000">
-List of functions</A>
-</H1>
-
-<P>
-<A HREF="node7.html#fn:de.defstyle"><TT>de.defstyle</TT></A>
-<BR><A HREF="node7.html#fn:de.defstyle_rootwin"><TT>de.defstyle_rootwin</TT></A>
-<BR><A HREF="node7.html#fn:de.reset"><TT>de.reset</TT></A>
-<BR><A HREF="node7.html#fn:de.substyle"><TT>de.substyle</TT></A>
-<BR><A HREF="node7.html#fn:export"><TT>export</TT></A>
-<BR><A HREF="node7.html#fn:gr.read_config"><TT>gr.read_config</TT></A>
-<BR><A HREF="node7.html#fn:gr.refresh"><TT>gr.refresh</TT></A>
-<BR><A HREF="node7.html#fn:gr.select_engine"><TT>gr.select_engine</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.aboutmsg"><TT>ioncore.aboutmsg</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.activity_first"><TT>ioncore.activity_first</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.activity_i"><TT>ioncore.activity_i</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.bdoc"><TT>ioncore.bdoc</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.chdir_for"><TT>ioncore.chdir_for</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.clientwin_i"><TT>ioncore.clientwin_i</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.compile_cmd"><TT>ioncore.compile_cmd</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.create_timer"><TT>ioncore.create_timer</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.create_ws"><TT>ioncore.create_ws</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.current"><TT>ioncore.current</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.defctxmenu"><TT>ioncore.defctxmenu</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.defer"><TT>ioncore.defer</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.deflayout"><TT>ioncore.deflayout</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.defmenu"><TT>ioncore.defmenu</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.defshortening"><TT>ioncore.defshortening</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.defwinprop"><TT>ioncore.defwinprop</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.detach"><TT>ioncore.detach</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.exec"><TT>ioncore.exec</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.exec_on"><TT>ioncore.exec_on</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.find_manager"><TT>ioncore.find_manager</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.find_screen_id"><TT>ioncore.find_screen_id</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.focushistory_i"><TT>ioncore.focushistory_i</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.get"><TT>ioncore.get</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.getbindings"><TT>ioncore.getbindings</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.getctxmenu"><TT>ioncore.getctxmenu</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.get_dir_for"><TT>ioncore.get_dir_for</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.get_hook"><TT>ioncore.get_hook</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.getlayout"><TT>ioncore.getlayout</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.getmenu"><TT>ioncore.getmenu</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.get_paths"><TT>ioncore.get_paths</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.get_savefile"><TT>ioncore.get_savefile</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.getwinprop"><TT>ioncore.getwinprop</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.goto_activity"><TT>ioncore.goto_activity</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.goto_first"><TT>ioncore.goto_first</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.goto_next"><TT>ioncore.goto_next</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.goto_next_screen"><TT>ioncore.goto_next_screen</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.goto_nth_screen"><TT>ioncore.goto_nth_screen</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.goto_previous"><TT>ioncore.goto_previous</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.goto_prev_screen"><TT>ioncore.goto_prev_screen</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.is_i18n"><TT>ioncore.is_i18n</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.kpress_wait"><TT>ioncore.kpress_wait</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.load_module"><TT>ioncore.load_module</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.lookup_clientwin"><TT>ioncore.lookup_clientwin</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.lookup_region"><TT>ioncore.lookup_region</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.lookup_script"><TT>ioncore.lookup_script</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.match_winprop_dflt"><TT>ioncore.match_winprop_dflt</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.mclick"><TT>ioncore.mclick</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.mdblclick"><TT>ioncore.mdblclick</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.mdrag"><TT>ioncore.mdrag</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.menuentry"><TT>ioncore.menuentry</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.mpress"><TT>ioncore.mpress</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.navi_first"><TT>ioncore.navi_first</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.popen_bgread"><TT>ioncore.popen_bgread</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.progname"><TT>ioncore.progname</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.read_savefile"><TT>ioncore.read_savefile</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.refresh_stylelist"><TT>ioncore.refresh_stylelist</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.region_i"><TT>ioncore.region_i</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.request_selection"><TT>ioncore.request_selection</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.resign"><TT>ioncore.resign</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.restart"><TT>ioncore.restart</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.restart_other"><TT>ioncore.restart_other</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.set"><TT>ioncore.set</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.set_paths"><TT>ioncore.set_paths</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.set_selection"><TT>ioncore.set_selection</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.shutdown"><TT>ioncore.shutdown</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.snapshot"><TT>ioncore.snapshot</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.submap"><TT>ioncore.submap</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.submap_enter"><TT>ioncore.submap_enter</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.submap_wait"><TT>ioncore.submap_wait</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.submenu"><TT>ioncore.submenu</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.tabnum.clear"><TT>ioncore.tabnum.clear</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.tabnum.show"><TT>ioncore.tabnum.show</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.tagged_attach"><TT>ioncore.tagged_attach</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.tagged_clear"><TT>ioncore.tagged_clear</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.tagged_first"><TT>ioncore.tagged_first</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.tagged_i"><TT>ioncore.tagged_i</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.TR"><TT>ioncore.TR</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.unsqueeze"><TT>ioncore.unsqueeze</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.version"><TT>ioncore.version</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.warn"><TT>ioncore.warn</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.warn_traced"><TT>ioncore.warn_traced</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.write_savefile"><TT>ioncore.write_savefile</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.x_change_property"><TT>ioncore.x_change_property</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.x_delete_property"><TT>ioncore.x_delete_property</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.x_get_atom_name"><TT>ioncore.x_get_atom_name</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.x_get_text_property"><TT>ioncore.x_get_text_property</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.x_intern_atom"><TT>ioncore.x_intern_atom</TT></A>
-<BR><A HREF="node7.html#fn:ioncore.x_set_text_property"><TT>ioncore.x_set_text_property</TT></A>
-<BR><A HREF="node7.html#fn:mod_dock.set_floating_shown_on"><TT>mod_dock.set_floating_shown_on</TT></A>
-<BR><A HREF="node7.html#fn:mod_menu.get"><TT>mod_menu.get</TT></A>
-<BR><A HREF="node7.html#fn:mod_menu.grabmenu"><TT>mod_menu.grabmenu</TT></A>
-<BR><A HREF="node7.html#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>
-<BR><A HREF="node7.html#fn:mod_menu.pmenu"><TT>mod_menu.pmenu</TT></A>
-<BR><A HREF="node7.html#fn:mod_menu.set"><TT>mod_menu.set</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.defcmd"><TT>mod_query.defcmd</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.get"><TT>mod_query.get</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.history_clear"><TT>mod_query.history_clear</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.history_get"><TT>mod_query.history_get</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.history_push"><TT>mod_query.history_push</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.history_search"><TT>mod_query.history_search</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.history_table"><TT>mod_query.history_table</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.message"><TT>mod_query.message</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.popen_completions"><TT>mod_query.popen_completions</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query"><TT>mod_query.query</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_attachclient"><TT>mod_query.query_attachclient</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_editfile"><TT>mod_query.query_editfile</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_exec"><TT>mod_query.query_exec</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_gotoclient"><TT>mod_query.query_gotoclient</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_lua"><TT>mod_query.query_lua</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_man"><TT>mod_query.query_man</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_renameframe"><TT>mod_query.query_renameframe</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_renameworkspace"><TT>mod_query.query_renameworkspace</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_restart"><TT>mod_query.query_restart</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_runfile"><TT>mod_query.query_runfile</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_shutdown"><TT>mod_query.query_shutdown</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_ssh"><TT>mod_query.query_ssh</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_workspace"><TT>mod_query.query_workspace</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.query_yesno"><TT>mod_query.query_yesno</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.set"><TT>mod_query.set</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.show_about_ion"><TT>mod_query.show_about_ion</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.show_tree"><TT>mod_query.show_tree</TT></A>
-<BR><A HREF="node7.html#fn:mod_query.warn"><TT>mod_query.warn</TT></A>
-<BR><A HREF="node7.html#fn:mod_sp.set_shown"><TT>mod_sp.set_shown</TT></A>
-<BR><A HREF="node7.html#fn:mod_sp.set_shown_on"><TT>mod_sp.set_shown_on</TT></A>
-<BR><A HREF="node7.html#fn:mod_statusbar.create"><TT>mod_statusbar.create</TT></A>
-<BR><A HREF="node7.html#fn:mod_statusbar.inform"><TT>mod_statusbar.inform</TT></A>
-<BR><A HREF="node7.html#fn:mod_statusbar.launch_statusd"><TT>mod_statusbar.launch_statusd</TT></A>
-<BR><A HREF="node7.html#fn:mod_statusbar.statusbars"><TT>mod_statusbar.statusbars</TT></A>
-<BR><A HREF="node7.html#fn:mod_statusbar.update"><TT>mod_statusbar.update</TT></A>
-<BR><A HREF="node7.html#fn:mod_tiling.get"><TT>mod_tiling.get</TT></A>
-<BR><A HREF="node7.html#fn:mod_tiling.mkbottom"><TT>mod_tiling.mkbottom</TT></A>
-<BR><A HREF="node7.html#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>
-<BR><A HREF="node7.html#fn:mod_tiling.untile"><TT>mod_tiling.untile</TT></A>
-<BR><A HREF="node7.html#fn:string.shell_safe"><TT>string.shell_safe</TT></A>
-<BR><A HREF="node7.html#fn:table.append"><TT>table.append</TT></A>
-<BR><A HREF="node7.html#fn:table.copy"><TT>table.copy</TT></A>
-<BR><A HREF="node7.html#fn:table.icat"><TT>table.icat</TT></A>
-<BR><A HREF="node7.html#fn:table.join"><TT>table.join</TT></A>
-<BR><A HREF="node7.html#fn:table.map"><TT>table.map</TT></A>
-<BR><A HREF="node7.html#fn:WClientWin.get_ident"><TT>WClientWin.get_ident</TT></A>
-<BR><A HREF="node7.html#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>
-<BR><A HREF="node7.html#fn:WClientWin.nudge"><TT>WClientWin.nudge</TT></A>
-<BR><A HREF="node7.html#fn:WClientWin.quote_next"><TT>WClientWin.quote_next</TT></A>
-<BR><A HREF="node7.html#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>
-<BR><A HREF="node7.html#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A>
-<BR><A HREF="node7.html#fn:WDock.attach"><TT>WDock.attach</TT></A>
-<BR><A HREF="node7.html#fn:WDock.get"><TT>WDock.get</TT></A>
-<BR><A HREF="node7.html#fn:WDock.resize"><TT>WDock.resize</TT></A>
-<BR><A HREF="node7.html#fn:WDock.set"><TT>WDock.set</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.back"><TT>WEdln.back</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.backspace"><TT>WEdln.backspace</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.bkill_word"><TT>WEdln.bkill_word</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.bol"><TT>WEdln.bol</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.bskip_word"><TT>WEdln.bskip_word</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.clear_mark"><TT>WEdln.clear_mark</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.complete"><TT>WEdln.complete</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.contents"><TT>WEdln.contents</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.context"><TT>WEdln.context</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.copy"><TT>WEdln.copy</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.cut"><TT>WEdln.cut</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.delete"><TT>WEdln.delete</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.eol"><TT>WEdln.eol</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.finish"><TT>WEdln.finish</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.forward"><TT>WEdln.forward</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.history_next"><TT>WEdln.history_next</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.history_prev"><TT>WEdln.history_prev</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.insstr"><TT>WEdln.insstr</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.is_histcompl"><TT>WEdln.is_histcompl</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.kill_line"><TT>WEdln.kill_line</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.kill_to_bol"><TT>WEdln.kill_to_bol</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.kill_to_eol"><TT>WEdln.kill_to_eol</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.kill_word"><TT>WEdln.kill_word</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.mark"><TT>WEdln.mark</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.next_completion"><TT>WEdln.next_completion</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.paste"><TT>WEdln.paste</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.point"><TT>WEdln.point</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.prev_completion"><TT>WEdln.prev_completion</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.set_context"><TT>WEdln.set_context</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.set_mark"><TT>WEdln.set_mark</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.skip_word"><TT>WEdln.skip_word</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.transpose_chars"><TT>WEdln.transpose_chars</TT></A>
-<BR><A HREF="node7.html#fn:WEdln.transpose_words"><TT>WEdln.transpose_words</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.is_shaded"><TT>WFrame.is_shaded</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.maximize_horiz"><TT>WFrame.maximize_horiz</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.maximize_vert"><TT>WFrame.maximize_vert</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.mode"><TT>WFrame.mode</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.p_switch_tab"><TT>WFrame.p_switch_tab</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.p_tabdrag"><TT>WFrame.p_tabdrag</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.set_grattr"><TT>WFrame.set_grattr</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.set_mode"><TT>WFrame.set_mode</TT></A>
-<BR><A HREF="node7.html#fn:WFrame.set_shaded"><TT>WFrame.set_shaded</TT></A>
-<BR><A HREF="node7.html#fn:WGroup.attach"><TT>WGroup.attach</TT></A>
-<BR><A HREF="node7.html#fn:WGroup.attach_new"><TT>WGroup.attach_new</TT></A>
-<BR><A HREF="node7.html#fn:WGroup.bottom"><TT>WGroup.bottom</TT></A>
-<BR><A HREF="node7.html#fn:WGroup.is_fullscreen"><TT>WGroup.is_fullscreen</TT></A>
-<BR><A HREF="node7.html#fn:WGroup.managed_i"><TT>WGroup.managed_i</TT></A>
-<BR><A HREF="node7.html#fn:WGroup.set_bottom"><TT>WGroup.set_bottom</TT></A>
-<BR><A HREF="node7.html#fn:WGroup.set_fullscreen"><TT>WGroup.set_fullscreen</TT></A>
-<BR><A HREF="node7.html#fn:WGroupWS.attach_framed"><TT>WGroupWS.attach_framed</TT></A>
-<BR><A HREF="node7.html#fn:WHook.add"><TT>WHook.add</TT></A>
-<BR><A HREF="node7.html#fn:WHook.listed"><TT>WHook.listed</TT></A>
-<BR><A HREF="node7.html#fn:WHook.remove"><TT>WHook.remove</TT></A>
-<BR><A HREF="node7.html#fn:WInfoWin.set_text"><TT>WInfoWin.set_text</TT></A>
-<BR><A HREF="node7.html#fn:WInput.cancel"><TT>WInput.cancel</TT></A>
-<BR><A HREF="node7.html#fn:WInput.scrolldown"><TT>WInput.scrolldown</TT></A>
-<BR><A HREF="node7.html#fn:WInput.scrollup"><TT>WInput.scrollup</TT></A>
-<BR><A HREF="node7.html#fn:WMenu.cancel"><TT>WMenu.cancel</TT></A>
-<BR><A HREF="node7.html#fn:WMenu.finish"><TT>WMenu.finish</TT></A>
-<BR><A HREF="node7.html#fn:WMenu.select_next"><TT>WMenu.select_next</TT></A>
-<BR><A HREF="node7.html#fn:WMenu.select_nth"><TT>WMenu.select_nth</TT></A>
-<BR><A HREF="node7.html#fn:WMenu.select_prev"><TT>WMenu.select_prev</TT></A>
-<BR><A HREF="node7.html#fn:WMenu.typeahead_clear"><TT>WMenu.typeahead_clear</TT></A>
-<BR><A HREF="node7.html#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A>
-<BR><A HREF="node7.html#fn:WMoveresMode.finish"><TT>WMoveresMode.finish</TT></A>
-<BR><A HREF="node7.html#fn:WMoveresMode.geom"><TT>WMoveresMode.geom</TT></A>
-<BR><A HREF="node7.html#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>
-<BR><A HREF="node7.html#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>
-<BR><A HREF="node7.html#fn:WMoveresMode.rqgeom"><TT>WMoveresMode.rqgeom</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.attach"><TT>WMPlex.attach</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.dec_index"><TT>WMPlex.dec_index</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.get_index"><TT>WMPlex.get_index</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.inc_index"><TT>WMPlex.inc_index</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.is_hidden"><TT>WMPlex.is_hidden</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.managed_i"><TT>WMPlex.managed_i</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.mx_count"><TT>WMPlex.mx_count</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.mx_i"><TT>WMPlex.mx_i</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.mx_nth"><TT>WMPlex.mx_nth</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.set_hidden"><TT>WMPlex.set_hidden</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.switch_next"><TT>WMPlex.switch_next</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.switch_nth"><TT>WMPlex.switch_nth</TT></A>
-<BR><A HREF="node7.html#fn:WMPlex.switch_prev"><TT>WMPlex.switch_prev</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.begin_kbresize"><TT>WRegion.begin_kbresize</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.current"><TT>WRegion.current</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.geom"><TT>WRegion.geom</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.get_configuration"><TT>WRegion.get_configuration</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.goto"><TT>WRegion.goto</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.groupleader_of"><TT>WRegion.groupleader_of</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.is_active"><TT>WRegion.is_active</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.is_activity"><TT>WRegion.is_activity</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.is_mapped"><TT>WRegion.is_mapped</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.is_tagged"><TT>WRegion.is_tagged</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.manager"><TT>WRegion.manager</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.name"><TT>WRegion.name</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.parent"><TT>WRegion.parent</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.rootwin_of"><TT>WRegion.rootwin_of</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.rqclose_propagate"><TT>WRegion.rqclose_propagate</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.rqorder"><TT>WRegion.rqorder</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.screen_of"><TT>WRegion.screen_of</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.set_activity"><TT>WRegion.set_activity</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.set_name_exact"><TT>WRegion.set_name_exact</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.set_tagged"><TT>WRegion.set_tagged</TT></A>
-<BR><A HREF="node7.html#fn:WRegion.size_hints"><TT>WRegion.size_hints</TT></A>
-<BR><A HREF="node7.html#fn:WRootWin.current_scr"><TT>WRootWin.current_scr</TT></A>
-<BR><A HREF="node7.html#fn:WScreen.id"><TT>WScreen.id</TT></A>
-<BR><A HREF="node7.html#fn:WScreen.set_managed_offset"><TT>WScreen.set_managed_offset</TT></A>
-<BR><A HREF="node7.html#fn:WSplit.geom"><TT>WSplit.geom</TT></A>
-<BR><A HREF="node7.html#fn:WSplitInner.current"><TT>WSplitInner.current</TT></A>
-<BR><A HREF="node7.html#fn:WSplit.parent"><TT>WSplit.parent</TT></A>
-<BR><A HREF="node7.html#fn:WSplitRegion.reg"><TT>WSplitRegion.reg</TT></A>
-<BR><A HREF="node7.html#fn:WSplit.rqgeom"><TT>WSplit.rqgeom</TT></A>
-<BR><A HREF="node7.html#fn:WSplitSplit.br"><TT>WSplitSplit.br</TT></A>
-<BR><A HREF="node7.html#fn:WSplitSplit.dir"><TT>WSplitSplit.dir</TT></A>
-<BR><A HREF="node7.html#fn:WSplitSplit.flip"><TT>WSplitSplit.flip</TT></A>
-<BR><A HREF="node7.html#fn:WSplitSplit.tl"><TT>WSplitSplit.tl</TT></A>
-<BR><A HREF="node7.html#fn:WSplit.transpose"><TT>WSplit.transpose</TT></A>
-<BR><A HREF="node7.html#fn:WStatusBar.get_template_table"><TT>WStatusBar.get_template_table</TT></A>
-<BR><A HREF="node7.html#fn:WStatusBar.is_systray"><TT>WStatusBar.is_systray</TT></A>
-<BR><A HREF="node7.html#fn:WStatusBar.set_systray"><TT>WStatusBar.set_systray</TT></A>
-<BR><A HREF="node7.html#fn:WStatusBar.set_template"><TT>WStatusBar.set_template</TT></A>
-<BR><A HREF="node7.html#fn:WStatusBar.set_template_table"><TT>WStatusBar.set_template_table</TT></A>
-<BR><A HREF="node7.html#fn:WStatusBar.update"><TT>WStatusBar.update</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.farthest"><TT>WTiling.farthest</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.flip_at"><TT>WTiling.flip_at</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.managed_i"><TT>WTiling.managed_i</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.nextto"><TT>WTiling.nextto</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.node_of"><TT>WTiling.node_of</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.set_floating"><TT>WTiling.set_floating</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.set_floating_at"><TT>WTiling.set_floating_at</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.split"><TT>WTiling.split</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.split_at"><TT>WTiling.split_at</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.split_top"><TT>WTiling.split_top</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.split_tree"><TT>WTiling.split_tree</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.transpose_at"><TT>WTiling.transpose_at</TT></A>
-<BR><A HREF="node7.html#fn:WTiling.unsplit_at"><TT>WTiling.unsplit_at</TT></A>
-<BR><A HREF="node7.html#fn:WTimer.is_set"><TT>WTimer.is_set</TT></A>
-<BR><A HREF="node7.html#fn:WTimer.reset"><TT>WTimer.reset</TT></A>
-<BR><A HREF="node7.html#fn:WTimer.set"><TT>WTimer.set</TT></A>
-<BR><A HREF="node7.html#fn:WWindow.p_move"><TT>WWindow.p_move</TT></A>
-<BR><A HREF="node7.html#fn:WWindow.p_resize"><TT>WWindow.p_resize</TT></A>
-<BR><A HREF="node7.html#fn:WWindow.xid"><TT>WWindow.xid</TT></A>
-<BR>
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html466"
-  HREF="node11.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html460"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html454"
-  HREF="node9.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html462"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html464"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html467"
-  HREF="node11.html">Index</A>
-<B> Up:</B> <A NAME="tex2html461"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html455"
-  HREF="node9.html">B. Full class hierarchy</A>
- &nbsp; <B>  <A NAME="tex2html463"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html465"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node11.html b/doc/ionconf/node11.html
deleted file mode 100644 (file)
index edf9325..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Index</TITLE>
-<META NAME="description" CONTENT="Index">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node12.html">
-<LINK REL="previous" HREF="node10.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node12.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html478"
-  HREF="node12.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html474"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html468"
-  HREF="node10.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html476"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
-<BR>
-<B> Next:</B> <A NAME="tex2html479"
-  HREF="node12.html">Bibliography</A>
-<B> Up:</B> <A NAME="tex2html475"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html469"
-  HREF="node10.html">List of functions</A>
- &nbsp; <B>  <A NAME="tex2html477"
-  HREF="node1.html">Contents</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<BR>
-
-<H2><A NAME="SECTION001100000000000000000">
-Index</A>
-</H2><HR><DL>
-<DD><STRONG><TT>acrobatic</TT></STRONG>
- : <A HREF="node4.html#1462"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">Alt</SPAN></STRONG>
- : <A HREF="node4.html#887"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">AnyModifier</SPAN></STRONG>
- : <A HREF="node4.html#885"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>resizeinc</TT></STRONG>
- : <A HREF="node4.html#1478"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node4.html#1479"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">Button-n</SPAN></STRONG>
- : <A HREF="node4.html#891"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN></A>
-<DD><STRONG><TT>class</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1485"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-</DL>
-<DD><STRONG><TT>clientwin_do_manage_alt</TT></STRONG>
- : <A HREF="node7.html#8270"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>clientwin_mapped_hook</TT></STRONG>
- : <A HREF="node7.html#8271"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>clientwin_property_change_hook</TT></STRONG>
- : <A HREF="node7.html#8272"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>clientwin_unmapped_hook</TT></STRONG>
- : <A HREF="node7.html#8273"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">Control</SPAN></STRONG>
- : <A HREF="node4.html#883"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>defmenu</TT></STRONG>
- : <A HREF="node4.html#1202"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>drawing engine</STRONG>
- : <A HREF="node5.html#1910"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>ETCDIR</TT></STRONG>
- : <A HREF="node4.html#584"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>float</TT></STRONG>
- : <A HREF="node4.html#1463"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>frame_managed_changed_hook</TT></STRONG>
- : <A HREF="node7.html#8274"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>fullscreen</TT></STRONG>
- : <A HREF="node4.html#1464"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>ignore_resizeinc</TT></STRONG>
- : <A HREF="node4.html#1482"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
- | <A HREF="node4.html#1483"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>ignore_cfgrq</TT></STRONG>
- : <A HREF="node4.html#1465"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>ignore_max_size</TT></STRONG>
- : <A HREF="node4.html#1480"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>ignore_min_size</TT></STRONG>
- : <A HREF="node4.html#1481"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>ignore_net_active_window</TT></STRONG>
- : <A HREF="node4.html#1466"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>instance</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1487"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-</DL>
-<DD><STRONG><TT>ioncore_deinit_hook</TT></STRONG>
- : <A HREF="node7.html#8276"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>ioncore_post_layout_setup_hook</TT></STRONG>
- : <A HREF="node7.html#8277"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>ioncore_sigchld_hook</TT></STRONG>
- : <A HREF="node7.html#8275"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>ioncore_snapshot_hook</TT></STRONG>
- : <A HREF="node7.html#8278"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>ioncore_submap_ungrab_hook</TT></STRONG>
- : <A HREF="node7.html#8279"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>is_dockapp</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1490"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-</DL>
-<DD><STRONG><TT>is_transient</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1489"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-</DL>
-<DD><STRONG><TT>jumpto</TT></STRONG>
- : <A HREF="node4.html#1467"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textit">keysymdef.h</SPAN></STRONG>
- : <A HREF="node4.html#881"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">Lock</SPAN></STRONG>
- : <A HREF="node4.html#886"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG>manager</STRONG>
- : <A HREF="node3.html#382"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>max_size</TT></STRONG>
- : <A HREF="node4.html#1476"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>menuentry</TT></STRONG>
- : <A HREF="node4.html#1203"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>menus</STRONG>
- : <A HREF="node4.html#1148"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>min_size</TT></STRONG>
- : <A HREF="node4.html#1477"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">ModN</SPAN></STRONG>
- : <A HREF="node4.html#884"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>name</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1488"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-</DL>
-<DD><STRONG><TT>new_group</TT></STRONG>
- : <A HREF="node4.html#1468"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">NumLock</SPAN></STRONG>
- : <A HREF="node4.html#889"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG>Obj</STRONG>
- : <A HREF="node3.html#410"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>oneshot</TT></STRONG>
- : <A HREF="node4.html#1469"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>orientation</TT></STRONG>
- : <A HREF="node4.html#1470"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG>parent</STRONG>
- : <A HREF="node3.html#367"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>PREFIX</TT></STRONG>
- : <A HREF="node4.html#583"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>region_do_warp_alt</TT></STRONG>
- : <A HREF="node7.html#8281"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>region_notify_hook</TT></STRONG>
- : <A HREF="node7.html#8283"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><TT>role</TT></STRONG><DL>
-<DD><STRONG>winprop</STRONG> : <A HREF="node4.html#1486"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-</DL>
-<DD><STRONG>root window</STRONG>
- : <A HREF="node3.html#331"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>screen</STRONG><DL>
-<DD><STRONG>physical</STRONG> : <A HREF="node3.html#334"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>X</STRONG> : <A HREF="node3.html#332"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-</DL>
-<DD><STRONG><TT>screen_managed_changed_hook</TT></STRONG>
- : <A HREF="node7.html#8282"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">ScrollLock</SPAN></STRONG>
- : <A HREF="node4.html#890"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textbf">Shift</SPAN></STRONG>
- : <A HREF="node4.html#882"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>statusbar</TT></STRONG>
- : <A HREF="node4.html#1471"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG>style</STRONG>
- : <A HREF="node5.html#1909"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>submenu</TT></STRONG>
- : <A HREF="node4.html#1204"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>substyle</STRONG>
- : <A HREF="node5.html#1922"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>switchto</TT></STRONG>
- : <A HREF="node4.html#1472"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textit">system.mk</SPAN></STRONG>
- : <A HREF="node4.html#585"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>target</TT></STRONG>
- : <A HREF="node4.html#1473"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>tiling_placement_alt</TT></STRONG>
- : <A HREF="node7.html#8280"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN></A>
-<DD><STRONG>transient</STRONG>
- : <A HREF="node4.html#1443"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>transient_mode</TT></STRONG>
- : <A HREF="node4.html#1474"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>transparent</TT></STRONG>
- : <A HREF="node4.html#1475"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG><TT>userpos</TT></STRONG>
- : <A HREF="node4.html#1484"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WClientWin</STRONG>
- : <A HREF="node3.html#412"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WEdln</STRONG>
- : <A HREF="node3.html#425"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WFrame</STRONG>
- : <A HREF="node3.html#416"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WGroup</STRONG>
- : <A HREF="node3.html#417"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WGroupCW</STRONG>
- : <A HREF="node3.html#419"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WGroupWS</STRONG>
- : <A HREF="node3.html#418"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>Winprops</STRONG>
- : <A HREF="node4.html#1295"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG>WInput</STRONG>
- : <A HREF="node3.html#424"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WMessage</STRONG>
- : <A HREF="node3.html#426"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WRegion</STRONG>
- : <A HREF="node3.html#411"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WRootWin</STRONG>
- : <A HREF="node3.html#415"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WScreen</STRONG>
- : <A HREF="node3.html#414"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WSplit</STRONG>
- : <A HREF="node3.html#422"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WTiling</STRONG>
- : <A HREF="node3.html#421"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WWindow</STRONG>
- : <A HREF="node3.html#413"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>Xinerama</STRONG>
- : <A HREF="node3.html#335"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><SPAN  CLASS="textit">xmodmap</SPAN></STRONG>
- : <A HREF="node4.html#888"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN></A>
-<DD><STRONG>xprop</STRONG>
- : <A HREF="node4.html#1439"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-
-</DL>
-
-<P>
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node12.html b/doc/ionconf/node12.html
deleted file mode 100644 (file)
index a2daa50..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Bibliography</TITLE>
-<META NAME="description" CONTENT="Bibliography">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node13.html">
-<LINK REL="previous" HREF="node11.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node13.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html492"
-  HREF="node13.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html486"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html480"
-  HREF="node11.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html488"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html490"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html493"
-  HREF="node13.html">About this document ...</A>
-<B> Up:</B> <A NAME="tex2html487"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html481"
-  HREF="node11.html">Index</A>
- &nbsp; <B>  <A NAME="tex2html489"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html491"
-  HREF="node11.html">Index</A></B> 
-<BR><BR></DIV>
-<!--End of Navigation Panel-->
-<H2><A NAME="SECTION001200000000000000000">
-Bibliography</A>
-</H2><DL COMPACT><DD><P></P><DT><A NAME="scripts">1</A>
-<DD> The Ion 3 scripts repository,
-        <TT><A NAME="tex2html11"
-  HREF="http://iki.fi/tuomov/repos/ion-scripts-3/">http://iki.fi/tuomov/repos/ion-scripts-3/</A></TT>.
-</DL>
-
-<P>
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node13.html b/doc/ionconf/node13.html
deleted file mode 100644 (file)
index 907b1b9..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>About this document ...</TITLE>
-<META NAME="description" CONTENT="About this document ...">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="previous" HREF="node12.html">
-<LINK REL="up" HREF="ionconf.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png"> 
-<A NAME="tex2html498"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html494"
-  HREF="node12.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html500"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html502"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Up:</B> <A NAME="tex2html499"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html495"
-  HREF="node12.html">Bibliography</A>
- &nbsp; <B>  <A NAME="tex2html501"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html503"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<H1><A NAME="SECTION001300000000000000000">
-About this document ...</A>
-</H1>
- <STRONG>Configuring and extending Ion3 with Lua</STRONG><P>
-This document was generated using the
-<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
-<P>
-Copyright &#169; 1993, 1994, 1995, 1996,
-Nikos Drakos, 
-Computer Based Learning Unit, University of Leeds.
-<BR>
-Copyright &#169; 1997, 1998, 1999,
-<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>, 
-Mathematics Department, Macquarie University, Sydney.
-<P>
-The command line arguments were: <BR>
- <STRONG>latex2html</STRONG> <TT>-show_section_numbers -short_index -local_icons -noaddress -up_url http://iki.fi/tuomov/ion/ -up_title 'Ion homepage' -nofootnode -split 3 ionconf</TT>
-<P>
-The translation was initiated by tuomov on 2007-09-27
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node2.html b/doc/ionconf/node2.html
deleted file mode 100644 (file)
index a824fd2..0000000
+++ /dev/null
@@ -1,155 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>1. Introduction</TITLE>
-<META NAME="description" CONTENT="1. Introduction">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node3.html">
-<LINK REL="previous" HREF="node1.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node3.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html253"
-  HREF="node3.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html247"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html241"
-  HREF="node1.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html249"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html251"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html254"
-  HREF="node3.html">2. Preliminaries: Key concepts</A>
-<B> Up:</B> <A NAME="tex2html248"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html242"
-  HREF="node1.html">Contents</A>
- &nbsp; <B>  <A NAME="tex2html250"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html252"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<H1><A NAME="SECTION00200000000000000000">
-<SPAN CLASS="arabic">1</SPAN>. Introduction</A>
-</H1>
-
-<P>
-This document is an ``advanced user'' manual for the X11 window manager
-Ion, version 3. It is an attempt at documenting things that go into Ion's
-configuration files, how to configure Ion by simple modifications 
-to these files and how to write more complex extensions in Lua, the 
-lightweight configuration and scripting language used by Ion. 
-
-<P>
-Readers unfamiliar with Lua might first want to first glance at some 
-Lua documentation at
-
-<P>
-<DIV ALIGN="CENTER">
-<TT><A NAME="tex2html1"
-  HREF="http://www.lua.org/docs.html">http://www.lua.org/docs.html</A></TT>, or 
-<BR>    <TT><A NAME="tex2html2"
-  HREF="http://lua-users.org/wiki/LuaTutorial">http://lua-users.org/wiki/LuaTutorial</A></TT>,
-
-</DIV>
-
-<P>
-although this should not be strictly necessary for basic modifications
-of configuration files for anyone with at least some familiarity with
-programming languages.
-
-<P>
-Back in this document, first in chapter <A HREF="node3.html#chap:prelim">2</A> some key
-concepts and relations are explained. These include the module system,
-and Ion's object (or ``region'') and class hierarchies. While it may
-not be necessary to study the latter for basic copy-paste modifications
-of configuration files - for that you should not really need this
-manual either - it is, however, essential to for more extensive
-customisation, due to the semi-object-oriented nature of most of
-Ion's scripting interface. Knowing the different object types also
-helps dealing with the different binding ``contexts'' (see
-Section <A HREF="node4.html#sec:bindings">3.3</A>) that to some extent mirror these classes.
-
-<P>
-The new user, fed up with the default key bindings and eager to 
-just quickly configure Ion to his liking, may therefore just want
-to skip to Chapter <A HREF="node4.html#chap:config">3</A>, and attempt to work from therefore.
-That chapter provides the very basic Ion configuration know-how
-is provided: all the different configuration files and their locations
-are explained, instructions are given to allow the reader to
-configure bindings and so-called ``winprops'', and the statusbar
-templates are also explained. 
-
-<P>
-Next, Chapter <A HREF="node5.html#chap:gr">4</A> explains the notion of drawing engines
-and graphical styles and how to write new looks for Ion. More advanced
-aspects of Ion's scripting interface are documented in Chapter 
-<A HREF="node6.html#chap:tricks">5</A>. 
-Finally, most of the functions provided by Ion's scripting interface
-are listed and documented in the Function reference in Chapter
-<A HREF="node7.html#sec:exports">6</A>. At the end of the document an alphabetical
-listing of all these functions may be found.
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html253"
-  HREF="node3.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html247"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html241"
-  HREF="node1.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html249"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html251"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html254"
-  HREF="node3.html">2. Preliminaries: Key concepts</A>
-<B> Up:</B> <A NAME="tex2html248"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html242"
-  HREF="node1.html">Contents</A>
- &nbsp; <B>  <A NAME="tex2html250"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html252"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node3.html b/doc/ionconf/node3.html
deleted file mode 100644 (file)
index cfe57dd..0000000
+++ /dev/null
@@ -1,537 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>2. Preliminaries: Key concepts and relations</TITLE>
-<META NAME="description" CONTENT="2. Preliminaries: Key concepts and relations">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node4.html">
-<LINK REL="previous" HREF="node2.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node4.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html267"
-  HREF="node4.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html261"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html255"
-  HREF="node2.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html263"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html265"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html268"
-  HREF="node4.html">3. Basic configuration</A>
-<B> Up:</B> <A NAME="tex2html262"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html256"
-  HREF="node2.html">1. Introduction</A>
- &nbsp; <B>  <A NAME="tex2html264"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html266"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html269"
-  HREF="node3.html#SECTION00310000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules</A>
-<LI><A NAME="tex2html270"
-  HREF="node3.html#SECTION00320000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies</A>
-<UL>
-<LI><A NAME="tex2html271"
-  HREF="node3.html#SECTION00321000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html272"
-  HREF="node3.html#SECTION00322000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-<UL>
-<LI><A NAME="tex2html273"
-  HREF="node3.html#SECTION00322100000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html274"
-  HREF="node3.html#SECTION00322200000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</UL>
-<LI><A NAME="tex2html275"
-  HREF="node3.html#SECTION00323000000000000000"><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</UL></UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00300000000000000000"></A>
-<A NAME="chap:prelim"></A>
-<BR>
-<SPAN CLASS="arabic">2</SPAN>. Preliminaries: Key concepts and relations
-</H1>
-
-<P>
-The purpose of this chapter to explain some of key concepts and
-relations you need to understand before reading the following
-chapters. These include modules explained in section <A HREF="#sec:modules">2.1</A>
-and the Ion class and object hierarchies, section <A HREF="#sec:objects">2.2</A>.
-
-<P>
-
-<H2><A NAME="SECTION00310000000000000000"></A>
-<A NAME="sec:modules"></A>
-<BR>
-<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Modules
-</H2>
-
-<P>
-Ion has been designed so that the 'ion' executable only implements some
-basic services on top of which very different kinds of window managers
-could be build by loading the appropriate 'modules'. On modern system
-these modules are simply dynamically loaded <SPAN  CLASS="textit">.so</SPAN> libraries. On 
-more primitive systems, or if you want to squeeze total size of the 
-executable and libraries, the modules can optionally be statically 
-linked to the main binary, but must nevertheless be loaded with the
-<A HREF="#fn:dopath"><TT>dopath</TT></A> function. Modules may also include Lua code.
-
-<P>
-If no modules are loaded, all client windows appear in full screen mode.
-To get better window management support, one or more workspace modules
-should be loaded. Currently Ion provides the following modules:
-
-<P>
-<DL>
-<DT><STRONG><SPAN  CLASS="textit">mod_tiling</SPAN></STRONG></DT>
-<DD>Tilings for workspaces of the original tiled
-       Ion kind.
-    
-</DD>
-<DT><STRONG><SPAN  CLASS="textit">mod_query</SPAN></STRONG></DT>
-<DD>Queries (for starting programs and so on)
-      and message boxes.
-    
-</DD>
-<DT><STRONG><SPAN  CLASS="textit">mod_menu</SPAN></STRONG></DT>
-<DD>Support for menus, both pull-down and
-      keyboard-operated in-frame menus.
-    
-</DD>
-<DT><STRONG><SPAN  CLASS="textit">mod_statusbar</SPAN></STRONG></DT>
-<DD>Module that implements a statusbar that
-      can be adaptively embedded in each workspace's layout.
-    
-</DD>
-<DT><STRONG><SPAN  CLASS="textit">mod_dock</SPAN></STRONG></DT>
-<DD>Module for docking Window Maker dock-apps.
-      The dock can both float and be embedded as the statusbar.
-    
-</DD>
-<DT><STRONG><SPAN  CLASS="textit">mod_sp</SPAN></STRONG></DT>
-<DD>This module implements a scratchpad frame that can
-      be toggled on/off everywhere. Think of the 'console' in some 
-      first-person shooters.
-    
-</DD>
-<DT><STRONG><SPAN  CLASS="textit">mod_sm</SPAN></STRONG></DT>
-<DD>Session management support module.
-      <SPAN  CLASS="textit">Loaded automatically when needed!</SPAN>
-</DD>
-</DL>
-
-<P>
-So-called drawing engines are also implemented as a modules,
-but they are not discussed here; see chapter <A HREF="node5.html#chap:gr">4</A>.
-
-<P>
-The stock configuration for the <SPAN  CLASS="textit">ion3</SPAN> executable loads all of the 
-modules mentioned above except <SPAN  CLASS="textit">mod_dock</SPAN>.
-The stock configuration for the <SPAN  CLASS="textit">pwm3</SPAN> executable (which differs
-from the <SPAN  CLASS="textit">ion3</SPAN> executable in a few configuration details)
-loads another set of modules.
-
-<P>
-
-<P>
-
-<H2><A NAME="SECTION00320000000000000000"></A>
-<A NAME="sec:objects"></A>
-<BR>
-<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Class and object hierarchies
-</H2>
-
-<P>
-While Ion does not not have a truly object-oriented design
-<A NAME="tex2html3"
-  HREF="#foot297"><SUP><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A>,
-things that appear on the computer screen are, however, quite
-naturally expressed as such ``objects''. Therefore Ion implements
-a rather primitive OO system for these screen objects and some
-other things. 
-
-<P>
-It is essential for the module writer to learn this object
-system, but also people who write their own binding configuration files
-necessarily come into contact with the class and object hierarchies
-- you need to know which binding setup routines apply where, 
-and what functions can be used as handlers in which bindings.
-It is the purpose of this section to attempt to explain these 
-hierarchies. If you do not wish the read the full section, at least
-read the summary at the end of it, so that you understand the very
-basic relations.
-
-<P>
-For simplicity we consider only the essential-for-basic-configuration
-Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="textit">mod_query</SPAN> classes. 
-See Appendix <A HREF="node9.html#app:fullhierarchy">B</A> for the full class hierarchy visible
-to Lua side.
-
-<P>
-
-<H3><A NAME="SECTION00321000000000000000">
-<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-</H3>
-
-<P>
-One of the most important principles of object-oriented design methodology
-is inheritance; roughly how classes (objects are instances of classes)
-extend on others' features. Inheritance gives rise to class hierarchy.
-In the case of single-inheritance this hierarchy can be expressed as a
-tree where the class at the root is inherited by all others below it
-and so on. Figure <A HREF="#fig:classhierarchy">2.1</A> lists out the Ion class 
-hierarchy and below we explain what features of Ion the classes 
-implement.
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:classhierarchy"></A><A NAME="404"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.1:</STRONG>
-Partial Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="textit">mod_query</SPAN> 
-    class hierarchy.</CAPTION>
-<TR><TD><PRE>
-    Obj
-     |--&gt;WRegion
-     |    |--&gt;WClientWin
-     |    |--&gt;WWindow
-     |    |    |--&gt;WMPlex
-     |    |    |    |--&gt;WFrame
-     |    |    |    |--&gt;WScreen
-     |    |    |         |--&gt;WRootWin
-     |    |    |--&gt;WInput (mod_query)
-     |    |         |--&gt;WEdln (mod_query)
-     |    |         |--&gt;WMessage (mod_query)
-     |    |--&gt;WGroup
-     |    |    |--&gt;WGroupWS
-     |    |    |--&gt;WGroupCW
-     |    |--&gt;WTiling (mod_tiling)
-     |--&gt;WSplit (mod_tiling)
-</PRE></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-The core classes:
-
-<P>
-<DL>
-<DT><STRONG>Obj</STRONG></DT>
-<DD><A NAME="410"></A>
-    Is the base of Ion's object system.
-
-<P>
-</DD>
-<DT><STRONG>WRegion</STRONG></DT>
-<DD><A NAME="411"></A>
-    is the base class for everything corresponding to something on the
-    screen. Each object of type WRegion has a size and  position
-    relative to the parent WRegion. While a big part of Ion 
-    operates on these instead of more specialised classes, WRegion
-    is a ``virtual''  base class in that there are no objects of ``pure''
-    type WRegion; all concrete regions are objects of some class 
-    that inherits WRegion.
-
-<P>
-</DD>
-<DT><STRONG>WClientWin</STRONG></DT>
-<DD><A NAME="412"></A> is a class for
-    client window objects, the objects that window managers are
-    supposed to manage.
-
-<P>
-</DD>
-<DT><STRONG>WWindow</STRONG></DT>
-<DD><A NAME="413"></A> is the base class for all
-    internal objects having an X window associated to them
-    (WClientWins also have X windows associated to them).
-
-<P>
-</DD>
-<DT><STRONG>WMPlex</STRONG></DT>
-<DD>is a base class for all regions that ``multiplex'' 
-    other regions. This means that of the regions managed by the multiplexer,
-    only one can be displayed at a time. 
-
-<P>
-</DD>
-<DT><STRONG>WScreen</STRONG></DT>
-<DD><A NAME="414"></A> is an instance of WMPlex
-    for screens.
-
-<P>
-</DD>
-<DT><STRONG>WRootWin</STRONG></DT>
-<DD><A NAME="415"></A> is the class for
-    root windows<A NAME="331"></A> of X screens<A NAME="332"></A>.
-    It is an instance of WScreen.
-    Note that an ``X screen'' or root window is not necessarily a
-    single physical screen<A NAME="334"></A> as a root window
-    may be split over multiple screens when ugly hacks such as 
-    Xinerama<A NAME="335"></A> are used. (Actually there can be only 
-    one root window when Xinerama is used.) 
-
-<P>
-</DD>
-<DT><STRONG>WFrame</STRONG></DT>
-<DD><A NAME="416"></A> is the class for frames.
-    While most Ion's objects have no graphical presentation, frames 
-    basically add to WMPlexes the decorations around client 
-    windows (borders, tabs).
-
-<P>
-</DD>
-<DT><STRONG>WGroup</STRONG></DT>
-<DD><A NAME="417"></A> is the base class for groups.
-    Particular types of groups are workspaces 
-    (WGroupWS<A NAME="418"></A>)
-    and groups of client windows
-    (WGroupCW<A NAME="419"></A>).
-</DD>
-</DL>
-
-<P>
-Classes implemented by the <SPAN  CLASS="textit">mod_tiling</SPAN> module:
-
-<P>
-<DL>
-<DT><STRONG>WTiling</STRONG></DT>
-<DD><A NAME="421"></A> is the class for tilings
-    of frames.
-  
-</DD>
-<DT><STRONG>WSplit</STRONG></DT>
-<DD><A NAME="422"></A> (or, more specifically, classes
-    that inherit it) encode the WTiling tree structure.
-</DD>
-</DL>
-
-<P>
-Classes implemented by the <SPAN  CLASS="textit">mod_query</SPAN> module:
-
-<P>
-<DL>
-<DT><STRONG>WInput</STRONG></DT>
-<DD><A NAME="424"></A> is a virtual base class for the
-    two classes below.
-  
-</DD>
-<DT><STRONG>WEdln</STRONG></DT>
-<DD><A NAME="425"></A> is the class for the ``queries'',
-    the text inputs that usually appear at bottoms of frames and sometimes
-    screens. Queries are the functional equivalent of ``mini buffers'' in
-    many text editors.
-  
-</DD>
-<DT><STRONG>WMessage</STRONG></DT>
-<DD><A NAME="426"></A> implements the boxes for 
-    warning and other messages that Ion may wish to display to the user. 
-    These also usually appear at bottoms of frames.
-</DD>
-</DL>
-
-<P>
-There are also some other ``proxy'' classes that do not refer
-to objects on the screen. The only important one of these for
-basic configuration is WMoveresMode that is used for
-binding callbacks in the move and resize mode.
-
-<P>
-
-<H3><A NAME="SECTION00322000000000000000">
-<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-</H3>
-
-<P>
-
-<H4><A NAME="SECTION00322100000000000000">
-<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-</H4>
-Each object of type WRegion has a parent and possibly a manager
-associated to it. The parent<A NAME="367"></A> for an object is always a 
-WWindow and for WRegion with an X window (WClientWin,
-WWindow) the parent WWindow is given by the same relation of
-the X windows. For other WRegions the relation is not as clear.
-There is generally very few restrictions other than the above on the
-parent--child relation but the most common is as described in
-Figure <A HREF="#fig:parentship">2.2</A>.
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:parentship"></A><A NAME="378"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.2:</STRONG>
-Most common parent-child relations</CAPTION>
-<TR><TD><PRE>
-    WRootWins
-     |--&gt;WScreens
-          |--&gt;WGroupWSs
-          |--&gt;WTilings
-          |--&gt;WClientWins in full screen mode
-          |--&gt;WFrames
-               |--&gt;WGroupCWs
-               |--&gt;WClientWins
-               |--&gt;WFrames for transients
-               |--&gt;a possible WEdln or WMessage
-</PRE></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-WRegions have very little control over their children as a parent.
-The manager<A NAME="382"></A> WRegion has much more control over its
-managed WRegions. Managers, for example, handle resize requests,
-focusing and displaying of the managed regions. Indeed the manager--managed
-relationship gives a better picture of the logical ordering of objects on
-the screen. Again, there are generally few limits, but the most common
-hierarchy is given in Figure <A HREF="#fig:managership">2.3</A>. Note that sometimes
-the parent and manager are the same object and not all objects may have
-a manager (e.g. the dock in the dock module at the time of writing this)
-but all have a parent-a screen if not anything else.
-
-<P>
-
-<H4><A NAME="SECTION00322200000000000000">
-<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</H4>
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:managership"></A><A NAME="390"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2.3:</STRONG>
-Most common manager-managed relations</CAPTION>
-<TR><TD><PRE>
-    WRootWins
-     |--&gt;WScreens
-          |--&gt;WGroupCWs for full screen WClientWins
-          |    |--&gt;WClientWins
-          |    |--&gt;WFrames for transients (dialogs)
-          |         |--&gt; WClientWin
-          |--&gt;WGroupWSs for workspaces
-          |    |--&gt;WTiling
-          |    |    |--&gt;WFrames
-          |    |    |    |--&gt;WGroupCWs (with contents as above)
-          |    |    |--&gt;possibly a WStatusBar or WDock
-          |    |--&gt;WFrames for floating content
-          |    |--&gt;possibly a WEdln, WMessage or WMenu
-          |    |--&gt;possibly a WStatusBar or WDock (if no tiling)
-          |--&gt;WFrames for sticky stuff, such as the scratchpad
-</PRE></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-Note that a workspace can manage another workspace. This can be
-achieved with the <A HREF="#fn:attach_new"><TT>attach_new</TT></A> function, and allows you to nest
-workspaces as deep as you want.
-
-<P>
-
-<H3><A NAME="SECTION00323000000000000000">
-<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</H3>
-
-<P>
-In the standard setup, keeping queries, messages and menus out of
-consideration:
-
-<P>
-
-<UL>
-<LI>The top-level objects that matter are screens and they correspond
-    to physical screens. The class for screens is WScreen.
-</LI>
-<LI>Screens contain (multiplex) groups (WGroup) and other 
-    objects, such as WFrames. Some of these are mutually exclusive
-    to be viewed at a time.
-</LI>
-<LI>Groups of the specific kind WGroupWS often contain a
-    WTiling tiling for tiling frames (WFrame), but 
-    groups may also directly contain floating frames.
-</LI>
-<LI>Frames are the objects with decorations such as tabs and borders.
-    Frames contain (multiplex) among others (groups of) client windows, 
-    to each of which corresponds a tab in the frame's decoration. Only 
-    one client window (or other object) can be shown at a time in each 
-    frame. The class for client windows is WClientWin.
-</LI>
-</UL>
-
-<P>
-<BR><HR><H4>Footnotes</H4>
-<DL>
-<DT><A NAME="foot297">... design</A><A
- HREF="node3.html#tex2html3"><SUP><SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
-<DD>the author doesn't like such artificial designs
-
-</DD>
-</DL>
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html267"
-  HREF="node4.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html261"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html255"
-  HREF="node2.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html263"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html265"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html268"
-  HREF="node4.html">3. Basic configuration</A>
-<B> Up:</B> <A NAME="tex2html262"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html256"
-  HREF="node2.html">1. Introduction</A>
- &nbsp; <B>  <A NAME="tex2html264"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html266"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node4.html b/doc/ionconf/node4.html
deleted file mode 100644 (file)
index 3980bc4..0000000
+++ /dev/null
@@ -1,1568 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>3. Basic configuration</TITLE>
-<META NAME="description" CONTENT="3. Basic configuration">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node5.html">
-<LINK REL="previous" HREF="node3.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node5.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html288"
-  HREF="node5.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html282"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html276"
-  HREF="node3.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html284"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html286"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html289"
-  HREF="node5.html">4. Graphical styles</A>
-<B> Up:</B> <A NAME="tex2html283"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html277"
-  HREF="node3.html">2. Preliminaries: Key concepts</A>
- &nbsp; <B>  <A NAME="tex2html285"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html287"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html290"
-  HREF="node4.html#SECTION00410000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> The configuration files</A>
-<LI><A NAME="tex2html291"
-  HREF="node4.html#SECTION00420000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> A walk through <SPAN  CLASS="textit">cfg_ion.lua</SPAN></A>
-<LI><A NAME="tex2html292"
-  HREF="node4.html#SECTION00430000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Keys and rodents</A>
-<UL>
-<LI><A NAME="tex2html293"
-  HREF="node4.html#SECTION00431000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Binding handlers and special variables</A>
-<LI><A NAME="tex2html294"
-  HREF="node4.html#SECTION00432000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Guards</A>
-<LI><A NAME="tex2html295"
-  HREF="node4.html#SECTION00433000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining the bindings</A>
-<LI><A NAME="tex2html296"
-  HREF="node4.html#SECTION00434000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Examples</A>
-<LI><A NAME="tex2html297"
-  HREF="node4.html#SECTION00435000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Key specifications</A>
-<LI><A NAME="tex2html298"
-  HREF="node4.html#SECTION00436000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> Button specifications</A>
-<LI><A NAME="tex2html299"
-  HREF="node4.html#SECTION00437000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">7</SPAN> A further note on the default binding configuration</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html300"
-  HREF="node4.html#SECTION00440000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Menus</A>
-<UL>
-<LI><A NAME="tex2html301"
-  HREF="node4.html#SECTION00441000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Defining menus</A>
-<LI><A NAME="tex2html302"
-  HREF="node4.html#SECTION00442000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Special menus</A>
-<LI><A NAME="tex2html303"
-  HREF="node4.html#SECTION00443000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining context menus</A>
-<LI><A NAME="tex2html304"
-  HREF="node4.html#SECTION00444000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">4</SPAN> Displaying menus</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html305"
-  HREF="node4.html#SECTION00450000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Winprops</A>
-<UL>
-<LI><A NAME="tex2html306"
-  HREF="node4.html#SECTION00451000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
-<LI><A NAME="tex2html307"
-  HREF="node4.html#SECTION00452000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances</A>
-<LI><A NAME="tex2html308"
-  HREF="node4.html#SECTION00453000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
-<LI><A NAME="tex2html309"
-  HREF="node4.html#SECTION00454000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
-<UL>
-<LI><A NAME="tex2html310"
-  HREF="node4.html#SECTION00454100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
-<LI><A NAME="tex2html311"
-  HREF="node4.html#SECTION00454200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Forcing newly created windows in named frames</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html312"
-  HREF="node4.html#SECTION00460000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> The statusbar</A>
-<UL>
-<LI><A NAME="tex2html313"
-  HREF="node4.html#SECTION00461000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> The template</A>
-<LI><A NAME="tex2html314"
-  HREF="node4.html#SECTION00462000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> The systray</A>
-<LI><A NAME="tex2html315"
-  HREF="node4.html#SECTION00463000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Monitors</A>
-<UL>
-<LI><A NAME="tex2html316"
-  HREF="node4.html#SECTION00463100000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Date</A>
-<LI><A NAME="tex2html317"
-  HREF="node4.html#SECTION00463200000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Load</A>
-<LI><A NAME="tex2html318"
-  HREF="node4.html#SECTION00463300000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Mail</A>
-</UL></UL></UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00400000000000000000"></A>
-<A NAME="chap:config"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>. Basic configuration
-</H1>
-
-<P>
-This chapter should help your configure Ion to your liking. As  the your
-probably already know, Ion uses Lua as a configuration and extension 
-language. If you're new to it, you might first want to read some Lua 
-documentation as already suggested and pointed to in the Introduction
-before continuing with this chapter.
-
-<P>
-Section <A HREF="#sec:conffiles">3.1</A>&nbsp;is an overview of the multiple configuration
-files Ion uses and as a perhaps more understandable introduction to the
-general layout of the configuration files, a walk-through of the main 
-configuration file <SPAN  CLASS="textit">cfg_ion.lua</SPAN> is provided in section 
-<A HREF="#sec:walkthrough">3.2</A>.
-How keys and mouse action are bound to functions is described in detail
-in <A HREF="#sec:bindings">3.3</A> and in section <A HREF="#sec:winprops">3.5</A> winprops are
-explained. Finally, the statusbar is explained in <A HREF="#sec:statusbar">3.6</A>.
-For a reference on exported functions, see section <A HREF="node7.html#sec:exports">6</A>.
-
-<P>
-
-<H2><A NAME="SECTION00410000000000000000"></A>
-<A NAME="sec:conffiles"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> The configuration files
-</H2>
-
-<P>
-Ion3, to which document applies, stores its stock configuration files in
-<SPAN  CLASS="textit">/usr/local/etc/ion3/</SPAN> unless you, the OS package maintainer or 
-whoever  installed the package on the system has modified the variables
-<TT>PREFIX</TT><A NAME="583"></A> or
-<TT>ETCDIR</TT><A NAME="584"></A> in
-<SPAN  CLASS="textit">system.mk</SPAN><A NAME="585"></A> before compiling Ion.
-In the first case you probably know where to find the files and in 
-the other case the system administrator or the OS package maintainer
-should  have provided documentation to point to the correct location. 
-If these instructions are no help in locating the correct directory, 
-the command <TT>locate cfg_ion.lua</TT> might help provided <TT>updatedb</TT> 
-has been run recently. 
-
-<P>
-User configuration files go in <SPAN  CLASS="textit">~/.ion3/</SPAN>. 
-Ion always searches the user configuration file directory before the stock
-configuration file directory for files. Therefore, if you want to change
-some setting, it is advised against that you modify the stock configuration
-files in-place as subsequent installs of Ion will restore the stock
-configuration files. Instead you should always make a copy of the stock
-file in <SPAN  CLASS="textit">~/.ion3/</SPAN> and modify this file. For sake of maintainability
-of your customised configuration, it is recommended against copying all of
-the files there. Only copy those files you actually need to modify. Most 
-simple customisations, such as changes in a few bindings, are best done 
-entirely within <SPAN  CLASS="textit">cfg_ion.lua</SPAN>.
-
-<P>
-All the configuration files are named <SPAN  CLASS="textit">cfg_*.lua</SPAN> with the ``<SPAN  CLASS="textit">*</SPAN>''
-part varying. The configuration file for each module <SPAN  CLASS="textit">mod_modname</SPAN> is
-<SPAN  CLASS="textit">cfg_modname.lua</SPAN>, with <SPAN  CLASS="textit">modname</SPAN> varying by the module in
-question. Configuration files can also be compiled into <SPAN  CLASS="textit">.lc</SPAN> files,
-and these are attempted by the configuration file search routines before
-<SPAN  CLASS="textit">.lua</SPAN> files.
-
-<P>
-The following table summarises these and other configuration
-files:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1>File</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1><SPAN  CLASS="textit">cfg_ion.lua</SPAN></TD>
-<TD ALIGN="LEFT">The main configuration file</TD>
-</TR>
-<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1><SPAN  CLASS="textit">cfg_ioncore.lua</SPAN></TD>
-<TD ALIGN="LEFT">Configuration file for Ion's core library.
-    Most of the bindings and menus are configured here. Bindings that are
-    specific to some module are configured in the module's configuration
-    file. For details, see section <A HREF="#sec:bindings">3.3</A>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1><SPAN  CLASS="textit">cfg_kludges.lua</SPAN></TD>
-<TD ALIGN="LEFT">Settings to get some applications behave more nicely have been 
-    collected here. See section <A HREF="#sec:winprops">3.5</A>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1><SPAN  CLASS="textit">cfg_layouts.lua</SPAN></TD>
-<TD ALIGN="LEFT">Some workspace layouts are defined here.</TD>
-</TR>
-<TR><TD ALIGN="LEFT" VALIGN="TOP" WIDTH=1><SPAN  CLASS="textit">cfg_tiling.lua</SPAN> 
-    <SPAN  CLASS="textit">cfg_query.lua</SPAN> 
-    <SPAN  CLASS="textit">cfg_menu.lua</SPAN> 
-    <SPAN  CLASS="textit">cfg_dock.lua</SPAN> 
-    <SPAN  CLASS="textit">cfg_statusbar.lua</SPAN> 
-    ...</TD>
-<TD ALIGN="LEFT">Configuration files for different modules.</TD>
-</TR>
-</TABLE>
-
-<P>
-Additionally, there's the file <SPAN  CLASS="textit">look.lua</SPAN> that configures the 
-drawing engine, but it is covered in chapter <A HREF="node5.html#chap:gr">4</A>.
-
-<P>
-
-<H2><A NAME="SECTION00420000000000000000"></A>
-<A NAME="sec:walkthrough"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> A walk through <SPAN  CLASS="textit">cfg_ion.lua</SPAN>
-</H2>
-
-<P>
-As already mentioned <SPAN  CLASS="textit">cfg_ion.lua</SPAN> is Ion's main configuration
-file. Some basic 'feel' settings are usually configured there and
-the necessary modules and other configuration files configuring some 
-more specific aspects of Ion are loaded there. In this section we
-take a walk through the stock <SPAN  CLASS="textit">cfg_ion.lua</SPAN>.
-Notice that most of the settings are commented-out (<code>--</code> is a 
-line comment in Lua) in the actual file, as they're the defaults
-nevertheless.
-
-<P>
-The first thing done in the file, is to set
-<PRE>
-META="Mod1+"
-ALTMETA=""
-</PRE>
-These settings cause most of Ion's key bindings to use <SPAN  CLASS="textbf">Mod1</SPAN> as the
-modifier key. If <TT>ALTMETA</TT> is set, it is used as modifier for the
-keys that don't normally use a modifier. Note that these two are Lua 
-variables used in the configuration files only, and not Ion settings. 
-For details on modifiers and key binding setup in general, see section
-<A HREF="#sec:bindings">3.3</A>.
-
-<P>
-Next we do some basic feel configuration:
-
-<P>
-<PRE>
-ioncore.set{
-    dblclick_delay=250,
-    kbresize_delay=1500,
-}
-</PRE>
-
-<P>
-These two will set the delay between button presses in a double click, and
-the timeout to quit resize mode in milliseconds.
-
-<P>
-<PRE>
-ioncore.set{
-    opaque_resize=true,
-    warp=true
-}
-</PRE>
-
-<P>
-The first of these two settings enables opaque resize mode: in move/resize
-move frames and other objects mirror you actions immediately. If opaque
-resize is disabled, a XOR rubber band is shown during the mode instead.
-This will, unfortunately, cause Ion to also grab the X server and has some
-side effects. 
-
-<P>
-There are some other options as well; see the documentation
-for <A HREF="node7.html#fn:ioncore.set"><TT>ioncore.set</TT></A> for details.
-
-<P>
-As a next step, in the actual <SPAN  CLASS="textit">cfg_ion.lua</SPAN> file, we load
-<SPAN  CLASS="textit">cfg_defaults.lua</SPAN>. However, it is merely a convenience file for
-doing exactly what we will going through below, and what is commented
-out in the actual file. If you do not want to load what 
-<SPAN  CLASS="textit">cfg_defaults.lua</SPAN> loads, just comment out the corresponding 
-line, and uncomment the lines for the files that you want:
-
-<P>
-<PRE>
---dopath("cfg_defaults")
-dopath("cfg_ioncore")
-dopath("cfg_kludges")
-dopath("cfg_layouts")
-</PRE>
-
-<P>
-Most bindings and menus are defined in <SPAN  CLASS="textit">cfg_ioncore.lua</SPAN>.
-Details on making such definitions follow in sections <A HREF="#sec:bindings">3.3</A> 
-and <A HREF="#sec:menus">3.4</A>, respectively. 
-some kludges or ``winprops'' to make some applications behave better
-under Ion are collected in <SPAN  CLASS="textit">cfg_kludges.lua</SPAN>; see section
-<A HREF="#sec:winprops">3.5</A> for details. In addition to these, this file
-lists quite a few statements of the form
-<PRE>
-ioncore.defshortening("[^:]+: (.*)(&lt;[0-9]+&gt;)", "$1$2$|$1$&lt;...$2")
-</PRE>
-These are used to configure how Ion attempts to shorten window titles
-when they do not fit in a Tab. The first argument is a POSIX regular
-expression that is used to match against the title and the next is
-a rule to construct a new title of a match occurs. This particular
-rule is used to shorten e.g. 'Foo: barbaz&lt;3&gt;' to 'barba...&lt;3&gt;'; for
-details see the function reference entry for <A HREF="node7.html#fn:ioncore.defshortening"><TT>ioncore.defshortening</TT></A>.
-Finally, <SPAN  CLASS="textit">cfg_layouts.lua</SPAN> defines some workspace layouts, available
-through the <SPAN  CLASS="textbf">F9</SPAN> workspace creation query.
-
-<P>
-To actually be able to do something besides display windows in full screen
-mode, we must next load some modules:
-
-<P>
-<PRE>
-dopath("mod_query")
-dopath("mod_menu")
-dopath("mod_tiling")
-dopath("mod_statusbar")
---dopath("mod_dock")
-dopath("mod_sp")
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00430000000000000000"></A>
-<A NAME="sec:bindings"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Keys and rodents
-</H2>
-
-<P>
-In the stock configuration file setup, most key and mouse bindings are set
-from the file <SPAN  CLASS="textit">cfg_ioncore.lua</SPAN> while module-specific bindings
-are set from the modules' main configuration files (<SPAN  CLASS="textit">cfg_modname.lua</SPAN>).
-This, however, does not have to be so as long as the module has been
-loaded prior to defining any module-specific bindings.
-
-<P>
-Bindings are defined by calling the function 
-<A HREF="node7.html#fn:ioncore.defbindings"><TT>defbindings</TT></A> with the ``context'' of the
-bindings and the a table of new bindings to make. The context is simply
-string indicating one of the classes of regions (or modes such as
-WMoveresMode) introduced in section <A HREF="node3.html#sec:objects">2.2</A>, and fully
-listed in appendix <A HREF="node9.html#app:fullhierarchy">B</A>, although not all define
-a binding map. For example, the following skeleton would be used to 
-define new bindings for all frames:
-
-<P>
-<PRE>
-defbindings("WFrame", {
-    -- List of bindings to make goes here.
-})
-</PRE>
-
-<P>
-There has been some confusion among users about the need to define the
-``context'' for each binding, so let me try to explain this design
-decision here. The thing is that if there was a just a simple 'bind this 
-key to this action' method without knowledge of the context, some 
-limitations would have to be made on the available actions and writing 
-custom handlers would be more complicated. In addition one may want to 
-bind the same function to different key for different types of objects.
-Indeed, the workspace and frame tab switching functions are the same both
-classes being based on WMPlex, and in the stock configuration the 
-switch to <SPAN CLASS="MATH"><IMG
- WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
- SRC="img1.png"
- ALT="$n$"></SPAN>:th workspaces is bound to <SPAN  CLASS="textbf">Mod1+n</SPAN> while the switch to 
-<SPAN CLASS="MATH"><IMG
- WIDTH="15" HEIGHT="14" ALIGN="BOTTOM" BORDER="0"
- SRC="img1.png"
- ALT="$n$"></SPAN>:th tab is bound to the sequence <SPAN  CLASS="textbf">Mod1+k n</SPAN>.
-
-<P>
-Currently known contexts include: 
-`<TT>WScreen</TT>',
-`<TT>WMPlex</TT>',
-`<TT>WMPlex.toplevel</TT>',
-`<TT>WFrame</TT>',
-`<TT>WFrame.toplevel</TT>',
-`<TT>WFrame.floating</TT>',
-`<TT>WFrame.tiled</TT>',
-`<TT>WFrame.transient</TT>',
-`<TT>WMoveresMode</TT>',
-`<TT>WGroup</TT>',
-`<TT>WGroupCW</TT>',
-`<TT>WGroupWS</TT>',
-`<TT>WClientWin</TT>',
-`<TT>WTiling</TT>', and
-`<TT>WStatusBar</TT>'.
-Most of these should be self-explanatory, corresponding to objects
-of class with the same name. The ones with `<TT>.toplevel</TT>' suffix
-refer to screens and ``toplevel''  frames, i.e. frames that are
-not used for transient windows. Likewise `<TT>.transient</TT>' refers
-to frames in transient mode, and `<TT>.tiled</TT>' and `<TT>.floating</TT>'
-to frames in, respectively, tiled and floating modes. 
-
-<P>
-The following subsections describe how to construct elements of the
-binding table. Note that <A HREF="node7.html#fn:ioncore.defbindings"><TT>defbindings</TT></A> adds
-the the newly defined bindings to the previous bindings of the context,
-overriding duplicates. To unbind an event, set the handler parameter
-to <TT>nil</TT> for each of the functions to be described in the following
-subsections.
-
-<P>
-Also note that when multiple objects want to handle a binding, the 
-innermost (when the root window is considered the outermost) active object
-in the parent-child hierarchy (see Figure <A HREF="node3.html#fig:parentship">2.2</A>) of objects 
-gets to handle the action.
-
-<P>
-
-<H3><A NAME="SECTION00431000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Binding handlers and special variables</A>
-</H3>
-
-<P>
-Unlike in Ion2, in Ion3 binding handlers are not normally passed as
-``anonymous functions'', although this is still possible. The preferred
-method now is to pass the code of the handler as a string. Two following
-special variables are available in this code.
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Variable</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>_</TT> (underscore)</TD>
-<TD ALIGN="LEFT">Reference to the object on which the 
-      binding was triggered. The object is of the same class as the the
-      context of the <A HREF="node7.html#fn:ioncore.defbindings"><TT>defbindings</TT></A> call
-      defining the binding.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>_sub</TT></TD>
-<TD ALIGN="LEFT">Usually, the currently active <SPAN  CLASS="textit">managed object</SPAN> of the 
-      object referred to by <TT>_</TT>, but sometimes (e.g. mouse actions
-      on tabs of frames) something else relevant to the action triggering
-      the binding.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>_chld</TT></TD>
-<TD ALIGN="LEFT">Object corresponding to the currently active child window of the
-       object referred to by <TT>_</TT>. This should seldom be needed.</TD>
-</TR>
-</TABLE>
-
-<P>
-For example, supposing <TT>_</TT> (underscore) is a WFrame, the 
-following handler should move the active window to the right, if 
-possible:
-
-<P>
-<PRE>
-"_:inc_index(_sub)"
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00432000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Guards</A>
-</H3>
-
-<P>
-To suppress error messages, each binding handler may also be accompanied
-by a ``guard'' expression that blocks the handler from being called when
-the guard condition is not met. Currently the following guard expressions
-are supported (for both <TT>_sub</TT> and <TT>_chld</TT>):
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Guard</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>_sub:non-nil</TT>'</TD>
-<TD ALIGN="LEFT">The <TT>_sub</TT> parameter must be set.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>_sub:SomeClass</TT>'</TD>
-<TD ALIGN="LEFT">The <TT>_sub</TT> parameter must be member
-      of class SomeClass.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H3><A NAME="SECTION00433000000000000000"></A>
-<A NAME="sec:binddef"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining the bindings
-</H3>
-
-<P>
-The descriptions of the individual bindings in the binding table argument
-to <A HREF="node7.html#fn:ioncore.defbindings"><TT>defbindings</TT></A> should be constructed with the following
-functions.
-
-<P>
-Key presses:
-
-<UL>
-<LI><A HREF="node7.html#fn:ioncore.kpress"><TT>kpress</TT></A>, and
-          <A HREF="node7.html#fn:ioncore.kpress_wait"><TT>kpress_wait</TT></A><TT>(keyspec, handler [, guard])</TT>.
-</LI>
-<LI><A HREF="node7.html#fn:ioncore.submap"><TT>submap</TT></A><TT>(keyspec, { ... more key bindings ... })</TT>.
-</LI>
-<LI><A HREF="node7.html#fn:ioncore.submap_enter"><TT>submap_enter</TT></A>, and
-          <A HREF="node7.html#fn:ioncore.submap_wait"><TT>submap_wait</TT></A><TT>(handler [, guard])</TT>.
-</LI>
-</UL>
-Mouse actions:
-
-<UL>
-<LI><A HREF="node7.html#fn:ioncore.mclick"><TT>mclick</TT></A>,
-          <A HREF="node7.html#fn:ioncore.mdblclick"><TT>mdblclick</TT></A>,
-          <A HREF="node7.html#fn:ioncore.mpress"><TT>mpress</TT></A>, and
-          <A HREF="node7.html#fn:ioncore.mdrag"><TT>mdrag</TT></A><TT>(buttonspec, handler [, guard])</TT>.
-</LI>
-</UL>
-
-<P>
-The actions that most of these functions correspond to should be clear
-and as explained in the reference, <A HREF="node7.html#fn:ioncore.kpress_wait"><TT>kpress_wait</TT></A> is simply
-<A HREF="node7.html#fn:ioncore.kpress"><TT>kpress</TT></A> with a flag set instructing Ioncore wait for
-all modifiers to be released before processing any further actions.
-This is to stop one from accidentally calling e.g.
-<A HREF="node7.html#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A> multiple times in a row. The 
-<A HREF="node7.html#fn:ioncore.submap"><TT>submap</TT></A> function is used to define submaps or
-``prefix maps''. The second argument to this function is table listing
-the key press actions (<A HREF="node7.html#fn:ioncore.kpress"><TT>kpress</TT></A>) in the submap. 
-The <A HREF="node7.html#fn:ioncore.submap_enter"><TT>submap_enter</TT></A> handler is called when the submap
-is entered, in which this handler is defined. Likewise, the
-<A HREF="node7.html#fn:ioncore.submap_wait"><TT>submap_wait</TT></A> handler is  called when all modifiers
-have been released while waiting for further key presses in the submap.
-
-<P>
-The parameters <TT>keyspec</TT> and <TT>buttonspec</TT> are explained below
-in detail. The parameter <TT>handler</TT> is the handler for the binding,
-and the optional parameter <TT>guard</TT> its guard. These should normally
-be strings as explained above. 
-
-<P>
-
-<H3><A NAME="SECTION00434000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Examples</A>
-</H3>
-
-<P>
-For example, to just bind the key <SPAN  CLASS="textbf">Mod1+1</SPAN> to switch to the first
-workspace and <SPAN  CLASS="textbf">Mod1+Right</SPAN> to the next workspace, you would make the
-following call
-<PRE>
-defbindings("WScreen", {
-    kpress("Mod1+Right", "_:switch_next()"),
-    kpress("Mod1+1", "_:switch_nth(1)"),
-})
-</PRE>
-
-<P>
-Note that <TT>_:switch_nth(1)</TT> is the same as calling
-<A HREF="node7.html#fn:WMPlex.switch_next"><TT>WMPlex.switch_next</TT></A><TT>(_, 1)</TT> as WScreen inherits
-WMPlex and this is where the function is actually defined.
-
-<P>
-Similarly to the above example, to bind the key sequence <SPAN  CLASS="textbf">Mod1+k n</SPAN> 
-switch to the next managed object within a frame, and <SPAN  CLASS="textbf">Mod1+k 1</SPAN> to the
-first, you would issue the following call:
-<PRE>
-defbindings("WFrame", {
-    submap("Mod1+K", {
-        kpress("Right", "_:switch_next()"),
-        kpress("1", "_:switch_nth(1)"),
-   }),
-})
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00435000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Key specifications</A>
-</H3>
-
-<P>
-As seen above, the functions that create key binding specifications require
-a <TT>keyspec</TT> argument. This argument should be a string containing the
-name of a key as listed in the X header file <SPAN  CLASS="textit">keysymdef.h</SPAN><A NAME="tex2html7"
-  HREF="#foot880"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A> without the <TT>XK_</TT> prefix.
-<A NAME="881"></A>
-Most of the key names are quite intuitive while some are not. For example,
-the <SPAN  CLASS="textbf">Enter</SPAN> key on the main part of the keyboard has the less common
-name <SPAN  CLASS="textbf">Return</SPAN> while the one the numpad is called <SPAN  CLASS="textbf">KP_Enter</SPAN>.
-
-<P>
-The <TT>keyspec</TT> string may optionally have multiple ``modifier'' names
-followed by a plus sign (<TT>+</TT>) as a prefix. X defines the following
-modifiers:
-
-<P>
-<SPAN  CLASS="textbf">Shift</SPAN>, <SPAN  CLASS="textbf">Control</SPAN>, <SPAN  CLASS="textbf">Mod1</SPAN> to <SPAN  CLASS="textbf">Mod5</SPAN>,
-<SPAN  CLASS="textbf">AnyModifier</SPAN> and <SPAN  CLASS="textbf">Lock</SPAN>.
-<A NAME="882"></A>
-<A NAME="883"></A>
-<A NAME="884"></A>
-<A NAME="885"></A>
-<A NAME="886"></A>
-
-<P>
-X allows binding all of these modifiers to almost any key and while this
-list of modifiers does not explicitly list keys such as 
-<SPAN  CLASS="textbf">Alt</SPAN><A NAME="887"></A> that are common on modern keyboards, such
-keys are bound to one of the <SPAN  CLASS="textbf">ModN</SPAN>. On systems running XFree86
-<SPAN  CLASS="textbf">Alt</SPAN> is usually <SPAN  CLASS="textbf">Mod1</SPAN>. On Suns <SPAN  CLASS="textbf">Mod1</SPAN> is the diamond key
-and <SPAN  CLASS="textbf">Alt</SPAN> something else. One of the ``flying window'' keys on so
-called Windows-keyboards is probably mapped to <SPAN  CLASS="textbf">Mod3</SPAN> if you have
-such a key. Use the program <SPAN  CLASS="textit">xmodmap</SPAN><A NAME="888"></A>
-to find out what exactly is bound where. 
-
-<P>
-Ion defaults to <SPAN  CLASS="textbf">AnyModifier</SPAN> in submaps. This can sometimes lead to
-unwanted effects when the same key is used with and without explicitly
-specified modifiers in nested regions. For this reason, Ion recognises
-<SPAN  CLASS="textbf">NoModifier</SPAN> as a special modifier that can be used to reset this
-default.
-
-<P>
-Ion ignores the <SPAN  CLASS="textbf">Lock</SPAN> modifier and any <SPAN  CLASS="textbf">ModN</SPAN> (<SPAN CLASS="MATH"><IMG
- WIDTH="82" HEIGHT="15" ALIGN="BOTTOM" BORDER="0"
- SRC="img2.png"
- ALT="$N=1{\ldots} 5$"></SPAN>)
-bound to <SPAN  CLASS="textbf">NumLock</SPAN><A NAME="889"></A> or
-<SPAN  CLASS="textbf">ScrollLock</SPAN><A NAME="890"></A>
-by default because such<A NAME="tex2html8"
-  HREF="#foot859"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A> locking keys may otherwise
-cause confusion.
-
-<P>
-
-<H3><A NAME="SECTION00436000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> Button specifications</A>
-</H3>
-
-<P>
-Button specifications are similar to key definitions but now
-instead of specifying modifiers and a key, you specify modifiers
-and one of the button names <SPAN  CLASS="textbf">Button1</SPAN> to
-<SPAN  CLASS="textbf">Button5</SPAN><A NAME="891"></A>. Additionally the
-specification may end with an optional area name following an @-sign.
-Only frames currently support areas, and the supported values in this
-case are
-`<TT>border</TT>', `<TT>tab</TT>', `<TT>empty_tab</TT>', `<TT>client</TT>' 
-and <TT>nil</TT> (for the whole frame).
-
-<P>
-For example, the following code binds dragging a tab with the first 
-button pressed to initiate tab drag&amp;drop handling:
-
-<P>
-<PRE>
-defbindings("WFrame", {
-    mdrag("Button1@tab", "_:p_tabdrag()"),
-})
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00437000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">7</SPAN> A further note on the default binding configuration</A>
-</H3>
-
-<P>
-The default binding configuration contains references to the variables
-<TT>META</TT> and <TT>ALTMETA</TT> instead of directly using the default
-values of `<TT>Mod1+</TT>' and `' (nothing). As explained in
-section <A HREF="#sec:walkthrough">3.2</A>, the definitions of these variables
-appear in <SPAN  CLASS="textit">cfg_ion.lua</SPAN>. This way you can easily change the the
-modifiers used by all bindings in the default configuration without 
-changing the whole binding configuration. Quite a few people prefer 
-to use the Windows keys as modifiers because many applications already
-use <SPAN  CLASS="textbf">Alt</SPAN>. Nevertheless, <SPAN  CLASS="textbf">Mod1</SPAN> is the default as a key bound 
-to it is available virtually everywhere.
-
-<P>
-
-<H2><A NAME="SECTION00440000000000000000"></A>
-<A NAME="sec:menus"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Menus
-</H2>
-
-<P>
-
-<H3><A NAME="SECTION00441000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Defining menus</A>
-</H3>
-
-<P>
-<A NAME="1148"></A>
-<A NAME="1202"></A>
-<A NAME="1203"></A>
-<A NAME="1204"></A>
-In the stock configuration file setup, menus are defined in the file
-<SPAN  CLASS="textit">cfg_menus.lua</SPAN> as previously mentioned. The <SPAN  CLASS="textit">mod_menu</SPAN> module
-must be loaded for one to be able to define menus, and this is done with
-the function <A HREF="#fn:mod_menu.defmenu"><TT>defmenu</TT></A> provided by it.
-
-<P>
-Here's an example of the definition of a rather simple menu with a submenu:
-
-<P>
-<PRE>
-defmenu("exitmenu", {
-    menuentry("Restart", "ioncore.restart()"),
-    menuentry("Exit", "ioncore.shutdown()"),
-})
-
-defmenu("mainmenu", {
-    menuentry("Lock screen", "ioncore.exec('xlock')"),
-    menuentry("Help", "mod_query.query_man(_)"),
-    submenu("Exit", "exitmenu"),
-})
-</PRE>
-
-<P>
-The <A HREF="#fn:mod_menu.menuentry"><TT>menuentry</TT></A> function is used to create an entry in the 
-menu with a title and an entry handler to be called when the menu entry
-is activated. The parameters to the handler are similar to those of binding
-handlers, and usually the same as those of the binding that opened the menu.
-
-<P>
-The <A HREF="#fn:mod_menu.submenu"><TT>submenu</TT></A> function is used to insert a submenu at that 
-point in the menu. (One could as well just pass a table with the menu
-entries, but it is not encouraged.)
-
-<P>
-
-<H3><A NAME="SECTION00442000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Special menus</A>
-</H3>
-
-<P>
-The menu module predefines the following special menus. These can be used
-just like the menus defined as above.
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Menu name</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>windowlist</TT>'</TD>
-<TD ALIGN="LEFT">List of all client windows. Activating an entry jumps to that window.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>workspacelist</TT>'</TD>
-<TD ALIGN="LEFT">List of all workspaces. Activating an entry jumps to that workspaces.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>focuslist</TT>'</TD>
-<TD ALIGN="LEFT">List of client windows with recent activity in them, followed by 
-    previously focused client windows.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>focuslist_</TT>'</TD>
-<TD ALIGN="LEFT">List of previously focused client windows.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>stylemenu</TT>'</TD>
-<TD ALIGN="LEFT">List of available <SPAN  CLASS="textit">look_*.lua</SPAN> style files. Activating an entry
-    loads that style and ask to save the selection.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>ctxmenu</TT>'</TD>
-<TD ALIGN="LEFT">Context menu for given object.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H3><A NAME="SECTION00443000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Defining context menus</A>
-</H3>
-
-<P>
-The ``ctxmenu'' is a special menu that is assembled from a defined context
-menu for the object for which the menu was opened for, but also includes
-the context menus for the manager objects as submenus.
-
-<P>
-Context menus for a given region class are defined with the
-<A HREF="#fn:mod_menu.defctxmenu"><TT>defctxmenu</TT></A> function. This is other ways similar to
-<A HREF="#fn:mod_menu.defmenu"><TT>defmenu</TT></A>, but the first argument instead being the name
-of the menu, the name of the region class to define context menu for.
-For example, here's part of the stock WFrame context menu 
-definition:
-
-<P>
-<PRE>
-defctxmenu("WFrame", {
-    menuentry("Close", "WRegion.rqclose_propagate(_, _sub)"),
-    menuentry("Kill",  "WClientWin.kill(_sub)", "_sub:WClientWin"),
-})
-</PRE>
-
-<P>
-Some of the same ``modes'' as were available for some bindings
-may also be used: `<TT>WFrame.tiled</TT>', `<TT>WFrame.floating</TT>',
-and `<TT>WFrame.transient</TT>'.
-
-<P>
-
-<H3><A NAME="SECTION00444000000000000000"></A>
-<A NAME="sec:menudisp"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">4</SPAN> Displaying menus
-</H3>
-
-<P>
-The following functions may be used to display menus from binding
-handlers (and elsewhere):
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Function</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><A HREF="node7.html#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A></TD>
-<TD ALIGN="LEFT">Keyboard (or mouse) operated menus that open in the bottom-left corner
-      of a screen or frame.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><A HREF="#fn:mod_menu.bigmenu"><TT>mod_menu.bigmenu</TT></A></TD>
-<TD ALIGN="LEFT">Same as previous, but uses another graphical style.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><A HREF="node7.html#fn:mod_menu.pmenu"><TT>mod_menu.pmenu</TT></A></TD>
-<TD ALIGN="LEFT">Mouse-operated drop-down menus. This function can only be called from a
-      mouse press or drag handler.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><A HREF="node7.html#fn:mod_menu.grabmenu"><TT>mod_menu.grabmenu</TT></A></TD>
-<TD ALIGN="LEFT">A special version of <A HREF="node7.html#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A> that grabs the keyboard
-      and is scrolled with a given key until all modifiers have been released,
-      after which the selected entry is activated.</TD>
-</TR>
-</TABLE>
-
-<P>
-The <A HREF="node7.html#fn:mod_menu.grabmenu"><TT>grabmenu</TT></A> function takes the extra key parameter, but
-aside from that each of these functions takes three arguments, which when
-called from a binding handler, should be the parameters to the handler, and
-the name of the menu. For example, the following snippet of of code binds
-the both ways to open a context menu for a frame:
-
-<P>
-<PRE>
-defbindings("WFrame", {
-    kpress(MOD1.."M", "mod_menu.menu(_, _sub, 'ctxmenu')"),
-    mpress("Button3", "mod_menu.pmenu(_, _sub, 'ctxmenu')"),
-})
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00450000000000000000"></A>
-<A NAME="sec:winprops"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN> Winprops
-</H2>
-
-<P>
-The so-called ``winprops''<A NAME="1295"></A> can be used to change how
-specific windows are handled and to set up some kludges to deal with
-badly behaving applications. They are defined by calling the function
-<TT>defwinprop</TT> with a table containing the properties to set and the
-necessary information to identify a window. The currently supported
-winprops are listed below, and the subsequent subsections explain the
-usual method of identifying windows, and how to obtain this information.
-
-<P>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>acrobatic</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1462"></A>
-    Set this to <TT>true</TT> for Acrobat Reader. It has an annoying
-    habit of trying to manage its dialogs instead of setting them as
-    transients and letting the window manager do its job, causing
-    Ion and acrobat go a window-switching loop when a dialog is
-    opened.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>float</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1463"></A>
-    Set this to open the window in a floating frame, when
-    in a group.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>fullscreen</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1464"></A>
-    Should the window be initially in full screen mode?
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>ignore_cfgrq</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1465"></A>
-    Should configure requests on the window be ignored?
-    Only has effect on floating windows.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>ignore_net_active_window</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1466"></A>
-    Ignore extended WM hints <TT>_NET_ACTIVE_WINDOW</TT> request.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>jumpto</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1467"></A>
-    Should a newly created client window always be made
-    active, even if the allocated frame isn't.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>new_group</TT> (string)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1468"></A>
-    If the region specified by <TT>target</TT> winprop does not exist
-    (or that winprop is not set), create a new workspace using the 
-    previously stored layout (see <A HREF="node7.html#fn:ioncore.deflayout"><TT>ioncore.deflayout</TT></A>) named by
-    this property. After creating the workspace, <TT>target</TT> is 
-    attempted to be found again. (If that still fails, the newly 
-    created workspace is still asked to manage the client window.)
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>oneshot</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1469"></A>
-    Discard this winprop after first use.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>orientation</TT> (string)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1470"></A>
-    The orientation of the window: one of `<TT>vertical</TT>' or
-    `<TT>horizontal</TT>'. This is only useful when using the
-    window as a status display.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>statusbar</TT> (string)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1471"></A>
-    Put the window in the statusbar, in the named tray component,
-    (The default tray component is called simply `<TT>systray</TT>', 
-    and others you give names to in your custom template, always 
-    prefixed by `<TT>systray_</TT>'.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>switchto</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1472"></A>
-    Should a newly mapped client window be switched to within
-    its frame.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>target</TT> (string)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1473"></A>
-    The name of an object (workspace, frame) that should manage 
-    windows of this type. See also <TT>new_group</TT>.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>transient_mode</TT> (string)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1474"></A>
-    `<TT>normal</TT>': No change in behaviour. `<TT>current</TT>':
-    The window should be thought of as a transient for the current
-    active client window (if any) even if it is not marked as a
-    transient by the application. `<TT>off</TT>': The window should 
-    be handled as a normal window even if it is marked as a
-    transient by the application.
-
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DT><STRONG>Winprop:</STRONG></DT>
-<DD><TT>transparent</TT> (boolean)
-      
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD><A NAME="1475"></A>
-    Should frames be made transparent when this window is selected? 
-<BR>  
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00451000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Sizehint winprops</A>
-</H3>
-
-<P>
-Additionally, the winprops 
-<TT>max_size</TT><A NAME="1476"></A>,
-<TT>min_size</TT><A NAME="1477"></A>,
-<TT>aspect</TT><A NAME="1478"></A>,
-<TT>resizeinc</TT><A NAME="1479"></A>,
-and
-<TT>ignore_max_size</TT><A NAME="1480"></A>,
-<TT>ignore_min_size</TT><A NAME="1481"></A>,
-<TT>ignore_aspect</TT><A NAME="1482"></A>,
-<TT>ignore_resizeinc</TT><A NAME="1483"></A>,
-may be used to override application-supplied size hints. The four
-first ones are tables with the fields <TT>w</TT> and <TT>h</TT>, indicating
-the width and height size hints in pixels, and the latter ignore
-winprop is a boolean. 
-
-<P>
-Finally, the boolean
-<TT>userpos</TT><A NAME="1484"></A> option may be used to
-override the <TT>USPosition</TT> flag of the size hints. Normally,
-when this flag is set, Ion tries to respect the supplied window
-position more than when it is not set. Obviously, this makes sense
-only for floating windows.
-
-<P>
-
-<H3><A NAME="SECTION00452000000000000000"></A>
-<A NAME="sec:classesrolesinstances"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Classes, roles and instances
-</H3>
-
-<P>
-The identification information supported are
-<TT>class</TT><A NAME="1485"></A>,
-<TT>role</TT><A NAME="1486"></A>,
-<TT>instance</TT><A NAME="1487"></A>,
-<TT>name</TT><A NAME="1488"></A>,
-<TT>is_transient</TT><A NAME="1489"></A>, and
-<TT>is_dockapp</TT><A NAME="1490"></A>.
-It is not necessary to specify all of these fields.
-The first three are strings, and must exactly match the
-corresponding information obtained from the window's properties.
-The <TT>name</TT> field is a Lua-style regular expression matched against
-the window's title. The <TT>is_transient</TT> field is a boolean that can
-be used to include or exclude transients only, while the <TT>is_dockapp</TT>
-field is set by Ion for the dock windows of Window Maker dockapp protocol
-dockapps. Usually this is the only information available for these 
-<SPAN  CLASS="textit">icon</SPAN> windows. 
-
-<P>
-Ion looks for a matching winprop in the order listed by the following
-table. An 'E' indicates that the field must be set in the winprop
-and it must match the window's corresponding property exactly or, in
-case of <TT>name</TT>, the regular expression must match the window
-title. An asterisk '*' indicates that a winprop where the field is
-not specified (or is itself an asterisk in case of the first three
-fields) is tried.
-
-<P>
-<DIV ALIGN="CENTER">
-<TABLE CELLPADDING=3 BORDER="1">
-<TR><TD ALIGN="LEFT"><TT>class</TT></TD>
-<TD ALIGN="LEFT"><TT>role</TT></TD>
-<TD ALIGN="LEFT"><TT>instance</TT></TD>
-<TD ALIGN="LEFT">other</TD>
-</TR>
-<TR><TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-</TR>
-<TR><TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">*</TD>
-</TR>
-<TR><TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">*</TD>
-<TD ALIGN="LEFT">E</TD>
-</TR>
-<TR><TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">*</TD>
-<TD ALIGN="LEFT">*</TD>
-</TR>
-<TR><TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">*</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">E</TD>
-</TR>
-<TR><TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">*</TD>
-<TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">*</TD>
-</TR>
-<TR><TD ALIGN="LEFT">E</TD>
-<TD ALIGN="LEFT">*</TD>
-<TD ALIGN="LEFT">*</TD>
-<TD ALIGN="LEFT">E</TD>
-</TR>
-<TR><TD ALIGN="LEFT">&nbsp;</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-<TD ALIGN="LEFT">etc.</TD>
-</TR>
-</TABLE>
-</DIV>
-
-<P>
-If there are multiple matching winprops with the same
-<TT>class</TT>, <TT>role</TT> and <TT>instance</TT>, but other information
-different, the most recently defined one is used.
-
-<P>
-
-<H3><A NAME="SECTION00453000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Finding window identification</A>
-</H3>
-
-<P>
-The 'Window info' context menu entry (<SPAN  CLASS="textbf">Mod1+M</SPAN> or <SPAN  CLASS="textbf">Button3</SPAN> on a tab)
-can be used to list the identification information required to set winprops
-for a window and all the transient windows managed within it. 
-
-<P>
-<A NAME="1439"></A> 
-Another way to get the identification information is to use <TT>xprop</TT>.
-Simply run To get class and instance, simply run <TT>xprop WM_CLASS</TT>
-and click on the particular window of interest. The class is the latter of
-the strings while the instance is the former.  To get the role - few
-windows have this property - use the command <TT>xprop WM_ROLE</TT>. 
-This method, however, will not work on transients. 
-
-<P>
-<A NAME="1443"></A>
-So-called ``transient windows'' are usually short-lived dialogs (although
-some programs abuse this property) that have a parent window that they are
-``transient for''. On tiled workspaces Ion displays these windows 
-simultaneously with the parent window at the bottom of the same frame.
-Unfortunately <TT>xprop</TT> is stupid and can't cope with this situation,
-returning the parent window's properties when the transient is clicked on.
-For this reason you'll have to do a little extra work to get the properties
-for that window.<A NAME="tex2html9"
-  HREF="#foot1492"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A>
-<P>
-Finally, it should be mentioned that too many authors these days
-``forget'' to set this vital identification to anything meaningful:
-everything except name is the same for all of the program's 
-windows, for example. Some other programs only set this information
-after the window has been mapped, i.e. the window manager has been
-told to start managing it, which is obviously too late. 
-Gtk applications in particular are often guilty on both counts.
-
-<P>
-
-<H3><A NAME="SECTION00454000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Some common examples</A>
-</H3>
-
-<P>
-
-<H4><A NAME="SECTION00454100000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Acrobat Reader</A>
-</H4>
-
-<P>
-The following is absolutely necessary for Acrobat reader:
-
-<P>
-<PRE>
-defwinprop{
-    class = "AcroRead",
-    instance = "documentShell",
-    acrobatic = true,
-}
-</PRE>
-
-<P>
-
-<H4><A NAME="SECTION00454200000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Forcing newly created windows in named frames</A>
-</H4>
-
-<P>
-The following winprop should place xterm started with command-line parameter
-<TT>-name sysmon</TT> and running a system monitoring program in a
-particular frame:
-<PRE>
-defwinprop{
-    class = "XTerm",
-    instance = "sysmon",
-    target = "sysmonframe",
-}
-</PRE>
-
-<P>
-For this example to work, we have to somehow create a frame named
-`<TT>sysmonframe</TT>'. One way to do this is to make the following
-call in the <SPAN  CLASS="textbf">Mod1+F3</SPAN> Lua code query:
-
-<P>
-<PRE>
-mod_query.query_renameframe(_)
-</PRE>
-
-<P>
-Recall that <TT>_</TT> points to the multiplexer (frame or screen) in which 
-the query was opened. Running this code should open a new query prefilled
-with the current name of the frame. In our example we would change the 
-name to `<TT>sysmonframe</TT>', but we could just as well have used the 
-default name formed from the frame's class name and an instance number.
-
-<P>
-
-<H2><A NAME="SECTION00460000000000000000"></A>
-<A NAME="sec:statusbar"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN> The statusbar
-</H2>
-
-<P>
-The <SPAN  CLASS="textit">mod_statusbar</SPAN> module provides a statusbar that adapts to 
-layouts of tilings, using only the minimal space needed. Ion only 
-supports one adaptive ``status display'' object per screen, so this
-statusbar is mutually exclusive with the embedded mode of <SPAN  CLASS="textit">mod_dock</SPAN> 
-docks. 
-
-<P>
-The statusbar is configured in <SPAN  CLASS="textit">cfg_statusbar.lua</SPAN>. Typically,
-the configuration consists of two steps: creating a statusbar with
-<A HREF="node7.html#fn:mod_statusbar.create"><TT>mod_statusbar.create</TT></A>, and then launching the separate
-<TT>ion-statusd</TT> status daemon process with 
-<A HREF="node7.html#fn:mod_statusbar.launch_statusd"><TT>mod_statusbar.launch_statusd</TT></A>. This latter phase is done
-automatically, if it was not done by the configuration file, but
-the configuration file may pass extra parameters to <TT>ion-statusd</TT>
-monitors. (See Section <A HREF="node6.html#sec:statusd">5.4</A> for more information on
-writing <TT>ion-statusd</TT> monitors.)
-
-<P>
-A typical <SPAN  CLASS="textit">cfg_statusbar.lua</SPAN> configuration might look as follows:
-
-<P>
-<PRE>
--- Create a statusbar
-mod_statusbar.create{
-    screen = 0,     -- First screen, 
-    pos = 'bl',     -- bottom left corner
-    systray = true, -- Swallow systray windows
-
-    -- The template
-    template = "[ %date || load:% %&gt;load || mail:% %&gt;mail_new/%&gt;mail_total ]"
-               .. " %filler%systray",
-}
-
--- Launch ion-statusd. 
-mod_statusbar.launch_statusd{
-    -- Date meter
-    date={
-        -- ISO-8601 date format with additional abbreviated day name
-        date_format='%a %Y-%m-%d %H:%M',
-    },      
-}
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00461000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> The template</A>
-</H3>
-
-<P>
-The template specifies what is shown on the statusbar; for information
-on the other options to <A HREF="node7.html#fn:mod_statusbar.create"><TT>mod_statusbar.create</TT></A>, see the reference. 
-Strings of the form `<TT>%spec</TT>' tokens specially interpreter by
-the statusbar; the rest appears verbatim. The <TT>spec</TT> typically
-consists of the name of the value/meter to display (beginning with a latin
-alphabet), but may be preceded by an alignment specifier and a number
-specifying the minimum width. The alignment specifiers are: `<TT>&gt;</TT>'
-for right, `<TT>&lt;</TT>' for left,  and `<TT>|</TT>' for centring. Additionally,
-space following `<TT>%</TT>' (that is, the string `<TT>% </TT>'), adds
-``stretchable space'' at that point. The special string `<TT>%filler</TT>'
-may be used to flush the rest of the template to the right end of 
-the statusbar. 
-
-<P>
-The stretchable space works as follows: <SPAN  CLASS="textit">mod_statusbar</SPAN> remembers
-the widest string (in terms of graphical presentation) that it has
-seen for each meter, unless the width has been otherwise constrained.
-If there is stretchable space in the template, it tries to make the
-meter always take this much space, by stretching any space found in
-the direction indicated by the alignment specifier: the opposite
-direction for left or right alignment, and both for centring.
-
-<P>
-
-<H3><A NAME="SECTION00462000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> The systray</A>
-</H3>
-
-<P>
-The special `<TT>%systray</TT>' and `<TT>%systray_*</TT>'
-(`<TT>*</TT>' varying) monitors indicate where to place system tray 
-windows.  There may be multiple of these. KDE-protocol system tray
-icons are placed in `<TT>%systray</TT>' automatically, unless disabled 
-with the <TT>systray</TT> option. Otherwise the <TT>statusbar</TT> winprop may
-be used to place any window in any particular `<TT>%systray_*</TT>'.
-
-<P>
-
-<H3><A NAME="SECTION00463000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Monitors</A>
-</H3>
-
-<P>
-The part before the first
-underscore of each monitor name, describes the script/plugin/module
-that provides the meter, and any configuration should be passed
-in the a corresponding sub-table <A HREF="node7.html#fn:mod_statusbar.launch_statusd"><TT>mod_statusbar.launch_statusd</TT></A>.
-Ion comes with date, load and mail (for plain old mbox) 
-<TT>ion-statusd</TT> monitor scripts. More may be obtained from 
-the scripts repository [<A
- HREF="node12.html#scripts">1</A>]. These included scripts 
-provide the following monitors and their options
-
-<P>
-
-<H4><A NAME="SECTION00463100000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Date</A>
-</H4>
-
-<P>
-Options: <TT>date_format</TT>: The date format in as seen above, 
-in the usual <TT>strftime</TT> format. <TT>formats</TT>: table of
-formats for additional date monitors, the key being the name
-of the monitor (without the `<TT>date_</TT>' prefix).
-
-<P>
-Monitors: `<TT>date</TT>' and other user-specified ones with the
-`<TT>date_</TT>' prefix.
-
-<P>
-
-<H4><A NAME="SECTION00463200000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Load</A>
-</H4>
-
-<P>
-Options: <TT>update_interval</TT>: Update interval in milliseconds
-(default 10s). <TT>important_threshold</TT>: Threshold above which 
-the load is marked as important (default 1.5), so that the 
-drawing engine may be suitably hinted. <TT>critical_threshold</TT>: 
-Threshold above which  the load is marked as critical (default 4.0).
-
-<P>
-Monitors: `<TT>load</TT>' (for all three values), 
-`<TT>load_1min</TT>', `<TT>load_5min</TT>' and `<TT>load_15min</TT>'.
-
-<P>
-
-<H4><A NAME="SECTION00463300000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Mail</A>
-</H4>
-
-<P>
-Options: <TT>update_interval</TT>: Update interval in milliseconds
-(default 1min). <TT>mbox</TT>: mbox-format mailbox location
-(default <code>$MAIL</code>). 
-<TT>files</TT>: list of additional mailboxes, the key giving the 
-name of the monitor.
-
-<P>
-Monitors: `<TT>mail_new</TT>', `<TT>mail_unread</TT>',
-`<TT>mail_total</TT>', and corresponding
-`<TT>mail_*_new</TT>', `<TT>mail_*_unread</TT>', and `<TT>mail_*_total</TT>'
-for the additional mailboxes (`<TT>*</TT>' varying).
-
-<P>
-
-<P>
-<BR><HR><H4>Footnotes</H4>
-<DL>
-<DT><A NAME="foot880">...keysymdef.h</A><A
- HREF="node4.html#tex2html7"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
-<DD>This file can usually be found in the directory
-<SPAN  CLASS="textit">/usr/X11R6/include/X11/</SPAN>.
-
-</DD>
-<DT><A NAME="foot859">... such</A><A
- HREF="node4.html#tex2html8"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></SUP></A></DT>
-<DD>Completely useless keys that should be
-gotten rid of in the author's opinion.
-
-</DD>
-<DT><A NAME="foot1492">... window.</A><A
- HREF="node4.html#tex2html9"><SUP><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></SUP></A></DT>
-<DD>There's a patch to <TT>xprop</TT> to
-fix this, but nothing seems to be happening with respect to including it in 
-XFree86.
-
-</DD>
-</DL>
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html288"
-  HREF="node5.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html282"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html276"
-  HREF="node3.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html284"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html286"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html289"
-  HREF="node5.html">4. Graphical styles</A>
-<B> Up:</B> <A NAME="tex2html283"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html277"
-  HREF="node3.html">2. Preliminaries: Key concepts</A>
- &nbsp; <B>  <A NAME="tex2html285"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html287"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node5.html b/doc/ionconf/node5.html
deleted file mode 100644 (file)
index 2db991c..0000000
+++ /dev/null
@@ -1,764 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>4. Graphical styles</TITLE>
-<META NAME="description" CONTENT="4. Graphical styles">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node6.html">
-<LINK REL="previous" HREF="node4.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node6.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html331"
-  HREF="node6.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html325"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html319"
-  HREF="node4.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html327"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html329"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html332"
-  HREF="node6.html">5. Scripting</A>
-<B> Up:</B> <A NAME="tex2html326"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html320"
-  HREF="node4.html">3. Basic configuration</A>
- &nbsp; <B>  <A NAME="tex2html328"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html330"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html333"
-  HREF="node5.html#SECTION00510000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles</A>
-<UL>
-<LI><A NAME="tex2html334"
-  HREF="node5.html#SECTION00511000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Known styles and substyles</A>
-<UL>
-<LI><A NAME="tex2html335"
-  HREF="node5.html#SECTION00511100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
-<LI><A NAME="tex2html336"
-  HREF="node5.html#SECTION00511200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
-<LI><A NAME="tex2html337"
-  HREF="node5.html#SECTION00511300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> The rest</A>
-</UL>
-</UL>
-<BR>
-<LI><A NAME="tex2html338"
-  HREF="node5.html#SECTION00520000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining styles for the default drawing engine</A>
-<UL>
-<LI><A NAME="tex2html339"
-  HREF="node5.html#SECTION00521000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
-<LI><A NAME="tex2html340"
-  HREF="node5.html#SECTION00522000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining the styles</A>
-<UL>
-<LI><A NAME="tex2html341"
-  HREF="node5.html#SECTION00522100000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
-<LI><A NAME="tex2html342"
-  HREF="node5.html#SECTION00522200000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
-<LI><A NAME="tex2html343"
-  HREF="node5.html#SECTION00522300000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
-<LI><A NAME="tex2html344"
-  HREF="node5.html#SECTION00522400000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-<LI><A NAME="tex2html345"
-  HREF="node5.html#SECTION00522500000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> Substyles</A>
-</UL>
-<LI><A NAME="tex2html346"
-  HREF="node5.html#SECTION00523000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> An example</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html347"
-  HREF="node5.html#SECTION00530000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Miscellaneous settings</A>
-<UL>
-<LI><A NAME="tex2html348"
-  HREF="node5.html#SECTION00531000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frame user attributes</A>
-<LI><A NAME="tex2html349"
-  HREF="node5.html#SECTION00532000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Extra fields for style `<TT>frame</TT>'</A>
-<LI><A NAME="tex2html350"
-  HREF="node5.html#SECTION00533000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Extra fields for style `<TT>dock</TT>'</A>
-</UL></UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00500000000000000000"></A>
-<A NAME="chap:gr"></A>
-<BR>
-<SPAN CLASS="arabic">4</SPAN>. Graphical styles
-</H1>
-
-<P>
-This chapter first gives in section <A HREF="#sec:engines">4.1</A> a general outline 
-of how drawing engines are used, of style specifications and then
-in section <A HREF="#sec:defaultde">4.2</A> describes how to specify styles
-for the default drawing engine. Some additional settings and
-user attributes are explained in Sections <A HREF="#sec:grmisc">4.3</A>.
-
-<P>
-
-<H2><A NAME="SECTION00510000000000000000"></A>
-<A NAME="sec:engines"></A><A NAME="1909"></A><A NAME="1910"></A>
-<BR>
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Drawing engines, style specifications and sub-styles
-</H2>
-
-<P>
-Ion's drawing routines are abstracted into so-called drawing engine
-modules that can, again depending on the system, be dynamically
-loaded as needed. The drawing engine modules provide ``brushes''
-that objects can use to draw some high-level primitives such
-as borders and text boxes (in addition to simple text and rectangle
-drawing) on their windows and configure e.g. the shape and 
-background of the window. While the drawing engines therefore
-do not directly implement looks for each possible object (that
-would hardly be maintainable), different brush styles can be
-used to give a distinctive look to different objects and engines
-could interpret some styles as special cases. Style specifications 
-are strings of the form
-
-<P>
-<PRE>
-element1-element2-...-elementn
-</PRE>
-
-<P>
-An example of such a style specification is `<TT>tab-frame</TT>';
-see the table in subsection <A HREF="#sec:styles">4.1.1</A> for more styles.
-
-<P>
-When an object asks for a brush of certain style, the selected
-drawing engine will attempt to find the closest match to this
-specification. The styles/brushes defined by the drawing engines 
-may have asterisks (`<TT>*</TT>') as some of the elements indicating
-a match to anything. Exact matches are preferred to asterisk
-matches and longer matches to shorter. For example, let a brush
-for style `<TT>foo-bar-baz</TT>' be queried, then the following
-brushes are in order of preference:
-
-<P>
-<PRE>
-foo-bar-baz
-foo-*-baz
-foo-bar
-*
-</PRE>
-
-<P>
-Some of the drawing primitives allow extra attributes to be
-specified, also in the form
-<PRE>
-attr1-attr2-...-attrn
-</PRE>
-These extra attributes are called <SPAN  CLASS="textit">substyles</SPAN><A NAME="1922"></A>
-and allow, for example, the state of the object to be indicated 
-by  different colour sets while keeping the interface at an 
-abstract level and the drawing engine completely ignorant 
-of the semantics - only the writer of the drawing engine
-configuration file has to know them. However the drawing 
-engine can again interpret known substyles as special cases
-and the default engine indeed does so with frame tab 
-tag and drag states.)
-
-<P>
-
-<H3><A NAME="SECTION00511000000000000000"></A>
-<A NAME="sec:styles"></A>
-<BR>
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Known styles and substyles
-</H3>
-
-<P>
-
-<H4><A NAME="SECTION00511100000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frames</A>
-</H4>
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Style name</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>frame</TT>'</TD>
-<TD ALIGN="LEFT">Style for frames. 
-       Substyle attributes: `<TT>active</TT>'/`<TT>inactive</TT>' 
-       (mutually exclusive) and
-       `<TT>quasiactive</TT>'/`<TT>not_quasiactive</TT>'. 
-       A frame is ``quasiactive'' when an active region
-       has a back-link to it, such as a detached window.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>frame-tiled</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for tiled frames.
-        Substyle attributes as for `<TT>frame</TT>'.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>frame-tiled-alt</TT>'</TD>
-<TD ALIGN="LEFT">An alternative style for tiled frames.
-        Often used to disable the tab-bar.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>frame-floating</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for floating
-        frames.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>frame-transient</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for frames
-        containing transient windows.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H4><A NAME="SECTION00511200000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Tabs and menu entries</A>
-</H4>
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Style name</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab</TT>'</TD>
-<TD ALIGN="LEFT">Style for frames' tabs and menu entries. 
-       Substyle attributes:
-       `<TT>active</TT>'/`<TT>inactive</TT>' and
-       `<TT>selected</TT>'/`<TT>unselected</TT>'</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab-frame</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for frames' tabs.
-        Additional substyle attributes include:
-       `<TT>tagged</TT>'/`<TT>not_tagged</TT>',
-       `<TT>dragged</TT>'/`<TT>not_dragged</TT>',
-       `<TT>activity</TT>'/`<TT>no_activity</TT>',
-       `<TT>quasiactive</TT>'/`<TT>not_quasiactive</TT>'.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab-frame-tiled</TT>',</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab-frame-tiled-alt</TT>',</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab-frame-floating</TT>',</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab-frame-transient</TT>'</TD>
-<TD ALIGN="LEFT">More specific styles for frames in the
-        different modes.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab-menuentry</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for entries in WMenus. 
-        Additional substyle attributes include `<TT>submenu</TT>' and
-        occasionally also `<TT>activity</TT>' is used.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>tab-menuentry-bigmenu</TT>'</TD>
-<TD ALIGN="LEFT">An alternate style for entries in WMenus.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H4><A NAME="SECTION00511300000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> The rest</A>
-</H4>
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Style name</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>input</TT>'</TD>
-<TD ALIGN="LEFT">A style for WInputs.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>input-edln</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for WEdlns. 
-       Substyle attributes: `<TT>selection</TT>' for selected text and
-       `<TT>cursor</TT>' for the cursor indicating current editing point.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>input-message</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for WMessages.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>input-menu</TT>'</TD>
-<TD ALIGN="LEFT">A more specific style for WMenus.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>input-menu-bigmenu</TT>'</TD>
-<TD ALIGN="LEFT">An alternate style for WMenus.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>moveres_display</TT>'</TD>
-<TD ALIGN="LEFT">The box displaying position/size when
-       moving or resizing frames.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>stdisp</TT>'</TD>
-<TD ALIGN="LEFT">Any status display.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>stdisp-dock</TT>'</TD>
-<TD ALIGN="LEFT">The dock.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">`<TT>stdisp-statusbar</TT>'</TD>
-<TD ALIGN="LEFT">The statusbar. Substyles include:
-    the name of any monitor/meter (such as `<TT>date</TT>'), and 
-    the supplied hint. Typical hints are: `<TT>normal</TT>',
-    `<TT>important</TT>', and `<TT>critical</TT>'.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H2><A NAME="SECTION00520000000000000000"></A>
-<A NAME="sec:defaultde"></A>
-<BR>
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining styles for the default drawing engine
-</H2>
-
-<P>
-Drawing engine style files are usually named
-<SPAN  CLASS="textit">look_foo.lua</SPAN> where <SPAN  CLASS="textit">foo</SPAN> is the name of the
-style. The file that Ion loads on startup or when
-<A HREF="node7.html#fn:gr.read_config"><TT>gr.read_config</TT></A> is called, however, is <SPAN  CLASS="textit">look.lua</SPAN>
-and should usually be symlinked to or a copy of of some
-<SPAN  CLASS="textit">look_foo.lua</SPAN>.
-
-<P>
-
-<H3><A NAME="SECTION00521000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> The structure of the configuration files</A>
-</H3>
-
-<P>
-The first thing to do in a style file is to choose the drawing
-engine, possibly loading the module as well. This is done
-with the following chunk of code.
-
-<P>
-<PRE>
-if not gr.select_engine("de") then 
-    return 
-end
-</PRE>
-
-<P>
-The <A HREF="node7.html#fn:gr.select_engine"><TT>gr.select_engine</TT></A> function sees if the engine
-given as argument is registered (the default drawing engine is
-simply called ``de''). If the engine could not be found, it
-tries to load a module of the same name. If the engine still
-is not registered, <A HREF="node7.html#fn:gr.select_engine"><TT>gr.select_engine</TT></A> returns `<TT>false</TT>'
-and in this case we also exit the style setup script.
-If the engine was found, <A HREF="node7.html#fn:gr.select_engine"><TT>gr.select_engine</TT></A> sees that
-further requests for brushes are forwarded to that engine
-and returns `<TT>true</TT>'.
-
-<P>
-Before defining new styles it may be a good idea to clear old
-styles from memory so if the old configuration defines more
-specific styles than the new, the old styles don't override 
-those specified by the new configuration. That can be done by
-calling
-
-<P>
-<PRE>
-de.reset()
-</PRE>
-
-<P>
-After this the new styles can be defined with <A HREF="node7.html#fn:de.defstyle"><TT>de.defstyle</TT></A>
-as explained in the next subsection. Finally, after the styles have
-been defined we must ask objects on the screen to look up new brushes
-to reflect the changes in configuration. This is done with
-
-<P>
-<PRE>
-gr.refresh()
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00522000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Defining the styles</A>
-</H3>
-
-<P>
-Styles for the default drawing engine are defined with the
-function <A HREF="node7.html#fn:de.defstyle"><TT>de.defstyle</TT></A>. It has two arguments the first being
-a style specification as explained in previous sections and the second
-a table whose fields describe the style:
-
-<P>
-<PRE>
-de.defstyle("some-style", {
-    attribute = value,
-    ...
-})
-</PRE>
-
-<P>
-The supported attributes are described in tables below. The different
-border elements and styles referred to there are explained in Figure
-<A HREF="#fig:borders">4.1</A>.
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:borders"></A><A NAME="2025"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 4.1:</STRONG>
-Sketch of different border styles and elements</CAPTION>
-<TR><TD><PRE>
-Elevated:        Inlaid:         Ridge:            Groove:        
-  hhhhhhhhhhhs     ............           hhhhhhhhhhhs      sssssssssssh
-  h..........s     .sssssssssh.           h..........s      s..........h
-  h.        .s     .s        h.           h.sssssssh.s      s.hhhhhhhs.h
-  h.        .s     .s        h.           h.s      h.s      s.h      s.h
-  h.        .s     .s        h.           h.shhhhhhh.s      s.hsssssss.h
-  h..........s     .shhhhhhhhh.           h..........s      s..........h
-  hsssssssssss     ............           hsssssssssss      shhhhhhhhhhh
-
-h = highlight, s = shadow, . = padding
-</PRE></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-
-<H4><A NAME="SECTION00522100000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Colours</A>
-</H4>
-
-<P>
-Each of these fields a string of the form that can be
-passed to <TT>XAllocNamedColor</TT>. Valid strings are e.g.
-hexadecimal RGB specifications of the form
-<TT>#RRGGBB</TT> and colour names as specified
-in <SPAN  CLASS="textit">/usr/X11R6/lib/X11/rgb.txt</SPAN> (exact path varying).
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>highlight_colour</TT></TD>
-<TD ALIGN="LEFT">Colour for the ``highlight'' part of a border.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>shadow_colour</TT></TD>
-<TD ALIGN="LEFT">Colour for the ``shadow'' part of a border.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>foreground_colour</TT></TD>
-<TD ALIGN="LEFT">Colour for the normal drawing operations, e.g. text.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>background_colour</TT></TD>
-<TD ALIGN="LEFT">Window background colour (unless transparency is enabled) and
-       background colour boxes.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>padding_colour</TT></TD>
-<TD ALIGN="LEFT">Colour for the ``padding'' part of a border border. Set to 
-       <TT>background_colour</TT> if unset.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H4><A NAME="SECTION00522200000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Borders and widths</A>
-</H4>
-
-<P>
-All other fields below except <TT>border_style</TT> are non-negative integers
-indicating a number of pixels.
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>border_style</TT></TD>
-<TD ALIGN="LEFT">A string indicating the style of border; one of
-                    `<TT>elevated</TT>'/`<TT>inlaid</TT>'/`<TT>ridge</TT>'/`<TT>groove</TT>'
-                    as seen in the above sketch.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>border_sides</TT></TD>
-<TD ALIGN="LEFT">A string indicating which sides of the border
-                     to draw: `<TT>all</TT>'/`<TT>tb</TT>'/`<TT>lr</TT>' for all, 
-                     top and bottom, and left and right. To control between
-                     left/right and top/bottom, use the pixel options below.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>highlight_pixels</TT></TD>
-<TD ALIGN="LEFT">Width of the highlight part of the border in pixels.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>shadow_pixels</TT></TD>
-<TD ALIGN="LEFT">Width of the shadow part of the border in pixels.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>padding_pixels</TT></TD>
-<TD ALIGN="LEFT">Width of the padding part of the border in pixels.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>spacing</TT></TD>
-<TD ALIGN="LEFT">Space to be left between all kinds of boxes.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H4><A NAME="SECTION00522300000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> Text</A>
-</H4>
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>font</TT></TD>
-<TD ALIGN="LEFT">Font to be used in text-drawing operations; standard X font
-            name.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>text_align</TT></TD>
-<TD ALIGN="LEFT">How text is to be aligned in text boxes/tabs; one of
-                  the strings `<TT>left</TT>'/`<TT>right</TT>'/`<TT>center</TT>'.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H4><A NAME="SECTION00522400000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-</H4>
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>transparent_background</TT></TD>
-<TD ALIGN="LEFT">Should windows' that use this style
-       background be transparent? true/false.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>based_on</TT></TD>
-<TD ALIGN="LEFT">The name of a previously defined style that this
-       style should be based on.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H4><A NAME="SECTION00522500000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> Substyles</A>
-</H4>
-
-<P>
-As discussed in previous sections, styles may have substyles to e.g.
-indicate different states of the object being drawn. The ``de'' engine
-limits what can be configured in substyles to the set of colours in the
-first table above, but also specifically interprets for the main style
-`<TT>tab-frame</TT>' the substyles `<TT>*-*-tagged</TT>' and `<TT>*-*-*-dragged</TT>'
-by, respectively, drawing a right angle shape at the top right corner 
-of a tab and by shading the tab with a stipple pattern. Also for
-menus the substyles `<TT>*-*-submenu</TT>' are handled as a special case.
-
-<P>
-Substyles are defined with the function <A HREF="node7.html#fn:de.substyle"><TT>de.substyle</TT></A> within the
-table defining the main style. The parameters to this function are 
-similar to those of <A HREF="node7.html#fn:de.defstyle"><TT>de.defstyle</TT></A>.
-
-<P>
-<PRE>
-de.defstyle("some-style", {
-   ...
-   de.substyle("some-substyle", {
-      ...
-   }),
-   ...
-})
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00523000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> An example</A>
-</H3>
-
-<P>
-The following shortened segment from <SPAN  CLASS="textit">look_cleanviolet.lua</SPAN>
-should help to clarify the matters discussed in the previous
-subsection.
-
-<P>
-<PRE>
-de.defstyle("*", {
-    -- Gray background
-    highlight_colour = "#eeeeee",
-    shadow_colour = "#eeeeee",
-    background_colour = "#aaaaaa",
-    foreground_colour = "#000000",
-    
-    shadow_pixels = 1,
-    highlight_pixels = 1,
-    padding_pixels = 1,
-    spacing = 0,
-    border_style = "elevated",
-    
-    font = "-*-helvetica-medium-r-normal-*-12-*-*-*-*-*-*-*",
-    text_align = "center",
-})
-
-de.defstyle("tab-frame", {
-    based_on = "*",
-    
-    de.substyle("active-selected", {
-        -- Violet tab
-        highlight_colour = "#aaaacc",
-        shadow_colour = "#aaaacc",
-        background_colour = "#666699",
-        foreground_colour = "#eeeeee",
-    }),
-
-    --  More substyles would follow ...
-})
-</PRE>
-
-<P>
-
-<H2><A NAME="SECTION00530000000000000000"></A>
-<A NAME="sec:grmisc"></A>
-<BR>
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN> Miscellaneous settings
-</H2>
-
-<P>
-
-<H3><A NAME="SECTION00531000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Frame user attributes</A>
-</H3>
-
-<P>
-The function <A HREF="node7.html#fn:WFrame.set_grattr"><TT>WFrame.set_grattr</TT></A> may be used to give frames
-(and their tabs) arbitrary extra attributes to be passed to the
-drawing engine. Hence, by configuring such substyles in the style
-configuration files, and turning on the attribute when needed, 
-scripts may display visual cues related to the frame. There is
-also one extra attribute specially interpreted by the default
-drawing engine: the `<TT>numbered</TT>' attribute, which causes 
-numbers to be displayed on the tabs.
-
-<P>
-
-<H3><A NAME="SECTION00532000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Extra fields for style `<TT>frame</TT>'</A>
-</H3>
-
-<P>
-The following style fields are independent of the drawing engine used,
-but are related to objects' styles and therefore configured in the drawing
-engine configuration file.
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>bar</TT></TD>
-<TD ALIGN="LEFT">Controls the style of the tab-bar. Possible values
-        are the strings `<TT>none</TT>', `<TT>inside</TT>', `<TT>outside</TT>'
-        and `<TT>shaped</TT>', with the last providing the PWM-style
-        tab-bars for floating frames.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>floatframe_tab_min_w</TT></TD>
-<TD ALIGN="LEFT">Minimum tab width in pixels for
-        the shaped style, given that this number times number of tabs
-        doesn't exceed frame width.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>floatframe_bar_max_w_q</TT></TD>
-<TD ALIGN="LEFT">Maximum tab-bar width quotient of
-       frame width for the shaped styles. A number in the 
-       interval <SPAN CLASS="MATH"><IMG
- WIDTH="42" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
- SRC="img3.png"
- ALT="$(0, 1]$"></SPAN>.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<H3><A NAME="SECTION00533000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Extra fields for style `<TT>dock</TT>'</A>
-</H3>
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>outline_style</TT></TD>
-<TD ALIGN="LEFT">How borders are drawn:
-                       `<TT>none</TT>' - no border,
-                       `<TT>all</TT>' - border around whole dock,
-                       `<TT>each</TT>' - border around each dockapp.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>tile_size</TT></TD>
-<TD ALIGN="LEFT">A table with entries `<TT>width</TT>' and `<TT>height</TT>',
-       indicating the width and height of tiles in pixels.</TD>
-</TR>
-</TABLE>
-
-<P>
-Hopefully that's enough to get you started in writing new style
-configuration files for Ion. When in doubt, study the existing
-style configuration files.
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html331"
-  HREF="node6.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html325"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html319"
-  HREF="node4.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html327"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html329"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html332"
-  HREF="node6.html">5. Scripting</A>
-<B> Up:</B> <A NAME="tex2html326"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html320"
-  HREF="node4.html">3. Basic configuration</A>
- &nbsp; <B>  <A NAME="tex2html328"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html330"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node6.html b/doc/ionconf/node6.html
deleted file mode 100644 (file)
index 7baa979..0000000
+++ /dev/null
@@ -1,352 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>5. Scripting</TITLE>
-<META NAME="description" CONTENT="5. Scripting">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node7.html">
-<LINK REL="previous" HREF="node5.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node7.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html363"
-  HREF="node7.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html357"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html351"
-  HREF="node5.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html359"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html361"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html364"
-  HREF="node7.html">6. Function reference</A>
-<B> Up:</B> <A NAME="tex2html358"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html352"
-  HREF="node5.html">4. Graphical styles</A>
- &nbsp; <B>  <A NAME="tex2html360"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html362"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html365"
-  HREF="node6.html#SECTION00610000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks</A>
-<LI><A NAME="tex2html366"
-  HREF="node6.html#SECTION00620000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Referring to regions</A>
-<UL>
-<LI><A NAME="tex2html367"
-  HREF="node6.html#SECTION00621000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
-<LI><A NAME="tex2html368"
-  HREF="node6.html#SECTION00622000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Name-based lookups</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html369"
-  HREF="node6.html#SECTION00630000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
-<LI><A NAME="tex2html370"
-  HREF="node6.html#SECTION00640000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Writing <TT>ion-statusd</TT> monitors</A>
-</UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00600000000000000000"></A>
-<A NAME="chap:tricks"></A>
-<BR>
-<SPAN CLASS="arabic">5</SPAN>. Scripting
-</H1>
-
-<P>
-This chapter documents some additional features of the Ion configuration
-and scripting interface that can be used for more advanced scripting than
-the basic configuration explained in chapter <A HREF="node4.html#chap:config">3</A>.
-
-<P>
-
-<H2><A NAME="SECTION00610000000000000000"></A>
-<A NAME="sec:hooks"></A>
-<BR>
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Hooks
-</H2>
-
-<P>
-Hooks are lists of functions to be called when a certain event occurs.
-There are two types of them; normal and ``alternative'' hooks. Normal
-hooks do not return anything, but alt-hooks should return a boolean
-indicating whether it handled its assigned task successfully. In the case
-that <TT>true</TT> is returned, remaining handlers are not called.
-
-<P>
-Hook handlers are registered by first finding the hook
-with <A HREF="node7.html#fn:ioncore.get_hook"><TT>ioncore.get_hook</TT></A> and then calling <A HREF="node7.html#fn:WHook.add"><TT>WHook.add</TT></A>
-on the (successful) result with the handler as parameter. Similarly
-handlers are unregistered with <A HREF="node7.html#fn:WHook.remove"><TT>WHook.remove</TT></A>. For example:
-
-<P>
-<PRE>
-ioncore.get_hook("ioncore_snapshot_hook"):add(
-    function() print("Snapshot hook called.") end
-)
-</PRE>
-
-<P>
-In this example the hook handler has no parameters, but many hook
-handlers do. The types of parameters for each hook are listed in
-the hook reference, section <A HREF="node7.html#sec:hookref">6.9</A>.
-
-<P>
-Note that many of the hooks are called in ``protected mode'' and can not 
-use any functions that modify Ion's internal state. 
-
-<P>
-
-<H2><A NAME="SECTION00620000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Referring to regions</A>
-</H2>
-
-<P>
-
-<H3><A NAME="SECTION00621000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Direct object references</A>
-</H3>
-
-<P>
-All Ion objects are passed to Lua scripts as 'userdatas', and you may
-safely store such object references for future use. The C-side object
-may be destroyed while Lua still refers to the object. All exported
-functions gracefully fail in such a case, but if you need to explicitly
-test that the C-side object still exists, use <A HREF="#fn:obj_exists"><TT>obj_exists</TT></A>.
-
-<P>
-As an example, the following short piece of code implements 
-bookmarking:
-
-<P>
-<PRE>
-local bookmarks={}
-
--- Set bookmark bm point to the region reg
-function set_bookmark(bm, reg)
-    bookmarks[bm]=reg
-end
-
--- Go to bookmark bm
-function goto_bookmark(bm)
-    if bookmarks[bm] then
-        -- We could check that bookmarks[bm] still exists, if we
-        -- wanted to avoid an error message.
-        bookmarks[bm]:goto()
-    end
-end
-</PRE>
-
-<P>
-
-<H3><A NAME="SECTION00622000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Name-based lookups</A>
-</H3>
-
-<P>
-If you want to a single non-WClientWin region with an exact known 
-name, use <A HREF="node7.html#fn:ioncore.lookup_region"><TT>ioncore.lookup_region</TT></A>. If you want a list of all regions,
-use <A HREF="#fn:ioncore.region_list"><TT>ioncore.region_list</TT></A>. Both functions accept an optional argument
-that can be used to specify that the returned region(s) must be of a more 
-specific type. Client windows live in a different namespace and for them
-you should use the equivalent functions <A HREF="node7.html#fn:ioncore.lookup_clientwin"><TT>ioncore.lookup_clientwin</TT></A>
-and <A HREF="#fn:ioncore.clientwin_list"><TT>ioncore.clientwin_list</TT></A>.
-
-<P>
-To get the name of an object, use <A HREF="node7.html#fn:WRegion.name"><TT>WRegion.name</TT></A>. Please be
-aware, that the names of client windows reflect their titles and
-are subject to changes. To change the name of a non-client window
-region, use <A HREF="node7.html#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A>.
-
-<P>
-
-<H2><A NAME="SECTION00630000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Alternative winprop selection criteria</A>
-</H2>
-
-<P>
-It is possible to write more complex winprop selection routines than
-those described in section <A HREF="node4.html#sec:winprops">3.5</A>. To match a particular
-winprop using whatever way you want to, just set the <TT>match</TT>
-field of the winprop to a function that receives the client window
-as its sole parameter, and that returns <TT>true</TT> if the winprop
-matches, and <TT>false</TT> otherwise.
-
-<P>
-The class, instance and role properties can be obtained with
-<A HREF="node7.html#fn:WClientWin.get_ident"><TT>WClientWin.get_ident</TT></A>, and the title with <A HREF="node7.html#fn:WRegion.name"><TT>WRegion.name</TT></A>.
-If you want to match against (almost) arbitrary window properties,
-have a look at the documentation for the following functions, and
-their standard Xlib counterparts: <A HREF="node7.html#fn:ioncore.x_intern_atom"><TT>ioncore.x_intern_atom</TT></A>
-(XInternAtom), <A HREF="node7.html#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A> (XGetWindowProperty),
-and <A HREF="node7.html#fn:ioncore.x_get_text_property"><TT>ioncore.x_get_text_property</TT></A> (XGetTextProperty).
-
-<P>
-
-<P>
-
-<H2><A NAME="SECTION00640000000000000000"></A>
-<A NAME="sec:statusd"></A>
-<BR>
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Writing <TT>ion-statusd</TT> monitors
-</H2>
-
-<P>
-All statusbar meters that do not monitor the internal state of Ion should
-go in the separate <TT>ion-statusd</TT> program. 
-
-<P>
-Whenever the user requests a meter `<TT>%foo</TT>' or `<TT>%foo_bar</TT>' to 
-be  inserted in a statusbar, <SPAN  CLASS="textit">mod_statusbar</SPAN> asks <TT>ion-statusd</TT> 
-to load <A HREF="#fn:statusd_foo.lua"><TT>statusd_foo.lua</TT></A> on its search path (same as that for Ion-side 
-scripts). This script should then supply all meters with the initial part
-`<TT>foo</TT>'.
-
-<P>
-To provide this value, the script should simply call <TT>statusd.inform</TT>
-with the name of the meter and the value as a string.
-Additionally the script should provide a 'template' for the meter to
-facilitate expected width calculation by <SPAN  CLASS="textit">mod_statusbar</SPAN>, and
-may provide a 'hint' for colour-coding the value. The interpretation
-of hints depends on the graphical style in use, and currently the
-stock styles support the `<TT>normal</TT>', `<TT>important</TT>' and 
-`<TT>critical</TT>' hints.
-
-<P>
-In our example of the 'foo monitor', at script initialisation we might broadcast
-the template as follows:
-
-<P>
-<PRE>
-statusd.inform("foo_template", "000")
-</PRE>
-
-<P>
-To inform <SPAN  CLASS="textit">mod_statusbar</SPAN> of the actual value of the meter and
-indicate that the value is critical if above 100, we might write the
-following function:
-
-<P>
-<PRE>
-local function inform_foo(foo)
-    statusd.inform("foo", tostring(foo))
-    if foo&gt;100 then
-        statusd.inform("foo_hint", "critical")
-    else
-        statusd.inform("foo_hint", "normal")
-    end
-end
-</PRE>
-
-<P>
-To periodically update the value of the meter, we must use timers.
-First we must create one:
-
-<P>
-<PRE>
-local foo_timer=statusd.create_timer()
-</PRE>
-
-<P>
-Then we write a function to be called whenever the timer expires.
-This function must also restart the timer.
-
-<P>
-<PRE>
-local function update_foo()
-    local foo= ... measure foo somehow ...
-    inform_foo(foo)
-    foo_timer:set(settings.update_interval, update_foo)
-end
-</PRE>
-
-<P>
-Finally, at the end of our script we want to do the initial
-measurement, and set up timer for further measurements:
-
-<P>
-<PRE>
-update_foo()
-</PRE>
-
-<P>
-If our scripts supports configurable parameters, the following code
-(at the beginning of the script) will allow them to be configured in
-<SPAN  CLASS="textit">cfg_statusbar.lua</SPAN> and passed to the status daemon and our script:
-
-<P>
-<PRE>
-local defaults={
-    update_interval=10*1000, -- 10 seconds
-}
-                
-local settings=table.join(statusd.get_config("foo"), defaults)
-</PRE>
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html363"
-  HREF="node7.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html357"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html351"
-  HREF="node5.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html359"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html361"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html364"
-  HREF="node7.html">6. Function reference</A>
-<B> Up:</B> <A NAME="tex2html358"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html352"
-  HREF="node5.html">4. Graphical styles</A>
- &nbsp; <B>  <A NAME="tex2html360"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html362"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node7.html b/doc/ionconf/node7.html
deleted file mode 100644 (file)
index 4a3e772..0000000
+++ /dev/null
@@ -1,6392 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>6. Function reference</TITLE>
-<META NAME="description" CONTENT="6. Function reference">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node8.html">
-<LINK REL="previous" HREF="node6.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node8.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html383"
-  HREF="node8.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html377"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html371"
-  HREF="node6.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html379"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html381"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html384"
-  HREF="node8.html">A. The GNU General</A>
-<B> Up:</B> <A NAME="tex2html378"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html372"
-  HREF="node6.html">5. Scripting</A>
- &nbsp; <B>  <A NAME="tex2html380"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html382"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html385"
-  HREF="node7.html#SECTION00710000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN></A>
-<UL>
-<LI><A NAME="tex2html386"
-  HREF="node7.html#SECTION00711000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
-<LI><A NAME="tex2html387"
-  HREF="node7.html#SECTION00712000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
-<LI><A NAME="tex2html388"
-  HREF="node7.html#SECTION00713000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
-<LI><A NAME="tex2html389"
-  HREF="node7.html#SECTION00714000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
-<LI><A NAME="tex2html390"
-  HREF="node7.html#SECTION00715000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
-<LI><A NAME="tex2html391"
-  HREF="node7.html#SECTION00716000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
-<LI><A NAME="tex2html392"
-  HREF="node7.html#SECTION00717000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
-<LI><A NAME="tex2html393"
-  HREF="node7.html#SECTION00718000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
-<LI><A NAME="tex2html394"
-  HREF="node7.html#SECTION00719000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
-<LI><A NAME="tex2html395"
-  HREF="node7.html#SECTION007110000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
-<LI><A NAME="tex2html396"
-  HREF="node7.html#SECTION007111000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
-<LI><A NAME="tex2html397"
-  HREF="node7.html#SECTION007112000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
-<LI><A NAME="tex2html398"
-  HREF="node7.html#SECTION007113000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
-<LI><A NAME="tex2html399"
-  HREF="node7.html#SECTION007114000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
-<LI><A NAME="tex2html400"
-  HREF="node7.html#SECTION007115000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
-<LI><A NAME="tex2html401"
-  HREF="node7.html#SECTION007116000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
-<LI><A NAME="tex2html402"
-  HREF="node7.html#SECTION007117000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
-<LI><A NAME="tex2html403"
-  HREF="node7.html#SECTION007118000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html404"
-  HREF="node7.html#SECTION00720000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN></A>
-<UL>
-<LI><A NAME="tex2html405"
-  HREF="node7.html#SECTION00721000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
-<LI><A NAME="tex2html406"
-  HREF="node7.html#SECTION00722000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
-<LI><A NAME="tex2html407"
-  HREF="node7.html#SECTION00723000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
-<LI><A NAME="tex2html408"
-  HREF="node7.html#SECTION00724000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
-<LI><A NAME="tex2html409"
-  HREF="node7.html#SECTION00725000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html410"
-  HREF="node7.html#SECTION00730000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN></A>
-<UL>
-<LI><A NAME="tex2html411"
-  HREF="node7.html#SECTION00731000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
-<LI><A NAME="tex2html412"
-  HREF="node7.html#SECTION00732000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
-<LI><A NAME="tex2html413"
-  HREF="node7.html#SECTION00733000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html414"
-  HREF="node7.html#SECTION00740000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN></A>
-<UL>
-<LI><A NAME="tex2html415"
-  HREF="node7.html#SECTION00741000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html416"
-  HREF="node7.html#SECTION00750000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN></A>
-<UL>
-<LI><A NAME="tex2html417"
-  HREF="node7.html#SECTION00751000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html418"
-  HREF="node7.html#SECTION00760000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN></A>
-<LI><A NAME="tex2html419"
-  HREF="node7.html#SECTION00770000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN></A>
-<UL>
-<LI><A NAME="tex2html420"
-  HREF="node7.html#SECTION00771000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html421"
-  HREF="node7.html#SECTION00780000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN></A>
-<LI><A NAME="tex2html422"
-  HREF="node7.html#SECTION00790000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks</A>
-<LI><A NAME="tex2html423"
-  HREF="node7.html#SECTION007100000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous</A>
-<UL>
-<LI><A NAME="tex2html424"
-  HREF="node7.html#SECTION007101000000000000000"><SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies</A>
-</UL></UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00700000000000000000"></A>
-<A NAME="sec:exports"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>. Function reference
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION00710000000000000000"></A>
-<A NAME="sec:ioncoreref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN> Functions defined in <SPAN  CLASS="textit">ioncore</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:ioncore.TR"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.TR(s, ...)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>gettext+string.format
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.bdoc"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.bdoc(text)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Used to enter documentation among bindings so that other programs
- can read it. Does nothing.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.chdir_for"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.chdir_for(reg, dir)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Change default working directory for new programs started in <TT>reg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.compile_cmd"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.compile_cmd(cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Compile string <TT>cmd</TT> into a bindable function. Within <TT>cmd</TT>, the
- variable ''<TT>_</TT>'' (underscore) can be used to refer to the object 
- that was selecting for the bound action and chosen to handle it.
- The  variable ''<TT>_sub</TT>'' refers to a ''currently active'' sub-object 
- of <TT>_</TT>, or a sub-object where the action loading to the binding 
- being called actually occured.
-
-<P>
-The string <TT>guard</TT>  maybe set to pose limits on <TT>_sub</TT>. Currently 
- supported guards are <TT>_sub:non-nil</TT> and <TT>_sub:WFoobar</TT>, where 
- WFoobar is a class.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.create_timer"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WTimer ioncore.create_timer()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a new timer.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.create_ws"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.create_ws(scr, tmpl, layout)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create new workspace on screen <TT>scr</TT>. The table <TT>tmpl</TT>
- may be used to override parts of the layout named with <TT>layout</TT>.
- If no <TT>layout</TT> is given, "default" is used.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.defbindings"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.defbindings(context, bindings)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define bindings for context <TT>context</TT>. Here <TT>binding</TT> is
- a table composed of entries created with <A HREF="#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A>, 
- etc.; see Section <A HREF="node4.html#sec:bindings">3.3</A> for details.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.defctxmenu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.defctxmenu(ctx, ...)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define context menu for context <TT>ctx</TT>, <TT>tab</TT> being a table 
- of menu entries.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.deflayout"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.deflayout(name, tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define a new workspace layout with name <TT>name</TT>, and
- attach/creation parameters given in <TT>tab</TT>. The layout
- "empty" may not be defined.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.defmenu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.defmenu(name, tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define a new menu with <TT>name</TT> being the menu's name and <TT>tab</TT> 
- being a table of menu entries. If <TT>tab.append</TT> is set, the entries 
- are appended to previously-defined ones, if possible.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.defwinprop"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.defwinprop(list)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define a winprop. For more information, see section <A HREF="node4.html#sec:winprops">3.5</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.exec_on"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.exec_on(reg, cmd, merr_internal)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
- root window of the X screen <TT>reg</TT> is on. If <TT>cmd</TT> is prefixed
- by a colon (<TT>:</TT>), the following command is executed in an xterm
- (or other terminal emulator) with the help of the <TT>ion-runinxterm</TT> 
- script. If the command is prefixed by two colons, <TT>ion-runinxterm</TT>
- will ask you to press enter after the command is finished, even if it
- returns succesfully.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.read_savefile"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table ioncore.read_savefile(string basename)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Read a savefile.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.get_savefile"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string ioncore.get_savefile(string basename)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get a file name to save (session) data in. The string <TT>basename</TT> 
- should contain no path or extension components.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.lookup_script"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string ioncore.lookup_script(string file, string sp)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Lookup script <TT>file</TT>. If <TT>try_in_dir</TT> is set, it is tried
- before the standard search path.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.write_savefile"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.write_savefile(string basename, table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Write <TT>tab</TT> in file with basename <TT>basename</TT> in the
- session directory.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.find_manager"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.find_manager(obj, t)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Find an object with type name <TT>t</TT> managing <TT>obj</TT> or one of
- its managers.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.get_dir_for"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.get_dir_for(reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get default working directory for new programs started in <TT>reg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.getbindings"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.getbindings(maybe_context)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get a table of all bindings.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.getctxmenu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.getctxmenu(name)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns a context menu defined with <A HREF="#fn:ioncore.defctxmenu"><TT>ioncore.defctxmenu</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.getlayout"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.getlayout(name, all)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get named layout (or all of the latter parameter is set,
- but this is for internal use only).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.getmenu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.getmenu(name)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns a menu defined with <A HREF="#fn:ioncore.defmenu"><TT>ioncore.defmenu</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.getwinprop"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.getwinprop(cwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Find winprop table for <TT>cwin</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.aboutmsg"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string ioncore.aboutmsg()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns an about message (version, author, copyright notice).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.activity_first"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.activity_first()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns first region on activity list.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.activity_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.activity_i(function iterfn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over activity list until <TT>iterfn</TT> returns <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.clientwin_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.clientwin_i(function fn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over client windows until <TT>iterfn</TT> returns <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.current"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.current()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the currently focused region, if any.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.defshortening"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.defshortening(string rx, string rule, bool always)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Add a rule describing how too long titles should be shortened to fit in tabs.
- The regular expression <TT>rx</TT> (POSIX, not Lua!) is used to match titles
- and when <TT>rx</TT> matches, <TT>rule</TT> is attempted to use as a replacement
- for title. If <TT>always</TT> is set, the rule is used even if no shortening 
- is necessary.
-
-<P>
-Similarly to sed's 's' command, <TT>rule</TT> may contain characters that are
- inserted in the resulting string and specials as follows:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Special</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT">$0</TD>
-<TD ALIGN="LEFT">Place the original string here.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">$1 to $9</TD>
-<TD ALIGN="LEFT">Insert n:th capture here (as usual,captures are surrounded
-                 by parentheses in the regex).</TD>
-</TR>
-<TR><TD ALIGN="LEFT">$|</TD>
-<TD ALIGN="LEFT">Alternative shortening separator. The shortening described
-                 before the first this kind of separator is tried first and
-                 if it fails to make the string short enough, the next is 
-                  tried, and so on.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">$&lt;</TD>
-<TD ALIGN="LEFT">Remove characters on the left of this marker to shorten the
-                 string.</TD>
-</TR>
-<TR><TD ALIGN="LEFT">$&gt;</TD>
-<TD ALIGN="LEFT">Remove characters on the right of this marker to shorten the
-                 string. Only the first $&lt; or $&gt; within an alternative 
-                 shortening is used.</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.detach"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.detach(WRegion reg, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Detach or reattach <TT>reg</TT>, depending on whether <TT>how</TT>
- is `<TT>set</TT>', `<TT>unset</TT>' or `<TT>toggle</TT>'. (Detaching 
- means making <TT>reg</TT> managed by its nearest ancestor WGroup,
- framed if <TT>reg</TT> is not itself WFrame. Reattaching means 
- making it managed where it used to be managed, if a return-placeholder
- exists.)
- If <TT>reg</TT> is the `bottom' of some group, the whole group is
- detached. If <TT>reg</TT> is a WWindow, it is put into a 
- frame.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.exec"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer ioncore.exec(string cmd)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Run <TT>cmd</TT> with the environment variable DISPLAY set to point to the
- X display the WM is running on. No specific screen is set unlike with
- <A HREF="#fn:WRootWin.exec_on"><TT>WRootWin.exec_on</TT></A>. The PID of the (shell executing the) new 
- process is returned.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.find_screen_id"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WScreen ioncore.find_screen_id(integer id)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Find the screen with numerical id <TT>id</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.focushistory_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.focushistory_i(function iterfn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over focus history until <TT>iterfn</TT> returns <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.get"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table ioncore.get()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get ioncore basic settings. For details see <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.get_paths"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table ioncore.get_paths(table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get important directories (the fields <TT>userdir</TT>, 
- <TT>sessiondir</TT>, <TT>searchpath</TT> in the returned table).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.goto_activity"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.goto_activity()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to first region on activity list.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.goto_first"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.goto_first(WRegion reg, string dirstr, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to first region within <TT>reg</TT> in direction <TT>dirstr</TT>.
- For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>. 
- Additionally this function supports the boolean <TT>nofront</TT> field,
- for not bringing the object to front.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.goto_next"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.goto_next(WRegion reg, string dirstr, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to region next from <TT>reg</TT> in direction <TT>dirstr</TT>.
- For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
- Additionally this function supports the boolean <TT>nofront</TT>
- field, for not bringing the object to front.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.goto_next_screen"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WScreen ioncore.goto_next_screen()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Switch focus to the next screen and return it.
-
-<P>
-Note that this function is asynchronous; the screen will not
- actually have received the focus when this function returns.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.goto_nth_screen"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WScreen ioncore.goto_nth_screen(integer id)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Switch focus to the screen with id <TT>id</TT> and return it.
-
-<P>
-Note that this function is asynchronous; the screen will not
- actually have received the focus when this function returns.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.goto_prev_screen"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WScreen ioncore.goto_prev_screen()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Switch focus to the previous screen and return it.
-
-<P>
-Note that this function is asynchronous; the screen will not
- actually have received the focus when this function returns.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.goto_previous"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.goto_previous()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to and return to a previously active region (if any).
-
-<P>
-Note that this function is asynchronous; the region will not
- actually have received the focus when this function returns.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.is_i18n"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.is_i18n()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is Ion supporting locale-specifically multibyte-encoded strings?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.load_module"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.load_module(string modname)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to load a C-side module.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.lookup_clientwin"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WClientWin ioncore.lookup_clientwin(string name)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to find a client window with name <TT>name</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.lookup_region"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.lookup_region(string name, string typenam)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to find a non-client window region with name <TT>name</TT> and type
- inheriting <TT>typenam</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.navi_first"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.navi_first(WRegion reg, string dirstr, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Find first region within <TT>reg</TT> in direction <TT>dirstr</TT>.
- For information on <TT>param</TT>, see <A HREF="#fn:ioncore.navi_next"><TT>ioncore.navi_next</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.navi_next"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.navi_next(WRegion reg, string dirstr, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Find region next from <TT>reg</TT> in direction <TT>dirstr</TT>
- (`<TT>up</TT>', `<TT>down</TT>', `<TT>left</TT>', `<TT>right</TT>', 
- `<TT>next</TT>', `<TT>prev</TT>', or `<TT>any</TT>'). The table <TT>param</TT>
- may contain the boolean field <TT>nowrap</TT>, instructing not to wrap 
- around, and the WRegions <TT>no_ascend</TT> and <TT>no_descend</TT>,
- and boolean functions <TT>ascend_filter</TT> and <TT>descend_filter</TT> 
- on <TT>WRegion</TT> pairs (<TT>to</TT>, <TT>from</TT>), are used to decide when
- to descend or ascend into another region.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.popen_bgread"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer ioncore.popen_bgread(string cmd, function h, function errh)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Run <TT>cmd</TT> with a read pipe connected to its stdout and stderr.
- When data is received through one of these pipes, <TT>h</TT> or <TT>errh</TT> 
- is called with that data. When the pipe is closed, the handler is called
- with <TT>nil</TT> argument. The PID of the new process is returned, or
- -1 on error.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.progname"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string ioncore.progname()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the name of program using Ioncore.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.region_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.region_i(function fn, string typenam)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over all non-client window regions with (inherited) class
- <TT>typenam</TT> until <TT>iterfn</TT> returns <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.request_selection"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.request_selection(function fn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Request (string) selection. The function <TT>fn</TT> will be called 
- with the selection when and if it is received.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.resign"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.resign()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Causes the window manager to simply exit without saving
- state/session.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.restart"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.restart()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Restart, saving session first.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.restart_other"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.restart_other(string cmd)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to restart another window manager <TT>cmd</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.set"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.set(table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set ioncore basic settings. The table <TT>tab</TT> may contain the
- following fields.
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>opaque_resize</TT></TD>
-<TD ALIGN="LEFT">(boolean) Controls whether interactive move and
-                        resize operations simply draw a rubberband during
-                        the operation (false) or immediately affect the 
-                        object in question at every step (true).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>warp</TT></TD>
-<TD ALIGN="LEFT">(boolean) Should focusing operations move the 
-                        pointer to the object to be focused?</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
-<TD ALIGN="LEFT">(boolean) Should a managing WMPlex switch
-                        to a newly mapped client window?</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>screen_notify</TT></TD>
-<TD ALIGN="LEFT">(boolean) Should notification tooltips be displayed
-                        for hidden workspaces with activity?</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>frame_default_index</TT></TD>
-<TD ALIGN="LEFT">(string) Specifies where to add new regions
-                        on the mutually exclusive list of a frame. One of
-                        `<TT>last</TT>', `<TT>next</TT>', (for after current),
-                        or `<TT>next-act</TT>'
-                        (for after current and anything with activity right
-                        after it).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>dblclick_delay</TT></TD>
-<TD ALIGN="LEFT">(integer) Delay between clicks of a double click.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>kbresize_delay</TT></TD>
-<TD ALIGN="LEFT">(integer) Delay in milliseconds for ending keyboard
-                         resize mode after inactivity.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>kbresize_t_max</TT></TD>
-<TD ALIGN="LEFT">(integer) Controls keyboard resize acceleration. 
-                         See description below for details.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>kbresize_t_min</TT></TD>
-<TD ALIGN="LEFT">(integer) See below.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>kbresize_step</TT></TD>
-<TD ALIGN="LEFT">(floating point) See below.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>kbresize_maxacc</TT></TD>
-<TD ALIGN="LEFT">(floating point) See below.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>framed_transients</TT></TD>
-<TD ALIGN="LEFT">(boolean) Put transients in nested frames.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>float_placement_method</TT></TD>
-<TD ALIGN="LEFT">(string) How to place floating frames.
-                          One of `<TT>udlr</TT>' (up-down, then left-right), 
-                          `<TT>lrud</TT>' (left-right, then up-down), or 
-                          `<TT>random</TT>'.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>mousefocus</TT></TD>
-<TD ALIGN="LEFT">(string) Mouse focus mode: 
-                     `<TT>disable</TT>' or `<TT>sloppy</TT>'.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>unsqueeze</TT></TD>
-<TD ALIGN="LEFT">(boolean) Auto-unsqueeze transients/menus/queries/etc.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>autoraise</TT></TD>
-<TD ALIGN="LEFT">(boolean) Autoraise regions in groups on goto.</TD>
-</TR>
-</TABLE>
-
-<P>
-When a keyboard resize function is called, and at most <TT>kbresize_t_max</TT> 
- milliseconds has passed from a previous call, acceleration factor is reset 
- to 1.0. Otherwise, if at least <TT>kbresize_t_min</TT> milliseconds have 
- passed from the from previous acceleration update or reset the squere root
- of the acceleration factor is incremented by <TT>kbresize_step</TT>. The 
- maximum acceleration factor (pixels/call modulo size hints) is given by 
- <TT>kbresize_maxacc</TT>. The default values are (200, 50, 30, 100).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.set_paths"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.set_paths(table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set important directories (the fields <TT>sessiondir</TT>, <TT>searchpath</TT>
- of <TT>tab</TT>).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.set_selection"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.set_selection(string p)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set primary selection and cutbuffer0 to <TT>p</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.shutdown"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.shutdown()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>End session saving it first.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.snapshot"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.snapshot()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Save session.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.tagged_clear"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.tagged_clear()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Untag all regions.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.tagged_first"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion ioncore.tagged_first(bool untag)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns first tagged object, untagging it as well if <TT>untag</TT> is set.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.tagged_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.tagged_i(function iterfn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over tagged regions until <TT>iterfn</TT> returns <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.unsqueeze"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.unsqueeze(WRegion reg, bool override)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Try to detach <TT>reg</TT> if it fits poorly in its 
- current location. This function does not do anything,
- unless <TT>override</TT> is set or the <TT>unsqueeze</TT> option
- of <A HREF="#fn:ioncore.set"><TT>ioncore.set</TT></A> is set.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.version"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string ioncore.version()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns Ioncore version string.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.warn"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.warn(string str)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Issue a warning. How the message is displayed depends on the current
- warning handler.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.warn_traced"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.warn_traced(string str)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Similar to <A HREF="#fn:ioncore.warn"><TT>ioncore.warn</TT></A>, but also print Lua stack trace.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.x_change_property"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.x_change_property(integer win, integer atom, integer atom_type, integer format, string mode, table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Modify a window property. The <TT>mode</TT> is one of
- `<TT>replace</TT>', `<TT>prepend</TT>' or `<TT>append</TT>', and format
- is either 8, 16 or 32. Also see <A HREF="#fn:ioncore.x_get_window_property"><TT>ioncore.x_get_window_property</TT></A>
- and the <TT>XChangeProperty</TT>(3) manual page.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.x_delete_property"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.x_delete_property(integer win, integer atom)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Delete a window property.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.x_get_atom_name"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string ioncore.x_get_atom_name(integer atom)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get the name of an atom. See <TT>XGetAtomName</TT>(3) manual page for 
- details.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.x_get_text_property"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table ioncore.x_get_text_property(integer win, integer atom)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get a text property for a window. The fields in the returned
- table (starting from 1) are the null-separated parts of the property.
- See the <TT>XGetTextProperty</TT>(3) manual page for more information.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.x_get_window_property"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table ioncore.x_get_window_property(integer win, integer atom, integer atom_type, integer n32expected, bool more)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get a property <TT>atom</TT> of type <TT>atom_type</TT> for window <TT>win</TT>. 
- The <TT>n32expected</TT> parameter indicates the expected number of 32bit
- words, and <TT>more</TT> indicates whether all or just this amount of data
- should be fetched. Each 8, 16 or 32bit element of the property, as
- deciphered from <TT>atom_type</TT> is a field in the returned table.
- See <TT>XGetWindowProperty</TT>(3) manual page for more information.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.x_intern_atom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer ioncore.x_intern_atom(string name, bool only_if_exists)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a new atom. See <TT>XInternAtom</TT>(3) manual page for details.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.x_set_text_property"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void ioncore.x_set_text_property(integer win, integer atom, table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set a text property for a window. The fields of <TT>tab</TT> starting from
- 1 should be the different null-separated parts of the property.
- See the <TT>XSetTextProperty</TT>(3) manual page for more information.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.kpress"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.kpress(keyspec, cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Creates a binding description table for the action of pressing a key given 
- by <TT>keyspec</TT> (with possible modifiers) to the function <TT>cmd</TT>.
- The <TT>guard</TT> controls when the binding can be called.
- For more informationp see Section <A HREF="node4.html#sec:bindings">3.3</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.kpress_wait"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.kpress_wait(keyspec, cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This is similar to <A HREF="#fn:ioncore.kpress"><TT>ioncore.kpress</TT></A> but after calling <TT>cmd</TT>, 
- Ioncore waits for all modifiers to be released before processing
- any further actions.
- For more information on bindings, see Section <A HREF="node4.html#sec:bindings">3.3</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.defer"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool ioncore.defer(function fn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Defer execution of <TT>fn</TT> until the main loop.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.get_hook"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WHook ioncore.get_hook(string name)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Find named hook <TT>name</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.match_winprop_dflt"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.match_winprop_dflt(prop, cwin, id)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>The basic name-based winprop matching criteria.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.mclick"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.mclick(buttonspec, cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Creates a binding description table for the action of clicking a mouse 
- button while possible modifier keys are pressed,
- both given by <TT>buttonspec</TT>, to the function <TT>cmd</TT>.
- For more information, see Section <A HREF="node4.html#sec:bindings">3.3</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.mdblclick"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.mdblclick(buttonspec, cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Similar to <A HREF="#fn:ioncore.mclick"><TT>ioncore.mclick</TT></A> but for double-click.
- Also see Section <A HREF="node4.html#sec:bindings">3.3</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.mdrag"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.mdrag(buttonspec, cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Creates a binding description table for the action of moving the mouse
- (or other pointing device) while the button given by <TT>buttonspec</TT>
- is held pressed and the modifiers given by <TT>buttonspec</TT> were pressed
- when the button was initially pressed.
- Also see section <A HREF="node4.html#sec:bindings">3.3</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.menuentry"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.menuentry(name, cmd, guard_or_opts)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Use this function to define normal menu entries. The string <TT>name</TT> 
- is the string shown in the visual representation of menu. The
- parameter <TT>cmd</TT> and <TT>guard_or_opts</TT> (when string) are similar
- to those of <A HREF="#fn:ioncore.defbindings"><TT>ioncore.defbindings</TT></A>.  If <TT>guard_or_opts</TT> is
- a table, it may contains the <TT>guard</TT> field, and the <TT>priority</TT>
- field, for controlling positioning of entries in context menus.
- (The default priority is 1 for most entries, and -1 for auto-generated
- submenus.)
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.mpress"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.mpress(buttonspec, cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Similar to <A HREF="#fn:ioncore.mclick"><TT>ioncore.mclick</TT></A> but for just pressing the mouse button.
- Also see Section <A HREF="node4.html#sec:bindings">3.3</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.refresh_stylelist"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.refresh_stylelist()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Refresh list of known style files.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.submap"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.submap(keyspec, list)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns a function that creates a submap binding description table.
- When the key press action <TT>keyspec</TT> occurs, Ioncore will wait for
- a further key presse and act according to the submap.
- For details, see Section <A HREF="node4.html#sec:bindings">3.3</A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.submap_enter"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.submap_enter(cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Submap enter event for bindings.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.submap_wait"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.submap_wait(cmd, guard)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Submap modifier release event for bindings.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.submenu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.submenu(name, sub_or_name, options)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Use this function to define menu entries for submenus. The parameter
- <A HREF="#fn:sub_or_name"><TT>sub_or_name</TT></A> is either a table of menu entries or the name
- of an already defined menu. The initial menu entry to highlight can be
- specified by <TT>options.initial</TT> as either an integer starting from 1, 
- or a  function that returns such a number. Another option supported is
- <TT>options.noautoexpand</TT> that will cause <A HREF="#fn:mod_query.query_menu"><TT>mod_query.query_menu</TT></A>
- to not automatically expand this submenu.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.tabnum.clear"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.tabnum.clear()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Clear all tab numbers set by <A HREF="#fn:ioncore.tabnum.show"><TT>ioncore.tabnum.show</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.tabnum.show"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.tabnum.show(frame, delay)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Show tab numbers on <TT>frame</TT>, clearing them when submap
- grab is released the next time. If <TT>delay</TT> is given, in
- milliseconds, the numbers are not actually displayed until this
- time has passed.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:ioncore.tagged_attach"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>ioncore.tagged_attach(reg, param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attach tagged regions to <TT>reg</TT>. The method of attach
- depends on the types of attached regions and whether <TT>reg</TT> 
- implements <TT>attach_framed</TT> and <TT>attach</TT>. If <TT>param</TT>
- is not set, the default of <code>{switchto=true}</code> is used.
- The function returns <TT>true</TT> if all tagged regions were
- succesfully attached, and <TT>false</TT> otherwisse.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00711000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> WClientWin functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WClientWin.get_ident"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WClientWin.get_ident(WClientWin cwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns a table containing the properties <TT>WM_CLASS</TT> (table entries
- <TT>instance</TT> and <TT>class</TT>) and  <TT>WM_WINDOW_ROLE</TT> (<TT>role</TT>)
- properties for <TT>cwin</TT>. If a property is not set, the corresponding 
- field(s) are unset in the  table.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WClientWin.kill"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WClientWin.kill(WClientWin cwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to kill (with <TT>XKillWindow</TT>) the client that owns 
- the X window correspoding to <TT>cwin</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WClientWin.nudge"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WClientWin.nudge(WClientWin cwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempts to fix window size problems with non-ICCCM compliant
- programs.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WClientWin.quote_next"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WClientWin.quote_next(WClientWin cwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Send next key press directly to <TT>cwin</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WClientWin.xid"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>double WClientWin.xid(WClientWin cwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return the X window id for the client window.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00712000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> WFrame functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.is_shaded"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WFrame.is_shaded(WFrame frame)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>frame</TT> shaded?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.maximize_horiz"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WFrame.maximize_horiz(WFrame frame)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to toggle horizontal maximisation of <TT>frame</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.maximize_vert"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WFrame.maximize_vert(WFrame frame)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to toggle vertical maximisation of <TT>frame</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.mode"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string WFrame.mode(WFrame frame)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get frame mode.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.p_switch_tab"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WFrame.p_switch_tab(WFrame frame)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Display the region corresponding to the tab that the user pressed on.
- This function should only be used by binding it to a mouse action.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.p_tabdrag"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WFrame.p_tabdrag(WFrame frame)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Start dragging the tab that the user pressed on with the pointing device.
- This function should only be used by binding it to <SPAN  CLASS="textit">mpress</SPAN> or
- <SPAN  CLASS="textit">mdrag</SPAN> action with area `<TT>tab</TT>'.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.set_grattr"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WFrame.set_grattr(WFrame frame, string attr, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set extra drawing engine attributes for the frame.
- The parameter <TT>attr</TT> is the attribute, and <TT>how</TT> is
- one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.set_mode"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WFrame.set_mode(WFrame frame, string modestr)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set frame mode.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WFrame.set_shaded"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WFrame.set_shaded(WFrame frame, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set shading state according to the parameter <TT>how</TT> 
- (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'). 
- Resulting state is returned, which may not be
- what was requested.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00713000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> WGroup functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroup.attach"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WGroup.attach(WGroup ws, WRegion reg, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attach and reparent existing region <TT>reg</TT> to <TT>ws</TT>.
- The table <TT>param</TT> may contain the fields <TT>index</TT> and
- <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroup.attach_new"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WGroup.attach_new(WGroup ws, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a new region to be managed by <TT>ws</TT>. At least the following
- fields in <TT>param</TT> are understood:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>type</TT></TD>
-<TD ALIGN="LEFT">(string) Class of the object to be created. Mandatory.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>name</TT></TD>
-<TD ALIGN="LEFT">(string) Name of the object to be created.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
-<TD ALIGN="LEFT">(boolean) Should the region be switched to?</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>level</TT></TD>
-<TD ALIGN="LEFT">(integer) Stacking level; default is 1.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
-<TD ALIGN="LEFT">(boolean) Make object modal; ignored if level is set.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
-<TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>bottom</TT></TD>
-<TD ALIGN="LEFT">(boolean) Mark the attached region as the
-                 ``bottom'' of <TT>ws</TT>.</TD>
-</TR>
-</TABLE>
-
-<P>
-In addition parameters to the region to be created are passed in this 
- same table.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroup.bottom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WGroup.bottom(WGroup ws)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the `bottom' of <TT>ws</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroup.is_fullscreen"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WGroup.is_fullscreen(WGroup grp)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>reg</TT> in full screen mode?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroup.managed_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WGroup.managed_i(WGroup ws, function iterfn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
- <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroup.set_bottom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WGroup.set_bottom(WGroup ws, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Sets the `bottom' of <TT>ws</TT>. The region <TT>reg</TT> must already
- be managed by <TT>ws</TT>, unless <TT>nil</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroup.set_fullscreen"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WGroup.set_fullscreen(WGroup grp, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set client window <TT>reg</TT> full screen state according to the 
- parameter <TT>how</TT> (one of `<TT>set</TT>', `<TT>unset</TT>', or 
- `<TT>toggle</TT>'). Resulting state is returned, which may not be
- what was requested.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00714000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">4</SPAN> WGroupCW functions</A>
-</H3>
-
-<P>
-
-<H3><A NAME="SECTION00715000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">5</SPAN> WGroupWS functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WGroupWS.attach_framed"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WGroupWS.attach_framed(WGroupWS ws, WRegion reg, table t)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attach region <TT>reg</TT> on <TT>ws</TT>.
- At least the following fields in <TT>t</TT> are supported:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
-<TD ALIGN="LEFT">Should the region be switched to (boolean)? Optional.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
-<TD ALIGN="LEFT">Geometry; <TT>x</TT> and <TT>y</TT>, if set, indicates top-left of 
-   the frame to be created while <TT>width</TT> and <TT>height</TT>, if set, indicate
-   the size of the client window within that frame. Optional.</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00716000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">6</SPAN> WHook functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WHook.add"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WHook.add(WHook hk, function efn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Add <TT>efn</TT> to the list of functions to be called when the
- hook <TT>hk</TT> is triggered.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WHook.listed"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WHook.listed(WHook hk, function efn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>fn</TT> hooked to hook <TT>hk</TT>?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WHook.remove"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WHook.remove(WHook hk, function efn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Remove <TT>efn</TT> from the list of functions to be called when the 
- hook <TT>hk</TT> is triggered.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00717000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">7</SPAN> WInfoWin functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WInfoWin.set_text"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WInfoWin.set_text(WInfoWin p, string str, integer maxw)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set contents of the info window.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00718000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">8</SPAN> WMPlex functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.attach"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WMPlex.attach(WMPlex mplex, WRegion reg, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attach and reparent existing region <TT>reg</TT> to <TT>mplex</TT>.
- The table <TT>param</TT> may contain the fields <TT>index</TT> and
- <TT>switchto</TT> that are interpreted as for <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.attach_new"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WMPlex.attach_new(WMPlex mplex, table param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a new region to be managed by <TT>mplex</TT>. At least the following
- fields in <TT>param</TT> are understood (all but <TT>type</TT> are optional).
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>type</TT></TD>
-<TD ALIGN="LEFT">(string) Class name (a string) of the object to be created.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>name</TT></TD>
-<TD ALIGN="LEFT">(string) Name of the object to be created (a string).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
-<TD ALIGN="LEFT">(boolean) Should the region be switched to (boolean)?</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>unnumbered</TT></TD>
-<TD ALIGN="LEFT">(boolean) Do not put on the numbered mutually 
-                     exclusive list.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>index</TT></TD>
-<TD ALIGN="LEFT">(integer) Index on this list, same as for 
-                <A HREF="#fn:WMPlex.set_index"><TT>WMPlex.set_index</TT></A>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>level</TT></TD>
-<TD ALIGN="LEFT">(integer) Stacking level.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>modal</TT></TD>
-<TD ALIGN="LEFT">(boolean) Shortcut for modal stacking level.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>hidden</TT></TD>
-<TD ALIGN="LEFT">(boolean) Attach hidden, if not prevented
-                  by e.g. the mutually exclusive list being empty.
-                  This option overrides <TT>switchto</TT>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>passive</TT></TD>
-<TD ALIGN="LEFT">(boolean) Skip in certain focusing operations.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>pseudomodal</TT></TD>
-<TD ALIGN="LEFT">(boolean) The attached region is ``pseudomodal''
-                      if the stacking level dictates it to be modal.
-                      This means that the region may be hidden to display
-                      regions with lesser stacking levels.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>sizepolicy</TT></TD>
-<TD ALIGN="LEFT">(string) Size policy; see Section <A HREF="#sec:sizepolicies">6.10.1</A>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
-<TD ALIGN="LEFT">(table) Geometry specification.</TD>
-</TR>
-</TABLE>
-
-<P>
-In addition parameters to the region to be created are passed in this 
- same table.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.dec_index"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMPlex.dec_index(WMPlex mplex, WRegion r)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Move <TT>r</TT> ``left'' within objects managed by <TT>mplex</TT> on list 1.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.get_index"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer WMPlex.get_index(WMPlex mplex, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get index of <TT>reg</TT> on the mutually exclusive list of <TT>mplex</TT>.
- The indices begin from zero.. If <TT>reg</TT> is not on the list,
- -1 is returned.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.get_stdisp"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WMPlex.get_stdisp(WMPlex mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get status display information. See <A HREF="#fn:WMPlex.get_stdisp"><TT>WMPlex.get_stdisp</TT></A> for
- information on the fields.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.inc_index"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMPlex.inc_index(WMPlex mplex, WRegion r)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Move <TT>r</TT> ``right'' within objects managed by <TT>mplex</TT> on list 1.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.is_hidden"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WMPlex.is_hidden(WMPlex mplex, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>reg</TT> on within <TT>mplex</TT> and hidden?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.managed_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WMPlex.managed_i(WMPlex mplex, function iterfn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over managed regions of <TT>mplex</TT> until <TT>iterfn</TT> returns
- <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.mx_count"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer WMPlex.mx_count(WMPlex mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the number of objects on the mutually exclusive list of <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.mx_current"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WMPlex.mx_current(WMPlex mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the managed object currently active within the mutually exclusive
- list of <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.mx_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WMPlex.mx_i(WMPlex mplex, function iterfn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over numbered/mutually exclusive region list of <TT>mplex</TT> 
- until <TT>iterfn</TT> returns <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.mx_nth"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WMPlex.mx_nth(WMPlex mplex, integer n)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the <TT>n</TT>:th object on the mutually exclusive
- list of <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.set_hidden"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WMPlex.set_hidden(WMPlex mplex, WRegion reg, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set the visibility of the region <TT>reg</TT> on <TT>mplex</TT>
- as specified with the parameter <TT>how</TT> 
- (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
- The resulting state is returned.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.set_index"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMPlex.set_index(WMPlex mplex, WRegion reg, integer index)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set index of <TT>reg</TT> to <TT>index</TT> within the mutually exclusive 
- list of <TT>mplex</TT>. Special values for <TT>index</TT> are:
- <TABLE CELLPADDING=3 WIDTH="100%">
-<TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
- WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
- SRC="img4.png"
- ALT="$-1$"></SPAN></TD>
-<TD ALIGN="LEFT">Last.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><SPAN CLASS="MATH"><IMG
- WIDTH="27" HEIGHT="31" ALIGN="MIDDLE" BORDER="0"
- SRC="img5.png"
- ALT="$-2$"></SPAN></TD>
-<TD ALIGN="LEFT">After <A HREF="#fn:WMPlex.mx_current"><TT>WMPlex.mx_current</TT></A>.</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.set_stdisp"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WMPlex.set_stdisp(WMPlex mplex, table t)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set/create status display for <TT>mplex</TT>. Table is a standard
- description of the object to be created (as passed to e.g. 
- <A HREF="#fn:WMPlex.attach_new"><TT>WMPlex.attach_new</TT></A>). In addition, the following fields are
- recognised:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
-<TD ALIGN="LEFT">(string) The corner of the screen to place the status 
-               display in: one of `<TT>tl</TT>', `<TT>tr</TT>', `<TT>bl</TT>' 
-               or `<TT>br</TT>'.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>fullsize</TT></TD>
-<TD ALIGN="LEFT">(boolean) Waste all available space.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>action</TT></TD>
-<TD ALIGN="LEFT">(string) If this field is set to `<TT>keep</TT>', 
-                  <TT>pos</TT> and <TT>fullsize</TT> are changed for the existing
-                  status display. If this field is set to `<TT>remove</TT>',
-                  the existing status display is removed. If this
-                  field is not set or is set to `<TT>replace</TT>', a 
-                  new status display is created and the old, if any,
-                  removed.</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.switch_next"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMPlex.switch_next(WMPlex mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Have <TT>mplex</TT> display next (wrt. currently selected) object managed 
- by it.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.switch_nth"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMPlex.switch_nth(WMPlex mplex, integer n)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Have <TT>mplex</TT> display the <TT>n</TT>:th object managed by it.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMPlex.switch_prev"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMPlex.switch_prev(WMPlex mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Have <TT>mplex</TT> display previous (wrt. currently selected) object
- managed by it.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00719000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">9</SPAN> WMoveresMode functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMoveresMode.cancel"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMoveresMode.cancel(WMoveresMode mode)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return from move/resize cancelling changes if opaque
- move/resize has not been enabled.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMoveresMode.finish"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMoveresMode.finish(WMoveresMode mode)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return from move/resize mode and apply changes unless opaque
- move/resize is enabled.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMoveresMode.geom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WMoveresMode.geom(WMoveresMode mode)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns current geometry.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMoveresMode.move"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMoveresMode.move(WMoveresMode mode, integer horizmul, integer vertmul)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Move resize mode target one step:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1">
-<TR><TD ALIGN="RIGHT"><TT>horizmul</TT>/<TT>vertmul</TT></TD>
-<TD ALIGN="LEFT">effect</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">-1</TD>
-<TD ALIGN="LEFT">Move left/up</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">0</TD>
-<TD ALIGN="LEFT">No effect</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">1</TD>
-<TD ALIGN="LEFT">Move right/down</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMoveresMode.resize"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMoveresMode.resize(WMoveresMode mode, integer left, integer right, integer top, integer bottom)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Shrink or grow resize mode target one step in each direction.
- Acceptable values for the parameters <TT>left</TT>, <TT>right</TT>, <TT>top</TT>
- and <TT>bottom</TT> are as follows: -1: shrink along,
- 0: do not change, 1: grow along corresponding border.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMoveresMode.rqgeom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WMoveresMode.rqgeom(WMoveresMode mode, table g)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Request exact geometry in move/resize mode. For details on parameters,
- see <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007110000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">10</SPAN> WRegion functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.begin_kbresize"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WMoveresMode WRegion.begin_kbresize(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Enter move/resize mode for <TT>reg</TT>. The bindings set with
- <A HREF="#fn:ioncore.set_bindings"><TT>ioncore.set_bindings</TT></A> for WMoveresMode are used in 
- this mode. Of the functions exported by the Ion C core, only
- <A HREF="#fn:WMoveresMode.resize"><TT>WMoveresMode.resize</TT></A>, <A HREF="#fn:WMoveresMode.move"><TT>WMoveresMode.move</TT></A>, 
- <A HREF="#fn:WMoveresMode.cancel"><TT>WMoveresMode.cancel</TT></A> and <A HREF="#fn:WMoveresMode.end"><TT>WMoveresMode.end</TT></A> are
- allowed to be called while in this mode.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.current"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WRegion.current(WRegion mgr)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return the object, if any, that is considered ``currently active''
- within the objects managed by <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.geom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WRegion.geom(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the geometry of <TT>reg</TT> within its parent; a table with fields
- <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.get_configuration"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WRegion.get_configuration(WRegion reg, bool clientwins)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get configuration tree. If <TT>clientwins</TT> is unset, client windows
- are filtered out.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.goto"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.goto(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to display <TT>reg</TT>, save region activity status and then
- warp to (or simply set focus to if warping is disabled) <TT>reg</TT>.
-
-<P>
-Note that this function is asynchronous; the region will not
- actually have received the focus when this function returns.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.groupleader_of"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WRegion.groupleader_of(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the group of <TT>reg</TT>, if <TT>reg</TT> is its bottom,
- and <TT>reg</TT> itself otherwise.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.is_active"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.is_active(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>reg</TT> active/does it or one of it's children of focus?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.is_activity"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.is_activity(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is activity notification set on <TT>reg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.is_mapped"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.is_mapped(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>reg</TT> visible/is it and all it's ancestors mapped?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.is_tagged"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.is_tagged(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>reg</TT> tagged?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.manager"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WRegion.manager(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the region that manages <TT>reg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.name"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string WRegion.name(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the name for <TT>reg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.parent"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WWindow WRegion.parent(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the parent region of <TT>reg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.rootwin_of"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRootWin WRegion.rootwin_of(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the root window <TT>reg</TT> is on.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.rqclose"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WRegion.rqclose(WRegion reg, bool relocate)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to close/destroy <TT>reg</TT>. Whether this operation works
- depends on whether the particular type of region in question has
- implemented the feature and, in case of client windows, whether
- the client supports the <TT>WM_DELETE</TT> protocol (see also
- <A HREF="#fn:WClientWin.kill"><TT>WClientWin.kill</TT></A>). The region will not be destroyed when
- this function returns. To find out if and when it is destroyed,
- use the `<TT>deinit</TT>' notification. If <TT>relocate</TT> is not set, 
- and <TT>reg</TT> manages other regions, it will not be closed. Otherwise
- the managed regions will be attempted to be relocated.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.rqclose_propagate"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WRegion.rqclose_propagate(WRegion reg, WRegion maybe_sub)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Recursively attempt to close a region or one of the regions managed by 
- it. If <TT>sub</TT> is set, it will be used as the managed region, otherwise
- <A HREF="#fn:WRegion.current"><TT>WRegion.current</TT></A><TT>(reg)</TT>. The object to be closed is
- returned, or NULL if nothing can be closed. For further details, see
- notes for <A HREF="#fn:WRegion.rqclose"><TT>WRegion.rqclose</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.rqgeom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WRegion.rqgeom(WRegion reg, table g)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to resize and/or move <TT>reg</TT>. The table <TT>g</TT> is a usual
- geometry specification (fields <TT>x</TT>, <TT>y</TT>, <TT>w</TT> and <TT>h</TT>),
- but may contain missing fields, in which case, <TT>reg</TT>'s manager may
- attempt to leave that attribute unchanged.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.rqorder"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.rqorder(WRegion reg, string ord)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Request ordering. Currently supported values for <TT>ord</TT>
- are `<TT>front</TT>' and `<TT>back</TT>'.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.screen_of"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WScreen WRegion.screen_of(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the screen <TT>reg</TT> is on.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.set_activity"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.set_activity(WRegion reg, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set activity flag of <TT>reg</TT>. The <TT>how</TT> parameter must be
- one of `<TT>set</TT>', `<TT>unset</TT>' or `<TT>toggle</TT>'.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.set_name"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.set_name(WRegion reg, string p)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set the name of <TT>reg</TT> to <TT>p</TT>. If the name is already in use,
- an instance number suffix `<TT>&lt;n&gt;</TT>' will be attempted. If <TT>p</TT> has
- such a suffix, it will be modified, otherwise such a suffix will be
- added. Setting <TT>p</TT> to nil will cause current name to be removed.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.set_name_exact"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.set_name_exact(WRegion reg, string p)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Similar to <A HREF="#fn:WRegion.set_name"><TT>WRegion.set_name</TT></A> except if the name is already in use,
- other instance numbers will not be attempted. The string <TT>p</TT> should
- not contain a `<TT>&lt;n&gt;</TT>' suffix or this function will fail.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.set_tagged"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WRegion.set_tagged(WRegion reg, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Change tagging state of <TT>reg</TT> as defined by <TT>how</TT>
- (one of `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
- The resulting state is returned.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRegion.size_hints"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WRegion.size_hints(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns size hints for <TT>reg</TT>. The returned table always contains the
- fields <TT>min_?</TT>, <TT>base_?</TT> and sometimes the fields <TT>max_?</TT>,
- <TT>base_?</TT> and <TT>inc_?</TT>, where <TT>?</TT>=<TT>w</TT>, <TT>h</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007111000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">11</SPAN> WRootWin functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WRootWin.current_scr"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WScreen WRootWin.current_scr(WRootWin rootwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns previously active screen on root window <TT>rootwin</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007112000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">12</SPAN> WScreen functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WScreen.id"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer WScreen.id(WScreen scr)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return the numerical id for screen <TT>scr</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WScreen.set_managed_offset"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WScreen.set_managed_offset(WScreen scr, table offset)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set offset of objects managed by the screen from actual screen geometry.
- The table <TT>offset</TT> should contain the entries <TT>x</TT>, <TT>y</TT>, 
- <TT>w</TT> and <TT>h</TT> indicating offsets of that component of screen 
- geometry.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007113000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">13</SPAN> WTimer functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTimer.is_set"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WTimer.is_set(WTimer timer)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is timer set?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTimer.reset"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WTimer.reset(WTimer timer)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Reset timer.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTimer.set"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WTimer.set(WTimer timer, integer msecs, function fn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set <TT>timer</TT> to call <TT>fn</TT> in <TT>msecs</TT> milliseconds.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007114000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">14</SPAN> WWindow functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WWindow.p_move"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WWindow.p_move(WWindow wwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Start moving <TT>wwin</TT> with the mouse or other pointing device.
- This function should only be used by binding it to <SPAN  CLASS="textit">mpress</SPAN> or
- <SPAN  CLASS="textit">mdrag</SPAN> action.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WWindow.p_resize"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WWindow.p_resize(WWindow wwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Start resizing <TT>wwin</TT> with the mouse or other pointing device.
- This function should only be used by binding it to <SPAN  CLASS="textit">mpress</SPAN> or
- <SPAN  CLASS="textit">mdrag</SPAN> action.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WWindow.xid"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>double WWindow.xid(WWindow wwin)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return the X window id for <TT>wwin</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007115000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">15</SPAN> global functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:export"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>export(lib, ...)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Export a list of functions from <TT>lib</TT> into global namespace.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007116000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">16</SPAN> gr functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:gr.read_config"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void gr.read_config()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Read drawing engine configuration file <SPAN  CLASS="textit">look.lua</SPAN>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:gr.refresh"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void gr.refresh()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Refresh objects' brushes to update them to use newly loaded style.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:gr.select_engine"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool gr.select_engine(string engine)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Future requests for ``brushes'' are to be forwarded to the drawing engine
- <TT>engine</TT>. If no engine of such name is known, a module with that name
- is attempted to be loaded. This function is only intended to be called from
- colour scheme etc. configuration files and can not be used to change the
- look of existing objects; for that use <A HREF="#fn:gr.read_config"><TT>gr.read_config</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007117000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">17</SPAN> string functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:string.shell_safe"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string.shell_safe(str)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Make <TT>str</TT> shell-safe.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION007118000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">18</SPAN> table functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:table.append"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table.append(t1, t2)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Add entries that do not exist in <TT>t1</TT> from <TT>t2</TT> to <TT>t1</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:table.copy"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table.copy(t, deep)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Make copy of <TT>table</TT>. If <TT>deep</TT> is unset, shallow one-level
- copy is made, otherwise a deep copy is made.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:table.icat"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table.icat(t1, t2)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Insert all positive integer entries from t2 into t1.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:table.join"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table.join(t1, t2)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a table containing all entries from <TT>t1</TT> and those from
- <TT>t2</TT> that are missing from <TT>t1</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:table.map"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table.map(f, t)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Map all entries of <TT>t</TT> by <TT>f</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00720000000000000000"></A>
-<A NAME="sec:tilingref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN> Functions defined in <SPAN  CLASS="textit">mod_tiling</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:mod_tiling.get"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table mod_tiling.get()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get parameters. For details see <A HREF="#fn:mod_tiling.set"><TT>mod_tiling.set</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_tiling.mkbottom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool mod_tiling.mkbottom(WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a new WTiling 'bottom' for the group of <TT>reg</TT>,
- consisting of <TT>reg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_tiling.set"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void mod_tiling.set(table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set parameters. Currently only <TT>raise_delay</TT> (in milliseconds)
- is supported.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_tiling.untile"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool mod_tiling.untile(WTiling tiling)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>If <TT>tiling</TT> is managed by some group, float the frames in
- the tiling in that group, and dispose of <TT>tiling</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00721000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> WSplit functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplit.geom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WSplit.geom(WSplit split)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the area of workspace used by the regions under <TT>split</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplit.parent"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WSplitInner WSplit.parent(WSplit split)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return parent split for <TT>split</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplit.rqgeom"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WSplit.rqgeom(WSplit node, table g)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attempt to resize and/or move the split tree starting at <TT>node</TT>.
- Behaviour and the <TT>g</TT> parameter are as for <A HREF="#fn:WRegion.rqgeom"><TT>WRegion.rqgeom</TT></A> 
- operating on <TT>node</TT> (if it were a WRegion).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplit.transpose"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WSplit.transpose(WSplit node)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Transpose contents of <TT>node</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00722000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> WSplitInner functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplitInner.current"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WSplit WSplitInner.current(WSplitInner node)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the most previously active child node of <TT>split</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00723000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">3</SPAN> WSplitRegion functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplitRegion.reg"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WSplitRegion.reg(WSplitRegion node)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the region contained in <TT>node</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00724000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">4</SPAN> WSplitSplit functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplitSplit.br"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WSplit WSplitSplit.br(WSplitSplit split)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the bottom or right child node of <TT>split</TT> depending
- on the direction of the split.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplitSplit.dir"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string WSplitSplit.dir(WSplitSplit split)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the direction of <TT>split</TT>; either `<TT>vertical</TT>' or
- `<TT>horizontal</TT>'.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplitSplit.flip"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WSplitSplit.flip(WSplitSplit split)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Flip contents of <TT>split</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WSplitSplit.tl"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WSplit WSplitSplit.tl(WSplitSplit split)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the top or left child node of <TT>split</TT> depending
- on the direction of the split.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00725000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">5</SPAN> WTiling functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.flip_at"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WTiling.flip_at(WTiling ws, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Flip <TT>ws</TT> at <TT>reg</TT> or root if nil.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.transpose_at"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WTiling.transpose_at(WTiling ws, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Transpose <TT>ws</TT> at <TT>reg</TT> or root if nil.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.farthest"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WTiling.farthest(WTiling ws, string dirstr, bool any)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return the most previously active region on <TT>ws</TT> with no
- other regions next to it in  direction <TT>dirstr</TT> 
- (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>', or `<TT>down</TT>'). 
- If <TT>any</TT> is not set, the status display is not considered.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.managed_i"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WTiling.managed_i(WTiling ws, function iterfn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Iterate over managed regions of <TT>ws</TT> until <TT>iterfn</TT> returns
- <TT>false</TT>.
- The function itself returns <TT>true</TT> if it reaches the end of list
- without this happening.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.nextto"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WRegion WTiling.nextto(WTiling ws, WRegion reg, string dirstr, bool any)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return the most previously active region next to <TT>reg</TT> in
- direction <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>', `<TT>up</TT>',
- or `<TT>down</TT>'). The region <TT>reg</TT>
- must be managed by <TT>ws</TT>. If <TT>any</TT> is not set, the status display
- is not considered.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.node_of"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WSplitRegion WTiling.node_of(WTiling ws, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>For region <TT>reg</TT> managed by <TT>ws</TT> return the WSplit
- a leaf of which <TT>reg</TT> is.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.set_floating_at"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WTiling.set_floating_at(WTiling ws, WRegion reg, string how, string dirstr)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Toggle floating of the sides of a split containin <TT>reg</TT> as indicated 
- by the parameters <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or 
- `<TT>toggle</TT>') and <TT>dirstr</TT> (`<TT>left</TT>', `<TT>right</TT>', 
- `<TT>up</TT>', or `<TT>down</TT>'). The new status is returned 
- (and <TT>false</TT> also on error).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.set_floating"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WSplitSplit WTiling.set_floating(WTiling ws, WSplitSplit split, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Toggle floating of a split's sides at <TT>split</TT> as indicated by the 
- parameter <TT>how</TT> (`<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>').
- A split of the appropriate is returned, if there was a change.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.split"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WFrame WTiling.split(WTiling ws, WSplit node, string dirstr)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a new frame on <TT>ws</TT> `<TT>above</TT>', `<TT>below</TT>'
- `<TT>left</TT>' of, or `<TT>right</TT>' of <TT>node</TT> as indicated
-  by <TT>dirstr</TT>. If <TT>dirstr</TT> is  prefixed with 
- `<TT>floating:</TT>' a floating split is created.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.split_at"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WFrame WTiling.split_at(WTiling ws, WFrame frame, string dirstr, bool attach_current)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Split <TT>frame</TT> creating a new frame to direction <TT>dirstr</TT>
- (one of `<TT>left</TT>', `<TT>right</TT>', `<TT>top</TT>' or 
- `<TT>bottom</TT>') of <TT>frame</TT>.
- If <TT>attach_current</TT> is set, the region currently displayed in
- <TT>frame</TT>, if any, is moved to thenew frame.
- If <TT>dirstr</TT> is prefixed with `<TT>floating:</TT>', a floating
- split is created.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.split_top"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WFrame WTiling.split_top(WTiling ws, string dirstr)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Same as <A HREF="#fn:WTiling.split"><TT>WTiling.split</TT></A> at the root of the split tree.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.split_tree"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>WSplit WTiling.split_tree(WTiling ws)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns the root of the split tree.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WTiling.unsplit_at"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WTiling.unsplit_at(WTiling ws, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Try to relocate regions managed by <TT>reg</TT> to another frame
- and, if possible, destroy it.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00730000000000000000"></A>
-<A NAME="sec:queryref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN> Functions defined in <SPAN  CLASS="textit">mod_query</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:mod_query.defcmd"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.defcmd(cmd, fn)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define a command override for the <A HREF="#fn:mod_query.query_exec"><TT>query_exec</TT></A> query.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.message"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.message(mplex, str)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Display a message in <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.get"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table mod_query.get()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get module configuration. For more information see
- <A HREF="#fn:mod_query.set"><TT>mod_query.set</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.history_clear"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void mod_query.history_clear()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Clear line editor history.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.history_get"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string mod_query.history_get(integer n)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get entry at index <TT>n</TT> in line editor history, 0 being the latest.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.history_push"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool mod_query.history_push(string str)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Push an entry into line editor history.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.history_search"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer mod_query.history_search(string s, integer from, bool bwd, bool exact)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Try to find matching history entry. Returns -1 if none was
- found. The parameter <TT>from</TT> specifies where to start 
- searching from, and <TT>bwd</TT> causes backward search from
- that point. If <TT>exact</TT> is not set, <TT>s</TT> only required
- to be a prefix of the match.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.history_table"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table mod_query.history_table()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Return table of history entries.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.set"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void mod_query.set(table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set module configuration. The following are supported:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>autoshowcompl</TT></TD>
-<TD ALIGN="LEFT">(boolean) Is auto-show-completions enabled?
-      (default: true).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>autoshowcompl_delay</TT></TD>
-<TD ALIGN="LEFT">(integer) auto-show-completions delay
-      in milliseconds (default: 250).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>caseicompl</TT></TD>
-<TD ALIGN="LEFT">(boolean) Turn some completions case-insensitive
-      (default: false).</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.popen_completions"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.popen_completions(cp, cmd, fn, reshnd)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This function can be used to read completions from an external source.
- The parameter <TT>cp</TT> is the completion proxy to be used,
- and the string <TT>cmd</TT> the shell command to be executed. To its stdout, 
- the command should on the first line write the <TT>common_beg</TT> 
- parameter of <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> (which <TT>fn</TT> maybe used
- to override) and a single actual completion on each of the successive lines.
- The function <TT>reshnd</TT> may be used to override a result table
- building routine.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query(mplex, prompt, initvalue, handler, completor,
-                         context)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Low-level query routine. <TT>mplex</TT> is the WMPlex to display
- the query in, <TT>prompt</TT> the prompt string, and <TT>initvalue</TT>
- the initial contents of the query box. <TT>handler</TT> is a function
- that receives (<TT>mplex</TT>, result string) as parameter when the
- query has been succesfully completed, <TT>completor</TT> the completor
- routine which receives a (<TT>cp</TT>, <TT>str</TT>, <TT>point</TT>) as parameters.
- The parameter <TT>str</TT> is the string to be completed and <TT>point</TT>
- cursor's location within it. Completions should be eventually,
- possibly asynchronously, set with <A HREF="#fn:WComplProxy.set_completions"><TT>WComplProxy.set_completions</TT></A> 
- on <TT>cp</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_attachclient"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_attachclient(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks for the name of a client window and attaches
- it to the frame the query was opened in. It uses the completion
- function <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_editfile"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_editfile(mplex, script, prompt)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Asks for a file to be edited. This script uses 
- <TT>run-mailcap -mode=edit</TT> by default, but you may provide an
- alternative script to use. The default prompt is "Edit file:" (translated).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_exec"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_exec(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This function asks for a command to execute with <SPAN  CLASS="textit">/bin/sh</SPAN>.
- If the command is prefixed with a colon (':'), the command will
- be run in an XTerm (or other terminal emulator) using the script
- <SPAN  CLASS="textit">ion-runinxterm</SPAN>. Two colons ('::') will ask you to press 
- enter after the command has finished.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_gotoclient"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_gotoclient(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks for the name of a client window and switches
- focus to the one entered. It uses the completion function
- <A HREF="#fn:ioncore.complete_clientwin"><TT>ioncore.complete_clientwin</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_lua"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_lua(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks for Lua code to execute. It sets the variable '<TT>_</TT>'
- in the local environment of the string to point to the mplex where the
- query was created. It also sets the table <TT>arg</TT> in the local
- environment to <TT>{_, _:current()}</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_man"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_man(mplex, prog)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks for a manual page to display. By default it runs the
- <TT>man</TT> command in an <TT>xterm</TT> using <TT>ion-runinxterm</TT>,
- but it is possible to pass another program as the <TT>prog</TT> argument.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_menu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_menu(mplex, sub, themenu, prompt)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query can be used to create a query of a defined menu.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_renameframe"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_renameframe(frame)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This function asks for a name new for the frame where the query
- was created.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_renameworkspace"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_renameworkspace(mplex, ws)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This function asks for a name new for the workspace <TT>ws</TT>,
- or the one on which <TT>mplex</TT> resides, if it is not set.
- If <TT>mplex</TT> is not set, one is looked for.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_restart"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_restart(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks whether the user wants restart Ioncore.
- If the answer is 'y', 'Y' or 'yes', so will happen.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_runfile"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_runfile(mplex, script, prompt)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Asks for a file to be viewed. This script uses 
- <TT>run-mailcap -action=view</TT> by default, but you may provide an
- alternative script to use. The default prompt is "View file:" (translated).
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_shutdown"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_shutdown(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks whether the user wants to exit Ion (no session manager)
- or close the session (running under a session manager that supports such
- requests). If the answer is 'y', 'Y' or 'yes', so will happen.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_ssh"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_ssh(mplex, ssh)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks for a host to connect to with SSH. 
- Hosts to tab-complete are read from <SPAN  CLASS="textit">~/.ssh/known_hosts</SPAN>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_workspace"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_workspace(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This query asks for the name of a workspace. If a workspace
- (an object inheriting WGroupWS) with such a name exists,
- it will be switched to. Otherwise a new workspace with the
- entered name will be created and the user will be queried for
- the type of the workspace.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.query_yesno"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.query_yesno(mplex, prompt, handler)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This function query will display a query with prompt <TT>prompt</TT> in
- <TT>mplex</TT> and if the user answers affirmately, call <TT>handler</TT>
- with <TT>mplex</TT> as parameter.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.show_about_ion"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.show_about_ion(mplex)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Display an "About Ion" message in <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.show_tree"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.show_tree(mplex, reg, max_depth)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Show information about a region tree
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_query.warn"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_query.warn(mplex, str)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Display an error message box in the multiplexer <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00731000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> WComplProxy functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WComplProxy.set_completions"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WComplProxy.set_completions(WComplProxy proxy, table compls)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set completion list of the WEdln that <TT>proxy</TT> refers to to
- <TT>compls</TT>, if it is still waiting for this completion run. The 
- numerical indexes of <TT>compls</TT> list the found completions. If the
- entry <TT>common_beg</TT> (<TT>common_end</TT>) exists, it gives an extra 
- common prefix (suffix) of all found completions.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00732000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> WEdln functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.back"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.back(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Move backward one character.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.backspace"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.backspace(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Delete previous character.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.bkill_word"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.bkill_word(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Starting from the previous characters, delete possible whitespace and
- preceding alphanumeric characters until previous non-alphanumeric character.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.bol"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.bol(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to the beginning of line.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.bskip_word"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.bskip_word(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to to beginning of current sequence of alphanumeric characters
- followed by whitespace.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.clear_mark"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.clear_mark(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Clear <SPAN  CLASS="textit">mark</SPAN>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.complete"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.complete(WEdln wedln, string cycle, string mode)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Call completion handler with the text between the beginning of line and
- current cursor position, or select next/previous completion from list if in
- auto-show-completions mode and <TT>cycle</TT> is set to `<TT>next</TT>' or 
- `<TT>prev</TT>', respectively. 
- The <TT>mode</TT> may be `<TT>history</TT>' or `<TT>normal</TT>'. If it is 
- not set, the previous mode is used. Normally next entry is not cycled to
- despite the setting of <TT>cycle</TT> if mode switch occurs. To override
- this, use `<TT>next-always</TT>' and `<TT>prev-always</TT>' for <TT>cycle</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.contents"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string WEdln.contents(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get line editor contents.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.context"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>string WEdln.context(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get history context for <TT>wedln</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.copy"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.copy(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Copy text between <SPAN  CLASS="textit">mark</SPAN> and current cursor position to clipboard.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.cut"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.cut(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Copy text between <SPAN  CLASS="textit">mark</SPAN> and current cursor position to clipboard
- and then delete that sequence.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.delete"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.delete(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Delete current character.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.eol"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.eol(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to the end of line.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.finish"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.finish(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Close <TT>wedln</TT> and call any handlers.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.forward"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.forward(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Move forward one character.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.history_next"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.history_next(WEdln wedln, bool match)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Replace line editor contents with next entry in history if one exists.
- If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
- must match the current line from beginning to point.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.history_prev"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.history_prev(WEdln wedln, bool match)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Replace line editor contents with previous in history if one exists.
- If <TT>match</TT> is <TT>true</TT>, the initial part of the history entry
- must match the current line from beginning to point.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.insstr"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.insstr(WEdln wedln, string str)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Input <TT>str</TT> in wedln at current editing point.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.is_histcompl"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WEdln.is_histcompl(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get history completion mode.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.kill_line"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.kill_line(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Delete the whole line.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.kill_to_bol"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.kill_to_bol(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Delete all characters from previous to beginning of line.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.kill_to_eol"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.kill_to_eol(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Delete all characters from current to end of line.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.kill_word"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.kill_word(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Starting from the current point, delete possible whitespace and
- following alphanumeric characters until next non-alphanumeric character.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.mark"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer WEdln.mark(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get current mark (start of selection) for <TT>wedln</TT>.
- Return value of -1 indicates that there is no mark, and
- 0 is the beginning of the line.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.next_completion"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WEdln.next_completion(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Select next completion.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.paste"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.paste(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Request selection from application holding such.
-
-<P>
-Note that this function is asynchronous; the selection will not
- actually be inserted before Ion receives it. This will be no
- earlier than Ion return to its main loop.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.point"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>integer WEdln.point(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get current editing point. 
- Beginning of the edited line is point 0.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.prev_completion"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WEdln.prev_completion(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Select previous completion.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.set_context"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.set_context(WEdln wedln, string context)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set history context for <TT>wedln</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.set_mark"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.set_mark(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set <SPAN  CLASS="textit">mark</SPAN> to current cursor position.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.skip_word"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.skip_word(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Go to to end of current sequence of whitespace followed by alphanumeric
- characters..
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.transpose_chars"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.transpose_chars(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Transpose characters.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WEdln.transpose_words"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WEdln.transpose_words(WEdln wedln)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Transpose words.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00733000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> WInput functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WInput.cancel"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WInput.cancel(WInput input)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Close input not calling any possible finish handlers.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WInput.scrolldown"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WInput.scrolldown(WInput input)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Scroll input <TT>input</TT> text contents down.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WInput.scrollup"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WInput.scrollup(WInput input)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Scroll input <TT>input</TT> text contents up.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00740000000000000000"></A>
-<A NAME="sec:menuref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN> Functions defined in <SPAN  CLASS="textit">mod_menu</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:mod_menu.grabmenu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_menu.grabmenu(mplex, sub, menu_or_name, param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This function is similar to <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>, but input
- is grabbed and the key used to active the menu can be used to
- cycle through menu entries.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_menu.menu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_menu.menu(mplex, sub, menu_or_name, param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Display a menu in the lower-left corner of <TT>mplex</TT>.
- The variable <TT>menu_or_name</TT> is either the name of a menu
- defined with <A HREF="#fn:mod_menu.defmenu"><TT>mod_menu.defmenu</TT></A> or directly a table similar
- to ones passesd to this function. When this function is
- called from a binding handler, <TT>sub</TT> should be set to
- the second argument of to the binding handler (<TT>_sub</TT>)
- so that the menu handler will get the same parameters as the
- binding handler. Extra options can be passed in the table
- <TT>param</TT>. The initial entry can be specified as the field
- <TT>initial</TT> as an integer starting from 1. Menus can be made
- to use a bigger style by setting the field <TT>big</TT> to <TT>true</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_menu.get"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table mod_menu.get()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get module basic settings. For details, see <A HREF="#fn:mod_menu.set"><TT>mod_menu.set</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_menu.set"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void mod_menu.set(table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set module basic settings. The parameter table may contain the
- following fields:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>scroll_amount</TT></TD>
-<TD ALIGN="LEFT">Number of pixels to scroll at a time 
-                        pointer-controlled menus when one extends
-                        beyond a border of the screen and the pointer
-                        touches that border.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>scroll_delay</TT></TD>
-<TD ALIGN="LEFT">Time between such scrolling events in 
-                        milliseconds.</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_menu.pmenu"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_menu.pmenu(win, sub, menu_or_name)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This function displays a drop-down menu and should only
- be called from a mouse press handler. The parameters are
- similar to those of <A HREF="#fn:mod_menu.menu"><TT>mod_menu.menu</TT></A>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00741000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> WMenu functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMenu.cancel"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMenu.cancel(WMenu menu)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Close <TT>menu</TT> not calling any possible finish handlers.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMenu.finish"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMenu.finish(WMenu menu)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>If selected entry is a submenu, display that.
- Otherwise destroy the menu and call handler for selected entry.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMenu.select_next"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMenu.select_next(WMenu menu)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Select next entry in menu.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMenu.select_nth"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMenu.select_nth(WMenu menu, integer n)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Select <TT>n</TT>:th entry in menu.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMenu.select_prev"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMenu.select_prev(WMenu menu)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Select previous entry in menu.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WMenu.typeahead_clear"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WMenu.typeahead_clear(WMenu menu)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Clear typeahead buffer.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00750000000000000000"></A>
-<A NAME="sec:dockref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN> Functions defined in <SPAN  CLASS="textit">mod_dock</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:mod_dock.set_floating_shown_on"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void mod_dock.set_floating_shown_on(WMPlex mplex, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Toggle floating docks on <TT>mplex</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00751000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> WDock functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WDock.attach"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WDock.attach(WDock dock, WRegion reg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Attach <TT>reg</TT> to <TT>dock</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WDock.get"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WDock.get(WDock dock)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get <TT>dock</TT>'s configuration table. See <A HREF="#fn:WDock.set"><TT>WDock.set</TT></A> for a
- description of the table.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WDock.resize"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WDock.resize(WDock dock)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Resizes and refreshes <TT>dock</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WDock.set"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WDock.set(WDock dock, table conftab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Configure <TT>dock</TT>. <TT>conftab</TT> is a table of key/value pairs:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Key</TD>
-<TD ALIGN="LEFT">Values</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>name</TT></TD>
-<TD ALIGN="LEFT">string</TD>
-<TD ALIGN="LEFT">Name of dock</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
-<TD ALIGN="LEFT">string in <!-- MATH
- $\{t,m,b\}\times\{t,c,b\}$
- -->
-<SPAN CLASS="MATH"><IMG
- WIDTH="142" HEIGHT="36" ALIGN="MIDDLE" BORDER="0"
- SRC="img6.png"
- ALT="$\{t,m,b\}\times\{t,c,b\}$"></SPAN></TD>
-<TD ALIGN="LEFT">Dock position. 
-       Can only be used in floating mode.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>grow</TT></TD>
-<TD ALIGN="LEFT">up/down/left/right</TD>
-<TD ALIGN="LEFT">Growth direction where new dockapps are added. Also
-       sets orientation for dock when working as WMPlex status
-       display (see <A HREF="#fn:WMPlex.set_stdisp"><TT>WMPlex.set_stdisp</TT></A>).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>is_auto</TT></TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">Should <TT>dock</TT> automatically manage new dockapps?</TD>
-</TR>
-</TABLE>
-
-<P>
-Any parameters not explicitly set in <TT>conftab</TT> will be left unchanged.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00760000000000000000"></A>
-<A NAME="sec:spref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">6</SPAN> Functions defined in <SPAN  CLASS="textit">mod_sp</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:mod_sp.set_shown"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool mod_sp.set_shown(WFrame sp, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Toggle displayed status of <TT>sp</TT>.
- The parameter <TT>how</TT> is one of 
- `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
- The resulting status is returned.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_sp.set_shown_on"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool mod_sp.set_shown_on(WMPlex mplex, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Change displayed status of some scratchpad on <TT>mplex</TT> if one is 
- found. The parameter <TT>how</TT> is one of 
- `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
- The resulting status is returned.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00770000000000000000"></A>
-<A NAME="sec:statusbarref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN> Functions defined in <SPAN  CLASS="textit">mod_statusbar</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:mod_statusbar.create"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_statusbar.create(param)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Create a statusbar. The possible parameters in the
- table <TT>param</TT> are:
-
-<P>
-<TABLE CELLPADDING=3 WIDTH="100%">
-<TR><TD ALIGN="LEFT">Variable</TD>
-<TD ALIGN="LEFT">Type</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>template</TT></TD>
-<TD ALIGN="LEFT">string</TD>
-<TD ALIGN="LEFT">The template; see
-                             Section <A HREF="node4.html#sec:statusbar">3.6</A>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>pos</TT></TD>
-<TD ALIGN="LEFT">string</TD>
-<TD ALIGN="LEFT">Position: `<TT>tl</TT>', `<TT>tr</TT>', 
-                        `<TT>bl</TT>' or `<TT>br</TT>'
-                        (for the obvious combinations of 
-                        top/left/bottom/right).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>screen</TT></TD>
-<TD ALIGN="LEFT">integer</TD>
-<TD ALIGN="LEFT">Screen number to create the statusbar on.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>fullsize</TT></TD>
-<TD ALIGN="LEFT">boolean</TD>
-<TD ALIGN="LEFT">If set, the statusbar will waste
-                              space instead of adapting to layout.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>systray</TT></TD>
-<TD ALIGN="LEFT">boolaen</TD>
-<TD ALIGN="LEFT">Swallow (KDE protocol) systray icons.</TD>
-</TR>
-</TABLE>
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_statusbar.inform"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_statusbar.inform(name, value)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Inform of a value.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_statusbar.launch_statusd"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_statusbar.launch_statusd(cfg)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Load modules and launch <SPAN  CLASS="textit">ion-statusd</SPAN> with configuration 
- table <TT>cfg</TT>. The options for each <SPAN  CLASS="textit">ion-statusd</SPAN> monitor
- script should be contained in the corresponding sub-table of <TT>cfg</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_statusbar.statusbars"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table mod_statusbar.statusbars()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Returns a list of all statusbars.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:mod_statusbar.update"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>mod_statusbar.update(update_templates)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Update statusbar contents. To be called after series
- of <A HREF="#fn:mod_statusbar.inform"><TT>mod_statusbar.inform</TT></A> calls.
-  
-</DD>
-</DL>
-
-<P>
-
-<H3><A NAME="SECTION00771000000000000000">
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">7</SPAN>.<SPAN CLASS="arabic">1</SPAN> WStatusBar functions</A>
-</H3>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WStatusBar.get_template_table"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table WStatusBar.get_template_table(WStatusBar sb)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Get statusbar template as table.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WStatusBar.is_systray"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WStatusBar.is_systray(WStatusBar sb)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Is <TT>sb</TT> used as a systray?
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WStatusBar.set_systray"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool WStatusBar.set_systray(WStatusBar sb, string how)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Enable or disable use of <TT>sb</TT> as systray.
- The parameter <TT>how</TT> can be one of 
- `<TT>set</TT>', `<TT>unset</TT>', or `<TT>toggle</TT>'.
- Resulting state is returned.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WStatusBar.set_template"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WStatusBar.set_template(WStatusBar sb, string tmpl)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set statusbar template.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WStatusBar.set_template_table"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WStatusBar.set_template_table(WStatusBar sb, table t)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set statusbar template as table.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:WStatusBar.update"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void WStatusBar.update(WStatusBar sb, table t)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Set statusbar template.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00780000000000000000"></A>
-<A NAME="sec:deref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">8</SPAN> Functions defined in <SPAN  CLASS="textit">de</SPAN>
-</H2>
-
-  <DL>
-<DD><A NAME="fn:de.defstyle"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool de.defstyle(string name, table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define a style.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:de.defstyle_rootwin"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>bool de.defstyle_rootwin(WRootWin rootwin, string name, table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define a style for the root window <TT>rootwin</TT>.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:de.reset"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>void de.reset()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Clear all styles from drawing engine memory.
-  
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="fn:de.substyle"></A>  
-</DD>
-<DT><STRONG>Synopsis:</STRONG></DT>
-<DD><TT>table de.substyle(string pattern, table tab)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Define a substyle.
-  
-</DD>
-</DL>
-
-<P>
-
-<H2><A NAME="SECTION00790000000000000000"></A>
-<A NAME="sec:hookref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">9</SPAN> Hooks
-</H2>
-
-<P>
-
-  <DL>
-<DD><A NAME="8270"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="clientwin_do_manage_alt"></A><TT>clientwin_do_manage_alt</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>(WClientWin, table)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when we want to manage a new client window.
-      The table argument contains the following fields:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Type</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>switchto</TT></TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">Do we want to switch to the client window.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>jumpto</TT></TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">Do we want to jump to the client window.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>userpos</TT></TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">Geometry set by user.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>dockapp</TT></TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">Client window is a dock-app.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>maprq</TT></TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">Map request (and not initialisation scan).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>gravity</TT></TD>
-<TD ALIGN="LEFT">number</TD>
-<TD ALIGN="LEFT">Window gravity.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>geom</TT></TD>
-<TD ALIGN="LEFT">table</TD>
-<TD ALIGN="LEFT">Requested geometry; <TT>x</TT>, <TT>y</TT>, <TT>w</TT>, <TT>h</TT>.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>tfor</TT></TD>
-<TD ALIGN="LEFT">WClientWin</TD>
-<TD ALIGN="LEFT">Transient for window.</TD>
-</TR>
-</TABLE>
-
-<P>
-This hook is not called in protected mode and can be used for
-      arbitrary placement policies (deciding in which workspace a new
-      WClientWin should go). In this case, you can call
-<PRE>
-reg:attach(cwin)
-</PRE>
-      where <TT>reg</TT> is the region where the window should go, and
-      <TT>cwin</TT> is the first argument of the function added to the
-      hook.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8271"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="clientwin_mapped_hook"></A><TT>clientwin_mapped_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>WClientWin</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when we have started to manage a client window.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8272"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="clientwin_property_change_hook"></A><TT>clientwin_property_change_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>(WClientWin, integer)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when the property identified by the parameter atom id
-      (integer) has changed on a client window.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8273"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="clientwin_unmapped_hook"></A><TT>clientwin_unmapped_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>number</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when we no longer manage a client window. The parameter
-      is the X ID of the window; see <A HREF="#fn:WClientWin.xid"><TT>WClientWin.xid</TT></A>.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8274"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="frame_managed_changed_hook"></A><TT>frame_managed_changed_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>table</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when there are changes in the objects managed by a frame
-      or their order. The table parameter has the following fields:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Type</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
-<TD ALIGN="LEFT">WFrame</TD>
-<TD ALIGN="LEFT">The frame in question</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>mode</TT></TD>
-<TD ALIGN="LEFT">string</TD>
-<TD ALIGN="LEFT">`<TT>switchonly</TT>', `<TT>reorder</TT>',
-                                `<TT>add</TT>' or `<TT>remove</TT>'</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>sw</TT></TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">Switch occurred</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>sub</TT></TD>
-<TD ALIGN="LEFT">WRegion</TD>
-<TD ALIGN="LEFT">The managed region (primarily) affected</TD>
-</TR>
-</TABLE>
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8275"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="ioncore_sigchld_hook"></A><TT>ioncore_sigchld_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>integer</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when a child process has exited. The parameter
-      is the PID of the process.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8276"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="ioncore_deinit_hook"></A><TT>ioncore_deinit_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when Ion is deinitialising and about to quit.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8277"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="ioncore_post_layout_setup_hook"></A><TT>ioncore_post_layout_setup_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when Ion has done all initialisation and is almost ready to
-      enter the main-loop, except no windows are yet being managed.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8278"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="ioncore_snapshot_hook"></A><TT>ioncore_snapshot_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called to signal scripts and modules to save their state (if any).
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8279"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="ioncore_submap_ungrab_hook"></A><TT>ioncore_submap_ungrab_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>()</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This hook is used to signal whenever Ion leaves the submap grab mode.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8280"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="tiling_placement_alt"></A><TT>tiling_placement_alt</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>table</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when a client window is about to be managed by a WTiling
-      to allow for alternative placement policies. The table has the
-      following fields:
-      <TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Field</TD>
-<TD ALIGN="LEFT">Type</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>tiling</TT></TD>
-<TD ALIGN="LEFT">WTiling</TD>
-<TD ALIGN="LEFT">The tiling</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>reg</TT></TD>
-<TD ALIGN="LEFT">WRegion</TD>
-<TD ALIGN="LEFT">The region (always a WClientWin at 
-              the moment) to be placed</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>mp</TT></TD>
-<TD ALIGN="LEFT">table</TD>
-<TD ALIGN="LEFT">This table contains the same fields as
-            the parameter of <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A></TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>res_frame</TT></TD>
-<TD ALIGN="LEFT">WFrame</TD>
-<TD ALIGN="LEFT">A successful handler should 
-            return the target frame here.</TD>
-</TR>
-</TABLE>
-      This hook is just for placing within a given workspace after the
-      workspace has been decided by the default workspace selection
-      policy. It is called in protected mode. For arbitrary placement
-      policies, <A HREF="#fn:clientwin_do_manage_alt"><TT>clientwin_do_manage_alt</TT></A> should be used; it
-      isn't called in protected mode,
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8281"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="region_do_warp_alt"></A><TT>region_do_warp_alt</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>WRegion</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>This alt-hook exist to allow for alternative pointer warping
-      implementations.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8282"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="screen_managed_changed_hook"></A><TT>screen_managed_changed_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>table</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Called when there are changes in the objects managed by a screen
-      or their order. The table parameter is similar to that of
-      <A HREF="#fn:frame_managed_changed_hook"><TT>frame_managed_changed_hook</TT></A>.
-      
-</DD>
-</DL>
-
-<P>
-
-  <DL>
-<DD><A NAME="8283"></A>
-
-</DD>
-<DT><STRONG>Hook name:</STRONG></DT>
-<DD><A NAME="region_notify_hook"></A><TT>region_notify_hook</TT>
-
-</DD>
-<DT><STRONG>Parameters:</STRONG></DT>
-<DD><TT>(WRegion, string)</TT>
-
-</DD>
-<DT><STRONG>Description:</STRONG></DT>
-<DD>Signalled when something (minor) has changed in relation to 
-      the first parameter region. The string argument gives the
-      change:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">String</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>deinit</TT></TD>
-<TD ALIGN="LEFT">The region is about to be deinitialised.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>activated</TT></TD>
-<TD ALIGN="LEFT">The region has received focus.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>inactivated</TT></TD>
-<TD ALIGN="LEFT">The region has lost focus.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>activity</TT></TD>
-<TD ALIGN="LEFT">There's been activity in the region itself.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>sub_activity</TT></TD>
-<TD ALIGN="LEFT">There's been activity in some sub-region.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>name</TT></TD>
-<TD ALIGN="LEFT">The name of the region has changed.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>unset_manager</TT></TD>
-<TD ALIGN="LEFT">The region no longer has a manager.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>set_manager</TT></TD>
-<TD ALIGN="LEFT">The region now has a manager.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>tag</TT></TD>
-<TD ALIGN="LEFT">Tagging state has changed.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>pseudoactivated</TT></TD>
-<TD ALIGN="LEFT">The region has become pseudo-active
-                      (see below).</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>pseudoinactivated</TT></TD>
-<TD ALIGN="LEFT">The region is no longer pseudo-active.</TD>
-</TR>
-</TABLE>
-
-<P>
-A region is pseudo-active, when a) it is itself not active (does
-      not not have the focus, and may not even have a window that could
-      have it), but b) some region managed by it is active.
-      
-</DD>
-</DL>
-
-<P>
-
-<P>
-
-<H2><A NAME="SECTION007100000000000000000"></A>
-<A NAME="sec:miscref"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN> Miscellaneous
-</H2>
-
-<P>
-
-<H3><A NAME="SECTION007101000000000000000"></A>
-<A NAME="sec:sizepolicies"></A>
-<BR>
-<SPAN CLASS="arabic">6</SPAN>.<SPAN CLASS="arabic">10</SPAN>.<SPAN CLASS="arabic">1</SPAN> Size policies
-</H3>
-
-<P>
-Some functions accept a <TT>sizepolicy</TT> parameter. The possible
-values are: 
-
-<P>
-<DIV ALIGN="LEFT">
-`<TT>default</TT>',
-`<TT>full</TT>',
-`<TT>full_bounds</TT>',
-`<TT>free</TT>',
-`<TT>free_glue</TT>',
-`<TT>northwest</TT>',
-`<TT>north</TT>',
-`<TT>northeast</TT>',
-`<TT>west</TT>',
-`<TT>center</TT>',
-`<TT>east</TT>',
-`<TT>southwest</TT>',
-`<TT>south</TT>',
-`<TT>southeast</TT>',
-`<TT>stretch_top</TT>',
-`<TT>stretch_bottom</TT>',
-`<TT>stretch_left</TT>',
-`<TT>stretch_right</TT>',
-`<TT>free_glue_northwest</TT>',
-`<TT>free_glue_north</TT>',
-`<TT>free_glue_northeast</TT>',
-`<TT>free_glue_west</TT>',
-`<TT>free_glue_center</TT>',
-`<TT>free_glue_east</TT>',
-`<TT>free_glue_southwest</TT>',
-`<TT>free_glue_south</TT>', and
-`<TT>free_glue_southeast</TT>'.
-
-</DIV>
-
-<P>
-The ``free'' policies allow the managed
-object to be moved around, whereas the other versions do not. 
-The ``glue'' policies glue the object to some border, while allowing
-it to be moved away from it by user action, but not automatically.
-The ``stretch'' policies stretch the object along the given border,
-while the coordinate-based policies simply place the object along 
-that border.
-
-<P>
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html383"
-  HREF="node8.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html377"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html371"
-  HREF="node6.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html379"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html381"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html384"
-  HREF="node8.html">A. The GNU General</A>
-<B> Up:</B> <A NAME="tex2html378"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html372"
-  HREF="node6.html">5. Scripting</A>
- &nbsp; <B>  <A NAME="tex2html380"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html382"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node8.html b/doc/ionconf/node8.html
deleted file mode 100644 (file)
index 33cb380..0000000
+++ /dev/null
@@ -1,597 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>A. The GNU General Public License</TITLE>
-<META NAME="description" CONTENT="A. The GNU General Public License">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node9.html">
-<LINK REL="previous" HREF="node7.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node9.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html437"
-  HREF="node9.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html431"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html425"
-  HREF="node7.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html433"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html435"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html438"
-  HREF="node9.html">B. Full class hierarchy</A>
-<B> Up:</B> <A NAME="tex2html432"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html426"
-  HREF="node7.html">6. Function reference</A>
- &nbsp; <B>  <A NAME="tex2html434"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html436"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html439"
-  HREF="node8.html#SECTION00810000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
-</UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00800000000000000000">
-A. The GNU General Public License</A>
-</H1>
-
-<P>
-<DIV ALIGN="CENTER">
-</DIV>
-<P>
-<DIV ALIGN="CENTER">Version 2, June 1991
-</DIV>
-<P>
-<DIV ALIGN="CENTER">Copyright &#169; 1989, 1991 Free Software Foundation, Inc.
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-
-</DIV>
-
-<P>
-<DIV ALIGN="CENTER">
-<B><BIG CLASS="LARGE">Preamble</BIG></B>
-
-</DIV>
-
-<P>
-The licenses for most software are designed to take away your freedom to
-share and change it.  By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software--to
-make sure the software is free for all its users.  This General Public
-License applies to most of the Free Software Foundation's software and to
-any other program whose authors commit to using it.  (Some other Free
-Software Foundation software is covered by the GNU Library General Public
-License instead.)  You can apply it to your programs, too.
-
-<P>
-When we speak of free software, we are referring to freedom, not price.
-Our General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service
-if you wish), that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free programs;
-and that you know you can do these things.
-
-<P>
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights.  These
-restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-<P>
-For example, if you distribute copies of such a program, whether gratis or
-for a fee, you must give the recipients all the rights that you have.  You
-must make sure that they, too, receive or can get the source code.  And
-you must show them these terms so they know their rights.
-
-<P>
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-<P>
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software.  If
-the software is modified by someone else and passed on, we want its
-recipients to know that what they have is not the original, so that any
-problems introduced by others will not reflect on the original authors'
-reputations.
-
-<P>
-Finally, any free program is threatened constantly by software patents.
-We wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program
-proprietary.  To prevent this, we have made it clear that any patent must
-be licensed for everyone's free use or not licensed at all.
-
-<P>
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">T<SMALL>ERMS AND </SMALL>C<SMALL>ONDITIONS </SMALL>F<SMALL>OR </SMALL>C<SMALL>OPYING, </SMALL>D<SMALL>ISTRIBUTION AND
-  </SMALL>M<SMALL>ODIFICATION</SMALL></BIG>
-
-</DIV>
-
-<P>
-
-<OL>
-<LI><P>
-This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the
-terms of this General Public License.  The ``Program'', below, refers to
-any such program or work, and a ``work based on the Program'' means either
-the Program or any derivative work under copyright law: that is to say, a
-work containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language.  (Hereinafter,
-translation is included without limitation in the term ``modification''.)
-Each licensee is addressed as ``you''.
-
-<P>
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-<P>
-</LI>
-<LI>You may copy and distribute verbatim copies of the Program's source
-  code as you receive it, in any medium, provided that you conspicuously
-  and appropriately publish on each copy an appropriate copyright notice
-  and disclaimer of warranty; keep intact all the notices that refer to
-  this License and to the absence of any warranty; and give any other
-  recipients of the Program a copy of this License along with the Program.
-
-<P>
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-<P>
-</LI>
-<LI><P>
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-<P>
-
-<OL>
-<LI><P>
-You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-<P>
-</LI>
-<LI><P>
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-<P>
-</LI>
-<LI>If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License.  (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-
-<P>
-</LI>
-</OL>
-
-<P>
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-<P>
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-<P>
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-<P>
-</LI>
-<LI>You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-<P>
-
-<OL>
-<LI><P>
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-<P>
-</LI>
-<LI><P>
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-<P>
-</LI>
-<LI><P>
-Accompany it with the information you received as to the offer
-to distribute corresponding source code.  (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-
-<P>
-</LI>
-</OL>
-
-<P>
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-<P>
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-<P>
-</LI>
-<LI>You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-<P>
-</LI>
-<LI>You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-<P>
-</LI>
-<LI>Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-<P>
-</LI>
-<LI>If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-<P>
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-<P>
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-<P>
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-<P>
-</LI>
-<LI>If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-<P>
-</LI>
-<LI>The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-<P>
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-<P>
-</LI>
-<LI>If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">
-N<SMALL>O </SMALL>W<SMALL>ARRANTY
-</SMALL></BIG>
-
-</DIV>
-
-<P>
-</LI>
-<LI>B<SMALL>ECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  </SMALL>E<SMALL>XCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  </SMALL>T<SMALL>HE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  </SMALL>S<SMALL>HOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.</SMALL>
-
-<P>
-</LI>
-<LI>I<SMALL>N NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.</SMALL>
-
-<P>
-</LI>
-</OL>
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">E<SMALL>ND OF </SMALL>T<SMALL>ERMS AND </SMALL>C<SMALL>ONDITIONS</SMALL></BIG>
-
-</DIV>
-
-<P>
-
-<P>
-
-<H2><A NAME="SECTION00810000000000000000">
-Appendix: How to Apply These Terms to Your New Programs</A>
-</H2>
-
-<P>
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
-<P>
-To do so, attach the following notices to the program.  It is safest to
-  attach them to the start of each source file to most effectively convey
-  the exclusion of warranty; and each file should have at least the
-  ``copyright'' line and a pointer to where the full notice is found.
-
-<P>
-<BLOCKQUOTE>
-one line to give the program's name and a brief idea of what it does. 
-<BR>
-Copyright (C) yyyy  name of author 
-<BR></BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-</BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-</BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-</BLOCKQUOTE>
-
-<P>
-Also add information on how to contact you by electronic and paper mail.
-
-<P>
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-<P>
-<BLOCKQUOTE>
-Gnomovision version 69, Copyright (C) yyyy  name of author 
-<BR>
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 
-<BR>
-This is free software, and you are welcome to redistribute it
-under certain conditions; type `show c' for details.
-
-</BLOCKQUOTE>
-
-<P>
-The hypothetical commands <TT>show w</TT> and <TT>show c</TT> should show the
-appropriate parts of the General Public License.  Of course, the commands
-you use may be called something other than <TT>show w</TT> and <TT>show c</TT>;
-they could even be mouse-clicks or menu items--whatever suits your
-program.
-
-<P>
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary.  Here is a sample; alter the names:
-
-<P>
-<BLOCKQUOTE>
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program 
-<BR>`Gnomovision' (which makes passes at compilers) written by James Hacker. 
-<BR></BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>signature of Ty Coon, 1 April 1989 
-<BR>
-Ty Coon, President of Vice
-
-</BLOCKQUOTE>
-
-<P>
-This General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications
-with the library.  If this is what you want to do, use the GNU Library
-General Public License instead of this License.
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html437"
-  HREF="node9.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html431"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html425"
-  HREF="node7.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html433"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html435"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html438"
-  HREF="node9.html">B. Full class hierarchy</A>
-<B> Up:</B> <A NAME="tex2html432"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html426"
-  HREF="node7.html">6. Function reference</A>
- &nbsp; <B>  <A NAME="tex2html434"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html436"
-  HREF="node11.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/node9.html b/doc/ionconf/node9.html
deleted file mode 100644 (file)
index 0b16372..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>B. Full class hierarchy visible to Lua-side</TITLE>
-<META NAME="description" CONTENT="B. Full class hierarchy visible to Lua-side">
-<META NAME="keywords" CONTENT="ionconf">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionconf.css">
-
-<LINK REL="next" HREF="node10.html">
-<LINK REL="previous" HREF="node8.html">
-<LINK REL="up" HREF="ionconf.html">
-<LINK REL="next" HREF="node10.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html452"
-  HREF="node10.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html446"
-  HREF="ionconf.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html440"
-  HREF="node8.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html448"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html450"
-  HREF="node11.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html453"
-  HREF="node10.html">List of functions</A>
-<B> Up:</B> <A NAME="tex2html447"
-  HREF="ionconf.html">Configuring and extending Ion3</A>
-<B> Previous:</B> <A NAME="tex2html441"
-  HREF="node8.html">A. The GNU General</A>
- &nbsp; <B>  <A NAME="tex2html449"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html451"
-  HREF="node11.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<H1><A NAME="SECTION00900000000000000000"></A>
-<A NAME="app:fullhierarchy"></A>
-<BR>
-B. Full class hierarchy visible to Lua-side
-</H1>
-
-<P>
-<PRE>
-    Obj
-     |--&gt;WHook
-     |--&gt;WTimer
-     |--&gt;WMoveresMode
-     |--&gt;WRegion
-     |    |--&gt;WClientWin
-     |    |--&gt;WWindow
-     |    |    |--&gt;WMPlex
-     |    |    |    |--&gt;WFrame
-     |    |    |    |--&gt;WScreen
-     |    |    |         |-&gt;WRootWin
-     |    |    |--&gt;WInfoWin
-     |    |    |    |--&gt;WStatusBar (mod_statusbar)
-     |    |    |--&gt;WMenu (mod_menu)
-     |    |    |--&gt;WInput (mod_query)
-     |    |         |--&gt;WEdln (mod_query)
-     |    |         |--&gt;WMessage (mod_query)
-     |    |--&gt;WGroup
-     |    |    |--&gt;WGroupWS
-     |    |    |--&gt;WGroupCW
-     |    |--&gt;WTiling (mod_tiling)
-     |--&gt;WSplit (mod_tiling)
-          |--&gt;WSplitInner (mod_tiling)
-          |    |--&gt;WSplitSplit (mod_tiling)
-          |         |--&gt;WSplitFloat (mod_tiling)
-          |--&gt;WSplitRegion (mod_tiling)
-               |--&gt;WSplitST (mod_tiling)
-</PRE>
-
-<P>
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionconf/prev.png b/doc/ionconf/prev.png
deleted file mode 100644 (file)
index e60b8b4..0000000
Binary files a/doc/ionconf/prev.png and /dev/null differ
diff --git a/doc/ionconf/prev_g.png b/doc/ionconf/prev_g.png
deleted file mode 100644 (file)
index 476d956..0000000
Binary files a/doc/ionconf/prev_g.png and /dev/null differ
diff --git a/doc/ionconf/up.png b/doc/ionconf/up.png
deleted file mode 100644 (file)
index 3937e16..0000000
Binary files a/doc/ionconf/up.png and /dev/null differ
diff --git a/doc/ionnotes.dvi.gz b/doc/ionnotes.dvi.gz
deleted file mode 100644 (file)
index d23f951..0000000
Binary files a/doc/ionnotes.dvi.gz and /dev/null differ
diff --git a/doc/ionnotes.out b/doc/ionnotes.out
deleted file mode 100644 (file)
index f29e5e3..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-\BOOKMARK [1][-]{section.1}{ Class and object hierarchies}{}
-\BOOKMARK [2][-]{subsection.1.1}{ Class hierarchy}{section.1}
-\BOOKMARK [2][-]{subsection.1.2}{ Object hierarchies: WRegion parents and managers}{section.1}
-\BOOKMARK [3][-]{subsubsection.1.2.1}{ Parent--child relations}{subsection.1.2}
-\BOOKMARK [3][-]{subsubsection.1.2.2}{ Manager--managed relations}{subsection.1.2}
-\BOOKMARK [2][-]{subsection.1.3}{ Summary}{section.1}
-\BOOKMARK [1][-]{section.2}{ Object system implementation}{}
-\BOOKMARK [1][-]{section.3}{ The Lua interface}{}
-\BOOKMARK [2][-]{subsection.3.1}{ Supported types}{section.3}
-\BOOKMARK [2][-]{subsection.3.2}{ Exporting functions}{section.3}
-\BOOKMARK [2][-]{subsection.3.3}{ Calling Lua functions and code}{section.3}
-\BOOKMARK [2][-]{subsection.3.4}{ Miscellaneous notes}{section.3}
-\BOOKMARK [1][-]{section.4}{ Miscellaneous design notes}{}
-\BOOKMARK [2][-]{subsection.4.1}{ Destroying WObj:s}{section.4}
-\BOOKMARK [2][-]{lstlisting.-36}{ The types !char*! and !const char*! as function parameters and return values}{section.4}
-\BOOKMARK [1][-]{section.5}{ C coding style}{}
-\BOOKMARK [2][-]{subsection.5.1}{ Whitespace}{section.5}
-\BOOKMARK [2][-]{subsection.5.2}{ Braces}{section.5}
-\BOOKMARK [2][-]{subsection.5.3}{ Names}{section.5}
-\BOOKMARK [2][-]{subsection.5.4}{ Miscellaneous}{section.5}
-\BOOKMARK [1][-]{section.A}{ The GNU General Public License}{}
-\BOOKMARK [1][-]{section*.4}{Index}{}
diff --git a/doc/ionnotes.ps.gz b/doc/ionnotes.ps.gz
deleted file mode 100644 (file)
index 2fb8ef8..0000000
Binary files a/doc/ionnotes.ps.gz and /dev/null differ
diff --git a/doc/ionnotes.tex b/doc/ionnotes.tex
deleted file mode 100644 (file)
index c8f779d..0000000
+++ /dev/null
@@ -1,60 +0,0 @@
-\documentclass[english,a4paper,11pt,oldtoc,mctitle]{artikel3}
-\input{macros}
-
-% For including some files from reports
-\newcommand{\xchapter}[1]{\section{#1}}
-\newcommand{\xsection}[1]{\subsection{#1}}
-\newcommand{\xsectionstar}[1]{\subsection*{#1}}
-\newcommand{\xsubsection}[1]{\subsubsection{#1}}
-
-
-\title{Ion: Notes for the module and patch writer}
-\author{Tuomo Valkonen \\ tuomov at iki.fi}
-%%DATE
-
-\makeindex
-
-
-\begin{document}
-
-\maketitle
-
-Ion: Notes for the module and patch writer\\
-Copyright \copyright\  2003--2004 Tuomo Valkonen.
-
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-section entitled ``GNU General Public License'' for more details.
-
-\bigskip
-
-\begin{abstract}
-    This document is an unorganized collection of notes for
-    those who want to write modules or patches to Ion.
-\end{abstract}
-
-\tableofcontents
-
-\input{objects}
-
-\input{objectsimpl}
-
-\input{luaif}
-
-\input{designnotes}
-
-\input{cstyle}
-
-\appendix
-
-\input{gpl}
-
-\printindex
-
-\end{document}
diff --git a/doc/ionnotes/WARNINGS b/doc/ionnotes/WARNINGS
deleted file mode 100644 (file)
index 726c0ef..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-No implementation found for style `hyperref'
-No implementation found for style `ae'
-No implementation found for style `url'
-No implementation found for style `tocbibind'
-No implementation found for style `geometry'
-No implementation found for style `calc'
-
-Substitution of arg to newlabelxx delayed.
diff --git a/doc/ionnotes/contents.png b/doc/ionnotes/contents.png
deleted file mode 100644 (file)
index 0c752c6..0000000
Binary files a/doc/ionnotes/contents.png and /dev/null differ
diff --git a/doc/ionnotes/crossref.png b/doc/ionnotes/crossref.png
deleted file mode 100644 (file)
index 7dd2ddd..0000000
Binary files a/doc/ionnotes/crossref.png and /dev/null differ
diff --git a/doc/ionnotes/index.html b/doc/ionnotes/index.html
deleted file mode 100644 (file)
index 9ebfb0d..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Ion: Notes for the module and patch writer</TITLE>
-<META NAME="description" CONTENT="Ion: Notes for the module and patch writer">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node1.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html11"
-  HREF="node1.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html5"
-  HREF="http://iki.fi/tuomov/ion/">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
-<A NAME="tex2html7"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html9"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html12"
-  HREF="node1.html">Contents</A>
-<B> Up:</B> <A NAME="tex2html6"
-  HREF="http://iki.fi/tuomov/ion/">Ion homepage</A>
- &nbsp; <B>  <A NAME="tex2html8"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html10"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<P>
-<H1 ALIGN="CENTER">Ion: Notes for the module and patch writer</H1>
-<DIV CLASS="author_info">
-
-<P ALIGN="CENTER"><STRONG>Tuomo Valkonen</STRONG></P>
-<P ALIGN="CENTER"><I>tuomov at iki.fi</I></P>
-</DIV>
-
-<P>
-Ion: Notes for the module and patch writer
-<BR>
-Copyright &#169;  2003-2004 Tuomo Valkonen.
-
-<P>
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-<P>
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-section entitled ``GNU General Public License'' for more details.
-
-<P>
-
-<P><P>
-<BR>
-
-<P>
-
-<H3>Abstract:</H3>
-<DIV CLASS="ABSTRACT">
-    This document is an unorganized collection of notes for
-    those who want to write modules or patches to Ion.
-</DIV>
-<P>
-
-<P>
-<BR><HR>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html13"
-  HREF="node1.html">Contents</A>
-<LI><A NAME="tex2html14"
-  HREF="node2.html"><SPAN CLASS="arabic">1</SPAN> Class and object hierarchies</A>
-<UL>
-<LI><A NAME="tex2html15"
-  HREF="node2.html#SECTION00021000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html16"
-  HREF="node2.html#SECTION00022000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-<UL>
-<LI><A NAME="tex2html17"
-  HREF="node2.html#SECTION00022100000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html18"
-  HREF="node2.html#SECTION00022200000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</UL>
-<LI><A NAME="tex2html19"
-  HREF="node2.html#SECTION00023000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html20"
-  HREF="node3.html"><SPAN CLASS="arabic">2</SPAN> Object system implementation</A>
-<LI><A NAME="tex2html21"
-  HREF="node4.html"><SPAN CLASS="arabic">3</SPAN> The Lua interface</A>
-<UL>
-<LI><A NAME="tex2html22"
-  HREF="node4.html#SECTION00041000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Supported types</A>
-<LI><A NAME="tex2html23"
-  HREF="node4.html#SECTION00042000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Exporting functions</A>
-<LI><A NAME="tex2html24"
-  HREF="node4.html#SECTION00043000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Calling Lua functions and code</A>
-<LI><A NAME="tex2html25"
-  HREF="node4.html#SECTION00044000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous notes</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html26"
-  HREF="node5.html"><SPAN CLASS="arabic">4</SPAN> Miscellaneous design notes</A>
-<UL>
-<LI><A NAME="tex2html27"
-  HREF="node5.html#SECTION00051000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Destroying WObj:s</A>
-<LI><A NAME="tex2html28"
-  HREF="node5.html#SECTION00052000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> The types <TT>char*</TT> and <TT>const char*</TT> as function
-  parameters and return values</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html29"
-  HREF="node6.html"><SPAN CLASS="arabic">5</SPAN> C coding style</A>
-<UL>
-<LI><A NAME="tex2html30"
-  HREF="node6.html#SECTION00061000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Whitespace</A>
-<LI><A NAME="tex2html31"
-  HREF="node6.html#SECTION00062000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Braces</A>
-<LI><A NAME="tex2html32"
-  HREF="node6.html#SECTION00063000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Names</A>
-<LI><A NAME="tex2html33"
-  HREF="node6.html#SECTION00064000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html34"
-  HREF="node7.html">A. The GNU General Public License</A>
-<UL>
-<LI><A NAME="tex2html35"
-  HREF="node7.html#SECTION00071000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html36"
-  HREF="node8.html">Index</A>
-<LI><A NAME="tex2html37"
-  HREF="node9.html">About this document ...</A>
-</UL>
-<!--End of Table of Child-Links-->
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/index.png b/doc/ionnotes/index.png
deleted file mode 100644 (file)
index 698f09c..0000000
Binary files a/doc/ionnotes/index.png and /dev/null differ
diff --git a/doc/ionnotes/internals.pl b/doc/ionnotes/internals.pl
deleted file mode 100644 (file)
index 89e33bb..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# LaTeX2HTML 2002-2-1 (1.71)
-# Associate internals original text with physical files.
-
-
-$key = q/sec:objects/;
-$ref_files{$key} = "$dir".q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:parentship/;
-$ref_files{$key} = "$dir".q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:supptypes/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:calling/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:managership/;
-$ref_files{$key} = "$dir".q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:exporting/;
-$ref_files{$key} = "$dir".q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:classhierarchy/;
-$ref_files{$key} = "$dir".q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-1;
-
diff --git a/doc/ionnotes/ionnotes.css b/doc/ionnotes/ionnotes.css
deleted file mode 100644 (file)
index f0cd026..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/* Century Schoolbook font is very similar to Computer Modern Math: cmmi */
-.MATH    { font-family: "Century Schoolbook", serif; }
-.MATH I  { font-family: "Century Schoolbook", serif; font-style: italic }
-.BOLDMATH { font-family: "Century Schoolbook", serif; font-weight: bold }
-
-/* implement both fixed-size and relative sizes */
-SMALL.XTINY            { font-size : xx-small }
-SMALL.TINY             { font-size : x-small  }
-SMALL.SCRIPTSIZE       { font-size : smaller  }
-SMALL.FOOTNOTESIZE     { font-size : small    }
-SMALL.SMALL            {  }
-BIG.LARGE              {  }
-BIG.XLARGE             { font-size : large    }
-BIG.XXLARGE            { font-size : x-large  }
-BIG.HUGE               { font-size : larger   }
-BIG.XHUGE              { font-size : xx-large }
-
-/* heading styles */
-H1             {  }
-H2             {  }
-H3             {  }
-H4             {  }
-H5             {  }
-
-/* mathematics styles */
-DIV.displaymath                { }     /* math displays */
-TD.eqno                        { }     /* equation-number cells */
-
-
-/* document-specific styles come next */
-DIV.navigation         {   }
-DIV.center             {   }
-SPAN.sc                {   }
-DIV.quote              {   }
-PRE.preform            {   }
-SPAN.textit            { font-style: italic  }
-SPAN.arabic            {   }
-SPAN.textbf            { font-weight: bold  }
diff --git a/doc/ionnotes/ionnotes.html b/doc/ionnotes/ionnotes.html
deleted file mode 100644 (file)
index 9ebfb0d..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Ion: Notes for the module and patch writer</TITLE>
-<META NAME="description" CONTENT="Ion: Notes for the module and patch writer">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node1.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html11"
-  HREF="node1.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html5"
-  HREF="http://iki.fi/tuomov/ion/">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev_g.png"> 
-<A NAME="tex2html7"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html9"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html12"
-  HREF="node1.html">Contents</A>
-<B> Up:</B> <A NAME="tex2html6"
-  HREF="http://iki.fi/tuomov/ion/">Ion homepage</A>
- &nbsp; <B>  <A NAME="tex2html8"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html10"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<P>
-<H1 ALIGN="CENTER">Ion: Notes for the module and patch writer</H1>
-<DIV CLASS="author_info">
-
-<P ALIGN="CENTER"><STRONG>Tuomo Valkonen</STRONG></P>
-<P ALIGN="CENTER"><I>tuomov at iki.fi</I></P>
-</DIV>
-
-<P>
-Ion: Notes for the module and patch writer
-<BR>
-Copyright &#169;  2003-2004 Tuomo Valkonen.
-
-<P>
-This document is free; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-
-<P>
-This document is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-section entitled ``GNU General Public License'' for more details.
-
-<P>
-
-<P><P>
-<BR>
-
-<P>
-
-<H3>Abstract:</H3>
-<DIV CLASS="ABSTRACT">
-    This document is an unorganized collection of notes for
-    those who want to write modules or patches to Ion.
-</DIV>
-<P>
-
-<P>
-<BR><HR>
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html13"
-  HREF="node1.html">Contents</A>
-<LI><A NAME="tex2html14"
-  HREF="node2.html"><SPAN CLASS="arabic">1</SPAN> Class and object hierarchies</A>
-<UL>
-<LI><A NAME="tex2html15"
-  HREF="node2.html#SECTION00021000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html16"
-  HREF="node2.html#SECTION00022000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-<UL>
-<LI><A NAME="tex2html17"
-  HREF="node2.html#SECTION00022100000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html18"
-  HREF="node2.html#SECTION00022200000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</UL>
-<LI><A NAME="tex2html19"
-  HREF="node2.html#SECTION00023000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html20"
-  HREF="node3.html"><SPAN CLASS="arabic">2</SPAN> Object system implementation</A>
-<LI><A NAME="tex2html21"
-  HREF="node4.html"><SPAN CLASS="arabic">3</SPAN> The Lua interface</A>
-<UL>
-<LI><A NAME="tex2html22"
-  HREF="node4.html#SECTION00041000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Supported types</A>
-<LI><A NAME="tex2html23"
-  HREF="node4.html#SECTION00042000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Exporting functions</A>
-<LI><A NAME="tex2html24"
-  HREF="node4.html#SECTION00043000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Calling Lua functions and code</A>
-<LI><A NAME="tex2html25"
-  HREF="node4.html#SECTION00044000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous notes</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html26"
-  HREF="node5.html"><SPAN CLASS="arabic">4</SPAN> Miscellaneous design notes</A>
-<UL>
-<LI><A NAME="tex2html27"
-  HREF="node5.html#SECTION00051000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Destroying WObj:s</A>
-<LI><A NAME="tex2html28"
-  HREF="node5.html#SECTION00052000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> The types <TT>char*</TT> and <TT>const char*</TT> as function
-  parameters and return values</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html29"
-  HREF="node6.html"><SPAN CLASS="arabic">5</SPAN> C coding style</A>
-<UL>
-<LI><A NAME="tex2html30"
-  HREF="node6.html#SECTION00061000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Whitespace</A>
-<LI><A NAME="tex2html31"
-  HREF="node6.html#SECTION00062000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Braces</A>
-<LI><A NAME="tex2html32"
-  HREF="node6.html#SECTION00063000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Names</A>
-<LI><A NAME="tex2html33"
-  HREF="node6.html#SECTION00064000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html34"
-  HREF="node7.html">A. The GNU General Public License</A>
-<UL>
-<LI><A NAME="tex2html35"
-  HREF="node7.html#SECTION00071000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html36"
-  HREF="node8.html">Index</A>
-<LI><A NAME="tex2html37"
-  HREF="node9.html">About this document ...</A>
-</UL>
-<!--End of Table of Child-Links-->
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/labels.pl b/doc/ionnotes/labels.pl
deleted file mode 100644 (file)
index 2c1867a..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-# LaTeX2HTML 2002-2-1 (1.71)
-# Associate labels original text with physical files.
-
-
-$key = q/sec:objects/;
-$external_labels{$key} = "$URL/" . q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:parentship/;
-$external_labels{$key} = "$URL/" . q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:supptypes/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:calling/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:managership/;
-$external_labels{$key} = "$URL/" . q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:exporting/;
-$external_labels{$key} = "$URL/" . q|node4.html|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:classhierarchy/;
-$external_labels{$key} = "$URL/" . q|node2.html|; 
-$noresave{$key} = "$nosave";
-
-1;
-
-
-# LaTeX2HTML 2002-2-1 (1.71)
-# labels from external_latex_labels array.
-
-
-$key = q/sec:objects/;
-$external_latex_labels{$key} = q|1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:parentship/;
-$external_latex_labels{$key} = q|2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:supptypes/;
-$external_latex_labels{$key} = q|3.1|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:calling/;
-$external_latex_labels{$key} = q|3.3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:managership/;
-$external_latex_labels{$key} = q|3|; 
-$noresave{$key} = "$nosave";
-
-$key = q/sec:exporting/;
-$external_latex_labels{$key} = q|3.2|; 
-$noresave{$key} = "$nosave";
-
-$key = q/fig:classhierarchy/;
-$external_latex_labels{$key} = q|1|; 
-$noresave{$key} = "$nosave";
-
-1;
-
diff --git a/doc/ionnotes/next.png b/doc/ionnotes/next.png
deleted file mode 100644 (file)
index 1628652..0000000
Binary files a/doc/ionnotes/next.png and /dev/null differ
diff --git a/doc/ionnotes/next_g.png b/doc/ionnotes/next_g.png
deleted file mode 100644 (file)
index 9d3f591..0000000
Binary files a/doc/ionnotes/next_g.png and /dev/null differ
diff --git a/doc/ionnotes/node1.html b/doc/ionnotes/node1.html
deleted file mode 100644 (file)
index b174939..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Contents</TITLE>
-<META NAME="description" CONTENT="Contents">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node2.html">
-<LINK REL="previous" HREF="ionnotes.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node2.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html48"
-  HREF="node2.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html44"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html38"
-  HREF="ionnotes.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A>  
-<A NAME="tex2html46"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html49"
-  HREF="node2.html">1 Class and object</A>
-<B> Up:</B> <A NAME="tex2html45"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html39"
-  HREF="ionnotes.html">Ion: Notes for the</A>
- &nbsp; <B>  <A NAME="tex2html47"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<BR>
-
-<H2><A NAME="SECTION00010000000000000000">
-Contents</A>
-</H2>
-<!--Table of Contents-->
-
-<UL CLASS="TofC">
-<LI><A NAME="tex2html50"
-  HREF="node2.html">1 Class and object hierarchies</A>
-<UL>
-<LI><A NAME="tex2html51"
-  HREF="node2.html#SECTION00021000000000000000">1.1 Class hierarchy</A>
-<LI><A NAME="tex2html52"
-  HREF="node2.html#SECTION00022000000000000000">1.2 Object hierarchies: WRegion parents and managers</A>
-<LI><A NAME="tex2html53"
-  HREF="node2.html#SECTION00023000000000000000">1.3 Summary</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html54"
-  HREF="node3.html">2 Object system implementation</A>
-<LI><A NAME="tex2html55"
-  HREF="node4.html">3 The Lua interface</A>
-<UL>
-<LI><A NAME="tex2html56"
-  HREF="node4.html#SECTION00041000000000000000">3.1 Supported types</A>
-<LI><A NAME="tex2html57"
-  HREF="node4.html#SECTION00042000000000000000">3.2 Exporting functions</A>
-<LI><A NAME="tex2html58"
-  HREF="node4.html#SECTION00043000000000000000">3.3 Calling Lua functions and code</A>
-<LI><A NAME="tex2html59"
-  HREF="node4.html#SECTION00044000000000000000">3.4 Miscellaneous notes</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html60"
-  HREF="node5.html">4 Miscellaneous design notes</A>
-<UL>
-<LI><A NAME="tex2html61"
-  HREF="node5.html#SECTION00051000000000000000">4.1 Destroying WObj:s</A>
-<LI><A NAME="tex2html62"
-  HREF="node5.html#SECTION00052000000000000000">4.2 The types char* and const char* as function parameters and return values</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html63"
-  HREF="node6.html">5 C coding style</A>
-<UL>
-<LI><A NAME="tex2html64"
-  HREF="node6.html#SECTION00061000000000000000">5.1 Whitespace</A>
-<LI><A NAME="tex2html65"
-  HREF="node6.html#SECTION00062000000000000000">5.2 Braces</A>
-<LI><A NAME="tex2html66"
-  HREF="node6.html#SECTION00063000000000000000">5.3 Names</A>
-<LI><A NAME="tex2html67"
-  HREF="node6.html#SECTION00064000000000000000">5.4 Miscellaneous</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html68"
-  HREF="node7.html">A. The GNU General Public License</A>
-<LI><A NAME="tex2html69"
-  HREF="node8.html">Index</A>
-</UL>
-<!--End of Table of Contents-->
-<P>
-
-<P>
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node2.html b/doc/ionnotes/node2.html
deleted file mode 100644 (file)
index 4996b37..0000000
+++ /dev/null
@@ -1,444 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>1 Class and object hierarchies</TITLE>
-<META NAME="description" CONTENT="1 Class and object hierarchies">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node3.html">
-<LINK REL="previous" HREF="node1.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node3.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html82"
-  HREF="node3.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html76"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html70"
-  HREF="node1.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html78"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html80"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html83"
-  HREF="node3.html">2 Object system implementation</A>
-<B> Up:</B> <A NAME="tex2html77"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html71"
-  HREF="node1.html">Contents</A>
- &nbsp; <B>  <A NAME="tex2html79"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html81"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html84"
-  HREF="node2.html#SECTION00021000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-<LI><A NAME="tex2html85"
-  HREF="node2.html#SECTION00022000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-<UL>
-<LI><A NAME="tex2html86"
-  HREF="node2.html#SECTION00022100000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-<LI><A NAME="tex2html87"
-  HREF="node2.html#SECTION00022200000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</UL>
-<BR>
-<LI><A NAME="tex2html88"
-  HREF="node2.html#SECTION00023000000000000000"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00020000000000000000"></A>
-<A NAME="sec:objects"></A>
-<BR>
-<SPAN CLASS="arabic">1</SPAN> Class and object hierarchies
-</H1>
-
-<P>
-While Ion does not not have a truly object-oriented design
-<A NAME="tex2html1"
-  HREF="#foot210"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A>,
-things that appear on the computer screen are, however, quite
-naturally expressed as such ``objects''. Therefore Ion implements
-a rather primitive OO system for these screen objects and some
-other things. 
-
-<P>
-It is essential for the module writer to learn this object
-system, but also people who write their own binding configuration files
-necessarily come into contact with the class and object hierarchies
-- you need to know which binding setup routines apply where, 
-and what functions can be used as handlers in which bindings.
-It is the purpose of this section to attempt to explain these 
-hierarchies. If you do not wish the read the full section, at least
-read the summary at the end of it, so that you understand the very
-basic relations.
-
-<P>
-For simplicity we consider only the essential-for-basic-configuration
-Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="textit">mod_query</SPAN> classes. 
-See Appendix <A HREF="#app:fullhierarchy"><IMG  ALIGN="BOTTOM" BORDER="1" ALT="[*]" SRC="crossref.png"></A> for the full class hierarchy visible
-to Lua side.
-
-<P>
-
-<H2><A NAME="SECTION00021000000000000000">
-<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN> Class hierarchy</A>
-</H2>
-
-<P>
-One of the most important principles of object-oriented design methodology
-is inheritance; roughly how classes (objects are instances of classes)
-extend on others' features. Inheritance gives rise to class hierarchy.
-In the case of single-inheritance this hierarchy can be expressed as a
-tree where the class at the root is inherited by all others below it
-and so on. Figure <A HREF="#fig:classhierarchy">1</A> lists out the Ion class 
-hierarchy and below we explain what features of Ion the classes 
-implement.
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:classhierarchy"></A><A NAME="317"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 1:</STRONG>
-Partial Ioncore, <SPAN  CLASS="textit">mod_tiling</SPAN> and <SPAN  CLASS="textit">mod_query</SPAN> 
-    class hierarchy.</CAPTION>
-<TR><TD><PRE>
-    Obj
-     |--&gt;WRegion
-     |    |--&gt;WClientWin
-     |    |--&gt;WWindow
-     |    |    |--&gt;WMPlex
-     |    |    |    |--&gt;WFrame
-     |    |    |    |--&gt;WScreen
-     |    |    |         |--&gt;WRootWin
-     |    |    |--&gt;WInput (mod_query)
-     |    |         |--&gt;WEdln (mod_query)
-     |    |         |--&gt;WMessage (mod_query)
-     |    |--&gt;WGroup
-     |    |    |--&gt;WGroupWS
-     |    |    |--&gt;WGroupCW
-     |    |--&gt;WTiling (mod_tiling)
-     |--&gt;WSplit (mod_tiling)
-</PRE></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-The core classes:
-
-<P>
-<DL>
-<DT><STRONG>Obj</STRONG></DT>
-<DD><A NAME="323"></A>
-    Is the base of Ion's object system.
-
-<P>
-</DD>
-<DT><STRONG>WRegion</STRONG></DT>
-<DD><A NAME="324"></A>
-    is the base class for everything corresponding to something on the
-    screen. Each object of type WRegion has a size and  position
-    relative to the parent WRegion. While a big part of Ion 
-    operates on these instead of more specialised classes, WRegion
-    is a ``virtual''  base class in that there are no objects of ``pure''
-    type WRegion; all concrete regions are objects of some class 
-    that inherits WRegion.
-
-<P>
-</DD>
-<DT><STRONG>WClientWin</STRONG></DT>
-<DD><A NAME="325"></A> is a class for
-    client window objects, the objects that window managers are
-    supposed to manage.
-
-<P>
-</DD>
-<DT><STRONG>WWindow</STRONG></DT>
-<DD><A NAME="326"></A> is the base class for all
-    internal objects having an X window associated to them
-    (WClientWins also have X windows associated to them).
-
-<P>
-</DD>
-<DT><STRONG>WMPlex</STRONG></DT>
-<DD>is a base class for all regions that ``multiplex'' 
-    other regions. This means that of the regions managed by the multiplexer,
-    only one can be displayed at a time. 
-
-<P>
-</DD>
-<DT><STRONG>WScreen</STRONG></DT>
-<DD><A NAME="327"></A> is an instance of WMPlex
-    for screens.
-
-<P>
-</DD>
-<DT><STRONG>WRootWin</STRONG></DT>
-<DD><A NAME="328"></A> is the class for
-    root windows<A NAME="244"></A> of X screens<A NAME="245"></A>.
-    It is an instance of WScreen.
-    Note that an ``X screen'' or root window is not necessarily a
-    single physical screen<A NAME="247"></A> as a root window
-    may be split over multiple screens when ugly hacks such as 
-    Xinerama<A NAME="248"></A> are used. (Actually there can be only 
-    one root window when Xinerama is used.) 
-
-<P>
-</DD>
-<DT><STRONG>WFrame</STRONG></DT>
-<DD><A NAME="329"></A> is the class for frames.
-    While most Ion's objects have no graphical presentation, frames 
-    basically add to WMPlexes the decorations around client 
-    windows (borders, tabs).
-
-<P>
-</DD>
-<DT><STRONG>WGroup</STRONG></DT>
-<DD><A NAME="330"></A> is the base class for groups.
-    Particular types of groups are workspaces 
-    (WGroupWS<A NAME="331"></A>)
-    and groups of client windows
-    (WGroupCW<A NAME="332"></A>).
-</DD>
-</DL>
-
-<P>
-Classes implemented by the <SPAN  CLASS="textit">mod_tiling</SPAN> module:
-
-<P>
-<DL>
-<DT><STRONG>WTiling</STRONG></DT>
-<DD><A NAME="334"></A> is the class for tilings
-    of frames.
-  
-</DD>
-<DT><STRONG>WSplit</STRONG></DT>
-<DD><A NAME="335"></A> (or, more specifically, classes
-    that inherit it) encode the WTiling tree structure.
-</DD>
-</DL>
-
-<P>
-Classes implemented by the <SPAN  CLASS="textit">mod_query</SPAN> module:
-
-<P>
-<DL>
-<DT><STRONG>WInput</STRONG></DT>
-<DD><A NAME="337"></A> is a virtual base class for the
-    two classes below.
-  
-</DD>
-<DT><STRONG>WEdln</STRONG></DT>
-<DD><A NAME="338"></A> is the class for the ``queries'',
-    the text inputs that usually appear at bottoms of frames and sometimes
-    screens. Queries are the functional equivalent of ``mini buffers'' in
-    many text editors.
-  
-</DD>
-<DT><STRONG>WMessage</STRONG></DT>
-<DD><A NAME="339"></A> implements the boxes for 
-    warning and other messages that Ion may wish to display to the user. 
-    These also usually appear at bottoms of frames.
-</DD>
-</DL>
-
-<P>
-There are also some other ``proxy'' classes that do not refer
-to objects on the screen. The only important one of these for
-basic configuration is WMoveresMode that is used for
-binding callbacks in the move and resize mode.
-
-<P>
-
-<H2><A NAME="SECTION00022000000000000000">
-<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN> Object hierarchies: WRegion parents and managers</A>
-</H2>
-
-<P>
-
-<H3><A NAME="SECTION00022100000000000000">
-<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN> Parent-child relations</A>
-</H3>
-Each object of type WRegion has a parent and possibly a manager
-associated to it. The parent<A NAME="280"></A> for an object is always a 
-WWindow and for WRegion with an X window (WClientWin,
-WWindow) the parent WWindow is given by the same relation of
-the X windows. For other WRegions the relation is not as clear.
-There is generally very few restrictions other than the above on the
-parent--child relation but the most common is as described in
-Figure <A HREF="#fig:parentship">2</A>.
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:parentship"></A><A NAME="291"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 2:</STRONG>
-Most common parent-child relations</CAPTION>
-<TR><TD><PRE>
-    WRootWins
-     |--&gt;WScreens
-          |--&gt;WGroupWSs
-          |--&gt;WTilings
-          |--&gt;WClientWins in full screen mode
-          |--&gt;WFrames
-               |--&gt;WGroupCWs
-               |--&gt;WClientWins
-               |--&gt;WFrames for transients
-               |--&gt;a possible WEdln or WMessage
-</PRE></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-WRegions have very little control over their children as a parent.
-The manager<A NAME="295"></A> WRegion has much more control over its
-managed WRegions. Managers, for example, handle resize requests,
-focusing and displaying of the managed regions. Indeed the manager--managed
-relationship gives a better picture of the logical ordering of objects on
-the screen. Again, there are generally few limits, but the most common
-hierarchy is given in Figure <A HREF="#fig:managership">3</A>. Note that sometimes
-the parent and manager are the same object and not all objects may have
-a manager (e.g. the dock in the dock module at the time of writing this)
-but all have a parent-a screen if not anything else.
-
-<P>
-
-<H3><A NAME="SECTION00022200000000000000">
-<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">2</SPAN> Manager-managed relations</A>
-</H3>
-
-<P>
-
-<DIV ALIGN="CENTER"><A NAME="fig:managership"></A><A NAME="303"></A>
-<TABLE>
-<CAPTION ALIGN="BOTTOM"><STRONG>Figure 3:</STRONG>
-Most common manager-managed relations</CAPTION>
-<TR><TD><PRE>
-    WRootWins
-     |--&gt;WScreens
-          |--&gt;WGroupCWs for full screen WClientWins
-          |    |--&gt;WClientWins
-          |    |--&gt;WFrames for transients (dialogs)
-          |         |--&gt; WClientWin
-          |--&gt;WGroupWSs for workspaces
-          |    |--&gt;WTiling
-          |    |    |--&gt;WFrames
-          |    |    |    |--&gt;WGroupCWs (with contents as above)
-          |    |    |--&gt;possibly a WStatusBar or WDock
-          |    |--&gt;WFrames for floating content
-          |    |--&gt;possibly a WEdln, WMessage or WMenu
-          |    |--&gt;possibly a WStatusBar or WDock (if no tiling)
-          |--&gt;WFrames for sticky stuff, such as the scratchpad
-</PRE></TD></TR>
-</TABLE>
-</DIV>
-
-<P>
-Note that a workspace can manage another workspace. This can be
-achieved with the <A HREF="#fn:attach_new"><TT>attach_new</TT></A> function, and allows you to nest
-workspaces as deep as you want.
-
-<P>
-
-<H2><A NAME="SECTION00023000000000000000">
-<SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">3</SPAN> Summary</A>
-</H2>
-
-<P>
-In the standard setup, keeping queries, messages and menus out of
-consideration:
-
-<P>
-
-<UL>
-<LI>The top-level objects that matter are screens and they correspond
-    to physical screens. The class for screens is WScreen.
-</LI>
-<LI>Screens contain (multiplex) groups (WGroup) and other 
-    objects, such as WFrames. Some of these are mutually exclusive
-    to be viewed at a time.
-</LI>
-<LI>Groups of the specific kind WGroupWS often contain a
-    WTiling tiling for tiling frames (WFrame), but 
-    groups may also directly contain floating frames.
-</LI>
-<LI>Frames are the objects with decorations such as tabs and borders.
-    Frames contain (multiplex) among others (groups of) client windows, 
-    to each of which corresponds a tab in the frame's decoration. Only 
-    one client window (or other object) can be shown at a time in each 
-    frame. The class for client windows is WClientWin.
-</LI>
-</UL>
-
-<P>
-<BR><HR><H4>Footnotes</H4>
-<DL>
-<DT><A NAME="foot210">... design</A><A
- HREF="node2.html#tex2html1"><SUP><SPAN CLASS="arabic">1</SPAN></SUP></A></DT>
-<DD>the author doesn't like such artificial designs
-
-</DD>
-</DL>
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html82"
-  HREF="node3.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html76"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html70"
-  HREF="node1.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html78"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html80"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html83"
-  HREF="node3.html">2 Object system implementation</A>
-<B> Up:</B> <A NAME="tex2html77"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html71"
-  HREF="node1.html">Contents</A>
- &nbsp; <B>  <A NAME="tex2html79"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html81"
-  HREF="node8.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node3.html b/doc/ionnotes/node3.html
deleted file mode 100644 (file)
index 63c9852..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>2 Object system implementation</TITLE>
-<META NAME="description" CONTENT="2 Object system implementation">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node4.html">
-<LINK REL="previous" HREF="node2.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node4.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html101"
-  HREF="node4.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html95"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html89"
-  HREF="node2.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html97"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html99"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html102"
-  HREF="node4.html">3 The Lua interface</A>
-<B> Up:</B> <A NAME="tex2html96"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html90"
-  HREF="node2.html">1 Class and object</A>
- &nbsp; <B>  <A NAME="tex2html98"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html100"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<H1><A NAME="SECTION00030000000000000000">
-<SPAN CLASS="arabic">2</SPAN> Object system implementation</A>
-</H1>
-
-<P>
-First, to get things clear, what are considered objects here are C
-structures containing a properly initialised <A NAME="426"></A>
-structure defined in <SPAN  CLASS="textit">ioncore/obj.h</SPAN> as the first element (or the
-first element of the structure which is the first element and so on which
-gives rise to inheritance). The WObj structure contains a pointer
-to a WObjDescr<A NAME="428"></A> class type info structure and
-a list of so called ``watches''. The WObjDescr structure simply
-lists the class name, a table of dynamic functions and a pointer to
-deinitialisation function (or ``destructor'').
-
-<P>
-Ion does not do any reference counting, garbage collecting or other
-fancy things related to automatic safe freeing of objects with its
-simplistic object system. Instead special watches (the WWatch
-<A NAME="429"></A> structure) may be used to create safe references to
-objects that might be destroyed during the time the specific pointer is
-needed. When an object is destroyed, its list of watches is processed,
-setting the pointers in the watches to NULL and the watch handlers for
-each watch are called. 
-
-<P>
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html101"
-  HREF="node4.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html95"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html89"
-  HREF="node2.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html97"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html99"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html102"
-  HREF="node4.html">3 The Lua interface</A>
-<B> Up:</B> <A NAME="tex2html96"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html90"
-  HREF="node2.html">1 Class and object</A>
- &nbsp; <B>  <A NAME="tex2html98"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html100"
-  HREF="node8.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node4.html b/doc/ionnotes/node4.html
deleted file mode 100644 (file)
index 41c8521..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>3 The Lua interface</TITLE>
-<META NAME="description" CONTENT="3 The Lua interface">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node5.html">
-<LINK REL="previous" HREF="node3.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node5.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html115"
-  HREF="node5.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html109"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html103"
-  HREF="node3.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html111"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html113"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html116"
-  HREF="node5.html">4 Miscellaneous design notes</A>
-<B> Up:</B> <A NAME="tex2html110"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html104"
-  HREF="node3.html">2 Object system implementation</A>
- &nbsp; <B>  <A NAME="tex2html112"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html114"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html117"
-  HREF="node4.html#SECTION00041000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Supported types</A>
-<LI><A NAME="tex2html118"
-  HREF="node4.html#SECTION00042000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Exporting functions</A>
-<LI><A NAME="tex2html119"
-  HREF="node4.html#SECTION00043000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Calling Lua functions and code</A>
-<LI><A NAME="tex2html120"
-  HREF="node4.html#SECTION00044000000000000000"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous notes</A>
-</UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00040000000000000000">
-<SPAN CLASS="arabic">3</SPAN> The Lua interface</A>
-</H1>
-
-<P>
-This section finally describes the implementation details and how modules
-should us the Lua interface. First, in section <A HREF="#sec:supptypes">3.1</A>
-we look at types supported by the interface, how objects are passed to Lua
-code and how Lua tables should be accessed from Ion and modules. In section
-<A HREF="#sec:exporting">3.2</A> the methods for exporting functions and how they
-are called from Lua are explained and in section <A HREF="#sec:calling">3.3</A> the
-method for calling Lua functions is explained.
-
-<P>
-
-<H2><A NAME="SECTION00041000000000000000"></A>
-<A NAME="sec:supptypes"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN> Supported types
-</H2>
-
-<P>
-The following types are supported in passing parameters between the
-C side of Ion and Lua:
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1">
-<TR><TD ALIGN="RIGHT">Identifier
- character</TD>
-<TD ALIGN="LEFT">C type</TD>
-<TD ALIGN="LEFT">Description</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">i</TD>
-<TD ALIGN="LEFT">int</TD>
-<TD ALIGN="LEFT">Integer</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">s</TD>
-<TD ALIGN="LEFT">char*</TD>
-<TD ALIGN="LEFT">String</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">S</TD>
-<TD ALIGN="LEFT">const char*</TD>
-<TD ALIGN="LEFT">Constant string</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">d</TD>
-<TD ALIGN="LEFT">double</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">b</TD>
-<TD ALIGN="LEFT">bool</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">t</TD>
-<TD ALIGN="LEFT">ExtlTab<A NAME="519"></A></TD>
-<TD ALIGN="LEFT">Reference to Lua table</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">f</TD>
-<TD ALIGN="LEFT">ExltFn<A NAME="520"></A></TD>
-<TD ALIGN="LEFT">Reference to Lua function.</TD>
-</TR>
-<TR><TD ALIGN="RIGHT">o</TD>
-<TD ALIGN="LEFT">Any WObj*</TD>
-<TD ALIGN="LEFT">&nbsp;</TD>
-</TR>
-</TABLE>
-
-<P>
-The difference between identifiers 's' and 'S' is that constant
-strings as return values are not free'd by the level 1 call handler
-(see below) after passing to Lua (<TT>lua_pushstring</TT> always makes a
-copy) unlike normal strings. String parameters are always assumed to be
-the property of the caller and thus implicitly const.
-
-<P>
-Likewise, if a reference to 't' or 'f' is wished to be stored
-beyond the lifetime of a function receiving such as an argument, a new
-reference should be created with <TT>extl_ref_table</TT>/<TT>fn</TT>.
-References can be free'd with
-<TT>extl_unref_table</TT>/<TT>fn</TT>. References gotten as return values with
-the <TT>extl_table_get</TT> (how these work should be self-explanatory!)
-functions are property of the caller and should be unreferenced with the
-above-mentioned functions when no longer needed.
-The functions <TT>extl_fn</TT>/<TT>table_none()</TT>
-return the equivalent of NULL.
-
-<P>
-WObjs are passed to Lua code with WWatch userdatas pointing to
-them so the objects can be safely deleted although Lua code might still be
-referencing them. (This is why SWIG or tolua would not have helped in
-creating the interface: extra wrappers for each function would still
-have been needed to nicely integrate into Ion's object system. Even in
-the case that Ion was written in C++ this would be so unless extra bloat
-adding pointer-like objects were used everywhere instead of pointers.)
-It may be sometimes necessary check in Lua code that a value known to
-be an Ion WObj is of certain type. This can be accomplished with
-<TT>obj_is(obj, "typename")</TT>. <TT>obj_typename(obj)</TT> returns type
-name for a WObj.
-
-<P>
-
-<H2><A NAME="SECTION00042000000000000000"></A>
-<A NAME="sec:exporting"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN> Exporting functions
-</H2>
-
-<P>
-Exported functions (those available to the extension language) are
-defined by placing <TT>EXTL_EXPORT</TT> before the function implementation
-in the C source. The script mkexports.pl is then used to automatically
-generate <SPAN  CLASS="textit">exports.c</SPAN> from the source files if
-<TT>MAKE_EXPORTS=modulename</TT>
-is specified in the Makefile. All pointers with type beginning with a 'W'
-are assumed to be pointers to something inheriting WObj. In
-addition to a table of exported functions and second level call handlers
-for these, <SPAN  CLASS="textit">exports.c</SPAN> will contain two functions
-<TT>module_register_exports()</TT> and
-<TT>module_unregister_exports()</TT> that should then be called in module
-initialisation and deinitialisation code.
-
-<P>
-You've seen the terms level 1 and 2 call handler mentioned above. 
-<A NAME="489"></A>
-The Lua support code uses two so called call handlers to convert and check
-the types of parameters passed from Lua to C and back to Lua. The first
-one of these call handlers is the same for all exported functions and
-indeed lua sees all exported as the same C function (the L1 call handler)
-but with different upvalues passing a structure describing the actual
-function and the second level call handler. The L1 call handler checks
-that the parameters received from Lua match a template given as a string
-of the identifier characters defined above. If everything checks out ok,
-the parameters are then put in an array of C unions that can contain
-anyof these known types and the L2 call handler is called.
-
-<P>
-The L2 call handler (which is automatically generated by the mkexports.pl
-script) for each exported function checks that the passed WObjs
-are of the more refined type required by the function and then calls the
-actual function. While the WObj checking could be done in the L1 handler
-too, the L2 call handlers are needed because we may not know how the target
-platform passes each parameter type to the called function. Thefore we
-must let the C compiler generate the code to convert from a simple and
-known enough parameter passing method (the unions) to the actual
-parameter passing method. When the called function returns everything
-is done in reverse order for return values (only one return value is
-supported by the generated L2 call handlers).
-
-<P>
-
-<H2><A NAME="SECTION00043000000000000000"></A>
-<A NAME="sec:calling"></A>
-<BR>
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN> Calling Lua functions and code
-</H2>
-
-<P>
-The functions
-<TT>extl_call</TT><A NAME="513"></A>,
-<TT>extl_call_named</TT><A NAME="514"></A>,
-<TT>extl_dofile</TT><A NAME="515"></A> and
-<TT>extl_dostring</TT><A NAME="516"></A>
-call a referenced function (ExtlFn), named function, execute a
-string and a file, respectively. The rest of the parameters for all these
-functions are similar. The 'spec' argument is a string of identifier
-characters (see above) describing the parameters to be passed. These
-parameters follow after 'rspec'. For dofile and dostring these parameters
-are passed in the global table arg (same as used for program command
-lien parameters) and for functions as you might expect. The parameter
-'rspec' is a similar description of return values. Pointers to variables
-that should be set to the return values follow after the input values.
-The return value of all these functions tells if the call and parameter
-passing succeeded or not.
-
-<P>
-Sometimes it is necessary to block calls to all but a limited set of
-Ion functions. This can be accomplished with
-<TT>extl_set_safelist</TT><A NAME="517"></A>.
-The parameter to this function is a NULL-terminated array of strings
-and the return value is a similar old safelist.
-The call <TT>extl_set_safelist(NULL)</TT> removes any safelist and allows
-calls to all exported functions.
-
-<P>
-
-<H2><A NAME="SECTION00044000000000000000">
-<SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous notes</A>
-</H2>
-
-<P>
-Configuration files should be read as before with the function
-<TT>read_config_for</TT><A NAME="518"></A>
-except that the list of known options is no longer present.
-
-<P>
-Winprops are now stored in Lua tables and can contain arbitrary
-properties. The 'proptab' entry in each WClientWin is a reference
-to a winprop table or <TT>extl_table_none()</TT> if such does not exist
-and properties may be read with the <TT>extl_table_gets</TT> functions.
-(It is perfectly legal to pass <TT>extl_table_none()</TT> references to
-<TT>extl_table_get*</TT>.)
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html115"
-  HREF="node5.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html109"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html103"
-  HREF="node3.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html111"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html113"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html116"
-  HREF="node5.html">4 Miscellaneous design notes</A>
-<B> Up:</B> <A NAME="tex2html110"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html104"
-  HREF="node3.html">2 Object system implementation</A>
- &nbsp; <B>  <A NAME="tex2html112"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html114"
-  HREF="node8.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node5.html b/doc/ionnotes/node5.html
deleted file mode 100644 (file)
index 45b1c29..0000000
+++ /dev/null
@@ -1,186 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>4 Miscellaneous design notes</TITLE>
-<META NAME="description" CONTENT="4 Miscellaneous design notes">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node6.html">
-<LINK REL="previous" HREF="node4.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node6.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html133"
-  HREF="node6.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html127"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html121"
-  HREF="node4.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html129"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html131"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html134"
-  HREF="node6.html">5 C coding style</A>
-<B> Up:</B> <A NAME="tex2html128"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html122"
-  HREF="node4.html">3 The Lua interface</A>
- &nbsp; <B>  <A NAME="tex2html130"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html132"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html135"
-  HREF="node5.html#SECTION00051000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Destroying WObj:s</A>
-<LI><A NAME="tex2html136"
-  HREF="node5.html#SECTION00052000000000000000"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> The types <TT>char*</TT> and <TT>const char*</TT> as function
-  parameters and return values</A>
-</UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00050000000000000000">
-<SPAN CLASS="arabic">4</SPAN> Miscellaneous design notes</A>
-</H1>
-
-<P>
-
-<H2><A NAME="SECTION00051000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN> Destroying WObj:s</A>
-</H2>
-
-<P>
-To keep Ion's code as simple as possible yet safe, there are restrictions
-when the WObj
-<TT>destroy_obj</TT><A NAME="617"></A>
-function that calls watches, the deinit routine and frees memory may
-be called directly. In all other cases the <TT>mainloop_defer_destroy</TT><A NAME="618"></A>
-function should be used to defer the call of <TT>destroy_obj</TT> until
-Ioncore returns to its main event loop. 
-
-<P>
-Calling the <TT>destroy_obj</TT> function directly is allowed in the
-following cases:
-
-<UL>
-<LI>In the deinit handler for another object. Usually managed objects
-      are destroyed this way.
-</LI>
-<LI>The object was created during the current call to the function
-      that wants to get rid of the object. This is the case, for example,
-      when the function created a frame to manage some other object but for
-      some reason failed to reparent the object to this frame.
-</LI>
-<LI>In a deferred action handler set with <TT>mainloop_defer_action</TT><A NAME="619"></A>.
-      Like deferred destroys, other deferred actions are called when
-      Ioncore has returned to the main loop.
-</LI>
-<LI>You are absolute sure that C code outside your code has no
-      references to the object.
-</LI>
-</UL>
-
-<P>
-If there are no serious side effects from deferring destroying the
-object or you're unsure whether it is safe to destroy the object
-immediately, use <TT>mainloop_defer_destroy</TT>.
-
-<P>
-
-<H2><A NAME="SECTION00052000000000000000">
-<SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">2</SPAN> The types <TT>char*</TT> and <TT>const char*</TT> as function
-  parameters and return values</A>
-</H2>
-
-<P>
-The following rules should apply to using strings as return values and
-parameters to functions. 
-
-<P>
-<TABLE CELLPADDING=3 BORDER="1" WIDTH="100%">
-<TR><TD ALIGN="LEFT">Type</TD>
-<TD ALIGN="LEFT">Return value</TD>
-<TD ALIGN="LEFT">Parameter</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>const char*</TT></TD>
-<TD ALIGN="LEFT">The string is owned by the called function
-       and the caller is only quaranteed short-term read access to the
-       string.</TD>
-<TD ALIGN="LEFT">The called function may only read the string during its execution.
-       For further reference a copy must be made.</TD>
-</TR>
-<TR><TD ALIGN="LEFT"><TT>char*</TT></TD>
-<TD ALIGN="LEFT">The string is the caller's responsibility and it
-       <SPAN  CLASS="textit">must</SPAN> free it when no longer needed.</TD>
-<TD ALIGN="LEFT">The called function may modify the string but the ``owner'' of
-       the string is case-dependant.</TD>
-</TR>
-</TABLE>
-
-<P>
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html133"
-  HREF="node6.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html127"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html121"
-  HREF="node4.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html129"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html131"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html134"
-  HREF="node6.html">5 C coding style</A>
-<B> Up:</B> <A NAME="tex2html128"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html122"
-  HREF="node4.html">3 The Lua interface</A>
- &nbsp; <B>  <A NAME="tex2html130"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html132"
-  HREF="node8.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node6.html b/doc/ionnotes/node6.html
deleted file mode 100644 (file)
index 61cff1a..0000000
+++ /dev/null
@@ -1,285 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>5 C coding style</TITLE>
-<META NAME="description" CONTENT="5 C coding style">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node7.html">
-<LINK REL="previous" HREF="node5.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node7.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html149"
-  HREF="node7.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html143"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html137"
-  HREF="node5.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html145"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html147"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html150"
-  HREF="node7.html">A. The GNU General</A>
-<B> Up:</B> <A NAME="tex2html144"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html138"
-  HREF="node5.html">4 Miscellaneous design notes</A>
- &nbsp; <B>  <A NAME="tex2html146"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html148"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html151"
-  HREF="node6.html#SECTION00061000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Whitespace</A>
-<LI><A NAME="tex2html152"
-  HREF="node6.html#SECTION00062000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Braces</A>
-<LI><A NAME="tex2html153"
-  HREF="node6.html#SECTION00063000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Names</A>
-<LI><A NAME="tex2html154"
-  HREF="node6.html#SECTION00064000000000000000"><SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-</UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00060000000000000000">
-<SPAN CLASS="arabic">5</SPAN> C coding style</A>
-</H1>
-
-<P>
-If you want to submit patches to Ion, you <SPAN  CLASS="textbf">must</SPAN> follow my coding 
-style, even if you think it is the root of all evil. We don't want
-the code to be an incomprehensible mess of styles and I have better
-things to do than fix other people's style to match mine. The style
-should be obvious by studying the source, but here's a list of some
-things to take note of.
-
-<P>
-
-<H2><A NAME="SECTION00061000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">1</SPAN> Whitespace</A>
-</H2>
-
-<P>
-
-<UL>
-<LI>Indentations of 4 with spaces.
-
-<P>
-</LI>
-<LI>No extra spaces between operators, delimiters etc. except
-    
-<UL>
-<LI>around logical and, or (<TT>&amp;&amp;</TT>, <TT>||</TT>)
-</LI>
-<LI>around the conditional <TT>a ? b : c</TT>
-</LI>
-<LI>after commas and semicolons
-    
-</LI>
-</UL>  
-    In my opinion this helps pointing out arithmetic or other
-    expressions within logical expressions or parameter lists.
-
-<P>
-</LI>
-<LI>All kinds of labels are out-tended to the level of the higher
-    level block. For example:
-
-<P>
-<PRE>    
-void foo()
-{
-again:
-    switch(asdf){
-    case 1:
-        ...
-        break;
-    default:
-        ...
-        break;
-    }
-}
-</PRE>
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION00062000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">2</SPAN> Braces</A>
-</H2>
-
-<P>
-
-<UL>
-<LI>Opening brace is at the end of the line, except in function
-    bodies, where it is at the beginning of the line following
-    the definition.
-
-<P>
-</LI>
-<LI>Never put the body of a control statement on the same line
-    with the statement (e.g. <code>if(foo){ bar() }</code>).
-
-<P>
-For example, the block
-<PRE>    
-void foo(int a, int b)
-{
-    if(a==b &amp;&amp; c+d==e){
-        ...
-    }
-}
-</PRE>
-
-<P>
-has correct style while the block
-
-<P>
-<PRE>   
-void foo(int a,int b) {
-    if (a == b &amp;&amp; c + d == e) {
-        ...
-    }
-}
-</PRE>
-
-<P>
-does not.
-
-<P>
-</LI>
-<LI>The <TT>else</TT> keyword follows immediately after the closing brace of
-    previous <TT>if</TT>, if any. (This might change so I don't care if you put
-    it on the next line.)
-
-<P>
-</LI>
-<LI>I have used the convention that control statement bodies containing
-    a single statement do not need braces around the block if, in case of
-    the <TT>if</TT> all the blocks in  <TT>if ...  else if ... else</TT>
-    contain just one statement. If you want to, just use braces in every 
-    case.
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION00063000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">3</SPAN> Names</A>
-</H2>
-
-<P>
-
-<UL>
-<LI>Function and variable names only have lower case letters. Type
-    names are in mixed case while constants and macros (<TT>#define</TT>s)
-    are in upper case letters.
-</LI>
-</UL>
-
-<P>
-
-<H2><A NAME="SECTION00064000000000000000">
-<SPAN CLASS="arabic">5</SPAN>.<SPAN CLASS="arabic">4</SPAN> Miscellaneous</A>
-</H2>
-
-<P>
-
-<UL>
-<LI>In the definition of a pointer variable, the asterisk is attached
-    to the variable name: <TT>char *s;</TT>. (One could claim this an 
-    exception to the second rule.)
-
-<P>
-</LI>
-<LI>You might optionally want to use Jed's foldings to group blocks
-    of related code in a file to keep it organized:
-
-<P>
-<PRE>    
-/*{{{ Many related functions */
-       
-void code()
-{
-    ...        
-}
-
-...
-
-/*}}}*/
-</PRE>
-</LI>
-</UL>
-
-<P>
-I think that's mostly it. Study the source when in doubt.
-
-<P>
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html149"
-  HREF="node7.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html143"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html137"
-  HREF="node5.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html145"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html147"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html150"
-  HREF="node7.html">A. The GNU General</A>
-<B> Up:</B> <A NAME="tex2html144"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html138"
-  HREF="node5.html">4 Miscellaneous design notes</A>
- &nbsp; <B>  <A NAME="tex2html146"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html148"
-  HREF="node8.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node7.html b/doc/ionnotes/node7.html
deleted file mode 100644 (file)
index 7e36403..0000000
+++ /dev/null
@@ -1,597 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>A. The GNU General Public License</TITLE>
-<META NAME="description" CONTENT="A. The GNU General Public License">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node8.html">
-<LINK REL="previous" HREF="node6.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node8.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html167"
-  HREF="node8.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html161"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html155"
-  HREF="node6.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html163"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html165"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html168"
-  HREF="node8.html">Index</A>
-<B> Up:</B> <A NAME="tex2html162"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html156"
-  HREF="node6.html">5 C coding style</A>
- &nbsp; <B>  <A NAME="tex2html164"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html166"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<!--Table of Child-Links-->
-<A NAME="CHILD_LINKS"><STRONG>Subsections</STRONG></A>
-
-<UL CLASS="ChildLinks">
-<LI><A NAME="tex2html169"
-  HREF="node7.html#SECTION00071000000000000000">Appendix: How to Apply These Terms to Your New Programs</A>
-</UL>
-<!--End of Table of Child-Links-->
-<HR>
-
-<H1><A NAME="SECTION00070000000000000000">
-A. The GNU General Public License</A>
-</H1>
-
-<P>
-<DIV ALIGN="CENTER">
-</DIV>
-<P>
-<DIV ALIGN="CENTER">Version 2, June 1991
-</DIV>
-<P>
-<DIV ALIGN="CENTER">Copyright &#169; 1989, 1991 Free Software Foundation, Inc.
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">59 Temple Place - Suite 330, Boston, MA  02111-1307, USA
-</DIV>
-<P>
-<DIV ALIGN="CENTER"></DIV>
-<P><P>
-<BR>
-<DIV ALIGN="CENTER"></DIV>
-<P>
-<DIV ALIGN="CENTER">Everyone is permitted to copy and distribute verbatim copies
-of this license document, but changing it is not allowed.
-
-
-</DIV>
-
-<P>
-<DIV ALIGN="CENTER">
-<B><BIG CLASS="LARGE">Preamble</BIG></B>
-
-</DIV>
-
-<P>
-The licenses for most software are designed to take away your freedom to
-share and change it.  By contrast, the GNU General Public License is
-intended to guarantee your freedom to share and change free software--to
-make sure the software is free for all its users.  This General Public
-License applies to most of the Free Software Foundation's software and to
-any other program whose authors commit to using it.  (Some other Free
-Software Foundation software is covered by the GNU Library General Public
-License instead.)  You can apply it to your programs, too.
-
-<P>
-When we speak of free software, we are referring to freedom, not price.
-Our General Public Licenses are designed to make sure that you have the
-freedom to distribute copies of free software (and charge for this service
-if you wish), that you receive source code or can get it if you want it,
-that you can change the software or use pieces of it in new free programs;
-and that you know you can do these things.
-
-<P>
-To protect your rights, we need to make restrictions that forbid anyone to
-deny you these rights or to ask you to surrender the rights.  These
-restrictions translate to certain responsibilities for you if you
-distribute copies of the software, or if you modify it.
-
-<P>
-For example, if you distribute copies of such a program, whether gratis or
-for a fee, you must give the recipients all the rights that you have.  You
-must make sure that they, too, receive or can get the source code.  And
-you must show them these terms so they know their rights.
-
-<P>
-We protect your rights with two steps: (1) copyright the software, and (2)
-offer you this license which gives you legal permission to copy,
-distribute and/or modify the software.
-
-<P>
-Also, for each author's protection and ours, we want to make certain that
-everyone understands that there is no warranty for this free software.  If
-the software is modified by someone else and passed on, we want its
-recipients to know that what they have is not the original, so that any
-problems introduced by others will not reflect on the original authors'
-reputations.
-
-<P>
-Finally, any free program is threatened constantly by software patents.
-We wish to avoid the danger that redistributors of a free program will
-individually obtain patent licenses, in effect making the program
-proprietary.  To prevent this, we have made it clear that any patent must
-be licensed for everyone's free use or not licensed at all.
-
-<P>
-The precise terms and conditions for copying, distribution and
-modification follow.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">T<SMALL>ERMS AND </SMALL>C<SMALL>ONDITIONS </SMALL>F<SMALL>OR </SMALL>C<SMALL>OPYING, </SMALL>D<SMALL>ISTRIBUTION AND
-  </SMALL>M<SMALL>ODIFICATION</SMALL></BIG>
-
-</DIV>
-
-<P>
-
-<OL>
-<LI><P>
-This License applies to any program or other work which contains a notice
-placed by the copyright holder saying it may be distributed under the
-terms of this General Public License.  The ``Program'', below, refers to
-any such program or work, and a ``work based on the Program'' means either
-the Program or any derivative work under copyright law: that is to say, a
-work containing the Program or a portion of it, either verbatim or with
-modifications and/or translated into another language.  (Hereinafter,
-translation is included without limitation in the term ``modification''.)
-Each licensee is addressed as ``you''.
-
-<P>
-Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running the Program is not restricted, and the output from the Program
-is covered only if its contents constitute a work based on the
-Program (independent of having been made by running the Program).
-Whether that is true depends on what the Program does.
-
-<P>
-</LI>
-<LI>You may copy and distribute verbatim copies of the Program's source
-  code as you receive it, in any medium, provided that you conspicuously
-  and appropriately publish on each copy an appropriate copyright notice
-  and disclaimer of warranty; keep intact all the notices that refer to
-  this License and to the absence of any warranty; and give any other
-  recipients of the Program a copy of this License along with the Program.
-
-<P>
-You may charge a fee for the physical act of transferring a copy, and you
-may at your option offer warranty protection in exchange for a fee.
-
-<P>
-</LI>
-<LI><P>
-You may modify your copy or copies of the Program or any portion
-of it, thus forming a work based on the Program, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-<P>
-
-<OL>
-<LI><P>
-You must cause the modified files to carry prominent notices stating that
-you changed the files and the date of any change.
-
-<P>
-</LI>
-<LI><P>
-You must cause any work that you distribute or publish, that in
-whole or in part contains or is derived from the Program or any
-part thereof, to be licensed as a whole at no charge to all third
-parties under the terms of this License.
-
-<P>
-</LI>
-<LI>If the modified program normally reads commands interactively
-when run, you must cause it, when started running for such
-interactive use in the most ordinary way, to print or display an
-announcement including an appropriate copyright notice and a
-notice that there is no warranty (or else, saying that you provide
-a warranty) and that users may redistribute the program under
-these conditions, and telling the user how to view a copy of this
-License.  (Exception: if the Program itself is interactive but
-does not normally print such an announcement, your work based on
-the Program is not required to print an announcement.)
-
-<P>
-</LI>
-</OL>
-
-<P>
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Program,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Program, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote it.
-
-<P>
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Program.
-
-<P>
-In addition, mere aggregation of another work not based on the Program
-with the Program (or with a work based on the Program) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-<P>
-</LI>
-<LI>You may copy and distribute the Program (or a work based on it,
-under Section 2) in object code or executable form under the terms of
-Sections 1 and 2 above provided that you also do one of the following:
-
-<P>
-
-<OL>
-<LI><P>
-Accompany it with the complete corresponding machine-readable
-source code, which must be distributed under the terms of Sections
-1 and 2 above on a medium customarily used for software interchange; or,
-
-<P>
-</LI>
-<LI><P>
-Accompany it with a written offer, valid for at least three
-years, to give any third party, for a charge no more than your
-cost of physically performing source distribution, a complete
-machine-readable copy of the corresponding source code, to be
-distributed under the terms of Sections 1 and 2 above on a medium
-customarily used for software interchange; or,
-
-<P>
-</LI>
-<LI><P>
-Accompany it with the information you received as to the offer
-to distribute corresponding source code.  (This alternative is
-allowed only for noncommercial distribution and only if you
-received the program in object code or executable form with such
-an offer, in accord with Subsection b above.)
-
-<P>
-</LI>
-</OL>
-
-<P>
-The source code for a work means the preferred form of the work for
-making modifications to it.  For an executable work, complete source
-code means all the source code for all modules it contains, plus any
-associated interface definition files, plus the scripts used to
-control compilation and installation of the executable.  However, as a
-special exception, the source code distributed need not include
-anything that is normally distributed (in either source or binary
-form) with the major components (compiler, kernel, and so on) of the
-operating system on which the executable runs, unless that component
-itself accompanies the executable.
-
-<P>
-If distribution of executable or object code is made by offering
-access to copy from a designated place, then offering equivalent
-access to copy the source code from the same place counts as
-distribution of the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-<P>
-</LI>
-<LI>You may not copy, modify, sublicense, or distribute the Program
-except as expressly provided under this License.  Any attempt
-otherwise to copy, modify, sublicense or distribute the Program is
-void, and will automatically terminate your rights under this License.
-However, parties who have received copies, or rights, from you under
-this License will not have their licenses terminated so long as such
-parties remain in full compliance.
-
-<P>
-</LI>
-<LI>You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Program or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Program (or any work based on the
-Program), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Program or works based on it.
-
-<P>
-</LI>
-<LI>Each time you redistribute the Program (or any work based on the
-Program), the recipient automatically receives a license from the
-original licensor to copy, distribute or modify the Program subject to
-these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties to
-this License.
-
-<P>
-</LI>
-<LI>If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Program at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Program by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Program.
-
-<P>
-If any portion of this section is held invalid or unenforceable under
-any particular circumstance, the balance of the section is intended to
-apply and the section as a whole is intended to apply in other
-circumstances.
-
-<P>
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system, which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-<P>
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-<P>
-</LI>
-<LI>If the distribution and/or use of the Program is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Program under this License
-may add an explicit geographical distribution limitation excluding
-those countries, so that distribution is permitted only in or among
-countries not thus excluded.  In such case, this License incorporates
-the limitation as if written in the body of this License.
-
-<P>
-</LI>
-<LI>The Free Software Foundation may publish revised and/or new versions
-of the General Public License from time to time.  Such new versions will
-be similar in spirit to the present version, but may differ in detail to
-address new problems or concerns.
-
-<P>
-Each version is given a distinguishing version number.  If the Program
-specifies a version number of this License which applies to it and ``any
-later version'', you have the option of following the terms and conditions
-either of that version or of any later version published by the Free
-Software Foundation.  If the Program does not specify a version number of
-this License, you may choose any version ever published by the Free Software
-Foundation.
-
-<P>
-</LI>
-<LI>If you wish to incorporate parts of the Program into other free
-programs whose distribution conditions are different, write to the author
-to ask for permission.  For software which is copyrighted by the Free
-Software Foundation, write to the Free Software Foundation; we sometimes
-make exceptions for this.  Our decision will be guided by the two goals
-of preserving the free status of all derivatives of our free software and
-of promoting the sharing and reuse of software generally.
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">
-N<SMALL>O </SMALL>W<SMALL>ARRANTY
-</SMALL></BIG>
-
-</DIV>
-
-<P>
-</LI>
-<LI>B<SMALL>ECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  </SMALL>E<SMALL>XCEPT WHEN
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
-PROVIDE THE PROGRAM ``AS IS'' WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  </SMALL>T<SMALL>HE ENTIRE RISK AS
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  </SMALL>S<SMALL>HOULD THE
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
-REPAIR OR CORRECTION.</SMALL>
-
-<P>
-</LI>
-<LI>I<SMALL>N NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
-POSSIBILITY OF SUCH DAMAGES.</SMALL>
-
-<P>
-</LI>
-</OL>
-
-<P>
-<DIV ALIGN="CENTER">
-<BIG CLASS="XLARGE">E<SMALL>ND OF </SMALL>T<SMALL>ERMS AND </SMALL>C<SMALL>ONDITIONS</SMALL></BIG>
-
-</DIV>
-
-<P>
-
-<P>
-
-<H2><A NAME="SECTION00071000000000000000">
-Appendix: How to Apply These Terms to Your New Programs</A>
-</H2>
-
-<P>
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
-<P>
-To do so, attach the following notices to the program.  It is safest to
-  attach them to the start of each source file to most effectively convey
-  the exclusion of warranty; and each file should have at least the
-  ``copyright'' line and a pointer to where the full notice is found.
-
-<P>
-<BLOCKQUOTE>
-one line to give the program's name and a brief idea of what it does. 
-<BR>
-Copyright (C) yyyy  name of author 
-<BR></BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>This program is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2 of the License, or
-(at your option) any later version.
-</BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-GNU General Public License for more details.
-</BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>You should have received a copy of the GNU General Public License
-along with this program; if not, write to the Free Software
-Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.
-
-</BLOCKQUOTE>
-
-<P>
-Also add information on how to contact you by electronic and paper mail.
-
-<P>
-If the program is interactive, make it output a short notice like this
-when it starts in an interactive mode:
-
-<P>
-<BLOCKQUOTE>
-Gnomovision version 69, Copyright (C) yyyy  name of author 
-<BR>
-Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 
-<BR>
-This is free software, and you are welcome to redistribute it
-under certain conditions; type `show c' for details.
-
-</BLOCKQUOTE>
-
-<P>
-The hypothetical commands <TT>show w</TT> and <TT>show c</TT> should show the
-appropriate parts of the General Public License.  Of course, the commands
-you use may be called something other than <TT>show w</TT> and <TT>show c</TT>;
-they could even be mouse-clicks or menu items--whatever suits your
-program.
-
-<P>
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a ``copyright disclaimer'' for the program, if
-necessary.  Here is a sample; alter the names:
-
-<P>
-<BLOCKQUOTE>
-Yoyodyne, Inc., hereby disclaims all copyright interest in the program 
-<BR>`Gnomovision' (which makes passes at compilers) written by James Hacker. 
-<BR></BLOCKQUOTE>
-<P>
-<BLOCKQUOTE>signature of Ty Coon, 1 April 1989 
-<BR>
-Ty Coon, President of Vice
-
-</BLOCKQUOTE>
-
-<P>
-This General Public License does not permit incorporating your program
-into proprietary programs.  If your program is a subroutine library, you
-may consider it more useful to permit linking proprietary applications
-with the library.  If this is what you want to do, use the GNU Library
-General Public License instead of this License.
-
-<P>
-
-<DIV CLASS="navigation"><HR>
-<!--Navigation Panel-->
-<A NAME="tex2html167"
-  HREF="node8.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html161"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html155"
-  HREF="node6.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html163"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html165"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Next:</B> <A NAME="tex2html168"
-  HREF="node8.html">Index</A>
-<B> Up:</B> <A NAME="tex2html162"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html156"
-  HREF="node6.html">5 C coding style</A>
- &nbsp; <B>  <A NAME="tex2html164"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html166"
-  HREF="node8.html">Index</A></B> </DIV>
-<!--End of Navigation Panel-->
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node8.html b/doc/ionnotes/node8.html
deleted file mode 100644 (file)
index d14a7c0..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>Index</TITLE>
-<META NAME="description" CONTENT="Index">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="next" HREF="node9.html">
-<LINK REL="previous" HREF="node7.html">
-<LINK REL="up" HREF="ionnotes.html">
-<LINK REL="next" HREF="node9.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<A NAME="tex2html180"
-  HREF="node9.html">
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next.png"></A> 
-<A NAME="tex2html176"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html170"
-  HREF="node7.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html178"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A>  
-<BR>
-<B> Next:</B> <A NAME="tex2html181"
-  HREF="node9.html">About this document ...</A>
-<B> Up:</B> <A NAME="tex2html177"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html171"
-  HREF="node7.html">A. The GNU General</A>
- &nbsp; <B>  <A NAME="tex2html179"
-  HREF="node1.html">Contents</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-<BR>
-
-<H2><A NAME="SECTION00080000000000000000">
-Index</A>
-</H2><HR><DL>
-<DD><STRONG>call handler</STRONG>
- : <A HREF="node4.html#489"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG><TT>destroy_obj</TT></STRONG>
- : <A HREF="node5.html#617"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>extl_call</TT></STRONG>
- : <A HREF="node4.html#513"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>extl_call_named</TT></STRONG>
- : <A HREF="node4.html#514"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>extl_dofile</TT></STRONG>
- : <A HREF="node4.html#515"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>extl_dostring</TT></STRONG>
- : <A HREF="node4.html#516"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG><TT>extl_set_safelist</TT></STRONG>
- : <A HREF="node4.html#517"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">3</SPAN></A>
-<DD><STRONG>ExtlFn</STRONG>
- : <A HREF="node4.html#520"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>ExtlTab</STRONG>
- : <A HREF="node4.html#519"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>mainloop_defer_action</TT></STRONG>
- : <A HREF="node5.html#619"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>mainloop_defer_destroy</TT></STRONG>
- : <A HREF="node5.html#618"><SPAN CLASS="arabic">4</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>manager</STRONG>
- : <A HREF="node2.html#295"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>Obj</STRONG>
- : <A HREF="node2.html#323"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>parent</STRONG>
- : <A HREF="node2.html#280"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">2</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG><TT>read_config_for</TT></STRONG>
- : <A HREF="node4.html#518"><SPAN CLASS="arabic">3</SPAN>.<SPAN CLASS="arabic">4</SPAN></A>
-<DD><STRONG>root window</STRONG>
- : <A HREF="node2.html#244"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>screen</STRONG><DL>
-<DD><STRONG>physical</STRONG> : <A HREF="node2.html#247"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>X</STRONG> : <A HREF="node2.html#245"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-</DL>
-<DD><STRONG>WClientWin</STRONG>
- : <A HREF="node2.html#325"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WEdln</STRONG>
- : <A HREF="node2.html#338"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WFrame</STRONG>
- : <A HREF="node2.html#329"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WGroup</STRONG>
- : <A HREF="node2.html#330"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WGroupCW</STRONG>
- : <A HREF="node2.html#332"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WGroupWS</STRONG>
- : <A HREF="node2.html#331"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WInput</STRONG>
- : <A HREF="node2.html#337"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WMessage</STRONG>
- : <A HREF="node2.html#339"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WObj</STRONG>
- : <A HREF="node3.html#426"><SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG>WObjDescr</STRONG>
- : <A HREF="node3.html#428"><SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG>WRegion</STRONG>
- : <A HREF="node2.html#324"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WRootWin</STRONG>
- : <A HREF="node2.html#328"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WScreen</STRONG>
- : <A HREF="node2.html#327"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WSplit</STRONG>
- : <A HREF="node2.html#335"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WTiling</STRONG>
- : <A HREF="node2.html#334"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>WWatch</STRONG>
- : <A HREF="node3.html#429"><SPAN CLASS="arabic">2</SPAN></A>
-<DD><STRONG>WWindow</STRONG>
- : <A HREF="node2.html#326"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-<DD><STRONG>Xinerama</STRONG>
- : <A HREF="node2.html#248"><SPAN CLASS="arabic">1</SPAN>.<SPAN CLASS="arabic">1</SPAN></A>
-
-</DL>
-
-<P>
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/node9.html b/doc/ionnotes/node9.html
deleted file mode 100644 (file)
index b3c05af..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
-
-<!--Converted with LaTeX2HTML 2002-2-1 (1.71)
-original version by:  Nikos Drakos, CBLU, University of Leeds
-* revised and updated by:  Marcus Hennecke, Ross Moore, Herb Swan
-* with significant contributions from:
-  Jens Lippmann, Marek Rouchal, Martin Wilck and others -->
-<HTML>
-<HEAD>
-<TITLE>About this document ...</TITLE>
-<META NAME="description" CONTENT="About this document ...">
-<META NAME="keywords" CONTENT="ionnotes">
-<META NAME="resource-type" CONTENT="document">
-<META NAME="distribution" CONTENT="global">
-
-<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
-<META NAME="Generator" CONTENT="LaTeX2HTML v2002-2-1">
-<META HTTP-EQUIV="Content-Style-Type" CONTENT="text/css">
-
-<LINK REL="STYLESHEET" HREF="ionnotes.css">
-
-<LINK REL="previous" HREF="node8.html">
-<LINK REL="up" HREF="ionnotes.html">
-</HEAD>
-
-<BODY >
-
-<DIV CLASS="navigation"><!--Navigation Panel-->
-<IMG WIDTH="37" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="next" SRC="next_g.png"> 
-<A NAME="tex2html186"
-  HREF="ionnotes.html">
-<IMG WIDTH="26" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="up" SRC="up.png"></A> 
-<A NAME="tex2html182"
-  HREF="node8.html">
-<IMG WIDTH="63" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="previous" SRC="prev.png"></A> 
-<A NAME="tex2html188"
-  HREF="node1.html">
-<IMG WIDTH="65" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="contents" SRC="contents.png"></A> 
-<A NAME="tex2html190"
-  HREF="node8.html">
-<IMG WIDTH="43" HEIGHT="24" ALIGN="BOTTOM" BORDER="0" ALT="index" SRC="index.png"></A> 
-<BR>
-<B> Up:</B> <A NAME="tex2html187"
-  HREF="ionnotes.html">Ion: Notes for the</A>
-<B> Previous:</B> <A NAME="tex2html183"
-  HREF="node8.html">Index</A>
- &nbsp; <B>  <A NAME="tex2html189"
-  HREF="node1.html">Contents</A></B> 
- &nbsp; <B>  <A NAME="tex2html191"
-  HREF="node8.html">Index</A></B> 
-<BR>
-<BR></DIV>
-<!--End of Navigation Panel-->
-
-<H1><A NAME="SECTION00090000000000000000">
-About this document ...</A>
-</H1>
- <STRONG>Ion: Notes for the module and patch writer</STRONG><P>
-This document was generated using the
-<A HREF="http://www.latex2html.org/"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version 2002-2-1 (1.71)
-<P>
-Copyright &#169; 1993, 1994, 1995, 1996,
-Nikos Drakos, 
-Computer Based Learning Unit, University of Leeds.
-<BR>
-Copyright &#169; 1997, 1998, 1999,
-<A HREF="http://www.maths.mq.edu.au/~ross/">Ross Moore</A>, 
-Mathematics Department, Macquarie University, Sydney.
-<P>
-The command line arguments were: <BR>
- <STRONG>latex2html</STRONG> <TT>-show_section_numbers -short_index -local_icons -noaddress -up_url http://iki.fi/tuomov/ion/ -up_title 'Ion homepage' -nofootnode -split 4 ionnotes</TT>
-<P>
-The translation was initiated by tuomov on 2007-09-27
-<BR><HR>
-
-</BODY>
-</HTML>
diff --git a/doc/ionnotes/prev.png b/doc/ionnotes/prev.png
deleted file mode 100644 (file)
index e60b8b4..0000000
Binary files a/doc/ionnotes/prev.png and /dev/null differ
diff --git a/doc/ionnotes/prev_g.png b/doc/ionnotes/prev_g.png
deleted file mode 100644 (file)
index 476d956..0000000
Binary files a/doc/ionnotes/prev_g.png and /dev/null differ
diff --git a/doc/ionnotes/up.png b/doc/ionnotes/up.png
deleted file mode 100644 (file)
index 3937e16..0000000
Binary files a/doc/ionnotes/up.png and /dev/null differ
diff --git a/doc/luaif.tex b/doc/luaif.tex
deleted file mode 100644 (file)
index 76789a7..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-
-\section{The Lua interface}
-
-This section finally describes the implementation details and how modules
-should us the Lua interface. First, in section \ref{sec:supptypes}
-we look at types supported by the interface, how objects are passed to Lua
-code and how Lua tables should be accessed from Ion and modules. In section
-\ref{sec:exporting} the methods for exporting functions and how they
-are called from Lua are explained and in section \ref{sec:calling} the
-method for calling Lua functions is explained.
-
-\subsection{Supported types}
-\label{sec:supptypes}
-
-The following types are supported in passing parameters between the
-C side of Ion and Lua:
-
-\begin{tabular}{rll}
-\hline
- Identifier
- character &   C type &        Description\\
-\hline
-       \spec{i} & \type{int} & Integer\\
-       \spec{s} & \type{char*} &       String\\
-       \spec{S} & \type{const char*} & Constant string\\
-       \spec{d} & \type{double} &\\
-       \spec{b} & \type{bool} &\\
-       \spec{t} & \type{ExtlTab}\indextype{ExtlTab} &
-                       Reference to Lua table\\
-       \spec{f} & \type{ExltFn}\indextype{ExtlFn} &
-                       Reference to Lua function.\\
-       \spec{o} & Any \type{WObj*} &\\
-\end{tabular}
-
-The difference between identifiers '\spec{s}' and '\spec{S}' is that constant
-strings as return values are not free'd by the level 1 call handler
-(see below) after passing to Lua (\code{lua_pushstring} always makes a
-copy) unlike normal strings. String parameters are always assumed to be
-the property of the caller and thus implicitly const.
-
-Likewise, if a reference to '\spec{t}' or '\spec{f}' is wished to be stored
-beyond the lifetime of a function receiving such as an argument, a new
-reference should be created with \code{extl_ref_table}/\code{fn}.
-References can be free'd with
-\code{extl_unref_table}/\code{fn}. References gotten as return values with
-the \code{extl_table_get} (how these work should be self-explanatory!)
-functions are property of the caller and should be unreferenced with the
-above-mentioned functions when no longer needed.
-The functions \code{extl_fn}/\code{table_none()}
-return the equivalent of NULL.
-
-\type{WObj}s are passed to Lua code with WWatch userdatas pointing to
-them so the objects can be safely deleted although Lua code might still be
-referencing them. (This is why SWIG or tolua would not have helped in
-creating the interface: extra wrappers for each function would still
-have been needed to nicely integrate into Ion's object system. Even in
-the case that Ion was written in C++ this would be so unless extra bloat
-adding pointer-like objects were used everywhere instead of pointers.)
-It may be sometimes necessary check in Lua code that a value known to
-be an Ion \type{WObj} is of certain type. This can be accomplished with
-\code{obj_is(obj, "typename")}. \code{obj_typename(obj)} returns type
-name for a \type{WObj}.
-
-
-\subsection{Exporting functions}
-\label{sec:exporting}
-
-Exported functions (those available to the extension language) are
-defined by placing \code{EXTL_EXPORT} before the function implementation
-in the C source. The script mkexports.pl is then used to automatically
-generate \file{exports.c} from the source files if
-\code{MAKE_EXPORTS=modulename}
-is specified in the Makefile. All pointers with type beginning with a 'W'
-are assumed to be pointers to something inheriting \type{WObj}. In
-addition to a table of exported functions and second level call handlers
-for these, \file{exports.c} will contain two functions
-\code{module_register_exports()} and
-\code{module_unregister_exports()} that should then be called in module
-initialisation and deinitialisation code.
-
-You've seen the terms level 1 and 2 call handler mentioned above. 
-\index{call handler}
-The Lua support code uses two so called call handlers to convert and check
-the types of parameters passed from Lua to C and back to Lua. The first
-one of these call handlers is the same for all exported functions and
-indeed lua sees all exported as the same C function (the L1 call handler)
-but with different upvalues passing a structure describing the actual
-function and the second level call handler. The L1 call handler checks
-that the parameters received from Lua match a template given as a string
-of the identifier characters defined above. If everything checks out ok,
-the parameters are then put in an array of C unions that can contain
-anyof these known types and the L2 call handler is called.
-
-The L2 call handler (which is automatically generated by the mkexports.pl
-script) for each exported function checks that the passed \type{WObj}s
-are of the more refined type required by the function and then calls the
-actual function. While the WObj checking could be done in the L1 handler
-too, the L2 call handlers are needed because we may not know how the target
-platform passes each parameter type to the called function. Thefore we
-must let the C compiler generate the code to convert from a simple and
-known enough parameter passing method (the unions) to the actual
-parameter passing method. When the called function returns everything
-is done in reverse order for return values (only one return value is
-supported by the generated L2 call handlers).
-
-
-\subsection{Calling Lua functions and code}
-\label{sec:calling}
-
-The functions
-\code{extl_call}\index{extl-call@\code{extl_call}},
-\code{extl_call_named}\index{extl-call-named@\code{extl_call_named}},
-\code{extl_dofile}\index{extl-dofile@\code{extl_dofile}} and
-\code{extl_dostring}\index{extl-dostring@\code{extl_dostring}}
-call a referenced function (\type{ExtlFn}), named function, execute a
-string and a file, respectively. The rest of the parameters for all these
-functions are similar. The 'spec' argument is a string of identifier
-characters (see above) describing the parameters to be passed. These
-parameters follow after 'rspec'. For dofile and dostring these parameters
-are passed in the global table arg (same as used for program command
-lien parameters) and for functions as you might expect. The parameter
-'rspec' is a similar description of return values. Pointers to variables
-that should be set to the return values follow after the input values.
-The return value of all these functions tells if the call and parameter
-passing succeeded or not.
-
-Sometimes it is necessary to block calls to all but a limited set of
-Ion functions. This can be accomplished with
-\code{extl_set_safelist}\index{extl-set-safelist@\code{extl_set_safelist}}.
-The parameter to this function is a NULL-terminated array of strings
-and the return value is a similar old safelist.
-The call \code{extl_set_safelist(NULL)} removes any safelist and allows
-calls to all exported functions.
-
-
-\subsection{Miscellaneous notes}
-
-Configuration files should be read as before with the function
-\code{read_config_for}\index{read-config-for@\code{read_config_for}}
-except that the list of known options is no longer present.
-
-Winprops are now stored in Lua tables and can contain arbitrary
-properties. The 'proptab' entry in each \type{WClientWin} is a reference
-to a winprop table or \code{extl_table_none()} if such does not exist
-and properties may be read with the \code{extl_table_gets} functions.
-(It is perfectly legal to pass \code{extl_table_none()} references to
-\code{extl_table_get*}.)
-
diff --git a/doc/macros.tex b/doc/macros.tex
deleted file mode 100644 (file)
index 134aeed..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-\usepackage{babel}
-\usepackage[latin1]{inputenc}
-\usepackage[dvipdfm]{hyperref}
-\usepackage{ae}
-\usepackage{url}
-\usepackage{html}
-%\usepackage{graphicx}
-%\usepackage{color}
-\usepackage{makeidx}
-\usepackage{tabularx}
-\usepackage{textcomp}
-\usepackage[nottoc]{tocbibind}
-\usepackage{enumerate} % GNU FDL needs this
-\usepackage[a4paper]{geometry}
-\usepackage{calc}
-
-% URL settings
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\urlstyle{tt}
-
-% listings package
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%begin{latexonly}
-\usepackage{listings}
-
-\lstset{
-  extendedchars=true,
-  breaklines=true,
-  basicstyle=\tt,
-  alsoletter={",},
-  alsoother={\_},
-}
-%end{latexonly}
-
-% Some markup
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\newcommand{\note}[1]{\color{red}**#1**}
-\newcommand{\file}[1]{\emph{#1}}
-\newcommand{\type}[1]{#1}
-\newcommand{\spec}[1]{#1}
-\newcommand{\indextype}[1]{\index{#1@\type{#1}}}
-
-%begin{latexonly}
-\newcommand{\key}[1]{\mbox{\textbf{#1}}}
-\newcommand{\code}[1]{\lstinline!#1!}
-\newcommand{\codestr}[1]{`\texttt{#1}'}
-\newcommand{\var}[1]{\lstinline!#1!}
-\newcommand{\command}[1]{\lstinline!#1!}
-
-\newcommand{\hyperlabel}[1]{\hypertarget{#1}{}\label{#1}}
-\newcommand{\fnrefx}[2]{\hyperlink{fn:#1.#2}{\code{#2}}}
-\newcommand{\fnref}[1]{\hyperlink{fn:#1}{\code{#1}}}
-\newcommand{\myhref}[2]{\hyperlink{#1}{#2}}
-
-%end{latexonly}
-\begin{htmlonly}
-    
-\newcommand{\key}[1]{\textbf{#1}}
-\newcommand{\code}[1]{\texttt{#1}}
-\newcommand{\codestr}[1]{`\texttt{#1}'}
-\newcommand{\var}[1]{\texttt{#1}}
-\newcommand{\command}[1]{\texttt{#1}}
-
-\newcommand{\hyperlabel}[1]{\label{#1}}
-\newcommand{\fnref}[1]{\htmlref{\texttt{#1}}{fn:#1}}
-\newcommand{\fnrefx}[2]{\htmlref{\texttt{#2}}{fn:#1.#2}}
-\newcommand{\myhref}[2]{\htmlref{#2}{#1}}
-
-\end{htmlonly}
-
-\newcommand{\tabhead}[1]{\hline #1 \\ \hline}
-
-% function tables
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%begin{latexonly}
-
-\newcommand{\funclistlabel}[1]{#1\hfill}
-\newenvironment{function}{
-  \pagebreak[3]
-  \begin{list}{}{
-        \settowidth{\labelwidth}{Description:}
-        \setlength{\leftmargin}{\labelwidth}
-        \addtolength{\leftmargin}{0.5em}
-        \setlength{\labelsep}{0.5em}
-        \setlength{\itemsep}{0pt}
-        \setlength\parsep{0pt}
-        \setlength\topsep{0pt}
-        %\setlength{\itemsep}{-\parskip}
-        %\addtolength{\itemsep}{\lineskip}
-        \let\makelabel\funclistlabel
-  }
-}{
-  \end{list}
-}
-
-%end{latexonly}
-\begin{htmlonly}
-
-\newenvironment{function}{
-  \begin{description}
-}{
-  \end{description}
-}
-
-\end{htmlonly}
-
-
-\newcommand{\synopsis}[1]{
-  \item[Synopsis:] \code{#1}
-}
-\newcommand{\funcname}[1]{
-  \item[Function:] \code{#1}
-}
-\newcommand{\hookname}[1]{
-  \item[Hook name:] \hyperlabel{#1}\code{#1}
-}
-\newcommand{\hookparams}[1]{
-  \item[Parameters:] \code{#1}
-}
-\newenvironment{funcdesc}{
-  \item[Description:]
-}{}
-
-
-% While rapport3/artikel3 are otherwise nice classes, 
-% itemize looks awful.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%begin{latexonly}
-\makeatletter
-\renewenvironment{itemize}{%
-  \ifnum \@itemdepth >3
-    \@toodeep
-  \else
-    \advance\@itemdepth \@ne
-    \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
-    \list{\csname\@itemitem\endcsname}%
-         {%
-            \if@revlabel
-              \def\makelabel##1{\hskip .5\unitindent{\hfil ##1}}\else
-                                                   %^^^^^^^^^ Changed
-              \def\makelabel##1{\hfil ##1}
-                              %^^^^^^^^^ Changed
-            \fi
-          }%
-  \fi}
- {\global\@ignoretrue \endlist}
-\makeatletter
-%end{latexonly}
diff --git a/doc/miscref.tex b/doc/miscref.tex
deleted file mode 100644 (file)
index 44b0818..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-
-\subsection{Size policies}
-\label{sec:sizepolicies}
-
-Some functions accept a \var{sizepolicy} parameter. The possible
-values are: 
-
-\begin{flushleft}
-\codestr{default},
-\codestr{full},
-\codestr{full\_bounds},
-\codestr{free},
-\codestr{free\_glue},
-\codestr{northwest},
-\codestr{north},
-\codestr{northeast},
-\codestr{west},
-\codestr{center},
-\codestr{east},
-\codestr{southwest},
-\codestr{south},
-\codestr{southeast},
-\codestr{stretch\_top},
-\codestr{stretch\_bottom},
-\codestr{stretch\_left},
-\codestr{stretch\_right},
-\codestr{free\_glue\_northwest},
-\codestr{free\_glue\_north},
-\codestr{free\_glue\_northeast},
-\codestr{free\_glue\_west},
-\codestr{free\_glue\_center},
-\codestr{free\_glue\_east},
-\codestr{free\_glue\_southwest},
-\codestr{free\_glue\_south}, and
-\codestr{free\_glue\_southeast}.
-\end{flushleft}
-
-The ``free'' policies allow the managed
-object to be moved around, whereas the other versions do not. 
-The ``glue'' policies glue the object to some border, while allowing
-it to be moved away from it by user action, but not automatically.
-The ``stretch'' policies stretch the object along the given border,
-while the coordinate-based policies simply place the object along 
-that border.
diff --git a/doc/objects.tex b/doc/objects.tex
deleted file mode 100644 (file)
index b9de147..0000000
+++ /dev/null
@@ -1,246 +0,0 @@
-
-\section{Class and object hierarchies}
-\label{sec:objects}
-
-While Ion does not not have a truly object-oriented design
-\footnote{the author doesn't like such artificial designs},
-things that appear on the computer screen are, however, quite
-naturally expressed as such ``objects''. Therefore Ion implements
-a rather primitive OO system for these screen objects and some
-other things. 
-
-It is essential for the module writer to learn this object
-system, but also people who write their own binding configuration files
-necessarily come into contact with the class and object hierarchies
--- you need to know which binding setup routines apply where, 
-and what functions can be used as handlers in which bindings.
-It is the purpose of this section to attempt to explain these 
-hierarchies. If you do not wish the read the full section, at least
-read the summary at the end of it, so that you understand the very
-basic relations.
-
-For simplicity we consider only the essential-for-basic-configuration
-Ioncore, \file{mod\_tiling} and \file{mod\_query} classes. 
-See Appendix \ref{app:fullhierarchy} for the full class hierarchy visible
-to Lua side.
-
-\subsection{Class hierarchy}
-
-One of the most important principles of object-oriented design methodology
-is inheritance; roughly how classes (objects are instances of classes)
-extend on others' features. Inheritance gives rise to class hierarchy.
-In the case of single-inheritance this hierarchy can be expressed as a
-tree where the class at the root is inherited by all others below it
-and so on. Figure \ref{fig:classhierarchy} lists out the Ion class 
-hierarchy and below we explain what features of Ion the classes 
-implement.
-
-\begin{figure}
-\begin{htmlonly}
-\docode % latex2html kludge
-\end{htmlonly}
-\begin{verbatim}
-    Obj
-     |-->WRegion
-     |    |-->WClientWin
-     |    |-->WWindow
-     |    |    |-->WMPlex
-     |    |    |    |-->WFrame
-     |    |    |    |-->WScreen
-     |    |    |         |-->WRootWin
-     |    |    |-->WInput (mod_query)
-     |    |         |-->WEdln (mod_query)
-     |    |         |-->WMessage (mod_query)
-     |    |-->WGroup
-     |    |    |-->WGroupWS
-     |    |    |-->WGroupCW
-     |    |-->WTiling (mod_tiling)
-     |-->WSplit (mod_tiling)
-\end{verbatim}
-\caption{Partial Ioncore, \file{mod\_tiling} and \file{mod\_query} 
-    class hierarchy.}
-\label{fig:classhierarchy}
-\end{figure}
-
-The core classes:
-
-\begin{description}
-  \item[\type{Obj}]\indextype{Obj}
-    Is the base of Ion's object system.
-
-  \item[\type{WRegion}]\indextype{WRegion}
-    is the base class for everything corresponding to something on the
-    screen. Each object of type \type{WRegion} has a size and  position
-    relative to the parent \type{WRegion}. While a big part of Ion 
-    operates on these instead of more specialised classes, \type{WRegion}
-    is a ``virtual''  base class in that there are no objects of ``pure''
-    type \type{WRegion}; all concrete regions are objects of some class 
-    that inherits \type{WRegion}.
-
-  \item[\type{WClientWin}]\indextype{WClientWin} is a class for
-    client window objects, the objects that window managers are
-    supposed to manage.
-
-  \item[\type{WWindow}]\indextype{WWindow} is the base class for all
-    internal objects having an X window associated to them
-    (\type{WClientWins} also have X windows associated to them).
-    
-  \item[\type{WMPlex}] is a base class for all regions that ``multiplex'' 
-    other regions. This means that of the regions managed by the multiplexer,
-    only one can be displayed at a time. 
-  
-  \item[\type{WScreen}]\indextype{WScreen} is an instance of \type{WMPlex}
-    for screens.
-    
-  \item[\type{WRootWin}]\indextype{WRootWin} is the class for
-    root windows\index{root window} of X screens\index{screen!X}.
-    It is an instance of \type{WScreen}.
-    Note that an ``X screen'' or root window is not necessarily a
-    single physical screen\index{screen!physical} as a root window
-    may be split over multiple screens when ugly hacks such as 
-    Xinerama\index{Xinerama} are used. (Actually there can be only 
-    one root window when Xinerama is used.) 
-    
-  \item[\type{WFrame}]\indextype{WFrame} is the class for frames.
-    While most Ion's objects have no graphical presentation, frames 
-    basically add to \type{WMPlex}es the decorations around client 
-    windows (borders, tabs).
-    
-  \item[\type{WGroup}]\indextype{WGroup} is the base class for groups.
-    Particular types of groups are workspaces 
-    (\type{WGroupWS}\indextype{WGroupWS})
-    and groups of client windows
-    (\type{WGroupCW}\indextype{WGroupCW}).
-\end{description}
-
-
-Classes implemented by the \file{mod\_tiling} module:
-
-\begin{description}
-  \item[\type{WTiling}]\indextype{WTiling} is the class for tilings
-    of frames.
-  \item[\type{WSplit}]\indextype{WSplit} (or, more specifically, classes
-    that inherit it) encode the \type{WTiling} tree structure.
-\end{description}
-
-
-Classes implemented by the \file{mod\_query} module:
-
-\begin{description}
-  \item[\type{WInput}]\indextype{WInput} is a virtual base class for the
-    two classes below.
-  \item[\type{WEdln}]\indextype{WEdln} is the class for the ``queries'',
-    the text inputs that usually appear at bottoms of frames and sometimes
-    screens. Queries are the functional equivalent of ``mini buffers'' in
-    many text editors.
-  \item[\type{WMessage}]\indextype{WMessage} implements the boxes for 
-    warning and other messages that Ion may wish to display to the user. 
-    These also usually appear at bottoms of frames.
-\end{description}
-
-There are also some other ``proxy'' classes that do not refer
-to objects on the screen. The only important one of these for
-basic configuration is \type{WMoveresMode} that is used for
-binding callbacks in the move and resize mode.
-
-
-\subsection{Object hierarchies: \type{WRegion} parents and managers}
-
-\subsubsection{Parent--child relations}
-Each object of type \type{WRegion} has a parent and possibly a manager
-associated to it. The parent\index{parent} for an object is always a 
-\type{WWindow} and for \type{WRegion} with an X window (\type{WClientWin},
-\type{WWindow}) the parent \type{WWindow} is given by the same relation of
-the X windows. For other \type{WRegion}s the relation is not as clear.
-There is generally very few restrictions other than the above on the
-parent---child relation but the most common is as described in
-Figure \ref{fig:parentship}.
-
-\begin{figure}
-\begin{htmlonly}
-\docode % latex2html kludge
-\end{htmlonly}
-\begin{verbatim}
-    WRootWins
-     |-->WScreens
-          |-->WGroupWSs
-          |-->WTilings
-          |-->WClientWins in full screen mode
-          |-->WFrames
-               |-->WGroupCWs
-               |-->WClientWins
-               |-->WFrames for transients
-               |-->a possible WEdln or WMessage
-\end{verbatim}
-\caption{Most common parent--child relations}
-\label{fig:parentship}
-\end{figure}
-
-\type{WRegion}s have very little control over their children as a parent.
-The manager\index{manager} \type{WRegion} has much more control over its
-managed \type{WRegion}s. Managers, for example, handle resize requests,
-focusing and displaying of the managed regions. Indeed the manager---managed
-relationship gives a better picture of the logical ordering of objects on
-the screen. Again, there are generally few limits, but the most common
-hierarchy is given in Figure \ref{fig:managership}. Note that sometimes
-the parent and manager are the same object and not all objects may have
-a manager (e.g. the dock in the dock module at the time of writing this)
-but all have a parent--a screen if not anything else.
-
-\subsubsection{Manager--managed relations}
-
-\begin{figure}
-\begin{htmlonly}
-\docode % latex2html kludge
-\end{htmlonly}
-\begin{verbatim}
-    WRootWins
-     |-->WScreens
-          |-->WGroupCWs for full screen WClientWins
-          |    |-->WClientWins
-          |    |-->WFrames for transients (dialogs)
-          |         |--> WClientWin
-          |-->WGroupWSs for workspaces
-          |    |-->WTiling
-          |    |    |-->WFrames
-          |    |    |    |-->WGroupCWs (with contents as above)
-          |    |    |-->possibly a WStatusBar or WDock
-          |    |-->WFrames for floating content
-          |    |-->possibly a WEdln, WMessage or WMenu
-          |    |-->possibly a WStatusBar or WDock (if no tiling)
-          |-->WFrames for sticky stuff, such as the scratchpad
-\end{verbatim}
-\caption{Most common manager--managed relations}
-\label{fig:managership}
-\end{figure}
-
-Note that a workspace can manage another workspace. This can be
-achieved with the \fnref{attach_new} function, and allows you to nest
-workspaces as deep as you want.
-
-%Note how the \type{WClientWin}s managed by \type{WFloatFrame}s don't have
-%transients managed by them. This is because WFloatWSs choose to handle
-%transients differently (transients are put in separate frames like normal
-%windows).
-
-\subsection{Summary}
-
-In the standard setup, keeping queries, messages and menus out of
-consideration:
-
-\begin{itemize}
-  \item The top-level objects that matter are screens and they correspond
-    to physical screens. The class for screens is \type{WScreen}.
-  \item Screens contain (multiplex) groups (\type{WGroup}) and other 
-    objects, such as \type{WFrames}. Some of these are mutually exclusive
-    to be viewed at a time.
-  \item Groups of the specific kind \type{WGroupWS} often contain a
-    \type{WTiling} tiling for tiling frames (\type{WFrame}), but 
-    groups may also directly contain floating frames.
-  \item Frames are the objects with decorations such as tabs and borders.
-    Frames contain (multiplex) among others (groups of) client windows, 
-    to each of which corresponds a tab in the frame's decoration. Only 
-    one client window (or other object) can be shown at a time in each 
-    frame. The class for client windows is \type{WClientWin}.
-\end{itemize}
-
diff --git a/doc/objectsimpl.tex b/doc/objectsimpl.tex
deleted file mode 100644 (file)
index a224aa5..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-\section{Object system implementation}
-
-First, to get things clear, what are considered objects here are C
-structures containing a properly initialised \type\indextype{WObj}
-structure defined in \file{ioncore/obj.h} as the first element (or the
-first element of the structure which is the first element and so on which
-gives rise to inheritance). The \type{WObj} structure contains a pointer
-to a \type{WObjDescr}\indextype{WObjDescr} class type info structure and
-a list of so called ``watches''. The \type{WObjDescr} structure simply
-lists the class name, a table of dynamic functions and a pointer to
-deinitialisation function (or ``destructor'').
-
-Ion does not do any reference counting, garbage collecting or other
-fancy things related to automatic safe freeing of objects with its
-simplistic object system. Instead special watches (the \type{WWatch}
-\indextype{WWatch} structure) may be used to create safe references to
-objects that might be destroyed during the time the specific pointer is
-needed. When an object is destroyed, its list of watches is processed,
-setting the pointers in the watches to NULL and the watch handlers for
-each watch are called. 
diff --git a/doc/predist.sh b/doc/predist.sh
deleted file mode 100644 (file)
index 31e7405..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#!/bin/sh
-
-##
-## Versioning
-##
-
-pwd=`pwd`
-dir=`basename "$pwd"`
-
-release=`echo "$dir"|sed 's/^.\+-\([^-]\+-[0-9]\+\)$/\1/p; d'`
-
-if test "$release" == ""; then
-    echo "Invalid package name $dir."
-    exit 1
-fi
-
-##
-## Ion path
-##
-
-if test "$ION_PATH" = ""; then
-    ION_PATH="../ion-${release}"
-fi
-
-##
-## Build
-##
-
-set -e
-
-d=`echo $release|sed 's/[^-]\+-\(....\)\(..\)\(..\)/\1-\2-\3/'`
-
-perl -p -i -e "s/%%DATE/\\\\date{$d}/" ionconf.tex
-sed "s:^TOPDIR=.*:TOPDIR=${ION_PATH}:" Makefile > Makefile.tmp
-make -f Makefile.tmp all
-make -f Makefile.tmp all-ps
-make -f Makefile.tmp clean
-rm Makefile.tmp
-gzip *.dvi *.ps
diff --git a/doc/prelim.tex b/doc/prelim.tex
deleted file mode 100644 (file)
index 8a0a6c3..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-
-\chapter{Preliminaries: Key concepts and relations}
-\label{chap:prelim}
-
-The purpose of this chapter to explain some of key concepts and
-relations you need to understand before reading the following
-chapters. These include modules explained in section \ref{sec:modules}
-and the Ion class and object hierarchies, section \ref{sec:objects}.
-
-
-\section{Modules}
-\label{sec:modules}
-
-Ion has been designed so that the 'ion' executable only implements some
-basic services on top of which very different kinds of window managers
-could be build by loading the appropriate 'modules'. On modern system
-these modules are simply dynamically loaded \file{.so} libraries. On 
-more primitive systems, or if you want to squeeze total size of the 
-executable and libraries, the modules can optionally be statically 
-linked to the main binary, but must nevertheless be loaded with the
-\fnref{dopath} function. Modules may also include Lua code.
-
-If no modules are loaded, all client windows appear in full screen mode.
-To get better window management support, one or more workspace modules
-should be loaded. Currently Ion provides the following modules:
-
-\begin{description}
-    \item[\file{mod\_tiling}] Tilings for workspaces of the original tiled
-       Ion kind.
-    \item[\file{mod\_query}] Queries (for starting programs and so on)
-      and message boxes.
-    \item[\file{mod\_menu}] Support for menus, both pull-down and
-      keyboard-operated in-frame menus.
-    \item[\file{mod\_statusbar}] Module that implements a statusbar that
-      can be adaptively embedded in each workspace's layout.
-    \item[\file{mod\_dock}] Module for docking Window Maker dock-apps.
-      The dock can both float and be embedded as the statusbar.
-    \item[\file{mod\_sp}] This module implements a scratchpad frame that can
-      be toggled on/off everywhere. Think of the 'console' in some 
-      first-person shooters.
-    \item[\file{mod\_sm}] Session management support module.
-      \emph{Loaded automatically when needed!}
-\end{description}
-
-So-called drawing engines are also implemented as a modules,
-but they are not discussed here; see chapter \ref{chap:gr}.
-
-The stock configuration for the \file{ion3} executable loads all of the 
-modules mentioned above except \file{mod\_dock}.
-The stock configuration for the \file{pwm3} executable (which differs
-from the \file{ion3} executable in a few configuration details)
-loads another set of modules.
-
-
-\input{objects}
diff --git a/doc/rapport3.perl b/doc/rapport3.perl
deleted file mode 100644 (file)
index 77b2cbd..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# rapport3.perl by Tuomo Valkonen, <tuomov at iki.fi>, 2003-05-10
-#
-# Implementation of the documentclass for latex2html. Just make some
-# sectioning commands saner and load report.
-#
-
-package main;
-
-#
-# Sections should start at H2 instead of the insane default H1.
-#
-
-%standard_section_headings =
-  ('part' , 'H1' , 'chapter' , 'H1', 'section', 'H2', 'subsection', 'H3'
-      , 'subsubsection', 'H4', 'paragraph', 'H4', 'subparagraph', 'H5');
-
-&generate_sectioning_subs;
-
-%section_headings =
-  ('partstar' , 'H1' , 'chapterstar' , 'H1', 'sectionstar', 'H2'
-      , 'subsectionstar', 'H3', 'subsubsectionstar', 'H4', 'paragraphstar'
-      , 'H4', 'subparagraphstar', 'H5', %section_headings);
-
-#
-# These should be chapters in a report
-#
-
-%section_headings =
-  ('tableofcontents', 'H1', 'listoffigures', 'H1', 'listoftables', 'H1'
-      , 'bibliography', 'H1', 'textohtmlindex', 'H1'
-      , %standard_section_headings
-      , %section_headings);
-
-
-&do_require_package("report");
-
-1;
-
diff --git a/doc/statusd.tex b/doc/statusd.tex
deleted file mode 100644 (file)
index 82e70eb..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-
-\section{Writing \command{ion-statusd} monitors}
-\label{sec:statusd}
-
-All statusbar meters that do not monitor the internal state of Ion should
-go in the separate \command{ion-statusd} program. 
-
-Whenever the user requests a meter \codestr{\%foo} or \codestr{\%foo\_bar} to 
-be  inserted in a statusbar, \file{mod\_statusbar} asks \command{ion-statusd} 
-to load \fnref{statusd_foo.lua} on its search path (same as that for Ion-side 
-scripts). This script should then supply all meters with the initial part
-\codestr{foo}.
-
-To provide this value, the script should simply call \code{statusd.inform}
-with the name of the meter and the value as a string.
-Additionally the script should provide a 'template' for the meter to
-facilitate expected width calculation by \file{mod\_statusbar}, and
-may provide a 'hint' for colour-coding the value. The interpretation
-of hints depends on the graphical style in use, and currently the
-stock styles support the \codestr{normal}, \codestr{important} and 
-\codestr{critical} hints.
-
-
-In our example of the 'foo monitor', at script initialisation we might broadcast
-the template as follows:
-
-\begin{verbatim}
-statusd.inform("foo_template", "000")
-\end{verbatim}
-
-To inform \file{mod\_statusbar} of the actual value of the meter and
-indicate that the value is critical if above 100, we might write the
-following function:
-
-\begin{verbatim}
-local function inform_foo(foo)
-    statusd.inform("foo", tostring(foo))
-    if foo>100 then
-        statusd.inform("foo_hint", "critical")
-    else
-        statusd.inform("foo_hint", "normal")
-    end
-end    
-\end{verbatim}
-    
-To periodically update the value of the meter, we must use timers.
-First we must create one:
-
-\begin{verbatim}
-local foo_timer=statusd.create_timer()
-\end{verbatim}
-
-Then we write a function to be called whenever the timer expires.
-This function must also restart the timer.
-
-\begin{verbatim}
-local function update_foo()
-    local foo= ... measure foo somehow ...
-    inform_foo(foo)
-    foo_timer:set(settings.update_interval, update_foo)
-end
-\end{verbatim}
-
-Finally, at the end of our script we want to do the initial
-measurement, and set up timer for further measurements:
-
-\begin{verbatim}
-update_foo()
-\end{verbatim}
-
-
-If our scripts supports configurable parameters, the following code
-(at the beginning of the script) will allow them to be configured in
-\file{cfg\_statusbar.lua} and passed to the status daemon and our script:
-
-\begin{verbatim}
-local defaults={
-    update_interval=10*1000, -- 10 seconds
-}
-                
-local settings=table.join(statusd.get_config("foo"), defaults)
-\end{verbatim}
diff --git a/doc/tricks.tex b/doc/tricks.tex
deleted file mode 100644 (file)
index b999688..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-
-\chapter{Scripting}
-\label{chap:tricks}
-
-This chapter documents some additional features of the Ion configuration
-and scripting interface that can be used for more advanced scripting than
-the basic configuration explained in chapter \ref{chap:config}.
-
-\section{Hooks}
-\label{sec:hooks}
-
-Hooks are lists of functions to be called when a certain event occurs.
-There are two types of them; normal and ``alternative'' hooks. Normal
-hooks do not return anything, but alt-hooks should return a boolean
-indicating whether it handled its assigned task successfully. In the case
-that \var{true} is returned, remaining handlers are not called.
-
-Hook handlers are registered by first finding the hook
-with \fnref{ioncore.get_hook} and then calling \fnref{WHook.add}
-on the (successful) result with the handler as parameter. Similarly
-handlers are unregistered with \fnref{WHook.remove}. For example:
-
-\begin{verbatim}
-ioncore.get_hook("ioncore_snapshot_hook"):add(
-    function() print("Snapshot hook called.") end
-)
-\end{verbatim}
-
-In this example the hook handler has no parameters, but many hook
-handlers do. The types of parameters for each hook are listed in
-the hook reference, section \ref{sec:hookref}.
-
-Note that many of the hooks are called in ``protected mode'' and can not 
-use any functions that modify Ion's internal state. 
-
-
-\section{Referring to regions}
-
-\subsection{Direct object references}
-
-All Ion objects are passed to Lua scripts as 'userdatas', and you may
-safely store such object references for future use. The C-side object
-may be destroyed while Lua still refers to the object. All exported
-functions gracefully fail in such a case, but if you need to explicitly
-test that the C-side object still exists, use \fnref{obj_exists}.
-
-As an example, the following short piece of code implements 
-bookmarking:
-
-\begin{verbatim}
-local bookmarks={}
-
--- Set bookmark bm point to the region reg
-function set_bookmark(bm, reg)
-    bookmarks[bm]=reg
-end
-
--- Go to bookmark bm
-function goto_bookmark(bm)
-    if bookmarks[bm] then
-        -- We could check that bookmarks[bm] still exists, if we
-        -- wanted to avoid an error message.
-        bookmarks[bm]:goto()
-    end
-end
-\end{verbatim}
-
-\subsection{Name-based lookups}
-
-If you want to a single non-\type{WClientWin} region with an exact known 
-name, use \fnref{ioncore.lookup_region}. If you want a list of all regions,
-use \fnref{ioncore.region_list}. Both functions accept an optional argument
-that can be used to specify that the returned region(s) must be of a more 
-specific type. Client windows live in a different namespace and for them
-you should use the equivalent functions \fnref{ioncore.lookup_clientwin}
-and \fnref{ioncore.clientwin_list}.
-
-To get the name of an object, use \fnref{WRegion.name}. Please be
-aware, that the names of client windows reflect their titles and
-are subject to changes. To change the name of a non-client window
-region, use \fnref{WRegion.set_name}.
-
-
-\section{Alternative winprop selection criteria}
-
-It is possible to write more complex winprop selection routines than
-those described in section \ref{sec:winprops}. To match a particular
-winprop using whatever way you want to, just set the \var{match}
-field of the winprop to a function that receives the client window
-as its sole parameter, and that returns \code{true} if the winprop
-matches, and \code{false} otherwise.
-
-The class, instance and role properties can be obtained with
-\fnref{WClientWin.get_ident}, and the title with \fnref{WRegion.name}.
-If you want to match against (almost) arbitrary window properties,
-have a look at the documentation for the following functions, and
-their standard Xlib counterparts: \fnref{ioncore.x_intern_atom}
-(XInternAtom), \fnref{ioncore.x_get_window_property} (XGetWindowProperty),
-and \fnref{ioncore.x_get_text_property} (XGetTextProperty).
-
-
-\input{statusd}
-
index 6b0ce6ac57639d68e6ba42a4e5c57b8c5e0cd739..7d9d05643182f3ee93b6fc9952d7fda96d80a447 100644 (file)
@@ -1,5 +1,5 @@
 
 Context:
 
-[TAG ion-3rc-20070927
-Tuomo Valkonen <tuomov@iki.fi>**20070927162233
+[TAG ion-3rc-20071109
+Tuomo Valkonen <tuomov@iki.fi>**20071109144719
index 72c74060e4d6d1278b4866147c5b7e2b36e55fa3..2d24fee42c70d7fc31db0200e30a6e01c5cbb717 100644 (file)
@@ -145,7 +145,6 @@ static WGroup *find_group(WRegion *reg, uint *level)
 
 bool ioncore_detach(WRegion *reg, int sp)
 {
-    WPHolder *ph=region_get_return(reg);
     WFrameMode mode;
     WGroup *grp;
     bool set, nset;
@@ -183,15 +182,17 @@ bool ioncore_detach(WRegion *reg, int sp)
 
 
 /*EXTL_DOC
- * Detach or reattach \var{reg}, depending on whether \var{how}
- * is \codestr{set}, \codestr{unset} or \codestr{toggle}. (Detaching 
- * means making \var{reg} managed by its nearest ancestor \type{WGroup},
- * framed if \var{reg} is not itself \type{WFrame}. Reattaching means 
- * making it managed where it used to be managed, if a return-placeholder
- * exists.)
- * If \var{reg} is the `bottom' of some group, the whole group is
- * detached. If \var{reg} is a \type{WWindow}, it is put into a 
- * frame.
+ * Detach or reattach \var{reg} or any group it is the leader of
+ * (see \fnref{WRegion.groupleader_of}), depending on whether \var{how} 
+ * is \codestr{set}, \codestr{unset} or \codestr{toggle}. If this
+ * region is not a window, it is put into a frame.
+ *
+ * Detaching a region means having it managed by its nearest ancestor
+ * \type{WGroup}. Reattaching means having it managed where it used 
+ * to be managed, if a ``return placeholder'' exists.
+ *
+ * Additionally, setting \var{how} to \codestr{forget}, can be used to
+ * clear this return placeholder of the group leader of \var{reg}.
  */
 EXTL_EXPORT_AS(ioncore, detach)
 bool ioncore_detach_extl(WRegion *reg, const char *how)
@@ -199,6 +200,11 @@ bool ioncore_detach_extl(WRegion *reg, const char *how)
     if(how==NULL)
         how="set";
     
+    if(strcmp(how, "forget")==0){
+        region_unset_return(region_groupleader_of(reg));
+        return FALSE;
+    }
+    
     return ioncore_detach(reg, libtu_string_to_setparam(how));
 }
 
index 97f33b3068401f616a1d65bf4bf3dd08a9bc59d3..32771a0c990ac40acdace78a27658725905554b7 100644 (file)
@@ -123,7 +123,8 @@ int ioncore_exec(const char *cmd)
 
 
 /*EXTL_DOC
- * Run \var{cmd} with a read pipe connected to its stdout and stderr.
+ * Run \var{cmd} in directory \var{wd} with a read pipe connected to its
+ * stdout and stderr.
  * When data is received through one of these pipes, \var{h} or \var{errh} 
  * is called with that data. When the pipe is closed, the handler is called
  * with \code{nil} argument. The PID of the new process is returned, or
@@ -131,12 +132,13 @@ int ioncore_exec(const char *cmd)
  */
 EXTL_SAFE
 EXTL_EXPORT
-int ioncore_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh)
+int ioncore_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh,
+                         const char *wd)
 {
     WExecP p;
     
     p.target=NULL;
-    p.wd=NULL;
+    p.wd=wd;
     p.cmd=cmd;
     
     return mainloop_popen_bgread(cmd, setup_exec, (void*)&p, h, errh);
index 2661b5026fbd6b30f4ef44062de4ef7f8ebb0168..e5802fc8c21bb886c6dc47ea1b7e5fd5e18f960a 100644 (file)
@@ -35,7 +35,8 @@ DECLSTRUCT(WExecP){
 extern bool ioncore_exec(const char *cmd);
 extern int ioncore_do_exec_on(WRegion *reg, const char *cmd, const char *wd,
                               ExtlFn errh);
-extern bool ioncore_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh);
+extern bool ioncore_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh,
+                                 const char *wd);
 extern void ioncore_setup_environ(const WExecP *p);
 extern void ioncore_setup_display(int xscr);
 
index 12de1184e9c7f4af9c2af6a6981e42b9682b4fc9..5279747c32099f7fa0a3ab10fe319f9a3c5d3768 100644 (file)
@@ -167,16 +167,5 @@ bool group_set_fullscreen_extl(WGroup *grp, const char *how)
 }
 
 
-/*EXTL_DOC
- * Is \var{reg} in full screen mode?
- */
-EXTL_SAFE
-EXTL_EXPORT_MEMBER
-bool group_is_fullscreen(WGroup *grp)
-{
-    return REGION_IS_FULLSCREEN(grp);
-}
-
-
 /*}}}*/
 
index d0f15067454adb855f616556852ec08f0266374d..5a2a32d3ceda3377fe3a19f95a057363f612335a 100644 (file)
@@ -116,6 +116,23 @@ WPHolder *groupcw_prepare_manage_transient(WGroupCW *cwg,
 }
 
 
+static WRegion *groupcw_managed_disposeroot(WGroupCW *ws, WRegion *reg)
+{
+    WGroupIterTmp tmp;
+    WStacking *st;
+    WRegion *tmpr;
+    
+    FOR_ALL_NODES_IN_GROUP(&ws->grp, st, tmp){
+        if(st!=ws->grp.managed_stdisp && st->reg!=reg){
+            return reg;
+        }
+    }
+    
+    tmpr=region_disposeroot((WRegion*)ws);
+    return (tmpr!=NULL ? tmpr : reg);
+}
+
+
 /*}}}*/
 
 
@@ -277,6 +294,9 @@ static DynFunTab groupcw_dynfuntab[]={
 
     {(DynFun*)region_prepare_manage_transient,
      (DynFun*)groupcw_prepare_manage_transient},
+     
+    {(DynFun*)region_managed_disposeroot,
+     (DynFun*)groupcw_managed_disposeroot},
     
     {(DynFun*)region_displayname,
      (DynFun*)groupcw_displayname},
index 647cef05e451da3f35cbdd6e9782ae85a444dff4..3fd8cb765bd30577781dc8d57a736cf204a663a1 100644 (file)
@@ -120,44 +120,26 @@ EXTL_EXPORT_AS(WGroupWS, attach_framed)
 bool groupws_attach_framed_extl(WGroupWS *ws, WRegion *reg, ExtlTab t)
 {
     WGroupAttachParams ap=GROUPATTACHPARAMS_INIT;
-    WFramedParam fp=FRAMEDPARAM_INIT;
-    ExtlTab gt;
+    WFramedParam frp=FRAMEDPARAM_INIT;
     
     if(reg==NULL)
         return FALSE;
     
-    fp.gravity=ForgetGravity;
-    
-    if(extl_table_is_bool_set(t, "switchto")){
-        ap.switchto_set=TRUE;
-        ap.switchto=TRUE;
-    }
+    group_get_attach_params(&ws->grp, t, &ap);
     
-    if(extl_table_gets_t(t, "geom", &gt)){
-        int pos=0, size=0;
-        
-        fp.inner_geom.x=0;
-        fp.inner_geom.y=0;
-
-        if(extl_table_gets_i(gt, "x", &(ap.geom.x)))
-            pos++;
-        if(extl_table_gets_i(gt, "y", &(ap.geom.y)))
-            pos++;
-    
-        if(extl_table_gets_i(gt, "w", &(ap.geom.w)))
-            size++;
-        if(extl_table_gets_i(gt, "h", &(ap.geom.h)))
-            size++;
-        
-        fp.inner_geom.w=maxof(fp.inner_geom.w, 1);
-        fp.inner_geom.h=maxof(fp.inner_geom.h, 1);
+    /* Sensible size is given in framedparams */
+    if(ap.geom_set){
+        ap.geom_set=0;
+        ap.geom_weak_set=1;
+        ap.geom_weak=0;
         
-        fp.inner_geom_gravity_set=(size==2 && pos==2);
-        
-        extl_unref_table(gt);
+        frp.inner_geom_gravity_set=1;
+        frp.inner_geom=ap.geom;
+        frp.gravity=NorthWestGravity;
+        extl_table_gets_i(t, "gravity", &frp.gravity);
     }
     
-    return groupws_attach_framed(ws, &ap, &fp, reg);
+    return groupws_attach_framed(ws, &ap, &frp, reg);
 }
 
 
@@ -295,6 +277,33 @@ WPHolder *groupws_get_rescue_pholder_for(WGroupWS *ws,
 }
 
 
+static bool group_empty_for_bottom_stdisp(WGroup *ws)
+{
+    WGroupIterTmp tmp;
+    WStacking *st;
+    
+    FOR_ALL_NODES_IN_GROUP(ws, st, tmp){
+        if(st!=ws->bottom && st!=ws->managed_stdisp)
+            return FALSE;
+    }
+    
+    return TRUE;
+}
+
+
+static WRegion *groupws_managed_disposeroot(WGroupWS *ws, WRegion *reg)
+{
+    if(group_bottom(&ws->grp)==reg){
+        if(group_empty_for_bottom_stdisp(&ws->grp)){
+            WRegion *tmpr=region_disposeroot((WRegion*)ws);
+            return (tmpr!=NULL ? tmpr : reg);
+        }
+    }
+    
+    return reg;
+}
+
+
 /*}}}*/
 
 
@@ -348,6 +357,9 @@ static DynFunTab groupws_dynfuntab[]={
     
     {(DynFun*)region_prepare_manage_transient,
      (DynFun*)groupws_prepare_manage_transient},
+     
+    {(DynFun*)region_managed_disposeroot,
+     (DynFun*)groupws_managed_disposeroot},
     
     {(DynFun*)region_handle_drop,
      (DynFun*)groupws_handle_drop},
index ffe6c8623da7d3a971cab798123ae27ee769e55d..e39b20241f3e3b45a4e643a92fcd8c2297944b6c 100644 (file)
@@ -234,26 +234,9 @@ static WStacking *find_to_focus(WGroup *ws, WStacking *st, bool group_only)
 }
 
 
-static bool group_refocus_(WGroup *ws, WStacking *st)
-{
-    if(st!=ws->current_managed && st->reg!=NULL){
-        if(region_may_control_focus((WRegion*)ws))
-            region_set_focus(st->reg);
-        else
-            ws->current_managed=st;
-        return TRUE;
-    }
-    
-    return FALSE;
-}
-
-
 static void group_do_set_focus(WGroup *ws, bool warp)
 {
-    WStacking *st=ws->current_managed;
-    
-    if(st==NULL || st->reg==NULL)
-        st=find_to_focus(ws, NULL, TRUE);
+    WStacking *st=find_to_focus(ws, ws->current_managed, FALSE);
     
     if(st!=NULL && st->reg!=NULL)
         region_do_set_focus(st->reg, warp);
@@ -441,31 +424,6 @@ bool group_rescue_clientwins(WGroup *ws, WRescueInfo *info)
 }
 
 
-static bool group_empty_for_bottom_stdisp(WGroup *ws)
-{
-    WGroupIterTmp tmp;
-    WStacking *st;
-    
-    FOR_ALL_NODES_IN_GROUP(ws, st, tmp){
-        if(st!=ws->bottom && st!=ws->managed_stdisp)
-            return FALSE;
-    }
-    
-    return TRUE;
-}
-
-
-static WRegion *group_managed_disposeroot(WGroup *ws, WRegion *reg)
-{
-    if(group_bottom(ws)==reg){
-        if(group_empty_for_bottom_stdisp(ws))
-            return region_disposeroot((WRegion*)ws);
-    }
-    
-    return reg;
-}
-
-
 /*}}}*/
 
 
@@ -605,6 +563,14 @@ static void geom_group_to_parent(WGroup *ws, const WRectangle *g,
 }
 
 
+static int group_must_focus(WGroup *ws, WStacking *st)
+{
+    WStacking *stacking=group_get_stacking(ws);
+    
+    return (stacking!=NULL && stacking_must_focus(stacking, st));
+}
+
+
 bool group_do_attach_final(WGroup *ws, 
                            WRegion *reg,
                            const WGroupAttachParams *param)
@@ -687,15 +653,15 @@ bool group_do_attach_final(WGroup *ws,
         group_do_set_bottom(ws, st);
     
     /* Focus */
-    sw=(param->switchto_set ? param->switchto : ioncore_g.switchto_new);
+    sw=((param->switchto_set ? param->switchto : ioncore_g.switchto_new)
+        ? st==find_to_focus(ws, st, FALSE)
+        : group_must_focus(ws, st));
     
-    if(sw || st->level>=STACKING_LEVEL_MODAL1){
-        WStacking *stf=find_to_focus(ws, st, FALSE);
-        
-        if(stf==st){
-            /* Ok, the new region can be focused */
-            group_refocus_(ws, stf);
-        }
+    if(sw){
+        if(region_may_control_focus((WRegion*)ws))
+            region_set_focus(st->reg);
+        else
+            ws->current_managed=st;
     }
     
     return TRUE;
@@ -733,9 +699,11 @@ WRegion *group_do_attach(WGroup *ws,
 }
 
 
-static void get_params(WGroup *ws, ExtlTab tab, WGroupAttachParams *par)
+void group_get_attach_params(WGroup *ws, ExtlTab tab, 
+                             WGroupAttachParams *par)
 {
     int tmp;
+    bool tmpb;
     char *tmps;
     ExtlTab g;
     
@@ -753,7 +721,7 @@ static void get_params(WGroup *ws, ExtlTab tab, WGroupAttachParams *par)
     
     if(extl_table_gets_i(tab, "level", &tmp)){
         if(tmp>=0){
-            par->level_set=STACKING_LEVEL_NORMAL;
+            par->level_set=1;
             par->level=tmp;
         }
     }
@@ -763,9 +731,11 @@ static void get_params(WGroup *ws, ExtlTab tab, WGroupAttachParams *par)
         par->level_set=1;
     }
     
-    if(extl_table_is_bool_set(tab, "switchto"))
-        par->switchto=1;
-
+    if(extl_table_gets_b(tab, "switchto", &tmpb)){
+        par->switchto=(tmpb!=0);
+        par->switchto_set=1;
+    }
+    
     if(extl_table_gets_i(tab, "sizepolicy", &tmp)){
         par->szplcy_set=1;
         par->szplcy=tmp;
@@ -810,7 +780,7 @@ WRegion *group_attach(WGroup *ws, WRegion *reg, ExtlTab param)
     if(reg==NULL)
         return NULL;
     
-    get_params(ws, param, &par);
+    group_get_attach_params(ws, param, &par);
     
     data.type=REGION_ATTACH_REPARENT;
     data.u.reg=reg;
@@ -844,7 +814,7 @@ WRegion *group_attach_new(WGroup *ws, ExtlTab param)
     WGroupAttachParams par=GROUPATTACHPARAMS_INIT;
     WRegionAttachData data;
 
-    get_params(ws, param, &par);
+    group_get_attach_params(ws, param, &par);
     
     data.type=REGION_ATTACH_LOAD;
     data.u.tab=param;
@@ -862,29 +832,34 @@ WRegion *group_attach_new(WGroup *ws, ExtlTab param)
 static int stdisp_szplcy(const WMPlexSTDispInfo *di, WRegion *stdisp)
 {
     int pos=di->pos;
+    int policy=0, gravity=0;
     
     if(di->fullsize){
         if(region_orientation(stdisp)==REGION_ORIENTATION_VERTICAL){
             if(pos==MPLEX_STDISP_TL || pos==MPLEX_STDISP_BL)
-                return SIZEPOLICY_STRETCH_LEFT;
+                policy=SIZEPOLICY_STRETCH_LEFT;
             else
-                return SIZEPOLICY_STRETCH_RIGHT;
+                policy=SIZEPOLICY_STRETCH_RIGHT;
         }else{
             if(pos==MPLEX_STDISP_TL || pos==MPLEX_STDISP_TR)
-                return SIZEPOLICY_STRETCH_TOP;
+                policy=SIZEPOLICY_STRETCH_TOP;
             else
-                return SIZEPOLICY_STRETCH_BOTTOM;
+                policy=SIZEPOLICY_STRETCH_BOTTOM;
         }
     }else{
-        if(pos==MPLEX_STDISP_TL)
-            return SIZEPOLICY_GRAVITY_NORTHWEST;
-        else if(pos==MPLEX_STDISP_BL)
-            return SIZEPOLICY_GRAVITY_SOUTHWEST;
-        else if(pos==MPLEX_STDISP_TR)
-            return SIZEPOLICY_GRAVITY_NORTHEAST;
-        else /*if(pos=MPLEX_STDISP_BR)*/
-            return SIZEPOLICY_GRAVITY_SOUTHEAST;
+        policy=SIZEPOLICY_GRAVITY;
     }
+    
+    if(pos==MPLEX_STDISP_TL)
+        gravity=SIZEPOLICY_VERT_TOP|SIZEPOLICY_HORIZ_LEFT;
+    else if(pos==MPLEX_STDISP_BL)
+        gravity=SIZEPOLICY_VERT_BOTTOM|SIZEPOLICY_HORIZ_LEFT;
+    else if(pos==MPLEX_STDISP_TR)
+        gravity=SIZEPOLICY_VERT_TOP|SIZEPOLICY_HORIZ_RIGHT;
+    else /*if(pos=MPLEX_STDISP_BR)*/
+        gravity=SIZEPOLICY_VERT_BOTTOM|SIZEPOLICY_HORIZ_RIGHT;
+    
+    return (policy|gravity);
 }
 
 
@@ -1382,9 +1357,6 @@ static DynFunTab group_dynfuntab[]={
     {(DynFun*)region_get_configuration, 
      (DynFun*)group_get_configuration},
 
-    {(DynFun*)region_managed_disposeroot,
-     (DynFun*)group_managed_disposeroot},
-
     {(DynFun*)region_current,
      (DynFun*)group_current},
     
index f9e9647dccc34ec6038d059c1cd070240872e0f5..1966ba2ec9cb912a40b74f24d06e6fb9c7310518 100644 (file)
@@ -72,6 +72,9 @@ DYNFUN WStacking *group_do_add_managed(WGroup *ws, WRegion *reg,
 extern WStacking *group_do_add_managed_default(WGroup *ws, WRegion *reg, 
                                                int level, WSizePolicy szplcy);
 
+extern void group_get_attach_params(WGroup *ws, ExtlTab tab, 
+                                    WGroupAttachParams *par);
+
 extern WRegion *group_do_attach(WGroup *ws, 
                                 WGroupAttachParams *param,
                                 WRegionAttachData *data);
index e9161b892e19c6062bc2eade233e18fbb6681cf5..551dfaf16c044ff2342e992911a0f08a54304b64 100644 (file)
@@ -11,8 +11,12 @@ ioncore.tabnum={}
 local framestate={}
 
 local function do_show(frame)
-    frame:set_grattr('numbered', 'set')
-    framestate[frame]='set'
+    if obj_exists(frame) then
+        frame:set_grattr('numbered', 'set')
+        framestate[frame]='set'
+    else
+        framestate[frame]=nil
+    end
 end
 
 --DOC
@@ -38,7 +42,9 @@ function ioncore.tabnum.clear()
     
     for f, s in pairs(st) do
         if s=='set' then
-            f:set_grattr('numbered', 'unset')
+            if obj_exists(f) then
+                f:set_grattr('numbered', 'unset')
+            end
         elseif obj_is(s, "WTimer") then
             s:reset()
         end
index bcc8a5388a394de0b3919b747e6eba04ae160461..69b7711f9f7311e060d0a8c4cd53ece76af9193a 100644 (file)
@@ -319,6 +319,7 @@ DECLSTRUCT(WRescueInfo){
     WRegion *get_rescue;
     bool failed_get;
     bool test;
+    int flags;
 };
 
 
@@ -338,6 +339,43 @@ bool region_rescue_child_clientwins(WRegion *reg, WRescueInfo *info)
 }
 
 
+/* Bah, unsplitissä oikestaan pitäisi tehä non-deep rescue */
+
+bool region_do_rescue_this(WRegion *tosave_, WRescueInfo *info, int ph_flags)
+{
+    WClientWin *cwin=OBJ_CAST(tosave_, WClientWin);
+    WRegion *tosave=NULL;
+    
+    if(cwin!=NULL){
+        if(cwin->flags&CLIENTWIN_UNMAP_RQ)
+            return TRUE;
+        tosave=(WRegion*)cwin;
+    }else if(info->flags&REGION_RESCUE_NODEEP){
+        tosave=tosave_;
+    }else{
+        /* Try to rescue whole groups. */
+        /*tosave=(WRegion*)OBJ_CAST(tosave_, WGroupCW);*/
+    }
+    
+    if(tosave==NULL){
+        return region_rescue_clientwins(tosave_, info);
+    }else if(info->test){
+        return FALSE;
+    }else{
+        int phf=(info->flags&REGION_RESCUE_PHFLAGS_OK ? ph_flags : 0);
+        
+        if(info->ph==NULL){
+            info->ph=region_get_rescue_pholder(info->get_rescue);
+            if(info->ph==NULL){
+                info->failed_get=TRUE;
+                return FALSE;
+            }
+        }
+        return pholder_attach(info->ph, phf, tosave);
+    }
+}
+
+
 bool region_rescue_some_clientwins(WRegion *reg, WRescueInfo *info,
                                    WRegionIterator *iter, void *st)
 {
@@ -351,32 +389,14 @@ bool region_rescue_some_clientwins(WRegion *reg, WRescueInfo *info,
     
     while(TRUE){
         WRegion *tosave=iter(st);
-        WClientWin *cwin;
         
         if(tosave==NULL)
             break;
-        
-        cwin=OBJ_CAST(tosave, WClientWin);
-        
-        if(cwin==NULL){
-            if(!region_rescue_clientwins(tosave, info)){
-                fails++;
-                if(info->failed_get)
-                    break;
-            }
-        }else if(info->test){
+
+        if(!region_do_rescue_this(tosave, info, 0)){
             fails++;
-            break;
-        }else if(!(cwin->flags&CLIENTWIN_UNMAP_RQ)){
-            if(info->ph==NULL){
-                info->ph=region_get_rescue_pholder(info->get_rescue);
-                if(info->ph==NULL){
-                    info->failed_get=TRUE;
-                    break;
-                }
-            }
-            if(!pholder_attach(info->ph, 0, (WRegion*)cwin))
-                fails++;
+            if(info->failed_get)
+                break;
         }
     }
     
@@ -394,19 +414,20 @@ bool region_rescue_clientwins(WRegion *reg, WRescueInfo *info)
 }
 
 
-bool region_rescue(WRegion *reg, WPHolder *ph_param)
+bool region_rescue(WRegion *reg, WPHolder *ph, int flags)
 {
     WRescueInfo info;
     bool ret;
     
-    info.ph=ph_param;
+    info.ph=ph;
+    info.flags=flags;
     info.test=FALSE;
     info.get_rescue=reg;
     info.failed_get=FALSE;
     
     ret=region_rescue_clientwins(reg, &info);
     
-    if(info.ph!=ph_param)
+    if(info.ph!=ph)
         destroy_obj((Obj*)info.ph);
     
     return ret;
@@ -418,6 +439,7 @@ bool region_rescue_needed(WRegion *reg)
     WRescueInfo info;
     
     info.ph=NULL;
+    info.flags=0;
     info.test=TRUE;
     info.get_rescue=reg;
     info.failed_get=FALSE;
index d0faed21956fbe354597497a1eb14d2efe509ca6..dbe09ac5c38cb46dc97bea5630ebd7f203e22699 100644 (file)
@@ -98,15 +98,19 @@ extern WPHolder *region_prepare_manage_transient_default(WRegion *reg,
 
 /* Rescue */
 
+#define REGION_RESCUE_PHFLAGS_OK 0x01
+#define REGION_RESCUE_NODEEP     0x02
+
 INTRSTRUCT(WRescueInfo);
 
 /* if ph is given, it is used, otherwise one is looked for when needed */
-extern bool region_rescue(WRegion *reg, WPHolder *ph);
+extern bool region_rescue(WRegion *reg, WPHolder *ph, int flags);
 extern bool region_rescue_needed(WRegion *reg);
 extern bool region_rescue_clientwins(WRegion *reg, WRescueInfo *info);
 extern bool region_rescue_child_clientwins(WRegion *reg, WRescueInfo *info);
 extern bool region_rescue_some_clientwins(WRegion *reg, WRescueInfo *info,
                                           WRegionIterator *iter, void *st);
+extern bool region_do_rescue_this(WRegion *tosave, WRescueInfo *info, int ph_flags);
 
 
 #endif /* ION_IONCORE_MANAGE_H */
index a9ea894f6eaa696d8677957866221509d98aa244..da1bd49b48218c0bd4cfd631cd097ed2fbf56646 100644 (file)
@@ -855,7 +855,7 @@ bool mplex_do_prepare_focus(WMPlex *mplex, WStacking *node,
     PtrList *hidelist=NULL;
     PtrList **hidelistp=(ew ? NULL : &hidelist);
     WStacking *foc;
-    bool within=FALSE;
+    /*bool within=FALSE;*/
     
     if(sub==NULL && node==NULL)
         return FALSE;
@@ -867,7 +867,7 @@ bool mplex_do_prepare_focus(WMPlex *mplex, WStacking *node,
     if(!region_prepare_focus((WRegion*)mplex, flags, res))
         return FALSE;
 
-    foc=mplex_do_to_focus_on(mplex, node, sub, hidelistp, &within);
+    foc=mplex_do_to_focus_on(mplex, node, sub, hidelistp, NULL /*&within*/);
 
     if(foc!=NULL){
         while(hidelist!=NULL){
@@ -886,7 +886,7 @@ bool mplex_do_prepare_focus(WMPlex *mplex, WStacking *node,
         res->reg=foc->reg;
         res->flags=flags;
         
-        return within;
+        return (foc==sub || (sub==NULL && foc==node));
     }else{
         return FALSE;
     }
@@ -1169,7 +1169,6 @@ bool mplex_managed_rqorder(WMPlex *mplex, WRegion *reg, WRegionOrder order)
 static bool mplex_stack(WMPlex *mplex, WStacking *st)
 {
     WStacking *tmp=NULL;
-    Window bottom=None, top=None;
     WStacking **stackingp=mplex_get_stackingp(mplex);
     
     if(stackingp==NULL)
@@ -1232,7 +1231,7 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
     
     sw=(!hidden && (param->flags&MPLEX_ATTACH_SWITCHTO 
                     || (param->flags&MPLEX_ATTACH_UNNUMBERED
-                        ? modal
+                        ? FALSE
                         : (mplex_current_node(mplex)==NULL))));
     
     hidden=(hidden || (!sw && !(param->flags&MPLEX_ATTACH_UNNUMBERED)));
@@ -1270,14 +1269,19 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
     node->pseudomodal=(param->flags&MPLEX_ATTACH_PSEUDOMODAL ? 1 : 0);
     
     if(lnode!=NULL){
+        WMPlexPHolder *ph2, *phn, *php;
+        
         llist_link_after(&(mplex->mx_list), 
                          (ph!=NULL ? ph->after : NULL), 
                          lnode);
         mplex->mx_count++;
         
-        /* Move following placeholders after new node */
-        while(ph->next!=NULL)
-            mplexpholder_move(ph->next, mplex, NULL, lnode);
+        
+        /* Move placeholders after new node */
+        for(php=NULL, ph2=ph; ph2!=NULL; php=ph2, ph2=phn){
+            phn=ph2->next;
+            mplexpholder_move(ph2, mplex, php, lnode);
+        }
     }
     
     LINK_ITEM(mplex->mgd, node, mgr_next, mgr_prev);
@@ -1307,9 +1311,20 @@ bool mplex_do_attach_final(WMPlex *mplex, WRegion *reg, WMPlexPHolder *ph)
         mplex_do_node_display(mplex, node, FALSE);
     else
         region_unmap(reg);
-    
-    if(sw && mcf)
-        mplex_refocus(mplex, node, FALSE);
+        
+    if(mcf){
+        if(sw){
+            mplex_refocus(mplex, node, FALSE);
+        }else if(!hidden && 
+                 (level>=STACKING_LEVEL_MODAL1 || OBJ_IS(reg, WGroup))){
+            /* New modal regions may require focusing, so try to
+             * give focus back to currently active object.
+             * (There seems to be some problem with uncontained
+             * client windows still..)
+             */
+            mplex_refocus(mplex, NULL, FALSE);
+        }
+    }
     
     if(lnode!=NULL)
         mplex_managed_changed(mplex, MPLEX_CHANGE_ADD, sw, reg);
@@ -1666,7 +1681,20 @@ bool mplex_rescue_clientwins(WMPlex *mplex, WRescueInfo *info)
 {
     bool ret1, ret2;
     WMPlexIterTmp tmp;
+    WLListIterTmp ltmp;
+    WLListNode *lnode, *was_current=mplex->mx_current;
     
+    /* First all mx stuff to move them nicely to another mplex (when that 
+     * is the case), switching to the current region in the target if 
+     * allowed by ph_flags_mask region_rescue.
+     */
+    FOR_ALL_NODES_ON_LLIST(lnode, mplex->mx_list, ltmp){
+        int sw=(lnode==was_current ? PHOLDER_ATTACH_SWITCHTO : 0);
+        region_do_rescue_this(lnode->st->reg, info, sw);
+    }
+    
+    /* Then the rest (possibly retrying failed mx stuff).
+     */
     mplex_iter_init(&tmp, mplex);
     ret1=region_rescue_some_clientwins((WRegion*)mplex, info,
                                        (WRegionIterator*)mplex_iter,
index c3a57ce5979b178fe5415c2d6f6278d4bdd7609d..8bb7ddb1e89ee279d3f99ec0229b68dd3e956d63 100644 (file)
@@ -15,6 +15,7 @@
 #include "mplexpholder.h"
 #include "llist.h"
 #include "framedpholder.h"
+#include "basicpholder.h"
 
 
 static void mplex_watch_handler(Watch *watch, Obj *mplex);
@@ -102,7 +103,18 @@ static void mplex_watch_handler(Watch *watch, Obj *mplex)
 }
 
 
-static WMPlexAttachParams dummy_param={0, 0, {0, 0, 0, 0}, 0, 0};
+static void mplex_get_attach_params(WMPlex *mplex, WStacking *st,
+                                    WMPlexAttachParams *param)
+{
+    param->flags=(MPLEX_ATTACH_SIZEPOLICY|
+                  MPLEX_ATTACH_GEOM|
+                  MPLEX_ATTACH_LEVEL|
+                  (st->hidden ? MPLEX_ATTACH_HIDDEN : 0)|
+                  (st->lnode==NULL ? MPLEX_ATTACH_UNNUMBERED : 0));
+    param->szplcy=st->szplcy;
+    param->geom=REGION_GEOM(st->reg);
+    param->level=st->level;
+}
 
 
 bool mplexpholder_init(WMPlexPHolder *ph, WMPlex *mplex, WStacking *st,
@@ -122,25 +134,20 @@ bool mplexpholder_init(WMPlexPHolder *ph, WMPlex *mplex, WStacking *st,
         return FALSE;
     }
 
-    if(param==NULL)
-        param=&dummy_param;
-    
     if(st!=NULL){
-        if(st->lnode!=NULL)
+        mplex_get_attach_params(mplex, st, &ph->param);
+        
+        if(st->lnode!=NULL){
             mplexpholder_do_link(ph, mplex, 
                                  LIST_LAST(st->lnode->phs, next, prev), 
                                  st->lnode);
-        else
-            ph->param.flags|=MPLEX_ATTACH_UNNUMBERED;
-        
-        ph->param.flags|=(MPLEX_ATTACH_SIZEPOLICY|
-                          MPLEX_ATTACH_GEOM|
-                          MPLEX_ATTACH_LEVEL|
-                          (st->hidden ? MPLEX_ATTACH_HIDDEN : 0));
-        ph->param.szplcy=st->szplcy;
-        ph->param.geom=REGION_GEOM(st->reg);
-        ph->param.level=st->level;
+        }
     }else{
+        static WMPlexAttachParams dummy_param={0, 0, {0, 0, 0, 0}, 0, 0};
+        
+        if(param==NULL)
+            param=&dummy_param;
+        
         ph->param=*param;
         
         if(!(param->flags&MPLEX_ATTACH_UNNUMBERED)){
@@ -437,11 +444,51 @@ WMPlexPHolder *mplex_managed_get_pholder(WMPlex *mplex, WRegion *mgd)
 }
 
 
-WMPlexPHolder *mplex_get_rescue_pholder_for(WMPlex *mplex, WRegion *mgd)
+/*}}}*/
+
+
+/*{{ Rescue */
+
+
+WRegion *mplex_rescue_attach(WMPlex *mplex, int flags, WRegionAttachData *data)
 {
+    WMPlexAttachParams param;
+    
+    param.flags=0;
+    
+    /* Improved attach parametrisation hack for WMPlex source */
+    if(data->type==REGION_ATTACH_REPARENT){
+        WRegion *reg=data->u.reg;
+        WMPlex *src_mplex=REGION_MANAGER_CHK(reg, WMPlex);
+        if(src_mplex!=NULL){
+            WStacking *st=ioncore_find_stacking(reg);
+            if(st!=NULL)
+                mplex_get_attach_params(src_mplex, st, &param);
+        }
+    }
+    
+    param.flags|=(MPLEX_ATTACH_INDEX|
+                  (flags&PHOLDER_ATTACH_SWITCHTO ? MPLEX_ATTACH_SWITCHTO : 0));
+    param.index=LLIST_INDEX_LAST;
+
+    return mplex_do_attach(mplex, &param, data);
+}
+
+
+WPHolder *mplex_get_rescue_pholder_for(WMPlex *mplex, WRegion *mgd)
+{
+#if 0
     WStacking *st=mplex_find_stacking(mplex, mgd);
+    WMPlexAttachParams param;
+    
+    param.flags=MPLEX_ATTACH_INDEX;
+    param.index=LLIST_INDEX_LAST;
     
-    return create_mplexpholder(mplex, st, NULL);
+    return create_mplexpholder(mplex, st, &param);
+#else
+    return (WPHolder*)create_basicpholder((WRegion*)mplex, 
+                                          (WBasicPHolderHandler*)mplex_rescue_attach);
+#endif
 }
 
 
index 7528f6dfd14236886cd7682b592ae76ae75cabd0..a017641c3df4c9badefa9fe2ba0488bdc3e23419 100644 (file)
@@ -60,7 +60,7 @@ extern void mplex_move_phs_before(WMPlex *mplex, WLListNode *node);
 
 extern WMPlexPHolder *mplex_managed_get_pholder(WMPlex *mplex, 
                                                 WRegion *mgd);
-extern WMPlexPHolder *mplex_get_rescue_pholder_for(WMPlex *mplex, 
-                                                       WRegion *mgd);
+extern WPHolder *mplex_get_rescue_pholder_for(WMPlex *mplex, 
+                                              WRegion *mgd);
 
 #endif /* ION_IONCORE_MPLEXPHOLDER_H */
index aaec0f0b6f88d6880c12c449997dd6618d959e08..2a8e9feeadf7db31378f422a87ac63533993baf3 100644 (file)
@@ -283,7 +283,9 @@ bool region_prepare_focus(WRegion *reg, int flags,
                           WPrepareFocusResult *res)
 {
 
-    if(!REGION_IS_ACTIVE(reg) || !REGION_IS_MAPPED(reg)){
+    if(TRUE /* !REGION_IS_ACTIVE(reg) || 
+       !REGION_IS_MAPPED(reg) ||
+       ioncore_g.focus_next!=NULL*/){
         WRegion *mgr=REGION_MANAGER(reg);
         WRegion *par=REGION_PARENT_REG(reg);
         
@@ -494,7 +496,7 @@ bool region_dispose_(WRegion *reg, bool not_simple)
     WPHolder *ph=NULL;
     
     if(rescue){
-        if(!region_rescue(reg, NULL)){
+        if(!region_rescue(reg, NULL, 0)){
             warn(TR("Failed to rescue some client windows - not closing."));
             return FALSE;
         }
index a99b7a3bc6243a33256a7351f134d9e79fec0d19..e2cb4de2437b50972bb8841fe3b61b0c64ebda80 100644 (file)
@@ -198,6 +198,18 @@ static void sizepolicy_free_snap(WSizePolicy *szplcy, WRegion *reg,
 }
 
 
+static WSizePolicy org(WSizePolicy base, WSizePolicy g)
+{
+    if((base&SIZEPOLICY_VERT_MASK)==0)
+        base|=g&SIZEPOLICY_VERT_MASK;
+        
+    if((base&SIZEPOLICY_HORIZ_MASK)==0)
+        base|=g&SIZEPOLICY_HORIZ_MASK;
+    
+    return base;
+}
+
+
 void sizepolicy(WSizePolicy *szplcy, WRegion *reg,
                 const WRectangle *rq_geom, int rq_flags,
                 WFitParams *fp)
@@ -231,27 +243,27 @@ void sizepolicy(WSizePolicy *szplcy, WRegion *reg,
         break;
         
     case SIZEPOLICY_STRETCH_LEFT:
-        gravity_stretch_policy(SIZEPOLICY_HORIZ_LEFT|SIZEPOLICY_VERT_CENTER
+        gravity_stretch_policy(org(*szplcy, SIZEPOLICY_HORIZ_LEFT|SIZEPOLICY_VERT_CENTER)
                                reg, &tmp, fp, FALSE, TRUE);
         break;
         
     case SIZEPOLICY_STRETCH_RIGHT:
-        gravity_stretch_policy(SIZEPOLICY_HORIZ_RIGHT|SIZEPOLICY_VERT_CENTER
+        gravity_stretch_policy(org(*szplcy, SIZEPOLICY_HORIZ_RIGHT|SIZEPOLICY_VERT_CENTER)
                                reg, &tmp, fp, FALSE, TRUE);
         break;
         
     case SIZEPOLICY_STRETCH_TOP:
-        gravity_stretch_policy(SIZEPOLICY_VERT_TOP|SIZEPOLICY_HORIZ_CENTER
+        gravity_stretch_policy(org(*szplcy, SIZEPOLICY_VERT_TOP|SIZEPOLICY_HORIZ_CENTER)
                                reg, &tmp, fp, TRUE, FALSE);
         break;
         
     case SIZEPOLICY_STRETCH_BOTTOM:
-        gravity_stretch_policy(SIZEPOLICY_VERT_BOTTOM|SIZEPOLICY_HORIZ_CENTER
+        gravity_stretch_policy(org(*szplcy, SIZEPOLICY_VERT_BOTTOM|SIZEPOLICY_HORIZ_CENTER)
                                reg, &tmp, fp, TRUE, FALSE);
         break;
         
     case SIZEPOLICY_FULL_EXACT:
-        gravity_stretch_policy(SIZEPOLICY_VERT_CENTER|SIZEPOLICY_HORIZ_CENTER
+        gravity_stretch_policy(org(*szplcy, SIZEPOLICY_VERT_CENTER|SIZEPOLICY_HORIZ_CENTER)
                                reg, &tmp, fp, TRUE, TRUE);
         break;
         
index c96c5387c1a914980754302389f66d95cd6259b6..296e054abef0d7720beed73f286b849b8bf02862 100644 (file)
@@ -596,6 +596,12 @@ static bool mapped_filt(WStacking *st, void *unused)
 }
 
 
+static bool mapped_filt_neq(WStacking *st, void *st_neq)
+{
+    return (st!=(WStacking*)st_neq && mapped_filt(st, NULL));
+}
+
+
 static bool mgr_filt(WStacking *st, void *mgr_)
 {
     return (st->reg!=NULL && REGION_MANAGER(st->reg)==(WRegion*)mgr_);
@@ -622,5 +628,16 @@ uint stacking_min_level_mapped(WStacking *stacking)
 }
 
 
+bool stacking_must_focus(WStacking *stacking, WStacking *st)
+{
+    WStacking *stf=stacking_find_to_focus(stacking, NULL, 
+                                          mapped_filt_neq, NULL, st);
+    
+    return (stf==NULL || 
+            (st->level>stf->level &&
+             st->level>=STACKING_LEVEL_MODAL1));
+}
+
+
 /*}}}*/
 
index e325269b839e6d633a810ffe512100051c0cc1bc..c08484ee6a76a9b9ac1e4b923e7c17f59485a2dc 100644 (file)
@@ -98,6 +98,7 @@ uint stacking_min_level(WStacking *stacking,
 
 uint stacking_min_level_mapped(WStacking *stacking);
 
+bool stacking_must_focus(WStacking *stacking, WStacking *st);
 
 WStacking *ioncore_find_stacking(WRegion *reg);
 void stacking_unassoc(WStacking *stacking);
index f6e9e1e0ea15d4f3ddbf94ad94a600564bba21a5..15b03c29428f55a49bbf987af25ed6a373c5c8ac 100644 (file)
@@ -238,13 +238,14 @@ mod_query.COLLECT_THRESHOLD=2000
 --DOC
 -- This function can be used to read completions from an external source.
 -- The parameter \var{cp} is the completion proxy to be used,
--- and the string \var{cmd} the shell command to be executed. To its stdout, 
--- the command should on the first line write the \var{common_beg} 
+-- and the string \var{cmd} the shell command to be executed, in the directory
+-- \var{wd}. 
+-- To its stdout, the command should on the first line write the \var{common_beg}
 -- parameter of \fnref{WComplProxy.set_completions} (which \var{fn} maybe used
 -- to override) and a single actual completion on each of the successive lines.
 -- The function \var{reshnd} may be used to override a result table
 -- building routine.
-function mod_query.popen_completions(cp, cmd, fn, reshnd)
+function mod_query.popen_completions(cp, cmd, fn, reshnd, wd)
     
     local pst={cp=cp, maybe_stalled=0}
     
@@ -317,7 +318,7 @@ function mod_query.popen_completions(cp, cmd, fn, reshnd)
     
     if not found_clean then
         pipes[rcv]=pst
-        ioncore.popen_bgread(cmd, coroutine.wrap(rcv))
+        ioncore.popen_bgread(cmd, coroutine.wrap(rcv), nil, wd)
     end
 end
 
@@ -746,7 +747,7 @@ local function find_point(strs, point)
 end
 
 
-function mod_query.exec_completor(wedln, str, point)
+function mod_query.exec_completor_(wd, wedln, str, point)
     local parts=break_cmdline(str)
     local complidx=find_point(parts, point+1)
     
@@ -804,11 +805,16 @@ function mod_query.exec_completor(wedln, str, point)
     if ic then
         mod_query.popen_completions(wedln,
                                    ic..wp..string.shell_safe(s_compl),
-                                   set_fn, filter_fn)
+                                   set_fn, filter_fn, wd)
     end
 end
 
 
+function mod_query.exec_completor(...)
+    mod_query.exec_completor_(nil, ...)
+end
+
+
 local cmd_overrides={}
 
 
@@ -838,9 +844,12 @@ end
 -- \file{ion-runinxterm}. Two colons ('::') will ask you to press 
 -- enter after the command has finished.
 function mod_query.query_exec(mplex)
-    mod_query.query(mplex, TR("Run:"), nil, mod_query.exec_handler, 
-                    mod_query.exec_completor,
-                    "run")
+    local function compl(...)
+        local wd=ioncore.get_dir_for(mplex)
+        mod_query.exec_completor_(wd, ...)
+    end
+    mod_query.query(mplex, TR("Run:"), nil, mod_query.exec_handler,
+                    compl, "run")
 end
 
 
index 6a0102ee3261723d1ed030aff3ea00b4fd84943b..b94da9e48da454de0f34d0ad0f4980f698ef4a9b 100644 (file)
@@ -11,10 +11,7 @@ include $(TOPDIR)/build/system-inc.mk
 INCLUDES += $(X11_INCLUDES) $(LIBTU_INCLUDES) $(LIBEXTL_INCLUDES) -I..
 CFLAGS += $(XOPEN_SOURCE) $(C99_SOURCE)
 
-SOURCES = main.c statusbar.c draw.c
-
-SUBDIRS = ion-statusd
-INSTALL_SUBDIRS = $(SUBDIRS)
+SOURCES = main.c statusbar.c draw.c statusd-launch.c
 
 MAKE_EXPORTS = mod_statusbar
 
diff --git a/mod_statusbar/ion-statusd/Makefile b/mod_statusbar/ion-statusd/Makefile
deleted file mode 100644 (file)
index 1ed1ac9..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-##
-## Ion-statusd Makefile
-##
-
-# System-specific configuration is in system.mk
-TOPDIR=../..
-include $(TOPDIR)/build/system-inc.mk
-
-######################################
-
-INCLUDES += $(LIBMAINLOOP_INCLUDES) $(LIBEXTL_INCLUDES) $(LIBTU_INCLUDES)
-LIBS += $(LIBMAINLOOP_LIBS) $(LIBEXTL_LIBS) $(LIBTU_LIBS) $(LUA_LIBS) $(DL_LIBS) -lm
-CFLAGS += $(XOPEN_SOURCE) $(C99_SOURCE)
-
-DEFINES += -DETCDIR=\"$(ETCDIR)\" -DSHAREDIR=\"$(SHAREDIR)\" \
-           -DEXTRABINDIR=\"$(EXTRABINDIR)\" -DMODULEDIR=\"$(MODULEDIR)\" \
-          -DLCDIR=\"$(LCDIR)\" -DLOCALEDIR=\"$(LOCALEDIR)\"
-
-SOURCES = ion-statusd.c exec.c extlrx.c
-
-TARGETS = ion-statusd
-
-LUA_SOURCES = statusd_date.lua statusd_mail.lua statusd_load.lua
-
-MAKE_EXPORTS = statusd
-
-include $(TOPDIR)/libmainloop/rx.mk
-
-######################################
-
-include $(TOPDIR)/build/rules.mk
-
-######################################
-
-ion-statusd: $(OBJS) $(EXT_OBJS)
-       $(CC) $(LINKOPTS) $(OBJS) $(EXT_OBJS) $(LDFLAGS) -o $@
-
-_install: lc_install
-       $(INSTALLDIR) $(EXTRABINDIR)
-       $(INSTALL) -s -m $(BIN_MODE) ion-statusd $(EXTRABINDIR)
diff --git a/mod_statusbar/ion-statusd/exec.c b/mod_statusbar/ion-statusd/exec.c
deleted file mode 100644 (file)
index a42c0dc..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- * ion/mod_statusbar/ion-statusd/exec.c
- *
- * Copyright (c) Tuomo Valkonen 2005-2006. 
- *
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- */
-
-
-#include <libmainloop/select.h>
-#include <libmainloop/exec.h>
-
-
-/*EXTL_DOC
- * Run \var{cmd} in the background. 
- */
-EXTL_SAFE
-EXTL_EXPORT
-int statusd_exec(const char *cmd)
-{
-    return mainloop_spawn(cmd);
-}
-
-
-/*EXTL_DOC
- * Run \var{cmd} with a read pipe connected to its stdout.
- * When data is received through the pipe, \var{h} is called
- * with that data.
- */
-EXTL_SAFE
-EXTL_EXPORT
-int statusd_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh)
-{
-    return mainloop_popen_bgread(cmd, NULL, NULL, h, errh);
-}
-
diff --git a/mod_statusbar/ion-statusd/extlrx.c b/mod_statusbar/ion-statusd/extlrx.c
deleted file mode 100644 (file)
index 9b6ac58..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * ion/mod_statusbar/ion-statusd/extlrx.c
- *
- * Copyright (c) Tuomo Valkonen 2004-2006.
- *
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- */
-
-#include <libextl/extl.h>
-#include <libtu/output.h>
-#include <libtu/locale.h>
-
-
-/*{{{ libtu */
-
-
-/*EXTL_DOC
- * Issue a warning. How the message is displayed depends on the current
- * warning handler.
- */
-EXTL_EXPORT
-void statusd_warn(const char *str)
-{
-    warn("%s", str);
-}
-
-
-EXTL_EXPORT
-const char *statusd_gettext(const char *s)
-{
-    if(s==NULL)
-        return NULL;
-    else
-        return TR(s);
-}
-
-
-/*}}}*/
-
diff --git a/mod_statusbar/ion-statusd/ion-statusd.c b/mod_statusbar/ion-statusd/ion-statusd.c
deleted file mode 100644 (file)
index c44aca3..0000000
+++ /dev/null
@@ -1,311 +0,0 @@
-/*
- * ion/mod_statusbar/ion-statusd/ion-statusd.c
- *
- * Copyright (c) Tuomo Valkonen 2004-2006.
- *
- * Ion is free software; you can redistribute it and/or modify it under
- * the terms of the GNU Lesser General Public License as published by
- * the Free Software Foundation; either version 2.1 of the License, or
- * (at your option) any later version.
- */
-
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-#include <libtu/util.h>
-#include <libtu/optparser.h>
-#include <libtu/errorlog.h>
-#include <libtu/locale.h>
-#include <libtu/misc.h>
-#include <libextl/readconfig.h>
-#include <libmainloop/select.h>
-#include <libmainloop/signal.h>
-#include <libmainloop/defer.h>
-
-#ifndef CF_NO_LOCALE
-#include <locale.h>
-#endif
-
-#include "../../version.h"
-
-
-static OptParserOpt ion_opts[]={
-    /*{OPT_ID('d'), "display",  OPT_ARG, "host:dpy.scr", 
-     DUMMY_TR("X display to use")},*/
-    
-    {'c', "conffile", OPT_ARG, "config_file", 
-     DUMMY_TR("Configuration file")},
-    
-    {'s', "searchdir", OPT_ARG, "dir", 
-     DUMMY_TR("Add directory to search path")},
-
-    /*{OPT_ID('s'), "session",  OPT_ARG, "session_name", 
-     DUMMY_TR("Name of session (affects savefiles)")},*/
-    
-    {'h', "help", 0, NULL, 
-     DUMMY_TR("Show this help")},
-    
-    {'V', "version", 0, NULL,
-     DUMMY_TR("Show program version")},
-    
-    {OPT_ID('a'), "about", 0, NULL,
-     DUMMY_TR("Show about text")},
-
-    {'q', "quiet", 0, NULL, 
-     DUMMY_TR("Quiet mode")},
-
-    {'m', "meter", OPT_ARG, "meter_module",
-     DUMMY_TR("Load a meter module")},
-
-    END_OPTPARSEROPTS
-};
-
-
-static const char statusd_copy[]=
-    "Ion-statusd " ION_VERSION ", copyright (c) Tuomo Valkonen 2004-2005.";
-
-
-static const char statusd_license[]=DUMMY_TR(
-    "This program is free software; you can redistribute it and/or\n"
-    "modify it under the terms of the GNU Lesser General Public\n"
-    "License as published by the Free Software Foundation; either\n"
-    "version 2.1 of the License, or (at your option) any later version.\n"
-    "\n"
-    "This program is distributed in the hope that it will be useful,\n"
-    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
-    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
-    "Lesser General Public License for more details.\n");
-
-
-/* new_informs=TRUE because we should always print period when 
- * initialisation is done. 
- */
-static bool new_informs=TRUE;
-static ExtlTab configtab;
-
-static void help()
-{
-    int i;
-    printf(TR("Usage: %s [options]\n\n"), libtu_progname());
-    for(i=0; ion_opts[i].descr!=NULL; i++)
-        ion_opts[i].descr=TR(ion_opts[i].descr);
-    optparser_printhelp(OPTP_MIDLONG, ion_opts);
-    printf("\n");
-}
-
-
-static void flush_informs()
-{
-    if(new_informs){
-        printf(".\n");
-        fflush(stdout);
-        new_informs=FALSE;
-    }
-}
-
-
-static void mainloop()
-{
-    sigset_t trapset;
-    
-    sigemptyset(&trapset);
-    sigaddset(&trapset, SIGALRM);
-    sigaddset(&trapset, SIGCHLD);
-    mainloop_trap_signals(&trapset);
-    
-    while(1){
-        int kill_sig=mainloop_check_signals();
-        if(kill_sig!=0 && kill_sig!=SIGUSR1){
-            if(kill_sig==SIGTERM)
-                exit(EXIT_FAILURE);
-            else
-                kill(getpid(), kill_sig);
-        }
-
-        mainloop_execute_deferred();
-
-        flush_informs();
-
-        mainloop_select();
-    }
-}
-
-
-extern bool statusd_register_exports();
-extern void statusd_unregister_exports();
-
-
-static void stdout_closed(int fd, void *data)
-{
-    exit(EXIT_SUCCESS);
-}
-
-
-int main(int argc, char*argv[])
-{
-    const char *mod=NULL;
-    char *mod2=NULL;
-    int loaded=0;
-    int opt;
-    bool quiet=FALSE;
-
-#ifndef CF_NO_LOCALE    
-    if(setlocale(LC_ALL, "")==NULL)
-        warn("setlocale() call failed.");
-#endif
-
-    configtab=extl_table_none();
-    
-    libtu_init(argv[0]);
-    extl_init();
-
-    if(!statusd_register_exports())
-        return EXIT_FAILURE;
-
-    extl_add_searchdir(EXTRABINDIR);
-    extl_add_searchdir(MODULEDIR);
-    extl_add_searchdir(ETCDIR);
-    extl_add_searchdir(SHAREDIR);
-    extl_add_searchdir(LCDIR);
-    extl_set_userdirs("ion3");
-
-    optparser_init(argc, argv, OPTP_MIDLONG, ion_opts);
-    
-    extl_read_config("ioncore_luaext", NULL, TRUE);
-    
-    while((opt=optparser_get_opt())){
-        switch(opt){
-        /*case OPT_ID('d'):
-            display=optparser_get_arg();
-            break;*/
-        case 's':
-            extl_add_searchdir(optparser_get_arg());
-            break;
-        /*case OPT_ID('s'):
-            extl_set_sessiondir(optparser_get_arg());
-            break;*/
-        case 'h':
-            help();
-            return EXIT_SUCCESS;
-        case 'V':
-            printf("%s\n", ION_VERSION);
-            return EXIT_SUCCESS;
-        case OPT_ID('a'):
-            printf("%s\n\n%s", statusd_copy, TR(statusd_license));
-            return EXIT_SUCCESS;
-        case 'c':
-            {
-                ExtlTab t;
-                const char *f=optparser_get_arg();
-                if(extl_read_savefile(f, &t)){
-                    extl_unref_table(configtab);
-                    configtab=t;
-                }else{
-                    warn(TR("Unable to load configuration file %s"), f);
-                }
-            }
-            break;
-        case 'q':
-            quiet=TRUE;
-            break;
-        case 'm':
-            mod=optparser_get_arg();
-            if(strchr(mod, '/')==NULL && strchr(mod, '.')==NULL){
-                mod2=scat("statusd_", mod);
-                if(mod2==NULL)
-                    return EXIT_FAILURE;
-                mod=mod2;
-            }
-            if(extl_read_config(mod, NULL, !quiet))
-                loaded++;
-            if(mod2!=NULL)
-                free(mod2);
-            break;
-        default:
-            warn(TR("Invalid command line."));
-            help();
-            return EXIT_FAILURE;
-        }
-    }
-    
-    if(loaded==0 && !quiet){
-        warn(TR("No meters loaded."));
-        return EXIT_FAILURE;
-    }
-    
-    mainloop();
-    
-    return EXIT_SUCCESS;
-}
-
-
-/*EXTL_DOC
- * Inform that meter \var{name} has value \var{value}.
- */
-EXTL_EXPORT
-void statusd_inform(const char *name, const char *value)
-{
-    printf("%s: %s\n", name, value);
-    new_informs=TRUE;
-}
-
-
-/*EXTL_DOC
- * Get configuration table for module \var{name}
- */
-EXTL_EXPORT
-ExtlTab statusd_get_config(const char *name)
-{
-    if(name==NULL){
-        return extl_ref_table(configtab);
-    }else{
-        ExtlTab t;
-        if(extl_table_gets_t(configtab, name, &t))
-            return t;
-        else
-            return extl_create_table();
-    }
-}
-
-
-/*EXTL_DOC
- * Get last file modification time.
- */
-EXTL_EXPORT
-double statusd_last_modified(const char *fname)
-{
-    struct stat st;
-    
-    if(fname==NULL)
-        return (double)(-1);
-    
-    if(stat(fname, &st)!=0){
-        /*warn_err_obj(fname);*/
-        return (double)(-1);
-    }
-    
-    return (double)(st.st_mtime>st.st_ctime ? st.st_mtime : st.st_ctime);
-}
-
-
-EXTL_EXPORT
-ExtlTab statusd_getloadavg()
-{
-    ExtlTab t=extl_create_table();
-    double l[3];
-    int n;
-    
-    n=getloadavg(l, 3);
-    
-    if(n>=1)
-        extl_table_sets_d(t, "1min", l[0]);
-    if(n>=2)
-        extl_table_sets_d(t, "5min", l[1]);
-    if(n>=3)
-        extl_table_sets_d(t, "15min", l[2]);
-        
-    return t;
-}
-
diff --git a/mod_statusbar/ion-statusd/statusd_date.lua b/mod_statusbar/ion-statusd/statusd_date.lua
deleted file mode 100644 (file)
index ea36258..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
---
--- ion/mod_statusbar/ion-statusd/statusd_date.lua
--- 
--- Copyright (c) Tuomo Valkonen 2004-2006.
---
--- Ion is free software; you can redistribute it and/or modify it under
--- the terms of the GNU Lesser General Public License as published by
--- the Free Software Foundation; either version 2.1 of the License, or
--- (at your option) any later version.
---
-
-
-local timer
-
-local defaults={
-    date_format='%a %Y-%m-%d %H:%M',
-    formats={},
-}
-
-local settings=table.join(statusd.get_config('date'), defaults)
-
-local function update()
-    local tm=os.time()
-    statusd.inform('date', os.date(settings.date_format, tm))
-    for k, f in pairs(settings.formats) do
-        statusd.inform('date_'..k, os.date(f, tm))
-    end
-    return tm
-end
-
-local function timer_handler(tmr)
-    local tm=update()
-    
-    local t=os.date('*t', tm)
-    local d=(60-t.sec)*1000
-    
-    timer:set(d, timer_handler)
-end
-
-timer=statusd.create_timer()
-timer_handler(timer)
diff --git a/mod_statusbar/ion-statusd/statusd_load.lua b/mod_statusbar/ion-statusd/statusd_load.lua
deleted file mode 100644 (file)
index 88162af..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
---
--- ion/mod_statusbar/ion-statusd/statusd_load.lua
--- 
--- Copyright (c) Tuomo Valkonen 2004-2006.
---
--- Ion is free software; you can redistribute it and/or modify it under
--- the terms of the GNU Lesser General Public License as published by
--- the Free Software Foundation; either version 2.1 of the License, or
--- (at your option) any later version.
---
-
---
--- We should really use getloadavg(3) instead and move the meter to
--- Ion side to get properly up-to-date loads. But until such an export
--- is made, and we use potentially blocking files and external programs, 
--- this meter must be in ion-statusd.
---
-
-local defaults={
-    update_interval=10*1000,
-    load_hint="1min",
-    important_threshold=1.5,
-    critical_threshold=4.0
-}
-
-local settings=table.join(statusd.get_config("load"), defaults)
-
-local load_timer
-
-local function get_hint(v)
-    local i="normal"
-    if v then
-        if v>settings.critical_threshold then
-            i="critical"
-        elseif v>settings.important_threshold then
-            i="important"
-        end
-    end
-    return i
-end
-
-local function fmt(l)
-    if not l then
-        return "?"
-    else
-        return string.format("%0.2f", l)
-    end
-end
-
-local function update_load()
-    local lds = statusd.getloadavg()
-    f1, f5, f15 = fmt(lds["1min"]), fmt(lds["5min"]), fmt(lds["15min"])
-    statusd.inform("load", f1..", "..f5..", "..f15)
-    statusd.inform("load_hint", get_hint(lds[settings.load_hint]))
-    statusd.inform("load_1min", f1)
-    statusd.inform("load_1min_hint", get_hint(lds["1min"]))
-    statusd.inform("load_5min", f5)
-    statusd.inform("load_5min_hint", get_hint(lds["5min"]))
-    statusd.inform("load_15min", f15)
-    statusd.inform("load_15min_hint", get_hint(lds["15min"]))
-    load_timer:set(settings.update_interval, update_load)
-end
-
--- Init
---statusd.inform("load_template", "0.00, 0.00, 0.00");
-
-load_timer=statusd.create_timer()
-update_load()
-
-
diff --git a/mod_statusbar/ion-statusd/statusd_mail.lua b/mod_statusbar/ion-statusd/statusd_mail.lua
deleted file mode 100644 (file)
index 71cfea9..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
---
--- ion/mod_statusbar/ion-statusd/statusd_mail.lua
--- 
--- Copyright (c) Tuomo Valkonen 2004-2006.
---
--- Ion is free software; you can redistribute it and/or modify it under
--- the terms of the GNU Lesser General Public License as published by
--- the Free Software Foundation; either version 2.1 of the License, or
--- (at your option) any later version.
---
-
--- The keyword for this monitor
-local mon = "mail"
-
-local defaults={
-    update_interval=10*1000,
-    retry_interval=60*10*1000,
-    mbox = os.getenv("MAIL"),
-    files = {}
-}
-
-local settings=table.join(statusd.get_config(mon), defaults)
-
-local function TR(s, ...)
-    return string.format(statusd.gettext(s), unpack(arg))
-end
-
-local function check_spool()
-    if not settings.mbox then
-        statusd.warn(TR("MAIL environment variable not set "..
-                        "and no spool given."))
-    end
-end
-
-if not settings.files["spool"] then
-    check_spool()
-    settings.files["spool"] = settings.mbox
-elseif not(settings.files["spool"] == mbox) then
-    statusd.warn(TR("%s.mbox does not match %s.files['spool']; using %s.mbox",
-                   mon, mon, mon))
-    check_spool()
-    settings.files["spool"] = settings.mbox
-end
-
-local function calcmail(fname)
-    local f, err=io.open(fname, 'r')
-    local total, read, old=0, 0, 0
-    local had_blank=true
-    local in_headers=false
-    local had_status=false
-    
-    if not f then
-        statusd.warn(err)
-        return
-    end
-
-    for l in f:lines() do
-        if had_blank and string.find(l, '^From ') then
-            total=total+1
-            had_status=false
-            in_headers=true
-            had_blank=false
-        else
-            had_blank=false
-            if l=="" then
-                if in_headers then
-                    in_headers=false
-                end
-                had_blank=true
-            elseif in_headers and not had_status then
-                local st, en, stat=string.find(l, '^Status:(.*)')
-                if stat then
-                    had_status=true
-                    if string.find(l, 'R') then
-                        read=read+1
-                    end
-                    if string.find(l, 'O') then
-                        old=old+1
-                    end
-                end
-            end
-        end
-    end
-    
-    f:close()
-    
-    return total, total-read, total-old
-end
-
-
-local mail_timer
-local mail_timestamps = {}
-function init_timestamps ()
-    for key, val in pairs(settings.files) do
-        mail_timestamps[key]=-2.0
-    end
-end
-init_timestamps()
-
-local function update_mail()
-    local failed
-    for key, mbox in pairs(settings.files) do
-        if not mbox then
-            error(TR(key.." not set"))
-        end
-    
-        local old_tm=mail_timestamps[key]
-        mail_timestamps[key]=statusd.last_modified(mbox)
-    
-        if mail_timestamps[key]>old_tm then
-           local mail_total, mail_unread, mail_new=calcmail(mbox)
-           if failed == nil then
-               failed = not mail_total
-           else
-               failed = failed and (not mail_total)
-           end
-        
-           if key == "spool" then
-               meter=mon
-           else
-               meter=mon.."_"..key
-           end
-           if mail_total then
-               statusd.inform(meter.."_new", tostring(mail_new))
-               statusd.inform(meter.."_unread", tostring(mail_unread))
-               statusd.inform(meter.."_total", tostring(mail_total))
-
-               if mail_new>0 then
-                   statusd.inform(meter.."_new_hint", "important")
-               else
-                   statusd.inform(meter.."_new_hint", "normal")
-               end
-        
-               if mail_unread>0 then
-                   statusd.inform(meter.."_unread_hint", "important")
-               else
-                   statusd.inform(meter.."_unread_hint", "normal")
-               end
-           end
-       end
-    end
-
-    if failed then
-        statusd.warn(TR("Disabling mail monitor for %d seconds.",
-                       settings.retry_interval/1000))
-       init_timestamps()
-       mail_timer:set(settings.retry_interval, update_mail)
-       return
-    end
-   
-    mail_timer:set(settings.update_interval, update_mail)
-end
-
-mail_timer=statusd.create_timer()
-update_mail()
-
index 2e84bf3d3616adcb6786eaa94675e31a2124a9b8..4f95e2d5b5c95f963363c3c7f6cdd15999aa52b3 100644 (file)
@@ -6,17 +6,8 @@
  * See the included file LICENSE for details.
  */
 
-#include <sys/time.h>
-#include <sys/types.h>
-#include <unistd.h>
-#include <time.h>
-#include <errno.h>
-
 #include <libtu/minmax.h>
 #include <libextl/readconfig.h>
-#include <libmainloop/exec.h>
-#include <libmainloop/select.h>
-#include <libmainloop/signal.h>
 #include <ioncore/saveload.h>
 #include <ioncore/bindmaps.h>
 #include <ioncore/global.h>
@@ -26,9 +17,6 @@
 #include "exports.h"
 
 
-#define CF_STATUSD_TIMEOUT_SEC 3
-
-
 /*{{{ Module information */
 
 
@@ -49,164 +37,6 @@ WBindmap *mod_statusbar_statusbar_bindmap=NULL;
 /*}}}*/
 
 
-/*{{{ Statusd launch helper */
-
-
-#define BL 1024
-
-
-static bool process_pipe(int fd, ExtlFn fn, 
-                         bool *doneseen, bool *eagain)
-{
-    char buf[BL];
-    int n;
-    bool fnret;
-    
-    *eagain=FALSE;
-    
-    n=read(fd, buf, BL-1);
-    
-    if(n<0){
-        if(errno==EAGAIN || errno==EINTR){
-            *eagain=(errno==EAGAIN);
-            return TRUE;
-        }
-        warn_err_obj(TR("reading a pipe"));
-        return FALSE;
-    }else if(n>0){
-        buf[n]='\0';
-        *doneseen=FALSE;
-        return extl_call(fn, "s", "b", &buf, doneseen);
-    }
-    
-    return FALSE;
-}
-
-
-#define USEC 1000000
-
-
-static bool wait_statusd_init(int outfd, int errfd, ExtlFn dh, ExtlFn eh)
-{
-    fd_set rfds;
-    struct timeval tv, endtime, now;
-    int nfds=maxof(outfd, errfd);
-    int retval;
-    bool dummy, doneseen, eagain=FALSE;
-    
-    if(mainloop_gettime(&endtime)!=0){
-        warn_err();
-        return FALSE;
-    }
-    
-    now=endtime;
-    endtime.tv_sec+=CF_STATUSD_TIMEOUT_SEC;
-    
-    while(1){
-        FD_ZERO(&rfds);
-
-        /* Calculate remaining time */
-        if(now.tv_sec>endtime.tv_sec){
-            goto timeout;
-        }else if(now.tv_sec==endtime.tv_sec){
-            if(now.tv_usec>=endtime.tv_usec)
-                goto timeout;
-            tv.tv_sec=0;
-            tv.tv_usec=endtime.tv_usec-now.tv_usec;
-        }else{
-            tv.tv_usec=USEC+endtime.tv_usec-now.tv_usec;
-            tv.tv_sec=-1+endtime.tv_sec-now.tv_sec;
-            /* Kernel lameness tuner: */
-            tv.tv_sec+=tv.tv_usec/USEC;
-            tv.tv_usec%=USEC;
-        }
-        
-        FD_SET(outfd, &rfds);
-        FD_SET(errfd, &rfds);
-    
-        retval=select(nfds+1, &rfds, NULL, NULL, &tv);
-        if(retval>0){
-            if(FD_ISSET(errfd, &rfds)){
-                if(!process_pipe(errfd, eh, &dummy, &eagain))
-                    return FALSE;
-            }
-            if(FD_ISSET(outfd, &rfds)){
-                if(!process_pipe(outfd, dh, &doneseen, &eagain))
-                    return FALSE;
-                if(doneseen){
-                    /* Read rest of errors. */
-                    bool ok;
-                    do{
-                        ok=process_pipe(errfd, eh, &dummy, &eagain);
-                    }while(ok && !eagain);
-                    return TRUE;
-                }
-            }
-        }else if(retval==0){
-            goto timeout;
-        }
-        
-        if(mainloop_gettime(&now)!=0){
-            warn_err();
-            return FALSE;
-        }
-    }
-    
-    return TRUE;
-    
-timeout:
-    /* Just complain to stderr, not startup error log, and do not fail.
-     * The system might just be a bit slow. We can continue, but without
-     * initial values for the meters, geometry adjustments may be necessary
-     * when we finally get that information.
-     */
-    ioncore_warn_nolog(TR("ion-statusd timed out."));
-    return TRUE;
-}
-
-
-EXTL_EXPORT
-int mod_statusbar__launch_statusd(const char *cmd,
-                                  ExtlFn initdatahandler,
-                                  ExtlFn initerrhandler,
-                                  ExtlFn datahandler,
-                                  ExtlFn errhandler)
-{
-    pid_t pid;
-    int outfd=-1, errfd=-1;
-    
-    if(cmd==NULL)
-        return -1;
-    
-    pid=mainloop_do_spawn(cmd, NULL, NULL,
-                          NULL, &outfd, &errfd);
-    
-    if(pid<0)
-        return -1;
-    
-    if(!wait_statusd_init(outfd, errfd, initdatahandler, initerrhandler))
-        goto err;
-    
-    if(!mainloop_register_input_fd_extlfn(outfd, datahandler))
-        goto err;
-    
-    if(!mainloop_register_input_fd_extlfn(errfd, errhandler))
-        goto err2;
-
-    return pid;
-    
-err2:    
-    mainloop_unregister_input_fd(outfd);
-err:    
-    close(outfd);
-    close(errfd);
-    return -1;
-}
-
-
-/*}}}*/
-
-
 /*{{{ Systray */
 
 
index 1eec051e8bbefb629b4c3bc5f22992d4636088e6..b2bcbe7147f6d3e2a50b6436fb1e906f5d2796fd 100644 (file)
@@ -191,7 +191,7 @@ function mod_statusbar.rcv_statusd(str)
 end
 
 
-local function get_modules()
+function mod_statusbar.get_modules()
     local mods={}
     local specials={["filler"]=true, ["systray"]=true}
     
@@ -233,8 +233,6 @@ function mod_statusbar.rcv_statusd_err(str)
     end
 end
 
-local tried_to_launch=false
-
 --DOC
 -- Load modules and launch \file{ion-statusd} with configuration 
 -- table \var{cfg}. The options for each \file{ion-statusd} monitor
@@ -244,9 +242,11 @@ function mod_statusbar.launch_statusd(cfg)
         return
     end
     
-    tried_to_launch=true
+    -- Launch tried, don't do it automatically after reading
+    -- configuration.
+    mod_statusbar.no_autolaunch=true
     
-    local mods=get_modules()
+    local mods=mod_statusbar.get_modules()
     
     -- Load modules
     for m in pairs(mods) do
@@ -354,6 +354,6 @@ package.loaded["mod_statusbar"]=true
 dopath('cfg_statusbar', true)
 
 -- Launch statusd if the user didn't launch it.
-if not tried_to_launch then
+if not mod_statusbar.no_autolaunch then
     mod_statusbar.launch_statusd()
 end
diff --git a/mod_statusbar/statusd-launch.c b/mod_statusbar/statusd-launch.c
new file mode 100644 (file)
index 0000000..c07fa2f
--- /dev/null
@@ -0,0 +1,179 @@
+/*
+ * ion/mod_statusbar/statusd-launch.c
+ *
+ * Copyright (c) Tuomo Valkonen 1999-2007. 
+ *
+ * See the included file LICENSE for details.
+ */
+#include <sys/time.h>
+#include <sys/types.h>
+#include <unistd.h>
+#include <time.h>
+#include <errno.h>
+
+#include <libtu/minmax.h>
+#include <libextl/readconfig.h>
+#include <libmainloop/exec.h>
+#include <libmainloop/select.h>
+#include <libmainloop/signal.h>
+#include <ioncore/saveload.h>
+#include <ioncore/bindmaps.h>
+#include <ioncore/global.h>
+#include <ioncore/ioncore.h>
+
+#include "statusbar.h"
+
+
+#define CF_STATUSD_TIMEOUT_SEC 3
+
+#define BL 1024
+
+#define USEC 1000000
+
+
+static bool process_pipe(int fd, ExtlFn fn, 
+                         bool *doneseen, bool *eagain)
+{
+    char buf[BL];
+    int n;
+    bool fnret;
+    
+    *eagain=FALSE;
+    
+    n=read(fd, buf, BL-1);
+    
+    if(n<0){
+        if(errno==EAGAIN || errno==EINTR){
+            *eagain=(errno==EAGAIN);
+            return TRUE;
+        }
+        warn_err_obj(TR("reading a pipe"));
+        return FALSE;
+    }else if(n>0){
+        buf[n]='\0';
+        *doneseen=FALSE;
+        return extl_call(fn, "s", "b", &buf, doneseen);
+    }
+    
+    return FALSE;
+}
+
+
+static bool wait_statusd_init(int outfd, int errfd, ExtlFn dh, ExtlFn eh)
+{
+    fd_set rfds;
+    struct timeval tv, endtime, now;
+    int nfds=maxof(outfd, errfd);
+    int retval;
+    bool dummy, doneseen, eagain=FALSE;
+    
+    if(mainloop_gettime(&endtime)!=0){
+        warn_err();
+        return FALSE;
+    }
+    
+    now=endtime;
+    endtime.tv_sec+=CF_STATUSD_TIMEOUT_SEC;
+    
+    while(1){
+        FD_ZERO(&rfds);
+
+        /* Calculate remaining time */
+        if(now.tv_sec>endtime.tv_sec){
+            goto timeout;
+        }else if(now.tv_sec==endtime.tv_sec){
+            if(now.tv_usec>=endtime.tv_usec)
+                goto timeout;
+            tv.tv_sec=0;
+            tv.tv_usec=endtime.tv_usec-now.tv_usec;
+        }else{
+            tv.tv_usec=USEC+endtime.tv_usec-now.tv_usec;
+            tv.tv_sec=-1+endtime.tv_sec-now.tv_sec;
+            /* Kernel lameness tuner: */
+            tv.tv_sec+=tv.tv_usec/USEC;
+            tv.tv_usec%=USEC;
+        }
+        
+        FD_SET(outfd, &rfds);
+        FD_SET(errfd, &rfds);
+    
+        retval=select(nfds+1, &rfds, NULL, NULL, &tv);
+        if(retval>0){
+            if(FD_ISSET(errfd, &rfds)){
+                if(!process_pipe(errfd, eh, &dummy, &eagain))
+                    return FALSE;
+            }
+            if(FD_ISSET(outfd, &rfds)){
+                if(!process_pipe(outfd, dh, &doneseen, &eagain))
+                    return FALSE;
+                if(doneseen){
+                    /* Read rest of errors. */
+                    bool ok;
+                    do{
+                        ok=process_pipe(errfd, eh, &dummy, &eagain);
+                    }while(ok && !eagain);
+                    return TRUE;
+                }
+            }
+        }else if(retval==0){
+            goto timeout;
+        }
+        
+        if(mainloop_gettime(&now)!=0){
+            warn_err();
+            return FALSE;
+        }
+    }
+    
+    return TRUE;
+    
+timeout:
+    /* Just complain to stderr, not startup error log, and do not fail.
+     * The system might just be a bit slow. We can continue, but without
+     * initial values for the meters, geometry adjustments may be necessary
+     * when we finally get that information.
+     */
+    ioncore_warn_nolog(TR("ion-statusd timed out."));
+    return TRUE;
+}
+
+
+EXTL_EXPORT
+int mod_statusbar__launch_statusd(const char *cmd,
+                                  ExtlFn initdatahandler,
+                                  ExtlFn initerrhandler,
+                                  ExtlFn datahandler,
+                                  ExtlFn errhandler)
+{
+    pid_t pid;
+    int outfd=-1, errfd=-1;
+    
+    if(cmd==NULL)
+        return -1;
+    
+    pid=mainloop_do_spawn(cmd, NULL, NULL,
+                          NULL, &outfd, &errfd);
+    
+    if(pid<0)
+        return -1;
+    
+    if(!wait_statusd_init(outfd, errfd, initdatahandler, initerrhandler))
+        goto err;
+    
+    if(!mainloop_register_input_fd_extlfn(outfd, datahandler))
+        goto err;
+    
+    if(!mainloop_register_input_fd_extlfn(errfd, errhandler))
+        goto err2;
+
+    return pid;
+    
+err2:    
+    mainloop_unregister_input_fd(outfd);
+err:    
+    close(outfd);
+    close(errfd);
+    return -1;
+}
+
index f9d9338e1ee93cfda1b0da3208313c0b77ede785..9279cb7518180ec340fa324135fbbbbce7dbbd8a 100644 (file)
@@ -24,9 +24,7 @@ typedef struct{
     WFrame *res_frame;
 } WTilingPlacementParams;
 
-/* Handlers of this hook should take (WClientWin*, WTiling*, WManageParams*) 
- * as parameter. 
- */
+/* Handlers of this hook should take WTilingPlacementParams* as parameter. */
 extern WHook *tiling_placement_alt;
 
 extern WPHolder *tiling_prepare_manage(WTiling *ws, const WClientWin *cwin,
index 568a2d1a139766801a755d6b132a4c345cbba6d5..c0a20b83f7b40081ea23306af75dca3caf539887 100644 (file)
@@ -1234,13 +1234,23 @@ static void splitsplit_remove(WSplitSplit *node, WSplit *child,
     static int nstdisp=0;
     WSplitInner *parent;
     WSplit *other;
+    int hprimn=PRIMN_ANY, vprimn=PRIMN_ANY;
     
     assert(node->tl==child || node->br==child);
     
-    if(node->tl==child)
+    if(node->tl==child){
         other=node->br;
-    else
+        if(node->dir==SPLIT_VERTICAL)
+            vprimn=PRIMN_TL;
+        else
+            hprimn=PRIMN_TL;
+    }else{
         other=node->tl;
+        if(node->dir==SPLIT_VERTICAL)
+            vprimn=PRIMN_BR;
+        else
+            hprimn=PRIMN_BR;
+    }
     
     assert(other!=NULL);
 
@@ -1262,7 +1272,7 @@ static void splitsplit_remove(WSplitSplit *node, WSplit *child,
         splittree_changeroot((WSplit*)node, other);
     
     if(reclaim_space)
-        split_resize(other, &(((WSplit*)node)->geom), PRIMN_ANY, PRIMN_ANY);
+        split_resize(other, &(((WSplit*)node)->geom), hprimn, vprimn);
     
     child->parent=NULL;
     
index e3d706d59cd2d96db62d0c878991e43519e97756..e933dc70494e088c8ab99910e3dcb9d6e0790e17 100644 (file)
@@ -993,10 +993,6 @@ static WFrame *tiling_do_split(WTiling *ws, WSplit *node,
         destroy_obj((Obj*)newframe);
         return NULL;
     }
-
-    /* Restack */
-    if(ws->split_tree!=NULL)
-        split_restack(ws->split_tree, ws->dummywin, Above);
     
     return newframe;
 }
@@ -1086,7 +1082,7 @@ void tiling_unsplit_at(WTiling *ws, WRegion *reg)
     ph=region_get_rescue_pholder_for((WRegion*)ws, reg);
     
     if(ph!=NULL){
-        region_rescue(reg, ph);
+        region_rescue(reg, ph, REGION_RESCUE_NODEEP|REGION_RESCUE_PHFLAGS_OK);
         destroy_obj((Obj*)ph);
     }
     
index 26737ab77fa9933d44cec53778c0264376e443f2..990dd55f2a339536c2ebcd3fb37ff3345a3430d9 100644 (file)
@@ -85,7 +85,6 @@ extern void tiling_managed_rqgeom(WTiling *ws, WRegion *reg,
                                   const WRQGeomParams *rq,
                                   WRectangle *geomret);
 extern void tiling_managed_remove(WTiling *ws, WRegion *reg);
-extern void tiling_managed_activated(WTiling *ws, WRegion *reg);
 extern bool tiling_rescue_clientwins(WTiling *ws, WRescueInfo *ph);
 extern WPHolder *tiling_get_rescue_pholder_for(WTiling *ws, WRegion *mgd);
 extern void tiling_do_set_focus(WTiling *ws, bool warp);
index 2c58b501c6d73f4daa42fd66e9a9002d9b4f9ff6..34a35c4440901f29deabbc7cdcf89d4a095f339a 100644 (file)
@@ -8,7 +8,7 @@ include $(TOPDIR)/build/system-inc.mk
 
 ######################################
 
-SUBDIRS=ion-completefile
+SUBDIRS=ion-completefile ion-statusd
 INSTALL_SUBDIRS=$(SUBDIRS)
 
 SHELLSCRIPTS = ion-runinxterm ion-completeman
diff --git a/utils/ion-statusd/Makefile b/utils/ion-statusd/Makefile
new file mode 100644 (file)
index 0000000..1ed1ac9
--- /dev/null
@@ -0,0 +1,40 @@
+##
+## Ion-statusd Makefile
+##
+
+# System-specific configuration is in system.mk
+TOPDIR=../..
+include $(TOPDIR)/build/system-inc.mk
+
+######################################
+
+INCLUDES += $(LIBMAINLOOP_INCLUDES) $(LIBEXTL_INCLUDES) $(LIBTU_INCLUDES)
+LIBS += $(LIBMAINLOOP_LIBS) $(LIBEXTL_LIBS) $(LIBTU_LIBS) $(LUA_LIBS) $(DL_LIBS) -lm
+CFLAGS += $(XOPEN_SOURCE) $(C99_SOURCE)
+
+DEFINES += -DETCDIR=\"$(ETCDIR)\" -DSHAREDIR=\"$(SHAREDIR)\" \
+           -DEXTRABINDIR=\"$(EXTRABINDIR)\" -DMODULEDIR=\"$(MODULEDIR)\" \
+          -DLCDIR=\"$(LCDIR)\" -DLOCALEDIR=\"$(LOCALEDIR)\"
+
+SOURCES = ion-statusd.c exec.c extlrx.c
+
+TARGETS = ion-statusd
+
+LUA_SOURCES = statusd_date.lua statusd_mail.lua statusd_load.lua
+
+MAKE_EXPORTS = statusd
+
+include $(TOPDIR)/libmainloop/rx.mk
+
+######################################
+
+include $(TOPDIR)/build/rules.mk
+
+######################################
+
+ion-statusd: $(OBJS) $(EXT_OBJS)
+       $(CC) $(LINKOPTS) $(OBJS) $(EXT_OBJS) $(LDFLAGS) -o $@
+
+_install: lc_install
+       $(INSTALLDIR) $(EXTRABINDIR)
+       $(INSTALL) -s -m $(BIN_MODE) ion-statusd $(EXTRABINDIR)
diff --git a/utils/ion-statusd/exec.c b/utils/ion-statusd/exec.c
new file mode 100644 (file)
index 0000000..9ccc2d9
--- /dev/null
@@ -0,0 +1,39 @@
+/*
+ * ion/utils/ion-statusd/exec.c
+ *
+ * Copyright (c) Tuomo Valkonen 2005-2006. 
+ *
+ * Ion is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ */
+
+
+#include <libmainloop/select.h>
+#include <libmainloop/exec.h>
+
+
+/*EXTL_DOC
+ * Run \var{cmd} in the background. 
+ */
+EXTL_SAFE
+EXTL_EXPORT
+int statusd_exec(const char *cmd)
+{
+    return mainloop_spawn(cmd);
+}
+
+
+/*EXTL_DOC
+ * Run \var{cmd} with a read pipe connected to its stdout.
+ * When data is received through the pipe, \var{h} is called
+ * with that data.
+ */
+EXTL_SAFE
+EXTL_EXPORT
+int statusd_popen_bgread(const char *cmd, ExtlFn h, ExtlFn errh)
+{
+    return mainloop_popen_bgread(cmd, NULL, NULL, h, errh);
+}
+
diff --git a/utils/ion-statusd/extlrx.c b/utils/ion-statusd/extlrx.c
new file mode 100644 (file)
index 0000000..4c13e33
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+ * ion/utils/ion-statusd/extlrx.c
+ *
+ * Copyright (c) Tuomo Valkonen 2004-2006.
+ *
+ * Ion is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <libextl/extl.h>
+#include <libtu/output.h>
+#include <libtu/locale.h>
+
+
+/*{{{ libtu */
+
+
+/*EXTL_DOC
+ * Issue a warning. How the message is displayed depends on the current
+ * warning handler.
+ */
+EXTL_EXPORT
+void statusd_warn(const char *str)
+{
+    warn("%s", str);
+}
+
+
+EXTL_EXPORT
+const char *statusd_gettext(const char *s)
+{
+    if(s==NULL)
+        return NULL;
+    else
+        return TR(s);
+}
+
+
+/*}}}*/
+
diff --git a/utils/ion-statusd/ion-statusd.c b/utils/ion-statusd/ion-statusd.c
new file mode 100644 (file)
index 0000000..da9e432
--- /dev/null
@@ -0,0 +1,311 @@
+/*
+ * ion/utils/ion-statusd/ion-statusd.c
+ *
+ * Copyright (c) Tuomo Valkonen 2004-2006.
+ *
+ * Ion is free software; you can redistribute it and/or modify it under
+ * the terms of the GNU Lesser General Public License as published by
+ * the Free Software Foundation; either version 2.1 of the License, or
+ * (at your option) any later version.
+ */
+
+#include <string.h>
+#include <unistd.h>
+#include <sys/types.h>
+#include <sys/stat.h>
+
+#include <libtu/util.h>
+#include <libtu/optparser.h>
+#include <libtu/errorlog.h>
+#include <libtu/locale.h>
+#include <libtu/misc.h>
+#include <libextl/readconfig.h>
+#include <libmainloop/select.h>
+#include <libmainloop/signal.h>
+#include <libmainloop/defer.h>
+
+#ifndef CF_NO_LOCALE
+#include <locale.h>
+#endif
+
+#include "../../version.h"
+
+
+static OptParserOpt ion_opts[]={
+    /*{OPT_ID('d'), "display",  OPT_ARG, "host:dpy.scr", 
+     DUMMY_TR("X display to use")},*/
+    
+    {'c', "conffile", OPT_ARG, "config_file", 
+     DUMMY_TR("Configuration file")},
+    
+    {'s', "searchdir", OPT_ARG, "dir", 
+     DUMMY_TR("Add directory to search path")},
+
+    /*{OPT_ID('s'), "session",  OPT_ARG, "session_name", 
+     DUMMY_TR("Name of session (affects savefiles)")},*/
+    
+    {'h', "help", 0, NULL, 
+     DUMMY_TR("Show this help")},
+    
+    {'V', "version", 0, NULL,
+     DUMMY_TR("Show program version")},
+    
+    {OPT_ID('a'), "about", 0, NULL,
+     DUMMY_TR("Show about text")},
+
+    {'q', "quiet", 0, NULL, 
+     DUMMY_TR("Quiet mode")},
+
+    {'m', "meter", OPT_ARG, "meter_module",
+     DUMMY_TR("Load a meter module")},
+
+    END_OPTPARSEROPTS
+};
+
+
+static const char statusd_copy[]=
+    "Ion-statusd " ION_VERSION ", copyright (c) Tuomo Valkonen 2004-2005.";
+
+
+static const char statusd_license[]=DUMMY_TR(
+    "This program is free software; you can redistribute it and/or\n"
+    "modify it under the terms of the GNU Lesser General Public\n"
+    "License as published by the Free Software Foundation; either\n"
+    "version 2.1 of the License, or (at your option) any later version.\n"
+    "\n"
+    "This program is distributed in the hope that it will be useful,\n"
+    "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+    "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
+    "Lesser General Public License for more details.\n");
+
+
+/* new_informs=TRUE because we should always print period when 
+ * initialisation is done. 
+ */
+static bool new_informs=TRUE;
+static ExtlTab configtab;
+
+static void help()
+{
+    int i;
+    printf(TR("Usage: %s [options]\n\n"), libtu_progname());
+    for(i=0; ion_opts[i].descr!=NULL; i++)
+        ion_opts[i].descr=TR(ion_opts[i].descr);
+    optparser_printhelp(OPTP_MIDLONG, ion_opts);
+    printf("\n");
+}
+
+
+static void flush_informs()
+{
+    if(new_informs){
+        printf(".\n");
+        fflush(stdout);
+        new_informs=FALSE;
+    }
+}
+
+
+static void mainloop()
+{
+    sigset_t trapset;
+    
+    sigemptyset(&trapset);
+    sigaddset(&trapset, SIGALRM);
+    sigaddset(&trapset, SIGCHLD);
+    mainloop_trap_signals(&trapset);
+    
+    while(1){
+        int kill_sig=mainloop_check_signals();
+        if(kill_sig!=0 && kill_sig!=SIGUSR1){
+            if(kill_sig==SIGTERM)
+                exit(EXIT_FAILURE);
+            else
+                kill(getpid(), kill_sig);
+        }
+
+        mainloop_execute_deferred();
+
+        flush_informs();
+
+        mainloop_select();
+    }
+}
+
+
+extern bool statusd_register_exports();
+extern void statusd_unregister_exports();
+
+
+static void stdout_closed(int fd, void *data)
+{
+    exit(EXIT_SUCCESS);
+}
+
+
+int main(int argc, char*argv[])
+{
+    const char *mod=NULL;
+    char *mod2=NULL;
+    int loaded=0;
+    int opt;
+    bool quiet=FALSE;
+
+#ifndef CF_NO_LOCALE    
+    if(setlocale(LC_ALL, "")==NULL)
+        warn("setlocale() call failed.");
+#endif
+
+    configtab=extl_table_none();
+    
+    libtu_init(argv[0]);
+    extl_init();
+
+    if(!statusd_register_exports())
+        return EXIT_FAILURE;
+
+    extl_add_searchdir(EXTRABINDIR);
+    extl_add_searchdir(MODULEDIR);
+    extl_add_searchdir(ETCDIR);
+    extl_add_searchdir(SHAREDIR);
+    extl_add_searchdir(LCDIR);
+    extl_set_userdirs("ion3");
+
+    optparser_init(argc, argv, OPTP_MIDLONG, ion_opts);
+    
+    extl_read_config("ioncore_luaext", NULL, TRUE);
+    
+    while((opt=optparser_get_opt())){
+        switch(opt){
+        /*case OPT_ID('d'):
+            display=optparser_get_arg();
+            break;*/
+        case 's':
+            extl_add_searchdir(optparser_get_arg());
+            break;
+        /*case OPT_ID('s'):
+            extl_set_sessiondir(optparser_get_arg());
+            break;*/
+        case 'h':
+            help();
+            return EXIT_SUCCESS;
+        case 'V':
+            printf("%s\n", ION_VERSION);
+            return EXIT_SUCCESS;
+        case OPT_ID('a'):
+            printf("%s\n\n%s", statusd_copy, TR(statusd_license));
+            return EXIT_SUCCESS;
+        case 'c':
+            {
+                ExtlTab t;
+                const char *f=optparser_get_arg();
+                if(extl_read_savefile(f, &t)){
+                    extl_unref_table(configtab);
+                    configtab=t;
+                }else{
+                    warn(TR("Unable to load configuration file %s"), f);
+                }
+            }
+            break;
+        case 'q':
+            quiet=TRUE;
+            break;
+        case 'm':
+            mod=optparser_get_arg();
+            if(strchr(mod, '/')==NULL && strchr(mod, '.')==NULL){
+                mod2=scat("statusd_", mod);
+                if(mod2==NULL)
+                    return EXIT_FAILURE;
+                mod=mod2;
+            }
+            if(extl_read_config(mod, NULL, !quiet))
+                loaded++;
+            if(mod2!=NULL)
+                free(mod2);
+            break;
+        default:
+            warn(TR("Invalid command line."));
+            help();
+            return EXIT_FAILURE;
+        }
+    }
+    
+    if(loaded==0 && !quiet){
+        warn(TR("No meters loaded."));
+        return EXIT_FAILURE;
+    }
+    
+    mainloop();
+    
+    return EXIT_SUCCESS;
+}
+
+
+/*EXTL_DOC
+ * Inform that meter \var{name} has value \var{value}.
+ */
+EXTL_EXPORT
+void statusd_inform(const char *name, const char *value)
+{
+    printf("%s: %s\n", name, value);
+    new_informs=TRUE;
+}
+
+
+/*EXTL_DOC
+ * Get configuration table for module \var{name}
+ */
+EXTL_EXPORT
+ExtlTab statusd_get_config(const char *name)
+{
+    if(name==NULL){
+        return extl_ref_table(configtab);
+    }else{
+        ExtlTab t;
+        if(extl_table_gets_t(configtab, name, &t))
+            return t;
+        else
+            return extl_create_table();
+    }
+}
+
+
+/*EXTL_DOC
+ * Get last file modification time.
+ */
+EXTL_EXPORT
+double statusd_last_modified(const char *fname)
+{
+    struct stat st;
+    
+    if(fname==NULL)
+        return (double)(-1);
+    
+    if(stat(fname, &st)!=0){
+        /*warn_err_obj(fname);*/
+        return (double)(-1);
+    }
+    
+    return (double)(st.st_mtime>st.st_ctime ? st.st_mtime : st.st_ctime);
+}
+
+
+EXTL_EXPORT
+ExtlTab statusd_getloadavg()
+{
+    ExtlTab t=extl_create_table();
+    double l[3];
+    int n;
+    
+    n=getloadavg(l, 3);
+    
+    if(n>=1)
+        extl_table_sets_d(t, "1min", l[0]);
+    if(n>=2)
+        extl_table_sets_d(t, "5min", l[1]);
+    if(n>=3)
+        extl_table_sets_d(t, "15min", l[2]);
+        
+    return t;
+}
+
diff --git a/utils/ion-statusd/statusd_date.lua b/utils/ion-statusd/statusd_date.lua
new file mode 100644 (file)
index 0000000..ea36258
--- /dev/null
@@ -0,0 +1,41 @@
+--
+-- ion/mod_statusbar/ion-statusd/statusd_date.lua
+-- 
+-- Copyright (c) Tuomo Valkonen 2004-2006.
+--
+-- Ion is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+
+
+local timer
+
+local defaults={
+    date_format='%a %Y-%m-%d %H:%M',
+    formats={},
+}
+
+local settings=table.join(statusd.get_config('date'), defaults)
+
+local function update()
+    local tm=os.time()
+    statusd.inform('date', os.date(settings.date_format, tm))
+    for k, f in pairs(settings.formats) do
+        statusd.inform('date_'..k, os.date(f, tm))
+    end
+    return tm
+end
+
+local function timer_handler(tmr)
+    local tm=update()
+    
+    local t=os.date('*t', tm)
+    local d=(60-t.sec)*1000
+    
+    timer:set(d, timer_handler)
+end
+
+timer=statusd.create_timer()
+timer_handler(timer)
diff --git a/utils/ion-statusd/statusd_load.lua b/utils/ion-statusd/statusd_load.lua
new file mode 100644 (file)
index 0000000..88162af
--- /dev/null
@@ -0,0 +1,70 @@
+--
+-- ion/mod_statusbar/ion-statusd/statusd_load.lua
+-- 
+-- Copyright (c) Tuomo Valkonen 2004-2006.
+--
+-- Ion is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+
+--
+-- We should really use getloadavg(3) instead and move the meter to
+-- Ion side to get properly up-to-date loads. But until such an export
+-- is made, and we use potentially blocking files and external programs, 
+-- this meter must be in ion-statusd.
+--
+
+local defaults={
+    update_interval=10*1000,
+    load_hint="1min",
+    important_threshold=1.5,
+    critical_threshold=4.0
+}
+
+local settings=table.join(statusd.get_config("load"), defaults)
+
+local load_timer
+
+local function get_hint(v)
+    local i="normal"
+    if v then
+        if v>settings.critical_threshold then
+            i="critical"
+        elseif v>settings.important_threshold then
+            i="important"
+        end
+    end
+    return i
+end
+
+local function fmt(l)
+    if not l then
+        return "?"
+    else
+        return string.format("%0.2f", l)
+    end
+end
+
+local function update_load()
+    local lds = statusd.getloadavg()
+    f1, f5, f15 = fmt(lds["1min"]), fmt(lds["5min"]), fmt(lds["15min"])
+    statusd.inform("load", f1..", "..f5..", "..f15)
+    statusd.inform("load_hint", get_hint(lds[settings.load_hint]))
+    statusd.inform("load_1min", f1)
+    statusd.inform("load_1min_hint", get_hint(lds["1min"]))
+    statusd.inform("load_5min", f5)
+    statusd.inform("load_5min_hint", get_hint(lds["5min"]))
+    statusd.inform("load_15min", f15)
+    statusd.inform("load_15min_hint", get_hint(lds["15min"]))
+    load_timer:set(settings.update_interval, update_load)
+end
+
+-- Init
+--statusd.inform("load_template", "0.00, 0.00, 0.00");
+
+load_timer=statusd.create_timer()
+update_load()
+
+
diff --git a/utils/ion-statusd/statusd_mail.lua b/utils/ion-statusd/statusd_mail.lua
new file mode 100644 (file)
index 0000000..71cfea9
--- /dev/null
@@ -0,0 +1,156 @@
+--
+-- ion/mod_statusbar/ion-statusd/statusd_mail.lua
+-- 
+-- Copyright (c) Tuomo Valkonen 2004-2006.
+--
+-- Ion is free software; you can redistribute it and/or modify it under
+-- the terms of the GNU Lesser General Public License as published by
+-- the Free Software Foundation; either version 2.1 of the License, or
+-- (at your option) any later version.
+--
+
+-- The keyword for this monitor
+local mon = "mail"
+
+local defaults={
+    update_interval=10*1000,
+    retry_interval=60*10*1000,
+    mbox = os.getenv("MAIL"),
+    files = {}
+}
+
+local settings=table.join(statusd.get_config(mon), defaults)
+
+local function TR(s, ...)
+    return string.format(statusd.gettext(s), unpack(arg))
+end
+
+local function check_spool()
+    if not settings.mbox then
+        statusd.warn(TR("MAIL environment variable not set "..
+                        "and no spool given."))
+    end
+end
+
+if not settings.files["spool"] then
+    check_spool()
+    settings.files["spool"] = settings.mbox
+elseif not(settings.files["spool"] == mbox) then
+    statusd.warn(TR("%s.mbox does not match %s.files['spool']; using %s.mbox",
+                   mon, mon, mon))
+    check_spool()
+    settings.files["spool"] = settings.mbox
+end
+
+local function calcmail(fname)
+    local f, err=io.open(fname, 'r')
+    local total, read, old=0, 0, 0
+    local had_blank=true
+    local in_headers=false
+    local had_status=false
+    
+    if not f then
+        statusd.warn(err)
+        return
+    end
+
+    for l in f:lines() do
+        if had_blank and string.find(l, '^From ') then
+            total=total+1
+            had_status=false
+            in_headers=true
+            had_blank=false
+        else
+            had_blank=false
+            if l=="" then
+                if in_headers then
+                    in_headers=false
+                end
+                had_blank=true
+            elseif in_headers and not had_status then
+                local st, en, stat=string.find(l, '^Status:(.*)')
+                if stat then
+                    had_status=true
+                    if string.find(l, 'R') then
+                        read=read+1
+                    end
+                    if string.find(l, 'O') then
+                        old=old+1
+                    end
+                end
+            end
+        end
+    end
+    
+    f:close()
+    
+    return total, total-read, total-old
+end
+
+
+local mail_timer
+local mail_timestamps = {}
+function init_timestamps ()
+    for key, val in pairs(settings.files) do
+        mail_timestamps[key]=-2.0
+    end
+end
+init_timestamps()
+
+local function update_mail()
+    local failed
+    for key, mbox in pairs(settings.files) do
+        if not mbox then
+            error(TR(key.." not set"))
+        end
+    
+        local old_tm=mail_timestamps[key]
+        mail_timestamps[key]=statusd.last_modified(mbox)
+    
+        if mail_timestamps[key]>old_tm then
+           local mail_total, mail_unread, mail_new=calcmail(mbox)
+           if failed == nil then
+               failed = not mail_total
+           else
+               failed = failed and (not mail_total)
+           end
+        
+           if key == "spool" then
+               meter=mon
+           else
+               meter=mon.."_"..key
+           end
+           if mail_total then
+               statusd.inform(meter.."_new", tostring(mail_new))
+               statusd.inform(meter.."_unread", tostring(mail_unread))
+               statusd.inform(meter.."_total", tostring(mail_total))
+
+               if mail_new>0 then
+                   statusd.inform(meter.."_new_hint", "important")
+               else
+                   statusd.inform(meter.."_new_hint", "normal")
+               end
+        
+               if mail_unread>0 then
+                   statusd.inform(meter.."_unread_hint", "important")
+               else
+                   statusd.inform(meter.."_unread_hint", "normal")
+               end
+           end
+       end
+    end
+
+    if failed then
+        statusd.warn(TR("Disabling mail monitor for %d seconds.",
+                       settings.retry_interval/1000))
+       init_timestamps()
+       mail_timer:set(settings.retry_interval, update_mail)
+       return
+    end
+   
+    mail_timer:set(settings.update_interval, update_mail)
+end
+
+mail_timer=statusd.create_timer()
+update_mail()
+
index 920ba19ccd61d2263e4ebfab1a08d06b9caf1490..17f05f865f60ae196152c23f03810026c1a06f14 100644 (file)
--- a/version.h
+++ b/version.h
@@ -1,2 +1,2 @@
-#define ION_VERSION "3rc-20070927"
+#define ION_VERSION "3rc-20071109"
 #define ION_API_VERSION "3"