== C Plugin How-To ==

This document is a stub page.  Its sole purpose is to provide convenient and easy-to-find linkage to the actual tutorials on plugin development.  We will cover a variety of topics, as outlined below.

 1. [wiki:CHowTo/BasicPluginHowto Basic C Plugin How-To] - Start here.  This covers the core basics needed to write a plugin.
 1. [wiki:CHowTo/PluginActionsHowTo Plugin Actions How-To] - This covers using the Plugin Actions facilities to provide additional features.
 1. [wiki:CHowTo/ChoosingPluginIds Choosing Plugin ID's] - This covers how to properly select a plugin ID.
 1. [wiki:CHowTo/DebugAPIHowTo Debug API How-To] - This covers using the libpurple debug API to generate debugging messages for your plugin.
 1. [wiki:CHowTo/NotifyAPIHowTo Notify API How-To] - This covers using the notify API to inform the user of events.
 1. [wiki:CHowTo/CommandAPIHowTo Command API How-To] - This covers using the command API to add text-based commands to libpurple clients.
 1. [wiki:CHowTo/RequestAPIHowTo Request API How-To] - This covers using the Request API to request input from the user.
 1. [wiki:CHowTo/SignalsHowTo Signals How-To] - This covers using signals to detect events and act accordingly.

=== Advanced ===
 1. [wiki:CHowTo/Valgrind Valgrind How-To] - Covers best practices for memory checking your plugin. 

''Note that since work on this set of How-To documents began, some of the example plugins have made their way into libpurple and Pidgin.  Starting with version 2.2.0, helloworld.c, debug_example.c, and notify_example.c are all included with the libpurple source.  A compilation issue was present with these plugins on some systems; this has been fixed for version 2.2.1.''