Devhelp
===========

.. image:: http://img21.imageshack.us/img21/7087/devhelpsmall.png
   :width: 400
   :alt: image of a plugin in work (if applicable)
   :align: right
   :target: http://img406.imageshack.us/img406/5833/devhelp.png

.. contents::

About
-----

This plugin embeds an API documentation browser and search functionality
directly into Geany's user interface.  In case you didn't know, Devhelp is an
API documentation browser mainly aimed at GNOME-related libraries, although
there are Devhelp books for a wide range of library APIs.  Check your package
manager and/or Google and you should have no trouble finding books that can
be viewed with Devhelp.

Features
--------

 * search in Devhelp
 * search in 'man' pages
 * search in Google Code Search
 
Usage
-----

*User Interface Changes*
^^^^^^^^^^^^^^^^^^^^^^^^

When you load the plugin, two things are added to Geany's UI.  The first is a
new tab labeled 'Devhelp' in the Sidebar notebook.  Inside this notebook page
are two sub-tabs; Contents and Search.  Contents lets you browse all of the
books at once and see their table of contents in a tree view.  Search, not
surprisingly lets you search all of the books for a search term.  The second
UI element that gets added to Geany is the 'Documentation' tab.  This new tab
is added in the main area, where it will be next to a new tab called 'Code'
which now holds the existing documents tabs.

*Keybindings*
^^^^^^^^^^^^^

There are several keybindings available when the Devhelp plugin is loaded to
make it faster to access documentation.  The following keybindings are
available:

*Toggle sidebar contents tab*
+++++++++++++++++++++++++++++

Activates the "Contents" tab under the Devhelp sidebar tab.  The previous tab
will be saved so that when this keybinding is fired again, the previous tab
selection will be activated.

*Toggle sidebar search tab*
+++++++++++++++++++++++++++

Just like the previous keybinding but with the "Search" tab.

*Toggle documentation tab*
++++++++++++++++++++++++++++

Flips between the main documentation viewer and your current code.

*Search for current tag in Devhelp*
+++++++++++++++++++++++++++++++++++++

While coding in the editor, the current tag, that is, the word that is
nearest to the cursor that looks like a programming symbol, or the current
selection, can be search for quickly by activating this keybinding.  Once
activated, the Devhelp books repository on your system will be searched for
the current tag and if an exact match is found, it will be loaded into the
documentation view and the view will be made active.

*Search for current tag in Manual pages*
++++++++++++++++++++++++++++++++++++++++++

Like the previous keybinding, but rather than searching Devhelp books, the
systems manual pages will be searched, assuming a `man` program is available.
The manual page sections will be searched in the order most likely to yield
manual pages relevant to programming.  For example, a search for `mkdir` should
locate the `mkdir()` function from section 2 before it finds the `mkdir` shell
utility in section 1.

*Search for current tag in Google Code Search*
++++++++++++++++++++++++++++++++++++++++++++++++
Like the previous two keybindings, except that a search will be performed
online using Google's Code Search service.  The search results page will be
displayed in the documentation view.

*Context Menu*
^^^^^^^^^^^^^^

There's also another way to invoke a search for the current symbol for our
mouse loving friends out there.  If you right click on the current document,
on a tag/symbol you want help on, the context menu that appears will have an
menu called `Search for "Foo" documentation in`.  Under this menu are 3 items
for the searches discussed under the `Keybindings` section which, when
activated, will perform the same searches as described above.

Requirements
------------

 * GTK >= 2.16
 * libwebkitgtk >= 1.1.18
 * libdevhelp 1.0 >= 2.30.1 or libdevhelp 2.0 >= 2.32.0
 
Contact developers
------------------

You can email me at <codebrainz@users.sourceforge.net>, or find me on the #geany IRC channel on FreeNode, with the nickname 'codebrainz'.
