<?xml version="1.0" encoding="iso-8859-1"?>

<!--

WeeChat documentation (german version)

Copyright (c) 2003-2006 by FlashCode <flashcode@flashtux.org>

This manual 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 manual 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., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA

-->

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"file:///usr/share/xml/docbook/schema/dtd/4.2/docbookx.dtd"
[
  <!ENTITY date.xml SYSTEM "date.xml">
  <!ENTITY config.xml SYSTEM "config.xml">
  <!ENTITY weechat_commands.xml SYSTEM "weechat_commands.xml">
  <!ENTITY irc_commands.xml SYSTEM "irc_commands.xml">
  <!ENTITY key_functions.xml SYSTEM "key_functions.xml">
]>

<book lang="de">
  
  <bookinfo>
    
    <title>WeeChat 0.2.0-cvs - User guide</title>
    <subtitle>Schneller, leichter und erweiterbarer IRC Client</subtitle>
    
    <author>
      <firstname>S�bastien</firstname>
      <surname>Helleu</surname>
      <email>flashcode AT flashtux.org</email>
    </author>
    
    &date.xml;
    
    <copyright>
      <year>2006</year>
      <holder>S�bastien Helleu</holder>
    </copyright>
    
    <legalnotice>
      <para>
        Dieses Programm ist freie Software. Sie k�nnen es unter 
        den Bedingungen der GNU General Public License, 
        wie von der Free Software Foundation ver�ffentlicht, 
        weitergeben und/oder modifizieren, entweder gem�� Version 2 
        der Lizenz oder (nach Ihrer Option) jeder sp�teren Version. 
      </para>
      <para>
        Die Ver�ffentlichung dieses Programms erfolgt in der 
        Hoffnung, da� es Ihnen von Nutzen sein wird, aber OHNE 
        IRGENDEINE GARANTIE, sogar ohne die implizite Garantie der 
        MARKTREIFE oder der VERWENDBARKEIT F�R EINEN BESTIMMTEN ZWECK. 
        Details finden Sie in der GNU General Public License. 
      </para>
      <para>
        Sie sollten ein Exemplar der GNU General Public License 
        zusammen mit diesem Programm erhalten haben. Falls nicht, 
        schreiben Sie an die Free Software Foundation, Inc., 
        51 Franklin St, Fifth Floor, Boston, MA 02110, USA. 
      </para>
    </legalnotice>
    
    <abstract>
      <para>
        Dieses Dokument beschreibt den WeeChat IRC client, es ist ein Teil von WeeChat.
      </para>
      <para>
        Deutsche version: Frank Zacharias
      </para>
      <para>
        Die aktuellste Version ist auf dieser Seite zu finden:
        <ulink url="http://weechat.flashtux.org/doc.php">
          http://weechat.flashtux.org/doc.php
        </ulink>
      </para>
    </abstract>
    
  </bookinfo>
  
  <!-- =========================== Introduction =========================== -->
  
  <chapter id="chapIntroduction">
    <title> Einf�hrung </title>
    
    <para>
      Dieses Kapitel beschreibt WeeChat und die Vorraussetzungen f�r die Installation.
    </para>
    
    <section id="secDescription">
      <title> Beschreibung </title>
      
      <para>
        WeeChat (Wee Enhanced Environment for Chat) ist ein freier
        <acronym>IRC</acronym> Client, schnell und klein, entwickelt f�r viele
        Betriebssysteme.
      </para>
      
      <para>
        Hauptmerkmale:
        <itemizedlist>
          <listitem>
            <para>
              Mehrere Server gleichzeitig nutzbar (mit SSL, IPv6, Proxy)
            </para>
          </listitem>
          <listitem>
            <para>
              viele unterschiedliche User-Interfaces: Curses, wxWidgets, Gtk und Qt
            </para>
          </listitem>
          <listitem>
            <para>
              klein, schnell and leichtgewichtig
            </para>
          </listitem>
          <listitem>
            <para>
              �nderbar und erweiterbar mit Plugins und Skripten
            </para>
          </listitem>
          <listitem>
            <para>
              entsprechend den folgenden <acronym>RFC</acronym>s
              <ulink url="http://www.ietf.org/rfc/rfc1459.txt">1459</ulink>,
              <ulink url="http://www.ietf.org/rfc/rfc2810.txt">2810</ulink>,
              <ulink url="http://www.ietf.org/rfc/rfc2811.txt">2811</ulink>,
              <ulink url="http://www.ietf.org/rfc/rfc2812.txt">2812</ulink> und
              <ulink url="http://www.ietf.org/rfc/rfc2813.txt">2813</ulink>
            </para>
          </listitem>
          <listitem>
            <para>
              Viele Plattformen (GNU/Linux, *BSD, MacOS X, Windows and other)
            </para>
          </listitem>
          <listitem>
            <para>
              100% GPL, freie Software
            </para>
          </listitem>
        </itemizedlist>
      </para>
      
      <para>
        WeeChat Homepage:
        <ulink url="http://weechat.flashtux.org">
          http://weechat.flashtux.org
        </ulink>
      </para>
      
    </section>
    
    <section id="secPreRequis">
      <title> Vorraussetzungen </title>
      
      <para>
        Um WeeChat zu installieren, werden <emphasis> gebraucht </emphasis>:
        <itemizedlist>
          <listitem>
            <para>
              ein laufendes GNU/Linux (Compiler f�r Quellcode-Pakete)
            </para>
          </listitem>
          <listitem>
            <para>
              root-Rechte f�r die Installation
            </para>
          </listitem>
          <listitem>
            <para>
              dem User-Interface entsprechend, eine der folgenden Bibliotheken:
              <itemizedlist>
                <listitem>
                  <para>
                    Curses: ncurses Bibliothek
                  </para>
                </listitem>
                <listitem>
                  <para>
                    Gtk: <emphasis>*** noch nicht implementiert ***</emphasis>
                  </para>
                </listitem>
                <listitem>
                  <para>
                    WxWidgets: <emphasis>*** noch nicht implementiert ***</emphasis>
                  </para>
                </listitem>
                <listitem>
                  <para>
                    Qt: <emphasis>*** noch nicht implementiert ***</emphasis>
                  </para>
                </listitem>
              </itemizedlist>
            </para>
          </listitem>
        </itemizedlist>
      </para>
      
    </section>
  </chapter>
  
  <!-- =========================== Installation =========================== -->
  
  <chapter id="chapInstallation">
    <title>Installation</title>
    
    <para>
      Dieses Kapitel erkl�rt die Installation von WeeChat.
    </para>
    
    <section id="secBinaryPackages">
      <title> Bin�re Pakete </title>
      
      <para>
        Bin�re Pakete sind f�r die folgenden Distributionen verf�gbar:
        <itemizedlist>
          <listitem>
            <para>
              Debian (oder Debian-kompatible):
              <userinput>apt-get install weechat</userinput>
            </para>
          </listitem>
          <listitem>
            <para>
              Mandriva/RedHat (oder jede RPM-kompatible Distribution):
              <userinput>
                rpm -i /chemin/weechat-x.y.z-1.i386.rpm
              </userinput>
            </para>
          </listitem>
          <listitem>
            <para>
              Gentoo:
              <userinput>emerge weechat</userinput>
            </para>
          </listitem>
        </itemizedlist>
        F�r andere Distributionen: sehen sie in die Dokumentation
        f�r Installationsanweisungen.
      </para>
      
    </section>
    
    <section id="secSourcePackage">
      <title> Quellcode-Pakete </title>
      
      <para>
        Alles was sie tun m�ssen, ist in einer Konsole oder einem Terminal aufzurufen:
<screen><prompt>$ </prompt><userinput>./configure</userinput>
<prompt>$ </prompt><userinput>make</userinput></screen>
      </para>
      <para>
        Dann root werden und WeeChat installieren:
<screen><prompt>$ </prompt><userinput>su</userinput>
(root-Passwort eingeben)
<prompt># </prompt><userinput>make install</userinput></screen>
      </para>
      
    </section>
    
    <section id="secCVSSources">
      <title>CVS Quellen</title>
      
      <para>
        Warnung: CVS Quellen sind f�r fortgeschrittene Anwender, das �bersetzen k�nnte
        fehlschlagen oder das Ergebnis nicht stabil sein. Sie wurden gewarnt!
      </para>
      
      <para>
        Um die CVS Quellen zu bekommen, sind folgende Kommandos n�tig:
<screen><prompt>$ </prompt><userinput>cvs -z3 -d:pserver:anonymous@cvs.savannah.nongnu.org:/sources/weechat co weechat</userinput></screen>
      </para>
      
      <para>
        Ausf�hren des folgenden Skripts:
        <userinput>./autogen.sh</userinput>
      </para>
      
      <para>
        Dann folgen sie den Anweisungen zu den Quellpaketen
        (siehe <xref linkend="secSourcePackage" />)
      </para>
      
    </section>
    
  </chapter>
  
  <!-- ============================== Usage =============================== -->
  
  <chapter id="chapUsage">
    <title> Nutzung </title>
    
    <para>
      Dieses Kapitel erkl�rt, wie Weechat zu starten ist, die zu verwendenden
      Tastenkombinationen, interne und IRC-Kommandos, die Konfigurationsdatei
      und die FIFO f�r die remote-Bedienung.
    </para>
    
    <section id="secRunningWeeChat">
      <title>Starten von WeeChat</title>
      
      <para>
        Argumente der Kommandozeile:
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Parameter</entry>
                <entry>Beschreibung</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry><literal>-a, --no-connect</literal></entry>
                <entry>
                  Schaltet das auto-connect ab
                </entry>
              </row>
              <row>
                <entry><literal>-c, --config</literal></entry>
                <entry>
                  Zeigt eine Hilfe zu den Konfigurationsm�glichkeiten (Liste der Optionen)
                </entry>
              </row>
              <row>
                <entry><literal>-d, --dir &lt;path&gt;</literal></entry>
                <entry>
                  Setzt den Pfad f�r das Verzeichnis, dass Weechat benutzen soll 
                  (relevant f�r die Konfigurationsdateien, Logs, Plugins und Skripte).
                  Der Standardwert "<literal>~/.weechat</literal>". 
                  Bitte beachten Sie: dieses Verzeichnis wird automatisch erzeugt, wenn es noch nicht 
                  exitiert.
                </entry>
              </row>
              <row>
                <entry><literal>-f, --key-functions</literal></entry>
                <entry>
                  Zeigt die intern verwendeten Funktionen von WeeChat f�r bestimmte Tastenkombinationen an
                </entry>
              </row>
              <row>
                <entry><literal>-h, --help</literal></entry>
                <entry>
                  Zeigt eine zusammenfassende Hilfe an.
                </entry>
              </row>
              <row>
                <entry><literal>-i, --irc-commands</literal></entry>
                <entry>
                  Zeigt die IRC-Kommandos an
                </entry>
              </row>
              <row>
                <entry><literal>-k, --keys</literal></entry>
                <entry>
                  Zeigt die Standard-Tastenkombinationen an
                </entry>
              </row>
              <row>
                <entry><literal>-l, --license</literal></entry>
                <entry>
                  Zeigt die Lizenz an
                </entry>
              </row>
              <row>
                <entry><literal>-p, --no-plugin</literal></entry>
                <entry>
                  Schaltet das automatische Laden der Plugins ab
                </entry>
              </row>
              <row>
                <entry><literal>-v, --version</literal></entry>
                <entry>
                  Zeigt die Programmversion an
                </entry>
              </row>
              <row>
                <entry><literal>-w, --weechat-commands</literal></entry>
                <entry>
                  Zeigt die Weechat-eigenen Kommandos an
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </para>
      
      <para>
        Es ist auch m�glich URLs f�r einen oder mehrere IRC-Server anzugeben, so wie:
        <screen>irc[6][s]://[nick[:passwort]@]irc.example.org[:port][/channel][,channel[...]</screen>
        Beispiel um die Channels #weechat and #toto zu betreten
        "<literal>irc.freenode.net</literal>" server, default port (6667),
        mit dem Nicknamen "nono":
        <screen><prompt>$ </prompt><userinput>weechat-curses irc://nono@irc.freenode.net/#weechat,#toto</userinput></screen>
      </para>
      
      <para>
        Um WeeChat zu starten, ist eins der folgenden Kommandos abzusetzen:
        <itemizedlist>
          <listitem>
            <para>
              f�r Curses GUI: <userinput>weechat-curses</userinput>
            </para>
          </listitem>
          <listitem>
            <para>
              f�r Gtk GUI: <userinput>weechat-gtk</userinput>
            </para>
          </listitem>
          <listitem>
            <para>
              f�r wxWidgets GUI: <userinput>weechat-wxwidgets</userinput>
            </para>
          </listitem>
          <listitem>
            <para>
              f�r Qt GUI: <userinput>weechat-qt</userinput>
            </para>
          </listitem>
        </itemizedlist>
      </para>
      
      <para>
        Wenn Sie Weechat zum ersten Mal starten, wird eine Konfigurationsdatei
        erzeugt, deren Optionen besitzen Standardwerte. Diese Datei ist:
        "<literal>~/.weechat/weechat.rc</literal>"
      </para>
      
      <para>
        Sie k�nnen diese Datei entsprechend ihren Bed�rfnissen editieren,
        um Weechat anzupassen (NUR wenn Weechat nicht l�uft) oder Parameter
        zu beeinflussen mit 
        "<literal>/set</literal>" Kommando in WeeChat
        (siehe <xref linkend="secWeeChatCommands" />)
      </para>
      
    </section>
    
    <section id="secKeyboardShortcuts">
      <title> Tastenkombinationen </title>
      
      <para>
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry> Tastenkombination </entry>
                <entry> Wirkung </entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry>Links</entry>
                <entry>
                  Gehe zum vorherigen Zeichen in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Rechts</entry>
                <entry>
                  Gehe zum n�chsten Zeichen in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Strg + Links</entry>
                <entry>
                  Gehe zum vorherigen Wort in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Strg + Rechts</entry>
                <entry>
                  Gehe zum n�chsten Wort in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Pos1 / Strg + A</entry>
                <entry>
                  Gehe zum Anfang der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Ende / Strg + E</entry>
                <entry>
                  Gehe zum Ende der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Strg + K</entry>
                <entry>
                  L�sche vom Cursor bis zum Ende der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Strg + L</entry>
                <entry>
                  Fenster neu aufbauen
                </entry>
              </row>
              <row>
                <entry>Strg + U</entry>
                <entry>
                  L�sche vom Cursor bis zum Aanfang der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Strg + W</entry>
                <entry>
                  L�sche das vorhergehende Wort in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry> R�ckschritt </entry>
                <entry>
                  L�sche das vorhergehende Zeichen in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry> Entfernen </entry>
                <entry>
                  L�sche das n�chste Zeichen in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry> Tabulator </entry>
                <entry>
                  Vervollst�ndige ein Kommando oder Nick
                  (wiederhole: finde n�chste Vervollst�ndigung)
                </entry>
              </row>
              <row>
                <entry>Jedes Zeichen</entry>
                <entry>
                  Setze das Zeichen beim Cursor in die Kommandozeile ein
                </entry>
              </row>
              <row>
                <entry>Eingabe</entry>
                <entry>
                  F�hre ein Kommando aus oder sende eine Nachricht
                </entry>
              </row>
              <row>
                <entry>Hoch / Runter</entry>
                <entry>
                  Rufe das letzte Kommando/die letzte Nachricht wieder auf
                </entry>
              </row>
              <row>
                <entry>Strg + Hoch / Strg + Runter</entry>
                <entry>
                  Rufe das letzte Kommando/die letzte Nachricht des globalen Buffers
                  wieder auf (f�r alle Buffer)
                </entry>
              </row>
              <row>
                <entry>Seite hoch / Seite runter</entry>
                <entry>
                  Eine Seite hoch / runter im Verlauf des Buffers
                </entry>
              </row>
              <row>
                <entry>Alt + Seite hoch / Alt + Seite runter </entry>
                <entry>
                  Ein paar Zeilen hoch / runter im Verlauf des Buffers
                </entry>
              </row>
              <row>
                <entry> Alt + Pos1 / Alt + Ende </entry>
                <entry>
                  Gehe zum Anfang / Ende des Puffers
                </entry>
              </row>
              <row>
                <entry> F5 / Alt + Links </entry>
                <entry>
                  Gehe zum vorherigen Puffer
                </entry>
              </row>
              <row>
                <entry> F6 / Alt + Rechts </entry>
                <entry>
                  Gehe zum n�chsten Puffer
                </entry>
              </row>
              <row>
                <entry>F7</entry>
                <entry>
                  Schalte in das vorherige Fenster
                </entry>
              </row>
              <row>
                <entry>F8</entry>
                <entry>
                  Schalte in das n�chste Fenster
                </entry>
              </row>
              <row>
                <entry>F10</entry>
                <entry>
                  Entferne den letzten Hinweis in der Infobar
                </entry>
              </row>
              <row>
                <entry>F11 / F12</entry>
                <entry>
                  Bl�ttere in der Nicklist
                </entry>
              </row>
              <row>
                <entry>Alt + F11 / Alt + F12</entry>
                <entry>
                  Gehe zum Anfang / Ende der Nicklist
                </entry>
              </row>
              <row>
                <entry>Alt + A</entry>
                <entry>
                  Schalte in den n�chsten Puffer mit Aktivit�t
                  (mit der Priorit�t: highlight, message, other)
                </entry>
              </row>
              <row>
                <entry>Alt + B</entry>
                <entry>
                  Gehe zum vorherigen Wort in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Alt + D</entry>
                <entry>
                  L�sche das n�chste Wort in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Alt + F</entry>
                <entry>
                  Gehe zum n�chsten Wort in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Alt + H</entry>
                <entry>
                  L�sche den Inhalt der Hotlist
                  (Aktivit�tsanzeige f�r andere Puffer)	
                </entry>
              </row>
              <row>
                <entry>Alt + J dann Alt + D</entry>
                <entry>
                  Zeige den DCC-Puffer
                </entry>
              </row>
              <row>
                <entry>Alt + J dann Alt + L</entry>
                <entry>
                  Schalte zum letzten Puffer
                </entry>
              </row>
              <row>
                <entry>Alt + J dann Alt + R</entry>
                <entry>
                  Schalte in den reinen IRC-Daten Puffer
                </entry>
              </row>
              <row>
                <entry>Alt + J dann Alt + S</entry>
                <entry>
                  Schalte in den Server-Puffer
                </entry>
              </row>
              <row>
                <entry>Alt + J dann Alt + X</entry>
                <entry>
                  Schalte in den ersten Channel des n�chsten Puffers
                  (oder in den Server-Puffer wenn keine Channel offen ist)
                </entry>
              </row>
              <row>
                <entry>Alt + Zahl (0-9)</entry>
                <entry>
                  Schalte in den Puffer mit der Nummer (0 = 10)
                </entry>
              </row>
              <row>
                <entry>Alt + J dann eine Zahl (01-99)</entry>
                <entry>
                  Schalte in den Puffer mit der Nummer
                </entry>
              </row>
              <row>
                <entry>Alt + K</entry>
                <entry>
                  Setze den Keycode der n�chsten Taste in der Kommandozeile
                  ein
                </entry>
              </row>
              <row>
                <entry>Alt + N</entry>
                <entry>
                  Bl�ttere zum n�chsten Highlight
                </entry>
              </row>
              <row>
                <entry>Alt + P</entry>
                <entry>
                  Bl�ttere zum vorigen Highlight
                </entry>
              </row>
              <row>
                <entry>Alt + R</entry>
                <entry>
                  L�sche die komplette Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Alt + S</entry>
                <entry>
                  Schalte zwischen den Servern im Server-Puffer hin und her
                  (wenn "look_one_server_buffer" angeschaltet ist)
                </entry>
              </row>
              <row>
                <entry>Alt + U</entry>
                <entry>
                  Bl�ttere zur ersten ungelesenen Zeile im Puffer
                </entry>
              </row>
              <row>
                <entry>Alt + W dann Alt + Pfeil</entry>
                <entry>
                  Schalte zum Fenster in der entsprechenden Richtung
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </para>
      
    </section>
    
    <section id="secCommandLine">
      <title> Kommandozeile </title>
      
      <para>
        Die WeeChat Kommandozeile (am Ende des Fensters) l�sst sie Nachrichten an einen
        Channel senden oder WeeChat- bzw. IRC-Kommandos ausf�hren
        (siehe <xref linkend="secWeeChatIRCCommands" />).
      </para>
      
      <para>
        Kommandos beginnen mit einem "/", gefolgt vom Namen des Kommandos.
        Um zum Beispiel einen privaten Chat mit "<literal>toto</literal>" zu beginnen:
        <screen><userinput>/query toto</userinput></screen>
      </para>
      
      <para>
        Nachrichten an einen Channel sind jeder Text, der nicht mit einem "/" begint.
        Um zum Beispiel den Text "<literal>hello</literal>" an den gegenw�rtigen Channel
        zu senden:
        <screen><userinput>hello</userinput></screen>
      </para>
      
      <para>
        Dennoch ist es m�glich, eine Nachricht auch mit einem "/" zu beginnen, einfach
        ein weiteres "/" voranstellen. Um zum Beispiel den Text "<literal>/query toto</literal>"
        an den gegenw�rtigen Channel zu senden:
        <screen><userinput>//query toto</userinput></screen>
      </para>
      
      <para>
        Wenn die Option IRC-Farben ("<literal>irc_colors_send</literal>") senden 
        angeschaltet ist, k�nnen sie Farbcodierung und Attribute wiefolgt verwenden:
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Code</entry>
                <entry>Beschreibung</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry>%B</entry>
                <entry>
                  Fett (bold)
                </entry>
              </row>
              <row>
                <entry>%Cxx</entry>
                <entry>
                  Textfarbe "<literal>xx</literal>" (color)
                  (siehe Farbtabelle)
                </entry>
              </row>
              <row>
                <entry>%Cxx,yy</entry>
                <entry>
                  Textfarbe "<literal>xx</literal>"
                  und Hintergrund "<literal>yy</literal>"
                  (siehe Farbtabelle)
                </entry>
              </row>
              <row>
                <entry>%O</entry>
                <entry>
                  Schalte Farben und Attribute ab
                </entry>
              </row>
              <row>
                <entry>%R</entry>
                <entry>
                  umgedrehte Farben (tausche Textfarbe mit Hintergrundfarbe)
                </entry>
              </row>
              <row>
                <entry>%U</entry>
                <entry>
                  Unterstreiche Text
                </entry>
              </row>
              <row>
                <entry>%%</entry>
                <entry>
                  Schreibe ein einzelnes "<literal>%</literal>"
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
        Hinweis: Der gleiche Farbcode (ohne die Nummer) kann zum Ausschalten
        des Attributes verwendet werden.
      </para>
      
      <para>
        Farbcodes f�r %C:
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Code</entry>
                <entry>Farbe</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry>00</entry>
                <entry>weiss</entry>
              </row>
              <row>
                <entry>01</entry>
                <entry>schwarz</entry>
              </row>
              <row>
                <entry>02</entry>
                <entry>dunkles Blau</entry>
              </row>
              <row>
                <entry>03</entry>
                <entry>dunkles Gr�n </entry>
              </row>
              <row>
                <entry>04</entry>
                <entry>helles Rot </entry>
              </row>
              <row>
                <entry>05</entry>
                <entry>dunkles Rot</entry>
              </row>
              <row>
                <entry>06</entry>
                <entry> Magenta </entry>
              </row>
              <row>
                <entry>07</entry>
                <entry> Orange </entry>
              </row>
              <row>
                <entry>08</entry>
                <entry> Gelb </entry>
              </row>
              <row>
                <entry>09</entry>
                <entry> helles Gr�n</entry>
              </row>
              <row>
                <entry>10</entry>
                <entry> Cyan </entry>
              </row>
              <row>
                <entry>11</entry>
                <entry> helles Cyan</entry>
              </row>
              <row>
                <entry>12</entry>
                <entry> helles Blau </entry>
              </row>
              <row>
                <entry>13</entry>
                <entry> helles Magenta </entry>
              </row>
              <row>
                <entry>14</entry>
                <entry> Grau </entry>
              </row>
              <row>
                <entry>15</entry>
                <entry> helles Grau (Weiss)</entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </para>
      
      <para>
        Beispiel: Anzeige von "<literal>hello everybody!</literal>" mit
        "<literal>hello</literal>" fett in hellem Blau, und 
        "<literal>everybody</literal>" unterstrichen in hellem Rot:
<screen><userinput>%C12%Bhello%B%C04%U everybody%U%C!</userinput></screen>
      </para>
      
    </section>
    
    <section id="secWeeChatIRCCommands">
      <title>WeeChat / IRC Kommandos </title>
      
      <para>
        Dieses Kapitel listet alle WeeChat- und IRC-Kommandos auf.
      </para>
      
      <section id="secWeeChatCommands">
        <title> WeeChat Kommandos </title>
        
        <para>
          &weechat_commands.xml;
        </para>
        
      </section>
      
      <section id="secKeyFunctions">
        <title> Funktionen </title>
        
        <para>
          <informaltable colsep="0" frame="none">
            <tgroup cols="2">
              <thead>
                <row>
                  <entry> Funktion </entry>
                  <entry> Beschreibung </entry>
                </row>
              </thead>
              <tbody>
                
                &key_functions.xml;
                
              </tbody>
            </tgroup>
          </informaltable>
        </para>
        
      </section>
      
      <section id="secIRCCommands">
        <title> IRC Kommandos </title>
        
        <para>
          &irc_commands.xml;
        </para>
        
      </section>
      
    </section>
    
    <section id="secConfigurationFile">
      <title> Konfigurationsdatei </title>
      
      <para>
        Liste der Optionen f�r die Konfigurationsdatei:
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry> Option </entry>
                <entry> Typ </entry>
                <entry> Wert </entry>
                <entry> Default </entry>
                <entry> Beschreibung </entry>
              </row>
            </thead>
            <tbody>
              
              &config.xml;
              
            </tbody>
          </tgroup>
        </informaltable>
      </para>
      
      <para>
        Farben f�r die Curses GUI:
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry> Schl�sselwort </entry>
                <entry> Farbe </entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry><literal>default</literal></entry>
                <entry>default Farbe (Transparent f�r den Hintergrund)</entry>
              </row>
              <row>
                <entry><literal>black</literal></entry>
                <entry> Schwarz </entry>
              </row>
              <row>
                <entry><literal>red</literal></entry>
                <entry> dunkles Rot </entry>
              </row>
              <row>
                <entry><literal>lightred</literal></entry>
                <entry> helles Rot </entry>
              </row>
              <row>
                <entry><literal>green</literal></entry>
                <entry> dunkles Gr�n </entry>
              </row>
              <row>
                <entry><literal>lightgreen</literal></entry>
                <entry> helles Gr�n </entry>
              </row>
              <row>
                <entry><literal>brown</literal></entry>
                <entry> Braun </entry>
              </row>
              <row>
                <entry><literal>yellow</literal></entry>
                <entry> Gelb </entry>
              </row>
              <row>
                <entry><literal>blue</literal></entry>
                <entry> dunkles Blau </entry>
              </row>
              <row>
                <entry><literal>lightblue</literal></entry>
                <entry> helles Blau </entry>
              </row>
              <row>
                <entry><literal>magenta</literal></entry>
                <entry> dunkles Magenta </entry>
              </row>
              <row>
                <entry><literal>lightmagenta</literal></entry>
                <entry> helles Magenta </entry>
              </row>
              <row>
                <entry><literal>cyan</literal></entry>
                <entry> dunkles Cyan </entry>
              </row>
              <row>
                <entry><literal>lightcyan</literal></entry>
                <entry> helles Cyan </entry>
              </row>
              <row>
                <entry><literal>white</literal></entry>
                <entry> Weiss </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </para>
      
    </section>
    
    <section id="secFIFOpipe">
      <title> Remote-Schnittstelle (FIFO pipe) </title>
      
      <para>
        Sie k�nnen WeeChat auch extern steuern, indem sie Kommandos oder Text
        an eine sogen. pipe �bergeben (sie m�ssen die Option "irc_fifo_pipe" 
        anschalten, die normalerweise abgeschaltet ist).
      </para>
      
      <para>
        Diese pipe liegt in "<literal>~/.weechat/</literal>" und hat den Namen
        "weechat_fifo_xxxxx" (das xxxxx ist die Prozess-ID (PID) eines laufenden WeeChat).
        Wenn mehrere Instanzen von WeeChat laufen, sind mehrere pipes vorhanden, eine
        f�r jede Instanz.
      </para>
      
      <para>
        Der Syntax f�r ein pipe-Kommando ist:
        <screen>server,channel *Text oder Kommando</screen>
        wobei Server und Channel optional sind, aber wenn der Channel angegeben ist,
        muss der Server auch angegeben werden.
      </para>
      
      <para>
        Einige Beispiele:
        <itemizedlist>
          <listitem>
            <para>
              �ndern des Nicks auf freenode in "mynick|out" :
              <screen><prompt>$ </prompt><userinput>echo "freenode */nick mynick|out" &gt;~/.weechat/weechat_fifo_12345</userinput></screen>
            </para>
          </listitem>
          <listitem>
            <para>
              Senden einer Nachricht an #weechat:
              <screen><prompt>$ </prompt><userinput>echo "freenode,#weechat *hello everybody!" >~/.weechat/weechat_fifo_12345</userinput></screen>
            </para>
          </listitem>
          <listitem>
            <para>
              Senden einer Nachricht an den gegenw�rtigen Channel (Puffer, der in WeeChat angezeigt wird):
              <screen><prompt>$ </prompt><userinput>echo "*hello!" >~/.weechat/weechat_fifo_12345</userinput></screen>
              <emphasis>Warnung:</emphasis> Das ist gef�hrlich und sie sollten das nicht tun, ausgenommen sie wissen was sie tun!
            </para>
          </listitem>
          <listitem>
            <para>
              Sende zwei Kommandos um (alle) Perl-Skripte abzuschalten/neu zu laden (getrennt durch ein "\n"):
              <screen><prompt>$ </prompt><userinput>echo -e "freenode */perl unload\nfreenode */perl autoload" >~/.weechat/weechat_fifo_12345</userinput></screen>
            </para>
          </listitem>
        </itemizedlist>
      </para>
      
      <para>
        Sie k�nnen ein Skript schreiben, um ein Kommando an alle laufenden WeeChat-Instanzen zu senden,
        zum Beispiel:
<screen>
#!/bin/sh
if [ $# -eq 1 ]; then
    for fifo in $(/bin/ls ~/.weechat/weechat_fifo_* 2>/dev/null); do
        echo -e "$1" >$fifo
    done
fi
</screen>
        Wenn das Skript "auto_weechat_command" heisst, k�nnen sie es folgendermassen aufrufen:
        <screen><prompt>$ </prompt><userinput>./auto_weechat_command "freenode,#weechat *hello"</userinput></screen>
      </para>
      
    </section>
    
  </chapter>
  
  <!-- ============================ Extensions ============================ -->
  
  <chapter id="chapPlugins">
    <title>Plugins</title>
    
    <para>
      Dieses Kapitel beschreibt das Plugin-Interface (API) in WeeChat und die
      Standard-Skriptplugins (Perl, Python, Ruby, Lua), die zu WeeChat geh�ren.
    </para>
    
    <section id="secPluginsInWeeChat">
      <title>Plugins in WeeChat</title>
      
      <para>
        Ein Plugin ist ein C-Programm, dass WeeChat-Funktionen aufrufen kann,
        die in einem Interface definiert sind.
      </para>
      
      <para>
        Dieses C-Programm braucht nicht den Quellcode von WeeChat (aber die 
        API-Beschreibung) und kann dynamisch mit dem folgenden Kommando in 
        WeeChat geladen werden
        <command>/plugin</command>.
      </para>
      
      <para>
        Das Plugin muss in Form einer dynamischen Bibliothek vorliegen, 
        damit es das Betriebssystem dynamisch laden kann.
        Unter GNU/Linux besitzt die Datei die Endung ".so", unter
        Windows ".dll".
      </para>
      
    </section>
    
    <section id="secWriteAPlugin">
      <title> Ein Plugin schreiben </title>
      
      <para>
        Das Plugin muss die Datei "weechat-plugin.h" einbinden (verf�gbar 
        im WeeChat-Quellcode).
        Diese Datei definiert die Strukturen und Typen um mit WeeChat
        zu kommunizieren.
      </para>
      
      <para>
        Das Plugin muss einige Variablen und Funktionen besitzen
        (n�tig, sonst kann das Plugin nicht geladen werden):
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Variable</entry>
                <entry> Beschreibung </entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry><literal>char plugin_name[]</literal></entry>
                <entry>Plugin Name</entry>
              </row>
              <row>
                <entry><literal>char plugin_version[]</literal></entry>
                <entry>Plugin Version</entry>
              </row>
              <row>
                <entry><literal>char plugin_description[]</literal></entry>
                <entry>kurze Beschreibung des Plugins</entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
        
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Funktion</entry>
                <entry>Beschreibung</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry><literal>int weechat_plugin_init (t_weechat_plugin *plugin)</literal></entry>
                <entry>
                  Die Funktion wird aufgerufen, wenn das Plugin geladen wird.
                  Sie muss bei Erfolg PLUGIN_RC_OK, bei Fehlschlag PLUGIN_RC_KO
                  zur�ckgeben. (Bei einem Fehler wird das Plugin nicht geladen)
                </entry>
              </row>
              <row>
                <entry><literal>void weechat_plugin_end (t_weechat_plugin *plugin)</literal></entry>
                <entry>Funktion wird beim Abschalten aufgerufen</entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
      </para>
      
      <section id="secAPIFunctions">
        <title>API Funktionen</title>
        
        <section id="secAPI_ascii_strcasecmp">
          <title>ascii_strcasecmp</title>
          
          <para>
            Prototyp:
            <command>
              int ascii_strcasecmp (t_weechat_plugin *plugin,
              char *string1, char *string2)
            </command>
          </para>
          <para>
            Vergleich von Zeichenketten unabh�ngig von Sprache und Schreibweise (gross/klein).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string1</option>: erste Zeichenkette des Vergleichs
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string2</option>: zweite Zeichenkette des Vergleichs
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Unterschied zwischen den zwei Zeichenketten: kleiner Null wenn
            string1 &lt; string2, Null wenn string1 == string2, gr�sser Null wenn string1 &gt; string2
          </para>
          <para>
            Beispiel:
            <screen>if (plugin->ascii_strcasecmp (plugin, "abc", "def") != 0) ...</screen>
          </para>
        </section>
        
        <section id="secAPI_ascii_strncasecmp">
          <title>ascii_strncasecmp</title>
          
          <para>
            Prototyp:
            <command>
              int ascii_strncasecmp (t_weechat_plugin *plugin,
              char *string1, char *string2, int max)
            </command>
          </para>
          <para>
            Vergleich von Zeichenketten unabh�ngig von Sprache und Schreibweise (gross/klein) f�r h�chstens "max" Zeichen.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string1</option>: erste Zeichenkette des Vergleichs
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string2</option>: zweite Zeichenkette des Vergleichs
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>max</option>: maximale Zahl an Zeichen f�r den Vergleich
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Unterschied zwischen den zwei Zeichenketten: kleiner Null wenn
            string1 &lt; string2, Null wenn string1 == string2, gr�sser Null wenn string1 &gt; string2
          </para>
          <para>
            Beispiel:
            <screen>if (plugin->ascii_strncasecmp (plugin, "abc", "def", 2) != 0) ...</screen>
          </para>
        </section>
        
        <section id="secAPI_explode_string">
          <title>explode_string</title>
          
          <para>
            Prototyp:
            <command>
              char **explode_string (t_weechat_plugin *plugin, char *string,
              char *separators, int num_items_max, int *num_items)
            </command>
          </para>
          <para>
            Zerlege eine Zeichenkette entsprechend eines oder mehrerer Trennzeichen(s).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string</option>: zu zerlegende Zeichenkette
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>separators</option>: zu verwendende(s) Trennzeichen 
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>num_items_max</option>: maximale Anzahl an zu erzeugenden Teilen (0 = keine Grenze)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>num_items</option>: Zeiger auf eine int-Variable, die die Anzahl der erzeugten
                  Teile enth�lt
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: ein Array von Zeichenketten, NULL bei Fehlern.
          </para>
          <para>
            Hinweis: Das zur�ckgegebene Array muss nach der Benutzung mittels
            "free_exloded_string" explizit freigegeben werden.
          </para>
          <para>
            Beispiel:
<screen>
char **argv;
int argc;
argv = plugin->explode_string (plugin, string, " ", 0, &amp;argc);
...
if (argv != NULL)
    plugin->free_exploded_string (plugin, argv);
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_exploded_string">
          <title>free_exploded_string</title>
          
          <para>
            Prototyp:
            <command>
              char **free_exploded_string (t_weechat_plugin *plugin,
              char **string)
            </command>
          </para>
          <para>
            Gib ein Array frei, dass infolge der Zerlegung eines Strings reserviert wurde.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string</option>: ein Array von Strings 
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner (?).
          </para>
          <para>
            Beispiel:
<screen>
char *argv;
int argc;
argv = plugin->explode_string (plugin, string, " ", 0, &amp;argc);
...
if (argv != NULL)
    plugin->free_exploded_string (plugin, argv);
</screen>
          </para>
        </section>
        
        <section id="secAPI_exec_on_files">
          <title>exec_on_files</title>
          
          <para>
            Prototyp:
            <command>
              void exec_on_files (t_weechat_plugin *plugin, char *repertoire,
              int (*callback)(t_weechat_plugin *, char *))
            </command>
          </para>
          <para>
            F�hre eine Funktion auf allen Dateien eines Verzeichnisses aus.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>directory</option>: Verzeichnis der zu verwendenden Dateien
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>callback</option>: die anzuwendende Funktion 
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
<screen>
int callback (t_weechat_plugin *plugin, char *file)
{
    plugin->print_server (plugin, "file: %s", file);
    return 1;
}
...
plugin->exec_on_files (plugin, "/tmp", &amp;callback);
</screen>
          </para>
        </section>
        
        <section id="secAPI_print">
          <title>print</title>
          
          <para>
            Prototyp:
            <command>
              void print (t_weechat_plugin *plugin,
              char *server, char *channel, char *message, ...)
            </command>
          </para>
          <para>
            Sende eine Nachricht an einen WeeChat-Puffer, bezeichnet durch server
            und channel (beide k�nnen NULL sein, dann wird der aktuelle Puffer verwendet).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers, zu welchem der Puffer geh�rt, in dem die Nachricht
                  angezeigt werden soll (kann NULL sein)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Name des Channels, in dem die Nachricht angezeigt werden soll (kann NULL sein)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>: Nachricht
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiele:
<screen>
plugin->print (plugin, NULL, NULL, "hello");
plugin->print (plugin, NULL, "#weechat", "hello");
plugin->print (plugin, "freenode", "#weechat", "hello");
</screen>
          </para>
        </section>
        
        <section id="secAPI_print_server">
          <title>print_server</title>
          
          <para>
            Prototyp:
            <command>
              void print_server (t_weechat_plugin *plugin,
              char *message, ...)
            </command>
          </para>
          <para>
            Zeige eine Nachricht im aktuellen Server-Puffer.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>: Nachricht
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel: <screen>plugin->print_server (plugin, "hello");</screen>
          </para>
        </section>
        
        <section id="secAPI_print_infobar">
          <title>print_infobar</title>
          
          <para>
            Prototyp:
            <command>
              void print_infobar (t_weechat_plugin *plugin,
              int time, char *message, ...)
            </command>
          </para>
          <para>
            Zeige eine Nachricht in der Infobar f�r eine bestimmte Zeit
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>time</option>: Zeitspanne f�r die Anzeige (in Sekunden, 0 = st�ndige Anzeige)
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
<screen>
plugin->print_infobar (plugin, 5, "hello");
</screen>
          </para>
        </section>
        
        <section id="secAPI_infobar_remove">
          <title>infobar_remove</title>
          
          <para>
            Prototyp:
            <command>
              void infobar_remove (t_weechat_plugin *plugin, int count)
            </command>
          </para>
          <para>
            Entferne eine oder mehr Nachrichten aus der Infobar.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>count</option>: Anzahl der Nachrichten (wenn das Argument kleiner als Null ist, werden alle Nachrichten entfernt)
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel: <screen>plugin->infobar_remove (1);</screen>
          </para>
        </section>
        
        <section id="secAPI_log">
          <title>log</title>
          
          <para>
            Prototyp:
            <command>
              void log (t_weechat_plugin *plugin,
              char *server, char *channel, char *message, ...)
            </command>
          </para>
          <para>
            Schreibe eine Nachricht in die Log-Datei (f�r den entsprechenden Server/Channel).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers, zu welchem der Log-Puffer geh�rt (kann NULL sein)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Name des Channels, zu welchem der Log-Puffer geh�rt (kann NULL sein)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>: Nachricht
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
<screen>
plugin->log (plugin, "freenode", "#weechat", "test");
</screen>
          </para>
        </section>
        
        <section id="secAPI_msg_handler_add">
          <title>msg_handler_add</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_handler *msg_handler_add (t_weechat_plugin
              *plugin, char *message, t_plugin_handler_func *function,
              char *handler_args, void *handler_pointer)
            </command>
          </para>
          <para>
            Erzeuge einen IRC-Message-Handler, der aufgerufen wird, wenn
            eine Nachricht empfangen wird.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>: Name (Typ) der IRC-Nachricht.
                  Eine Liste der bekannten IRC-Nachrichten ist in den 
                  <acronym>RFC</acronym>s
                  <ulink url="http://www.ietf.org/rfc/rfc1459.txt">1459</ulink> und
                  <ulink url="http://www.ietf.org/rfc/rfc2812.txt">2812</ulink> zu finden.
                  Weiterhin k�nnen sie einen speziellen Namen verwenden, der mit "weechat_" beginnt,
                  um spezielle Ereignisse zu bearbeiten, wie in der folgenden Tabelle aufgef�hrt:
                  <informaltable colsep="0" frame="none">
                    <tgroup cols="2">
                      <thead>
                        <row>
                          <entry>Name</entry>
                          <entry>Beschreibung</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
                          <entry><literal>weechat_pv</literal></entry>
                          <entry>private Nachricht empfangen</entry>
                        </row>
                        <row>
                          <entry><literal>weechat_highlight</literal></entry>
                          <entry>
                            hervorgehobene Nachricht (in einem Channel oder privatem Chat)
                          </entry>
                        </row>
                        <row>
                          <entry><literal>weechat_ctcp</literal></entry>
                          <entry>
                            CTCP-Nachricht empfangen (VERSION, PING, ...)
                          </entry>
                        </row>
                        <row>
                          <entry><literal>weechat_dcc</literal></entry>
                          <entry>
                            DCC-Nachricht empfangen (Chat oder Datei)
                          </entry>
                        </row>
                      </tbody>
                    </tgroup>
                  </informaltable>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion, die aufgerufen wird, wenn eine Nachricht empfangen wurde
                </para>
                <para>
                  Sie verwendet den folgenden Prototyp:
                  <command>
                    int my_function (t_weechat_plugin *plugin,
                    int argc, char **argv,
                    char *handler_args, void *handler_pointer)
                  </command>
                </para>
                <para>
                  Argument argc ist auf 3 gesetzt, die folgenden Werte sind im argv-Array:
                  <itemizedlist>
                    <listitem>
                      <para>argv[0] = Server Name</para>
                    </listitem>
                    <listitem>
                      <para>argv[1] = IRC Nachricht</para>
                    </listitem>
                    <listitem>
                      <para>argv[2] = Kommando Argumente</para>
                    </listitem>
                  </itemizedlist>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_args</option>: Argumente, die beim Aufruf an die Funktion �bergeben werden
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_pointer</option>: pointer given to function when called
                  <option>handler_pointer</option>: Zeiger, der an die Funktion �bergeben wird
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Zeiger auf den neuen Handler
          </para>
          <para>
            Hinweis: die Funktion, die aufgerufen wird wenn eine Nachricht empfangen wurde,
            muss einen der folgenden Werte zur�ckgeben:
            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal>: Funktion ist fehlgschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal>: Funktion war erfolgreich
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_IGNORE_WEECHAT</literal>: Die Nachricht wird nicht an WeeChat �bergeben
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_IGNORE_PLUGINS</literal>: Die Nachricht wird nicht an andere Plugins weitergegeben
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_IGNORE_ALL</literal>: Die Nachricht wird weder an WeeChat noch an andere
                  Plugins weitergegeben
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            Beispiel:
<screen>
int msg_kick (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, argv[0], NULL, "KICK received");
    return PLUGIN_RC_OK;
}
...
plugin->msg_handler_add (plugin, "KICK", &amp;msg_kick, NULL, NULL);
</screen>
          </para>
        </section>
        
        <section id="secAPI_cmd_handler_add">
          <title>cmd_handler_add</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_handler *cmd_handler_add (t_weechat_plugin
              *plugin, char *command, char *description, char *arguments,
              char *arguments_description, char *completion_template,
              t_plugin_handler_func *fonction, char *handler_args,
              void *handler_pointer)
            </command>
          </para>
          <para>
            Erzeugt einen Handler f�r ein WeeChat-Kommando, der aufgerufen wird, wenn
            der Anwender das Kommando ausf�hrt (Beispiel: /command).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>command</option>: Name des neuen Kommandos, der auch Name eines bereits existierenden Kommandos 
                  sein kann (mit Bedacht zu verwenden, das ersetzte Kommando ist nicht verf�gbar, bis das Plugin entfernt
                  wurde)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>description</option>: kurze Beschreibung des Kommandos (angezeigt beim Ausf�hren von /help command)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>arguments</option>: kurze Beschreibung der Argumente des Kommandos (angezeigt beim Ausf�hren von /help command)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>arguments_description</option>: lange Beschreibung der Argumente des Kommandos (angezeigt beim Ausf�hren von /help command)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>completion_template</option>: Vorlage f�r die Vervollst�ndigung; zum Beispiel
                  bedeutet "<literal>abc|%w def|%i</literal>", dass das erste Argument "abc" oder ein 
                  WeeChat-Kommando sein kann und das zweite Argument "def" oder ein IRC-Kommando.
                  Eine leere Zeichenkette bedeutet, dass WeeChat f�r jedes Argument einen Nicknamen
                  des gegenw�rtigen Channels einsetzt, ein NULL schaltet die Vervollst�ndigung f�r alle
                  Argumente ab.
                </para>
                <para>
                  Die folgenden Ersetzungen k�nnen verwendet werden:
                  <informaltable colsep="0" frame="none">
                    <tgroup cols="2">
                      <thead>
                        <row>
                          <entry>Code</entry>
                          <entry>Beschreibung</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
                          <entry><literal>%-</literal></entry>
                          <entry>keine Vervollst�ndigung f�r das Argument</entry>
                        </row>
                        <row>
                          <entry><literal>%a</literal></entry>
                          <entry>Alias</entry>
                        </row>
                        <row>
                          <entry><literal>%A</literal></entry>
                          <entry>
                            Aliase und Kommandos (WeeChat, IRC und Plugins)
                          </entry>
                        </row>
                        <row>
                          <entry><literal>%c</literal></entry>
                          <entry>gegenw�rtiger Channel</entry>
                        </row>
                        <row>
                          <entry><literal>%C</literal></entry>
                          <entry>Channels des gegenw�rtigen Servers</entry>
                        </row>
                        <!-- <row>
                             <entry><literal>%f</literal></entry>
                             <entry>file name</entry>
                             </row> -->
                        <row>
                          <entry><literal>%h</literal></entry>
                          <entry>Plugin Kommandos</entry>
                        </row>
                        <row>
                          <entry><literal>%i</literal></entry>
                          <entry>IRC Kommandos (senden)</entry>
                        </row>
                        <row>
                          <entry><literal>%I</literal></entry>
                          <entry>IRC Kommandos (empfangen)</entry>
                        </row>
                        <row>
                          <entry><literal>%k</literal></entry>
                          <entry>Grundfunktionen</entry>
                        </row>
                        <row>
                          <entry><literal>%n</literal></entry>
                          <entry>Nicknamen des gegenw�rtigen Channels</entry>
                        </row>
                        <row>
                          <entry><literal>%N</literal></entry>
                          <entry>Nicknamen und Hostnamen des gegenw�rtigen Channels</entry>
                        </row>
                        <row>
                          <entry><literal>%o</literal></entry>
                          <entry>Konfigurationseinstellungen</entry>
                        </row>
                        <row>
                          <entry><literal>%O</literal></entry>
                          <entry>Plugin Optionen</entry>
                        </row>
                        <row>
                          <entry><literal>%p</literal></entry>
                          <entry>Standard "part" Nachricht</entry>
                        </row>
                        <row>
                          <entry><literal>%q</literal></entry>
                          <entry>Standard "quit" Nachricht</entry>
                        </row>
                        <row>
                          <entry><literal>%s</literal></entry>
                          <entry>Name des gegenw�rtigen Servers</entry>
                        </row>
                        <row>
                          <entry><literal>%S</literal></entry>
                          <entry>Namen aller definierten Server</entry>
                        </row>
                        <row>
                          <entry><literal>%t</literal></entry>
                          <entry>Topic des gegenw�rtigen Channels</entry>
                        </row>
                        <row>
                          <entry><literal>%v</literal></entry>
                          <entry>Wert einer Konfigurationseinstellung</entry>
                        </row>
                        <row>
                          <entry><literal>%V</literal></entry>
                          <entry>Wert einer Plugin-Option</entry>
                        </row>
                        <row>
                          <entry><literal>%w</literal></entry>
                          <entry>WeeChat Kommandos</entry>
                        </row>
                      </tbody>
                    </tgroup>
                  </informaltable>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion, die aufgerufen wird, wenn das Kommando ausgef�hrt wird
                </para>
                <para>
                  Sie verwendet den folgenden Prototypen:
                  <command>
                    int my_function (t_weechat_plugin *plugin,
                    int argc, char **argv,
                    char *handler_args, void *handler_pointer)
                  </command>
                </para>
                <para>
                  Das Argument argc ist auf 3 gesetzt, das Array argv enth�lt die folgenden Werte:
                  <itemizedlist>
                    <listitem>
                      <para>argv[0] = Server Name</para>
                    </listitem>
                    <listitem>
                      <para>argv[1] = Kommando</para>
                    </listitem>
                    <listitem>
                      <para>argv[2] = Kommando-Argumente</para>
                    </listitem>
                  </itemizedlist>
                </para>   
              </listitem>
              <listitem>
                <para>
                  <option>handler_args</option>: Argumente, die an die Funktion �bergeben werden
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_pointer</option>: Zeiger, der an die Funktion �bergeben wird
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Zeiger auf den neuen Kommando-Handler.
          </para>
          <para>
            Hinweis: die Funktion, die aufgerufen wird, wenn das Kommando ausgef�hrt wird,
            muss einen der folgende Werte zur�ckgeben:
            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal>: Funktion ist fehlgeschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal>: Funktion war erfolgreich
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            Beispiel:
<screen>
int cmd_test (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, argv[0], NULL,
                   "test command, nick: %s",
                   (argv[2]) ? argv[2] : "none");
    return PLUGIN_RC_OK;
}
...
plugin->cmd_handler_add (plugin, "test", "Test command",
                         "[nick]", "nick: nick of channel",
                         "%n", &amp;cmd_test, NULL, NULL);
</screen>
          </para>
        </section>
        
        <section id="secAPI_timer_handler_add">
          <title>timer_handler_add</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_handler *timer_handler_add (t_weechat_plugin
              *plugin, int interval, t_plugin_handler_func *function,
              char *handler_args, void *handler_pointer)
            </command>
          </para>
          <para>
            Erzeuge einen zeitgesteuerten Handler, der periodisch
            eine Funktion aufruft.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>interval</option>: Intervall (in Secunden) zwischen zwei Aufrufen der Funktion
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion, die aufgerufen wird
                </para>
                <para>
                  Sie verwendet den folgenden Prototypen:
                  <command>
                    int my_function (t_weechat_plugin *plugin,
                    int argc, char **argv,
                    char *handler_args, void *handler_pointer)
                  </command>
                </para>
                <para>
                  Das Argument argc ist auf 0 gesetzt und argv ist auf NULL gesetzt.
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_args</option>: Argumente der aufgerufenen Funktion
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_pointer</option>: Zeiger, der an die Funktion �bergeben wird
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Zeiger auf den neuen timer-Handler.
          </para>
          <para>
            Hinweis: die Funktion, die aufgerufen wird, muss einen der folgende Werte zur�ckgeben:
            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal>: Funktion ist fehlgeschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal>: Funktion war erfolgreich
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            Beispiel:
<screen>
int my_timer (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, NULL, NULL, "my timer");
    return PLUGIN_RC_OK;
}
...
plugin->timer_handler_add (plugin, 60, &amp;my_timer);
</screen>
          </para>
        </section>
        
        <section id="secAPI_keyboard_handler_add">
          <title>keyboard_handler_add</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_handler *keyboard_handler_add (t_weechat_plugin
              *plugin, t_plugin_handler_func *function,
              char *handler_args, void *handler_pointer)
            </command>
          </para>
          <para>
            Erzeugt einen Keyboard-Handler, der nach dem Dr�cken einer Taste aufgerufen wird.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Die Funktion, die aufgerufen wird
                </para>
                <para>
                  Sie verwendet den folgenden Prototypen:
                  <command>
                    int my_function (t_weechat_plugin *plugin,
                    int argc, char **argv,
                    char *handler_args, void *handler_pointer)
                  </command>
                </para>
                <para>
                  Das Argument argc ist auf 3 gesetzt, argv enth�lt die folgenden Werte:
                  <itemizedlist>
                    <listitem>
                      <para>
                        argv[0] = Taste, die gedr�ckt wurde 
                        (Name der internen Funktion oder '*' gefolgt von einem Tastaturcode)
                      </para>
                    </listitem>
                    <listitem>
                      <para>
                        argv[1] = Kommandozeile vor dem Tastendruck
                      </para>
                    </listitem>
                    <listitem>
                      <para>
                        argv[2] = Kommandozeile nach dem Tastendruck
                      </para>
                    </listitem>
                  </itemizedlist>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_args</option>: Argumente, die bei Aufruf der Funktion �bergeben
                  werden
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_pointer</option>: Zeiger auf die Funktion, der bei Aufruf �bergeben
                  wird
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Zeiger auf den Handler.
          </para>
          <para>
            Hinweis: Die aufgerufene Funktion muss einen der folgenden Werte zur�ckgeben:
            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal>: Funktion ist fehlgeschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal>: Funktion war erfolgreich
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            Beispiel:
<screen>
int keyb_handler (t_weechat_plugin *plugin, int argc, char **argv,
                  char *handler_args, void *handler_pointer)
{
    if (argc == 2)
    {
        plugin->print (plugin, NULL, NULL, "key pressed: %s", argv[0]);
        if (argv[1] &amp;&amp; (argv[1][0] == '1'))
            plugin->print (plugin, NULL, NULL, "input text changed");
        else
            plugin->print (plugin, NULL, NULL, "input text not changed");
    }
    return PLUGIN_RC_OK;
}
...
plugin->keyboard_handler_add (plugin, &amp;keyb_handler);
</screen>
          </para>
        </section>
        
        <section id="secAPI_handler_remove">
          <title>handler_remove</title>
          
          <para>
            Prototyp:
            <command>
              void handler_remove (t_weechat_plugin *plugin,
              t_plugin_handler *handler)
            </command>
          </para>
          <para>
            Entfernt einen Nachrichten- oder Kommando-Handler.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler</option>: Handler, der entfernt werden soll
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner
          </para>
          <para>
            Beispiel:
            <screen>plugin->handler_remove (plugin, my_handler);</screen>
          </para>
        </section>
        
        <section id="secAPI_handler_remove_all">
          <title>handler_remove_all</title>
          
          <para>
            Prototyp:
            <command>
              void handler_remove_all (t_weechat_plugin *plugin)
            </command>
          </para>
          <para>
            Entfernt alle Handler eines Plugins.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner
          </para>
          <para>
            Beispiel:
            <screen>plugin->handler_remove_all (plugin);</screen>
          </para>
        </section>
        
        <section id="secAPI_exec_command">
          <title>exec_command</title>
          
          <para>
            Prototyp:
            <command>
              void exec_command (t_weechat_plugin
              *plugin, char *server, char *channel, char *command)
            </command>
          </para>
          <para>
            F�hre ein WeeChat-Kommando aus (oder sende eine Nachricht an einen Channel).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers, auf den das Kommando angewendet werden soll (kann NULL sein)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Name des Channels, auf den das Kommando angewendet werden soll (kann NULL sein)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>command</option>: Kommando
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner
          </para>
          <para>
            Beispiel:
<screen>
plugin->exec_command (plugin, NULL, NULL, "/help nick");
plugin->exec_command (plugin, "freenode", "#weechat", "hello");
</screen>
          </para>
        </section>
        
        <section id="secAPI_get_info">
          <title>get_info</title>
          
          <para>
            Prototyp:
            <command>
              char *get_info (t_weechat_plugin *plugin,
              char *info, char *server)
            </command>
          </para>
          <para>
            Gib eine Information �ber WeeChat oder einen Channel zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>info</option> : Name (Typ) der Information:
                  <informaltable colsep="0" frame="none">
                    <tgroup cols="2">
                      <thead>
                        <row>
                          <entry>Info</entry>
                          <entry>Beschreibung</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
                          <entry><literal>version</literal></entry>
                          <entry>WeeChats Version</entry>
                        </row>
                        <row>
                          <entry><literal>nick</literal></entry>
                          <entry>Nickname</entry>
                        </row>
                        <row>
                          <entry><literal>channel</literal></entry>
                          <entry>
                            Name des Channels (NULL bei einem Server oder Privatchat)
                          </entry>
                        </row>
                        <row>
                          <entry><literal>server</literal></entry>
                          <entry>Name des Servers</entry>
                        </row>
                        <row>
                          <entry><literal>away</literal></entry>
                          <entry>Status des "away"-Flags</entry>
                        </row>
                        <row>
                          <entry><literal>inactivity</literal></entry>
                          <entry>
                            Anzahl der Sekunden seit der letzten Tastenbet�tigung
                          </entry>
                        </row>
                        <row>
                          <entry><literal>input</literal></entry>
                          <entry>
                            Inhalt der Kommandozeile im gegenw�rtigen Fenster
                          </entry>
                        </row>
                        <row>
                          <entry><literal>input_mask</literal></entry>
                          <entry>
                            Inhalt der Farbmaske f�r die Kommandozeile
                          </entry>
                        </row>
                        <row>
                          <entry><literal>input_pos</literal></entry>
                          <entry>
                            Position des Cursors in der Kommandozeile
                          </entry>
                        </row>
                        <row>
                          <entry><literal>weechat_dir</literal></entry>
                          <entry>
                            WeeChat-Verzeichnis (Standard: ~/.weechat/)
                          </entry>
                        </row>
                        <row>
                          <entry><literal>weechat_libdir</literal></entry>
                          <entry>WeeChat-Systemverzeichnis (Bibliotheken) </entry>
                        </row>
                        <row>
                          <entry><literal>weechat_sharedir</literal></entry>
                          <entry>WeeChat-Systemverzeichnis (gemeinsame Dateien)</entry>
                        </row>
                      </tbody>
                    </tgroup>
                  </informaltable>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers um Informationen zu lesen (wenn ben�tigt)
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: angeforderte Information oder NULL
          </para>
          <para>
            Hinweis: das Ergebnis muss nach Nutzung mit "free" wieder freigegeben werden.
          </para>
          <para>
            Beispiele:
<screen>
char *version = plugin->get_info (plugin, "version", NULL);
char *nick = plugin->get_info (plugin, "nick", "freenode");
char *inactivity = plugin->get_info (plugin, "inactivity", NULL);

plugin->print (plugin, NULL, NULL,
               "WeeChat version %s, you are %s on freenode "
               "(inactive for %s seconds)",
               version, nick, inactivity);

if (version)
	free (version);
if (nick)
	free (nick);
if (inactivity)
	free (inactivity);
</screen>
          </para>
        </section>
        
        <section id="secAPI_get_dcc_info">
          <title>get_dcc_info</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_info_dcc *get_dcc_info (t_weechat_plugin *plugin)
            </command>
          </para>
          <para>
            Gib eine Liste der aktiven oder beendeten DCCs zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: verkettete Liste von DCCs.
            <informaltable colsep="0" frame="none">
              <tgroup cols="2">
                <thead>
                  <row>
                    <entry>Typ</entry>
                    <entry>Feld</entry>
                    <entry>Beschreibung</entry>
                  </row>
                </thead>
                <tbody>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>server</literal></entry>
                    <entry>IRC Server</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>channel</literal></entry>
                    <entry>IRC Channel</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>type</literal></entry>
                    <entry>
                      DCC Typ:
                      0 = Chatanfrage empfangen,
                      1 = Chatanfrage gesendet,
                      2 = Datei empfangen,
                      3 = Datei gesendet
                    </entry>
                  </row>
                  <row>
                    <entry>int*</entry>
                    <entry><literal>status</literal></entry>
                    <entry>
                      DCC Status:
                      0 = wartend,
                      1 = verbindend,
                      2 = aktiv,
                      3 = beendet,
                      4 = fehlgeschlagen,
                      5 = unterbrochen durch Anwender
                    </entry>
                  </row>
                  <row>
                    <entry>time_t</entry>
                    <entry><literal>start_time</literal></entry>
                    <entry>Datum/Zeit der Erzeugung der DCC</entry>
                  </row>
                  <row>
                    <entry>time_t</entry>
                    <entry><literal>start_transfer</literal></entry>
                    <entry>Datum/Zeit des Beginns der �bertragung der DCC</entry>
                  </row>
                  <row>
                    <entry>unsigned long</entry>
                    <entry><literal>addr</literal></entry>
                    <entry>IP-Adresse des Partners</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>port</literal></entry>
                    <entry>Port der DCC</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>nick</literal></entry>
                    <entry>Nickname des Partners</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>filename</literal></entry>
                    <entry>Dateiname</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>local_filename</literal></entry>
                    <entry>lokaler Dateiname</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>filename_suffix</literal></entry>
                    <entry>Suffix wenn die Datei umbenannt wird</entry>
                  </row>
                  <row>
                    <entry>unsigned long</entry>
                    <entry><literal>size</literal></entry>
                    <entry>Dateigr�sse</entry>
                  </row>
                  <row>
                    <entry>unsigned long</entry>
                    <entry><literal>pos</literal></entry>
                    <entry>Position in Datei</entry>
                  </row>
                  <row>
                    <entry>unsigned long</entry>
                    <entry><literal>start_resume</literal></entry>
                    <entry>Startposition nach einer Unterbrechung</entry>
                  </row>
                  <row>
                    <entry>unsigned long</entry>
                    <entry><literal>bytes_per_sec</literal></entry>
                    <entry>
                      �bertragungsrate (Bytes/s) seit Beginn der �bertragung
                    </entry>
                  </row>
                  <row>
                    <entry>t_plugin_dcc_info *</entry>
                    <entry><literal>prev_dcc</literal></entry>
                    <entry>
                      Zeiger auf voheriges DCC-Info
                    </entry>
                  </row>
                  <row>
                    <entry>t_plugin_dcc_info *</entry>
                    <entry><literal>next_dcc</literal></entry>
                    <entry>
                      Zeiger auf n�chstes DCC-Info
                    </entry>
                  </row>

                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            Hinweis: Das Ergebnis muss nach der Benutzung mittels "free_dcc_info" wieder freigegeben werden.
          </para>
          <para>
            Beispiele:
<screen>
t_plugin_dcc_info *dcc_info = plugin->get_dcc_info (plugin);
for (ptr_dcc = dcc_info; ptr_dcc; ptr_dcc = ptr_dcc->next_dcc)
{
    plugin->print_server (plugin, "DCC type=%d, with: %s",
                          ptr_dcc->type, ptr_dcc->nick);
}
if (dcc_info)
    plugin->free_dcc_info (plugin, dcc_info);
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_dcc_info">
          <title>free_dcc_info</title>
          
          <para>
            Prototyp:
            <command>
              void free_dcc_info (t_weechat_plugin *plugin,
              t_plugin_dcc_info *dcc_info)
            </command>
          </para>
          <para>
            Gibt den Speicher einer Liste von DCC-Infos wieder frei.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>dcc_info</option>: Zeiger auf eine Liste mit DCC-Infos, die 
                  mit "get_dcc_info" angelegt wurde
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
            <screen>plugin->free_dcc_info (plugin, dcc_info);</screen>
          </para>
        </section>

        <section id="secAPI_get_server_info">
          <title>get_server_info</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_server_info *get_server_info (t_weechat_plugin *plugin)
            </command>
          </para>
          <para>
            Gibt die Liste von IRC-Servern zur�ck (verbunden oder nicht)
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Liste von IRC-Servern.
            <informaltable colsep="0" frame="none">
              <tgroup cols="2">
                <thead>
                  <row>
                    <entry>Typ</entry>
                    <entry>Feld</entry>
                    <entry>Beschreibung</entry>
                  </row>
                </thead>
                <tbody>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>name</literal></entry>
                    <entry>interner Servername</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>autoconnect</literal></entry>
                    <entry>1 wenn Autoconnect gesetzt ist, 0 sonst</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>autoreconnect</literal></entry>
                    <entry>
                      1 wenn autoreconnect gesetzt ist,
                      0 sonst
                    </entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>autoreconnect_delay</literal></entry>
                    <entry>Wartezeit vor erneutem Verbindungsversuch</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>command_line</literal></entry>
                    <entry>
                      1 wenn der Servername auf der Kommandozeile angegeben wurde (ist somit tempor�r)
                      0 sonst
                    </entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>address</literal></entry>
                    <entry>Serveradresse (Name oder IP)</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>port</literal></entry>
                    <entry>Port</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>ipv6</literal></entry>
                    <entry>IPv6-Verbindung</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>ssl</literal></entry>
                    <entry>SSL-Verbindung</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>password</literal></entry>
                    <entry>Passwort</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>nick1</literal></entry>
                    <entry>prim�rer Nickname</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>nick2</literal></entry>
                    <entry>alternativer Nickname</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>nick3</literal></entry>
                    <entry>zweiter, alternativer Nickname</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>username</literal></entry>
                    <entry>Username</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>real name</literal></entry>
                    <entry>tats�chlicher Name</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>command</literal></entry>
                    <entry>Kommando, dass bei erfolgreicher Verbindung ausgef�hrt wurde</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>command_delay</literal></entry>
                    <entry>Verz�gerung nach Ausf�hrung des Kommandos</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>autojoin</literal></entry>
                    <entry>Channels, die automatisch betreten werden sollen</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>autorejoin</literal></entry>
                    <entry>
                      1 wenn Channels wieder betreten werden sollen, nachdem man gekickt wurde
                      0 sonst
                    </entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>notify_levels</literal></entry>
                    <entry>Benachrichtigungs-Level von Channels</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>charset_decode_iso</literal></entry>
                    <entry>Zeichensatz zum Dekodieren von ISO</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>charset_decode_utf</literal></entry>
                    <entry>Zeichensatz zum Dekodieren von UTF</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>charset_encode</literal></entry>
                    <entry>Zeichensatz der Channels zum Kodieren von Nachrichten</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>is_connected</literal></entry>
                    <entry>1 wenn verbunden mit einem Server, 0 otherwise</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>ssl_connected</literal></entry>
                    <entry>1 wenn verbunden �ber SSL, 0 sonst</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>nick</literal></entry>
                    <entry>gegenw�rtiger Nickname</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>is_away</literal></entry>
                    <entry>1 wenn away-flag gesetzt ist, 0 sonst</entry>
                  </row>
                  <row>
                    <entry>time_t</entry>
                    <entry><literal>away_time</literal></entry>
                    <entry>Zeitspanne seit away-flag gesetzt ist</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>lag</literal></entry>
                    <entry>Lag (in Millisekunden)</entry>
                  </row>
                  <row>
                    <entry>t_plugin_server_info *</entry>
                    <entry><literal>prev_server</literal></entry>
                    <entry>Zeiger auf vorherigen Knoten der Liste</entry>
                  </row>
                  <row>
                    <entry>t_plugin_server_info *</entry>
                    <entry><literal>next_server</literal></entry>
                    <entry>Zeiger auf n�chsten Knoten der Liste</entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            Hinweis: das Ergebnis muss nach der Benutzung mit "free_server_info" wieder
            freigegeben werden.
          </para>
          <para>
            Beispiel:
<screen>
t_plugin_server_info *server_info, *ptr_server_info;
server_info = plugin->get_server_info (plugin);
if (server_info)
{
    for (ptr_server_info = server_info; ptr_server_info;
         ptr_server_info = ptr_server_info->next_server)
    {
        plugin->print (plugin, NULL, NULL,
                       "server: %s, address: %s, port: %d %s",
                       ptr_server_info->name,
                       ptr_server_info->address,
                       ptr_server_info->port,
                       (ptr_server_info->is_connected) ? "(connected)" : "");
    }
    plugin->free_server_info (plugin, server_info);
}
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_server_info">
          <title>free_server_info</title>
          
          <para>
            Prototyp:
            <command>
              void free_server_info (t_weechat_plugin *plugin,
              t_plugin_server_info *server_info)
            </command>
          </para>
          <para>
            Gib den Speicher einer Liste "server info" frei
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server_info</option>: Zeiger auf eine Server-Liste, der von der Funktion "get_server_info"
                  zur�ckgegeben wurde.
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
            <screen>plugin->free_server_info (plugin, server_info);</screen>
          </para>
        </section>
        
        <section id="secAPI_get_channel_info">
          <title>get_channel_info</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_channel_info *get_channel_info (t_weechat_plugin *plugin,
              char *server)
            </command>
          </para>
          <para>
            Gib eine Liste der Channels f�r einen Server zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Server
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: verkettete Liste von Channels f�r einen Server.
            <informaltable colsep="0" frame="none">
              <tgroup cols="2">
                <thead>
                  <row>
                    <entry>Typ</entry>
                    <entry>Feld</entry>
                    <entry>Beschreibung</entry>
                  </row>
                </thead>
                <tbody>
                  <row>
                    <entry>int</entry>
                    <entry><literal>type</literal></entry>
                    <entry>0 f�r einen normalen Channel, 1 f�r einen Privaten</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>name</literal></entry>
                    <entry>Name des Channels</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>topic</literal></entry>
                    <entry>Topic des Channels</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>modes</literal></entry>
                    <entry>Channelmodus (Flags)</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>limit</literal></entry>
                    <entry>Anzahl der erlaubten User</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>key</literal></entry>
                    <entry>Schl�ssel des Channels</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>nicks_count</literal></entry>
                    <entry>Anzahl der Nicknamen des Channels</entry>
                  </row>
                  <row>
                    <entry>t_plugin_channel_info *</entry>
                    <entry><literal>prev_channel</literal></entry>
                    <entry>Zeiger auf vorherigem Knoten der Liste</entry>
                  </row>
                  <row>
                    <entry>t_plugin_channel_info *</entry>
                    <entry><literal>next_channel</literal></entry>
                    <entry>Zeiger auf n�chsten Knoten der Liste</entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            Hinweis: Das Ergebnis muss nach der Benutzung mit "free_channel_info" wieder freigegeben werden.
          </para>
          <para>
            Beispiel:
<screen>
t_plugin_channel_info *channel_info, *ptr_chan_info;
channel_info = plugin->get_channel_info (plugin, "freenode");
if (channel_info)
{
    for (ptr_chan_info = channel_info; ptr_chan_info;
         ptr_chan_info = ptr_chan_info->next_channel)
    {
        plugin->print (plugin, NULL, NULL,
                       "  %s (type %d)",
                       ptr_chan_info->name,
                       ptr_chan_info->type);
    }
    plugin->free_channel_info (plugin, channel_info);
}
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_channel_info">
          <title>free_channel_info</title>
          
          <para>
            Prototyp:
            <command>
              void free_channel_info (t_weechat_plugin *plugin,
              t_plugin_channel_info *channel_info)
            </command>
          </para>
          <para>
            Gibt den Speicher einer Liste "channel info" wieder frei.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel_info</option>: Zeiger auf eine Liste "channel info", der von "get_channel_info" 
                  zur�ckgegeben wurde
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
            <screen>plugin->free_channel_info (plugin, channel_info);</screen>
          </para>
        </section>

        <section id="secAPI_get_nick_info">
          <title>get_nick_info</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_nick_info *get_nick_info (t_weechat_plugin *plugin,
              char *server, char *channel)
            </command>
          </para>
          <para>
            Gib eine Liste der Nicknamen f�r einen Channel zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Name des Channels
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: verkettete Liste von Nicknamen eines Channels.
            <informaltable colsep="0" frame="none">
              <tgroup cols="2">
                <thead>
                  <row>
                    <entry>Typ</entry>
                    <entry>Feld</entry>
                    <entry>Beschreibung</entry>
                  </row>
                </thead>
                <tbody>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>nick</literal></entry>
                    <entry>Nickname</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>host</literal></entry>
                    <entry>Hostname</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>Flags</literal></entry>
                    <entry>
                      Flags, die f�r einen Nicknamen gesetzt sind:
                      Zweierpotenzen "oder" Zwischenwerte 
                      (1 = channel owner, 
                      2 = channel admin, 
                      4 = op, 
                      8 = halfop,
                      16 = voice, 
                      32 = away)
                    </entry>
                  </row>
                  <row>
                    <entry>t_plugin_nick_info *</entry>
                    <entry><literal>prev_nick</literal></entry>
                    <entry>Zeiger auf vorherigen Knoten der Liste</entry>
                  </row>
                  <row>
                    <entry>t_plugin_nick_info *</entry>
                    <entry><literal>next_nick</literal></entry>
                    <entry>Zeiger auf n�chsten Knoten der Liste</entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            Hinweis: Das Ergebnis muss nach der Benutzung mit "free_nick_info" wieder freigegeben werden.
          </para>
          <para>
            Beispiel:
<screen>
t_plugin_nick_info *nick_info, *ptr_nick_info;
nick_info = plugin->get_nick_info (plugin, "freenode", "#weechat");
if (nick_info)
{
    for (ptr_nick_info = nick_info; ptr_nick_info;
         ptr_nick_info = ptr_nick_info->next_nick)
    {
        plugin->print (plugin, NULL, NULL,
                       "  %s (flags: %d)",
                       ptr_nick_info->nick,
                       ptr_nick_info->flags);
    }
    plugin->free_nick_info (plugin, nick_info);
}
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_nick_info">
          <title>free_nick_info</title>
          
          <para>
            Prototyp:
            <command>
              void free_nick_info (t_weechat_plugin *plugin,
              t_plugin_nick_info *nick_info)
            </command>
          </para>
          <para>
            Gibt den Speicher einer Liste "nick info" frei.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>nick_info</option>: Zeiger auf eine Liste "nick info", der von "get_nick_info" 
                  zur�ckgegeben wurde
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
            <screen>plugin->free_nick_info (plugin, nick_info);</screen>
          </para>
        </section>
        
        <section id="secAPI_get_config">
          <title>get_config</title>
          
          <para>
            Prototyp:
            <command>
              char *get_config (t_weechat_plugin *plugin, char *option)
            </command>
          </para>
          <para>
            Gibt den Wert einer Option der WeeChat-Konfiguration zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>option</option>: Name der Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Wert der Option, oder NULL, wenn nichts gefunden wurde.
          </para>
          <para>
            Hinweis: Das Ergebnis muss nach der Benutzung mit "free" wieder freigegeben werden.
          </para>
          <para>
            Beispiel:
<screen>
char *value1 = plugin->get_config (plugin, "look_set_title");
char *value2 = plugin->get_config (plugin, "freenode.server_autojoin");
</screen>
          </para>
        </section>
        
        <section id="secAPI_set_config">
          <title>set_config</title>
          
          <para>
            Prototyp:
            <command>
              int set_config (t_weechat_plugin *plugin,
              char *option, char *value)
            </command>
          </para>
          <para>
            Setze den Wert einer Option der WeeChat-Konfiguration.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>option</option>: Name der Option
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>value</option>: der neue Wert der Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 wenn der Wert der Option gesetzt werden konnte, 0 bei Auftreten eines Fehlers.
          </para>
          <para>
            Beispiel:
<screen>
plugin->set_config (plugin, "look_nicklist", "off");
</screen>
          </para>
        </section>
        
        <section id="secAPI_get_plugin_config">
          <title>get_plugin_config</title>
          
          <para>
            Prototyp:
            <command>
              char *get_plugin_config (t_weechat_plugin *plugin, char *option)
            </command>
          </para>
          <para>
            Gibt den Wert einer Option eines Plugins zur�ck.
            Die Option wird aus "<literal>~/.weechat/plugins.rc</literal>" gelesen
            und sieht so aus: "<literal>plugin.option=value</literal>"
            (Hinweis: der Name des Plugins wird automatisch gesetzt).
            
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>option</option>: Name der Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Wert der Option, NULL wenn nichts gefunden wurde.
          </para>
          <para>
            Hinweis: Das Ergebnis muss nach der Benutzung mit "free" wieder freigegeben werden.
          </para>
          <para>
            Beispiel:
<screen>
char *value = plugin->get_plugin_config (plugin, "my_var");
</screen>
          </para>
        </section>
        
        <section id="secAPI_set_plugin_config">
          <title>set_plugin_config</title>
          
          <para>
            Prototyp:
            <command>
              int set_plugin_config (t_weechat_plugin *plugin,
              char *option, char *value)
            </command>
          </para>
          <para>
            Setzt den Wert einer Option eines Plugins.
            Die Option wird in die Datei "<literal>~/.weechat/plugins.rc</literal>" geschrieben
            und sieht so aus: "<literal>plugin.option=value</literal>"
            (Hinweis: der Name des Plugins wird automatisch gesetzt)
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf eine Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>option</option>: Name der Option, die gesetzt werden soll
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>value</option>: Wert der zu setzenden Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 wenn die Option gesetzt werden konnte, 0 wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiel:
<screen>
plugin->set_plugin_config (plugin, "my_var", "value");
</screen>
          </para>
        </section>
        
      </section>
      
      <section id="secCompilePlugin">
        <title>�bersetzen eines Plugins</title>
        
        <para>
          Das �bersetzen braucht keine WeeChat-Quellen, aber die Datei "<literal>weechat-plugin.h</literal>".
        </para>
        
        <para>
          Um ein Plugin zu �bersetzen, das aus einer Datei "toto.c" besteht (unter GNU/Linux):
<screen>
<prompt>$ </prompt><userinput>gcc -fPIC -Wall -c toto.c</userinput>
<prompt>$ </prompt><userinput>gcc -shared -fPIC -o libtoto.so toto.o</userinput>
</screen>
        </para>
        
      </section>
      
      <section id="secLoadPlugin">
        <title>Laden des Plugins in WeeChat</title>
        
        <para>
          Kopiere die Datei "libtoto.so" in das Plugin-Verzeichnis der systemweiten Dateien WeeChats
          (zum Beispiel: "<literal>/usr/local/lib/weechat/plugins</literal>") oder in das Plugin-Verzeichnis
          des Users (zum Beispiel: "<literal>/home/xxxxx/.weechat/plugins</literal>").
        </para>
        
        <para>
          In WeeChat:
          <screen><userinput>/plugin load toto</userinput></screen>
        </para>
        
      </section>
      
      <section id="secPluginExample">
        <title>Plugin Beispiel</title>
        
        <para>
          Vollst�ndiges Beispiel eines Plugins, welches das Kommando /double implementiert, dass
          seine Argumente im gegenw�rtigen Channel doppelt ausgibt (ok, das ist weniger n�tzlich,
          aber auch nur ein Beispiel!):
<screen>
#include &lt;stdlib.h&gt;

#include "weechat-plugin.h"

char plugin_name[]        = "Double";
char plugin_version[]     = "0.1";
char plugin_description[] = "Test plugin for WeeChat";

/* "/double" command manager */

int double_cmd (t_weechat_plugin *plugin, int argc, char **argv,
                char *handler_args, void *handler_pointer)
{
    if (argv[2] &amp;&amp; (argv[2][0] != '/'))
    {
        plugin->exec_command (plugin, NULL, NULL, argv[2]);
        plugin->exec_command (plugin, NULL, NULL, argv[2]);
    }
    return PLUGIN_RC_OK;
}

int weechat_plugin_init (t_weechat_plugin *plugin)
{
    plugin->cmd_handler_add (plugin, "double",
                             "Display two times a message",
                             "msg",
                             "msg: message to display two times",
                             NULL,
                             &amp;double_cmd,
                             NULL, NULL);
    return PLUGIN_RC_OK;
}

void weechat_plugin_end (t_weechat_plugin *plugin)
{
    /* nothing done here */
}
</screen>
        </para>
        
      </section>
      
    </section>
    
    <section id="secScriptsPlugins">
      <title>Skript-Plugins</title>
      
      <para>
        Vier Plugins werden von WeeChat angeboten um Skriptsprachen zu nutzen:
        Perl, Python, Ruby und Lua.
      </para>
      
      <section id="secLoadUnloadScripts">
        <title>Laden / Entfernen von Skripten</title>
        
        <para>
          Scripts are loaded and unloaded with <command>/perl</command>,
          <command>/python</command>, <command>/ruby</command> and
          <command>/lua</command> commands
          (type <command>/help</command> in WeeChat for help about commands).

          Skripte werden mit den Kommandos <command>/perl</command>, <command>/python</command>, 
          <command>/ruby</command> und <command>/lua</command> geladen oder entfernt.
          (Benutze <command>/help</command> in WeeChat f�r Hilfe zu den Kommandos).
        </para>
        
        <para>
          Beispiele:
          <itemizedlist>
            <listitem>
              <para>
                Laden eines Perl-Skripts:
                <command><userinput>/perl load /tmp/test.pl</userinput></command>
              </para>
            </listitem>
            <listitem>
              <para>
                Liste alle geladenen Perl-Skripte auf:
                <command><userinput>/perl</userinput></command>
              </para>
            </listitem>
            <listitem>
              <para>
                Laden eines Python-Skripts:
                <command><userinput>/python load /tmp/test.py</userinput></command>
              </para>
            </listitem>
            <listitem>
              <para>
                Liste alle geladenen Python-Skripte auf:
                <command><userinput>/python</userinput></command>
              </para>
            </listitem>
            <listitem>
              <para>
                Laden eines Ruby-Skripts:
                <command><userinput>/ruby load /tmp/test.rb</userinput></command>
              </para>
            </listitem>
            <listitem>
              <para>
                Liste alle geladenen Ruby-Skripte auf:
                <command><userinput>/ruby</userinput></command>
              </para>
            </listitem>
            <listitem>
              <para>
                Laden eines Lua-Skripts:
                <command><userinput>/lua load /tmp/test.lua</userinput></command>
              </para>
            </listitem>
            <listitem>
              <para>
                Liste alle geladenen Lua-Skripte auf:
                <command><userinput>/lua</userinput></command>
              </para>
            </listitem>
          </itemizedlist>
        </para>
        
      </section>
      
      <section id="secSyntaxByLanguage">
        <title>Syntax in den Skriptsprachen</title>
        
        <section>
          <title>Perl</title>
          
          <para>
            In einem WeeChat-PerlSkript ist allen API-Funktionen und Variablen ein
            "<literal>weechat::</literal>" vorangestellt.  
            Beispiel:
<screen>weechat::register("test", "1.0", "end_test", "WeeChat perl script");</screen>
          </para>
          
        </section>
        
        <section>
          <title>Python</title>
          
          <para>
            Ein WeeChat-Pythonskript muss mit einer Importdirektive f�r WeeChat beginnen:
            <screen>import weechat</screen>
          </para>
          
          <para>
            Allen API-Funktionen und Variablen ist ein "<literal>weechat.</literal>" vorangestellt.
            Beispiel:
<screen>weechat.register("test", "1.0", "end_test", "WeeChat python script")</screen>
          </para>
          
        </section>
        
        <section>
          <title>Ruby</title>
          
          <para>
            In einem WeeChat-Rubyskript muss der gesamte Code innerhalb von
            Funktionen stehen. F�r den Hauptteil ist die Funktion "<literal>weechat_init</literal>"
            zu definieren, die automatisch aufgerufen wird, wenn das Skript in WeeChat geladen wird. 
            Beispiel:
<screen>
def weechat_init
    Weechat.register("test", "1.0", "end_test", "WeeChat ruby script")
    Weechat.add_command_handler("command", "my_command")
    return Weechat::PLUGIN_RC_OK
end

def my_command(server, args)
    Weechat.print("my command")
    return Weechat::PLUGIN_RC_OK
end
</screen>
          </para>
          
          <para>
            Allen API-Funktionen ist "<literal>Weechat.</literal>" 
            und Variablen "<literal>Weechat::</literal>" vorangestellt.
          </para>
          
        </section>
        
        <section>
          <title>Lua</title>
          
          <para>
            In einem WeeChat-Luaskript ist allen Funktionen ein "<literal>weechat.</literal>"
            vorangestellt. Variablen beginnen mit "<literal>weechat.</literal>" und
            enden mit "<literal>()</literal>".
            Beispiel:
<screen>
function message_handler(server, args)
   weechat.print("I am a message handler")
   return weechat.PLUGIN_RC_OK()
end
</screen>
          </para>
          
        </section>
        
      </section>
      
      <section id="secWeeChatScriptsAPI">
        <title>WeeChat / Skript-API</title>
        
        <section>
          <title>register</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::register(name, version, end_function, description);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.register(name, version, end_function, description)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.register(name, version, end_function, description)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.register(name, version, end_function, description)
            </command>
          </para>
          <para>
            Das ist die erste Funktion, die in einem Skript aufgerufen wird.
            Alle WeeChat-Skripte m�ssen diese Funktion aufrufen.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>name</option>: eindeutiger Name des Skripts
                  (jedes Skript muss einen eindeutigen Namen besitzen)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>version</option>: Version des Skripts
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>end_function</option>: Funktion, die aufgerufen wird, wenn
                  das Skript entfernt werden soll (optional; ein leerer String bedeutet,
                  dass nichts aufgerufen wird)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>description</option>: eine kurze Beschreibung des Skripts
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 wenn das Skript registriert werden konnte, 0 wenn ein Fehler aufgetaucht ist.
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::register("test", "1.0", "end_test", "Test script!");

# python
weechat.register("test", "1.0", "end_test", "Test script!")

# ruby
Weechat.register("test", "1.0", "end_test", "Test script!")

-- lua
weechat.register("test", "1.0", "end_test", "Test script!")
</screen>
          </para>
        </section>
        
        <section>
          <title>print</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::print(message, [channel, [server]])
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.prnt(message, [channel, [server]])
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.print(message, [channel, [server]])
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.print(message, [channel, [server]])
            </command>
          </para>
          <para>
            Sende eine Nachricht an einen WeeChat-Puffer, identifiziert durch Server
            und Channel.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>message</option>: Nachricht
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Name des Channels, zu welchem der Puffer geh�rt, in dem die
                  Nachricht angezeigt werden soll
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers, zu welchem der Puffer geh�rt, in dem
                  die Nachricht angezeigt werden soll
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::print("message");
weechat::print("message", "#weechat");
weechat::print("message", "#weechat", "freenode");

# python
weechat.prnt("message")
weechat.prnt("message", "#weechat")
weechat.prnt("message", "#weechat", "freenode")

# ruby
Weechat.print("message")
Weechat.print("message", "#weechat")
Weechat.print("message", "#weechat", "freenode")

-- lua
weechat.print("message")
weechat.print("message", "#weechat")
weechat.print("message", "#weechat", "freenode")
</screen>
          </para>
        </section>
        
        <section>
          <title>print_infobar</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::print_infobar(time, message);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.print_infobar(time, message)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.print_infobar(time, message)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.print_infobar(time, message)
            </command>
          </para>
          <para>
            Zeige eine Nachricht f�r einen festen Zeitraum in der Infobar.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>time</option>: Zeit (in sekunden) der Anzeige (0 = permanent)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>: Nachricht
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::print_infobar(5, "message");

# python
weechat.print_infobar(5, "message")

# ruby
Weechat.print_infobar(5, "message")

-- lua
weechat.print_infobar(5, "message")
</screen>
          </para>
        </section>
        
        <section>
          <title>remove_infobar</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::remove_infobar([count]);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.remove_infobar([count])
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.remove_infobar([count])
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.remove_infobar([count])
            </command>
          </para>
          <para>
            Entfernt eine oder mehrere Nachrichten aus dem Infobar-Speicher.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>count</option>: Anzahl der Nachrichten, die entfernt werden sollen
                  (Ist kein Argument angegeben oder &lt;= 0 werden alle Nachrichten entfernt)
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 bei Auftreten eines Fehlers
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::remove_infobar(1);

# python
weechat.remove_infobar(1)

# ruby
Weechat.remove_infobar(1)

-- lua
weechat.remove_infobar(1)
</screen>
          </para>
        </section>
        
        <section>
          <title>log</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::log(message, [channel, [server]]);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.log(message, [channel, [server]])
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.log(message, [channel, [server]])
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.log(message, [channel, [server]])
            </command>
          </para>
          <para>
            Schreibe eine Nachricht in die Logdatei eines Servers oder Channels.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>message</option>: Nachricht
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Name des Channels, zu welchem der Puffer der Logdatei geh�rt
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers, zu welchem der Puffer der Logdatei geh�rt
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiel:
<screen>
# perl
weechat::log("message", "#weechat", "freenode");

# python
weechat.log("message", "#weechat", "freenode")

# ruby
Weechat.log("message", "#weechat", "freenode")

-- lua
weechat.log("message", "#weechat", "freenode")
</screen>
          </para>
        </section>
        
        <section>
          <title>add_message_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_message_handler(message, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_message_handler(message, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_message_handler(message, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_message_handler(message, function)
            </command>
          </para>
          <para>
            Erzeuge einen Nachrichten-Handler, der bei Empfang einer IRC-Nachricht aufgerufen wird.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>message</option>: Name (Typ) der IRC-Nachricht. F�r eine Liste
                  der bekannten Typen von IRC-Nachrichten konsultieren sie bitte die 
                  <acronym>RFC</acronym>s
                  <ulink url="http://www.ietf.org/rfc/rfc1459.txt">1459</ulink> und
                  <ulink url="http://www.ietf.org/rfc/rfc2812.txt">2812</ulink>.
                  Mehr noch, sie k�nnen spezielle Ereignisse abfangen, indem sie einen speziellen Namen verwenden, der mit 
                  "weechat_" beginnt (siehe <xref linkend="secAPI_msg_handler_add" />).
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion, die bei Empfang einer Nachricht aufgerufen werden soll
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::add_message_handler ("privmsg", "my_function");
sub my_function
{
    weechat::print("server=$_[0]");
    ($null, $channel, $message) = split ":",$_[1],3;
    ($mask, $null, $channel) = split " ", $channel;
    weechat::print("mask=$mask, channel=$channel, msg=$message");
    return weechat::PLUGIN_RC_OK;
}

# python
weechat.add_message_handler ("privmsg", "my_function")
def my_function(server, args):
    weechat.prnt("server="+server)
    null, channel, message = string.split(args, ":", 2)
    mask, null, channel = string.split(string.strip(channel), " ", 2)
    weechat.prnt("mask="+mask+", canal="+channel+", message="+message)
    return weechat.PLUGIN_RC_OK

# ruby
Weechat.add_message_handler("privmsg", "my_function")
def my_function(server, args)
    Weechat.print("server=#{server}, args=#{args}")
    return Weechat::PLUGIN_RC_OK
end

-- lua
weechat.add_message_handler ("privmsg", "my_function")
function my_function(server, args)
    weechat.print("server=" .. server .. ", args=" .. args)
    return weechat.PLUGIN_RC_OK()
end
</screen>
          </para>
          <para>
            Hinweis: die Funktion, die aufgerufen wird wenn eine Nachricht 
            empfangen wurde, muss einen der folgenden Werte zur�ckgeben: 
            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal>: Funktion fehlgeschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal>: Funktion war erfolgreich
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_IGNORE_WEECHAT</literal>: Die Nachricht wird nicht an WeeChat �bergeben
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_IGNORE_PLUGINS</literal>: Die Nachricht wird nicht an andere Plugins
                  weitergegeben
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_IGNORE_ALL</literal>: Die Nachricht wird weder
                  an WeeChat noch an andere Plugins �bergeben
                </para>
              </listitem>
            </itemizedlist>
          </para>
        </section>
        
        <section>
          <title>add_command_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_command_handler(command, function,
              [description, arguments, arguments_description,
              completion_template]);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_command_handler(command, function,
              [description, arguments, arguments_description,
              completion_template])
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_command_handler(command, function,
              [description, arguments, arguments_description,
              completion_template])
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_command_handler(command, function,
              [description, arguments, arguments_description,
              completion_template])
            </command>
          </para>
          <para>
            Erzeugt einen Kommando-Handler, der aufgerufen wird, wenn der Anwender
            das Kommando benutzt (Beispiel: /command).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>command</option>: 
                  Name des neuen Kommandos, der auch Name eines bereits 
                  existierenden Kommandos sein kann (mit Bedacht zu verwenden, 
                  das ersetzte Kommando ist nicht verf�gbar, bis das Plugin entfernt wurde)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion, die aufgerufen wird, wenn
                  das Kommando ausgef�hrt wird
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>arguments</option>: eine kurze Beschreibung der Argumente des Kommandos
                  (werden angezeigt bei /help command)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>arguments_description</option>: eine ausf�hrliche Beschreibung der Argumente
                  des Kommandos (werden angezeigt bei /help command)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>completion_template</option>: 
                  Vorlage f�r die Vervollst�ndigung; zum Beispiel bedeutet 
                  "<code class="literal">abc|%w def|%i</code>", dass das 
                  erste Argument "abc" oder ein WeeChat-Kommando sein kann 
                  und das zweite Argument "def" oder ein IRC-Kommando.
                  (siehe <xref linkend="secAPI_cmd_handler_add" />)
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::add_command_handler("command", "my_command");
sub my_command
{
    weechat::print("server= $_[0], args: $_[1]");
    return weechat::PLUGIN_RC_OK;
}

# python
weechat.add_command_handler("command", "my_command")
def my_command(server, args):
    weechat.prnt("server="+server+", args="+args)
    return weechat.PLUGIN_RC_OK

# ruby
Weechat.add_command_handler("command", "my_command")
def my_command(server, args)
    Weechat.print("server=#{server}, args=#{args}")
    return Weechat::PLUGIN_RC_OK
end

-- lua
weechat.add_command_handler("command", "my_command")
def my_command(server, args)
    weechat.print("server="..server..", args="..args)
    return weechat.PLUGIN_RC_OK()
end
</screen>
          </para>
          <para>
            Hinweis: die Funktion, die aufgerufen wird wenn eine Nachricht 
            empfangen wurde, muss einen der folgenden Werte zur�ckgeben: 

            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal> : Funktion ist fehlgeschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal> : Funktion war erfolgreich
                </para>
              </listitem>
            </itemizedlist>
          </para>
        </section>
        
        <section>
          <title>add_timer_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_timer_handler(message, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_timer_handler(message, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_timer_handler(message, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_timer_handler(message, function)
            </command>
          </para>
          <para>
            Erzeugt einen zeitgesteuerten Handler, der periodisch eine Funktion aufruft.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>interval</option>: Interval (in Sekunden) zwischen
                  zwei Aufrufen der Funktion.
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion, die aufgerufen wird
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::add_timer_handler(60, "my_timer");
sub my_timer
{
    weechat::print("this is timer handler");
    return weechat::PLUGIN_RC_OK;
}

# python
weechat.add_timer_handler(60, "my_timer")
def my_timer():
    weechat.prnt("this is timer handler")
    return weechat.PLUGIN_RC_OK

# ruby
Weechat.add_timer_handler(60, "my_timer")
def my_timer()
    Weechat.print("this is timer handler")
    return Weechat::PLUGIN_RC_OK
end

-- lua
weechat.add_timer_handler(60, "my_timer")
function my_timer()
    weechat.print("this is timer handler)
    return weechat.PLUGIN_RC_OK()
end
</screen>
          </para>
          <para>
            Note: function called has to return one of following values:
            Hinweis: die Funktion, die aufgerufen wird, muss 
            einen der folgenden Werte zur�ckgeben: 
            
            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal>: Funktion ist fehlgeschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal>: Funktion war erfolgreich
                  completed
                </para>
              </listitem>
            </itemizedlist>
          </para>
        </section>
        
        <section>
          <title>add_keyboard_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_keyboard_handler(message, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_keyboard_handler(message, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_keyboard_handler(message, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_keyboard_handler(message, function)
            </command>
          </para>
          <para>
            Erzeugt einen Keyboard-Handler, der f�r jeden Tastendruck aufgerufen wird.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>function</option>: Funktion, die aufgerufen wird
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::add_keyboard_handler("my_keyboard");
sub my_keyboard
{
    my $key = shift;
    my $input_before = shift;
    my $input_after = shift;
    weechat::print("keyboard handler: key = '$key', "
                   ."input before = '$input_before' "
                   ."after = '$input_after'");
    return weechat::PLUGIN_RC_OK;
}

# python
weechat.add_keyboard_handler("my_keyboard")
def my_keyboard(key, input_before, input_after):
    weechat.prnt("keyboard handler: key = '%s', " \
                 "input before = '%s' after = '%s'"
                 %(key, input_before, input_after))
    return weechat.PLUGIN_RC_OK

# ruby
Weechat.add_keyboard_handler("my_keyboard")
def my_keyboard(server, input_before, input_after)
    Weechat.print("keyboard handler: key = '#{key}', " \
                  "input before = '#{input_before}' " \
                  "after = '#{input_after}'")
    return Weechat::PLUGIN_RC_OK
end

-- lua
weechat.add_keyboard_handler("my_keyboard")
function my_keyboard(server, input_before, input_after)
    weechat.print("keyboard handler: key = '"..key..
                  "', input before = '"..input_before..
                  "' after = '"..input_after.."'")
    return weechat.PLUGIN_RC_OK()
end
</screen>
          </para>
          <para>
            Hinweis: Die aufgerufene Funktion muss einen der folgenden Werte zur�ckgeben:
            <itemizedlist>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_KO</literal>: Funktion ist fehlgeschlagen
                </para>
              </listitem>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK</literal>: Funktion war erfolgreich
                </para>
              </listitem>
            </itemizedlist>
          </para>
        </section>
        
        <section>
          <title>remove_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::remove_handler(name, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.remove_handler(name, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.remove_handler(name, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.remove_handler(name, function)
            </command>
          </para>
          <para>
            Entfernt einen Nachrichten- oder Kommando-Handler.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>name</option>: Name der IRC-Message oder Kommando
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 bei Auftreten eines Fehlers
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::remove_handler("command", "my_command");

# python
weechat.remove_handler("command", "my_command")

# ruby
Weechat.remove_handler("command", "my_command")

-- lua
weechat.remove_handler("command", "my_command")
</screen>
          </para>
        </section>
        
        <section>
          <title>remove_timer_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::remove_timer_handler(function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.remove_timer_handler(function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.remove_timer_handler(function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.remove_timer_handler(function)
            </command>
          </para>
          <para>
            Entfernt einen zeitgesteuerten Handler.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>function</option>: Funktion
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::remove_timer_handler("my_timer");

# python
weechat.remove_timer_handler("my_timer")

# ruby
Weechat.remove_timer_handler("my_timer")

-- lua
weechat.remove_timer_handler("my_timer")
</screen>
          </para>
        </section>

        <section>
          <title>remove_keyboard_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::remove_keyboard_handler(function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.remove_keyboard_handler(function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.remove_keyboard_handler(function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.remove_keyboard_handler(function)
            </command>
          </para>
          <para>
            Entfernt einen Keyboard-Handler.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>function</option>: Funktion
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::remove_keyboard_handler("my_keyboard");

# python
weechat.remove_keyboard_handler("my_keyboard")

# ruby
Weechat.remove_keyboard_handler("my_keyboard")

-- lua
weechat.remove_keyboard_handler("my_keyboard")
</screen>
          </para>
        </section>
        
        <section>
          <title>command</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::command(command, [channel, [server]]);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.command(command, [channel, [server]])
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.command(command, [channel, [server]])
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.command(command, [channel, [server]])
            </command>
          </para>
          <para>
            F�hrt ein WeeChat-Kommando aus (oder sendet eine Nachricht an einen Channel).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>command</option>: Kommando
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Name des Channels, f�r den das Kommando
                  ausgef�hrt werden soll
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers, f�r den das
                  Kommando ausgef�hrt werden soll
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::command("hello everybody!");
weechat::command("/kick toto please leave this channel", "#weechat");
weechat::command("/nick newnick", "", "freenode");

# python
weechat.command("hello everybody!")
weechat.command("/kick toto please leave this channel", "#weechat")
weechat.command("/nick newnick", "", "freenode")

# ruby
Weechat.command("hello everybody!")
Weechat.command("/kick toto please leave this channel", "#weechat")
Weechat.command("/nick newnick", "", "freenode")

-- lua
weechat.command("hello everybody!")
weechat.command("/kick toto please leave this channel", "#weechat")
weechat.command("/nick newnick", "", "freenode")
</screen>
          </para>
        </section>
        
        <section>
          <title>get_info</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_info(name, [server]);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_info(name, [server])
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_info(name, [server])
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_info(name, [server])
            </command>
          </para>
          <para>
            Gibt ein Info �ber WweeChat oder einen Channel zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>name</option>: Name (Typ) des Infos, das gelesen werden soll
                  (siehe <xref linkend="secAPI_get_info" />)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: angefragte Infos, oder leerer String, wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiele:
<screen>
# perl
$version = get_info("version");
$nick = get_info("nick", "freenode");

# python
version = weechat.get_info("version")
nick = weechat.get_info("nick", "freenode")

# ruby
version = Weechat.get_info("version")
nick = Weechat.get_info("nick", "freenode")

-- lua
version = weechat.get_info("version")
nick = weechat.get_info("nick", "freenode")
</screen>
          </para>
        </section>
        
        <section>
          <title>get_dcc_info</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_dcc_info();
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_dcc_info()
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_dcc_info()
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_dcc_info()
            </command>
          </para>
          <para>
            Gibt eine Liste der gegenw�rtig aktiven oder beendeten DCCs zur�ck.
          </para>
          <para>
            R�ckgabewert: Liste der DCCS
            (siehe <xref linkend="secAPI_get_dcc_info" />).
          </para>
          <para>
            Beispiele:
<screen>
# perl
my @dccs = weechat::get_dcc_info();
if (@dccs)
{
    foreach my $dcc (@dccs)
    {
        while (my ($key, $value) = each %$dcc)
        {
            weechat::print("$key = '$value'");
        }
    }
}
else
{
    weechat::print("no DCC");
}

# python
dccs = weechat.get_dcc_info()
if dccs != None:
    if dccs == []:
        weechat.prnt("no DCC")
    else:
        for d in dccs:
            for b in d.keys():
                weechat.prnt("%s = '%s'" %(b, d[b]))
else:
    weechat.prnt("error while getting DCC")

# ruby
dccs = Weechat.get_dcc_info()
if dccs != nil   
    if dccs == []
        Weechat.print("no DCC")
    else
        dccs.each do |m|
            m.each do |key, value|
                Weechat.print("#{key} = '#{value}'")
            end
        end
    end
else
    Weechat.print("error while getting DCC")
end

-- lua
dccs = weechat.get_dcc_info()
if dccs ~= nil then
    if dccs then
        dcc, dccinfos = next (dccs, nil)
        while (dcc) do
            key, value = next (dccinfos, nil)
            while (key) do
                weechat.print(key.." = '"..value.."'")
                key, value = next (dccinfos, key)
            end
            dcc, dccinfos = next (dccs, dcc)
        end 
    else
        weechat.print("no DCC")
    end
else
    weechat.print("error while getting DCC")
end
</screen>
          </para>
        </section>
        
        <section>
          <title>get_server_info</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_server_info();
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_server_info()
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_server_info()
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_server_info()
            </command>
          </para>
          <para>
            Gibt eine Liste der IRC-Server zur�ck (verbunden oder nicht).
          </para>
          <para>
            R�ckgabewert: Liste der Server
            (siehe <xref linkend="secAPI_get_server_info" />).
          </para>
          <para>
            Beispiele:
<screen>
# perl
my $servers = weechat::get_server_info();
if ($servers)
{
    while (my ($srvname, $srvinfos) = each %$servers)
    {
        while ( my ($key, $value) = each %$srvinfos)
        {
            weechat::print("$srvname -> $key = '$value'");
        }
    }
}
else
{
    weechat::print("no server");
}

# python
servers = weechat.get_server_info()
if servers != None:
    if servers == {}:
        weechat.prnt("no server")
    else:
        for s in servers:
            for i in servers[s]:
                weechat.prnt("%s -> %s = '%s'" % (s, i, str(servers[s][i])))
else:
    weechat.prnt("error while getting servers")

# ruby
servers = Weechat.get_server_info()
if servers != nil
    if servers == []
        Weechat.print("no server")
    else
        servers.each do |n, s|
            s.each do |key, value|
                Weechat.print("#{n} -> #{key} = '#{value}'")
            end
        end
    end
else
    Weechat.print("error while getting servers")
end

-- lua
servers = weechat.get_server_info()
if servers ~= nil then
    if servers then
        srv, srvinfos = next (servers, nil)
        while (srv) do
            key, value = next (srvinfos, nil)
            while (key) do
                weechat.print(srv.." -> "..key.." = '"..value.."'")
                key, value = next (srvinfos, key)
            end	
            srv, srvinfos = next (servers, srv)
        end
    else
        weechat.print("no server")
    end
else
    weechat.print("error while getting servers")
end
</screen>
          </para>
        </section>
        
        <section>
          <title>get_channel_info</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_channel_info(server);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_channel_info(server)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_channel_info(server)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_channel_info(server)
            </command>
          </para>
          <para>
            Gibt eine Liste der Channels f�r einen Server zur�ck.
          </para>
          <para>
            R�ckgabewert: Liste der Channel f�r einen Server
            (siehe <xref linkend="secAPI_get_channel_info" />).
          </para>
          <para>
            Beispiele:
<screen>
# perl
my $channels = weechat::get_channel_info(weechat::get_info("server"));
if ($channels)
{
    while (my ($channame, $chaninfos) = each %$channels)
    {
        while (my ($key, $value) = each %$chaninfos)
        {
            weechat::print("$channame -> $key = '$value'");
        }
    }
}
else
{
    weechat::print("no channel");
}

# python
chans = weechat.get_channel_info(weechat.get_info("server"))
if chans != None:
    if chans == {}:
        weechat.prnt("no channel")
    else:
        for s in chans:
            for i in chans[s]:
                weechat.prnt("%s -> %s = '%s'" % (s, i, str(chans[s][i])))
else:
    weechat.prnt("error while getting channels")

# ruby
channels = Weechat.get_channel_info(Weechat.get_info("server"))
if channels != nil
    if channels == {}
        Weechat.print("no channel")
    else
        channels.each do |n, c|
            c.each do |key, value|
                Weechat.print("#{n} -> #{key} = '#{value}'")
            end
        end
    end
else
    Weechat.print("error while getting channels")
end

-- lua
chans = weechat.get_channel_info(weechat.get_info("server"))
if chans ~= nil then
    if chans then
        chan, chaninfos = next (chans, nil)
        while (chan) do
            key, value = next (chaninfos, nil)
            while (key) do
                weechat.print(chan.." -> "..key.." = '"..value.."'")
                key, value = next (chaninfos, key)
            end
            chan, chaninfos = next (chans, chan)
        end
    else
        weechat.print("no channel")
    end
else
    weechat.print("error while getting channels")
end
</screen>
          </para>
        </section>
        
        <section>
          <title>get_nick_info</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_nick_info(server, channel);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_nick_info(server, channel)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_nick_info(server, channel)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_nick_info(server, channel)
            </command>
          </para>
          <para>
            Gibt eine Liste der Nicknamen f�r einen Channel zur�ck.
          </para>
          <para>
            R�ckgabewert: Liste der Nicknamen eines Channels
            (siehe <xref linkend="secAPI_get_nick_info" />).
          </para>
          <para>
            Beispiele:
<screen>
# perl
my $nicks = weechat::get_nick_info("freenode", "#weechat");
if ($nicks)
{
    while (my ($nickname, $nickinfos) = each %$nicks)
    {
        while ( my ($key, $value) = each %$nickinfos)
        {
            weechat::print("$nickname -> $key = '$value'");
        }
    }
}
else
{
    weechat::print("no nick");
}

# python
nicks = weechat.get_nick_info("freenode", "#weechat")
if nicks != None:
    if nicks == {}:
        weechat.prnt("no nick")
    else:
        for n in nicks:
            for f in nicks[n]:
                weechat.prnt("%s -> %s = '%s'" % (n, f, str(nicks[n][f])))
else:
    weechat.prnt("error while getting nicks")

# ruby
nicks = Weechat.get_nick_info("freenode", "#weechat")
if nicks != nil
    if nicks == {}
        Weechat.print("no nick")
    else
        nicks.each do |nk, nattr|
            nattr.each do |key, value|
                Weechat.print("#{nk} -> #{key} = '#{value}'")
            end
        end
    end
else
    Weechat.print("error while getting nicks")
end

-- lua
nicks = weechat.get_nick_info("freenode", "#weechat")
if nicks ~= nil then
    if nicks then	
        nick, nickinfos = next (nicks, nil)
        while (nick) do
            key, value = next (nickinfos, nil)
            while (key) do
                weechat.print(nick.." -> "..key.." = '"..value.."'")
                key, value = next (nickinfos, key)
            end
            nick, nickinfos = next (nicks, nick)
        end
    else
        weechat.print("no nick")
    end
else
    weechat.print("error while getting nicks")
end
</screen>
          </para>
        </section>
        
        <section>
          <title>get_config</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_config(option);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_config(option)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_config(option)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_config(option)
            </command>
          </para>
          <para>
            Gibt den Wert einer Option der WeeChat-Konfiguration zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>option</option>: Name der Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Wert der Option, leerer String wenn nichts gefunden wurde.
          </para>
          <para>
            Beispiele:
<screen>
# perl
$value1 = weechat::get_config("look_nicklist");
$value2 = weechat::get_config("freenode.server_autojoin");

# python
value1 = weechat.get_config("look_nicklist")
value2 = weechat.get_config("freenode.server_autojoin")

# ruby
value1 = Weechat.get_config("look_nicklist")
value2 = Weechat.get_config("freenode.server_autojoin")

-- lua
value1 = weechat.get_config("look_nicklist")
value2 = weechat.get_config("freenode.server_autojoin")
</screen>
          </para>
        </section>
        
        <section>
          <title>set_config</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::set_config(option, value);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.set_config(option, value)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.set_config(option, value)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.set_config(option, value)
            </command>
          </para>
          <para>
            Setze den Wert einer Option der WeeChat-Konfiguration.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>option</option>: Name der Option, die gesetzt werden soll
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>value</option>: neuer Wert der Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 wenn der Wert gesetzt wurde, 0 wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::set_config("look_nicklist", "off");
weechat::set_config("freenode.server_autojoin, "#weechat");

# python
weechat.set_config("look_nicklist", "off")
weechat.set_config("freenode.server_autojoin, "#weechat")

# ruby
Weechat.set_config("look_nicklist", "off")
Weechat.set_config("freenode.server_autojoin, "#weechat")

-- lua
weechat.set_config("look_nicklist", "off")
weechat.set_config("freenode.server_autojoin, "#weechat")
</screen>
          </para>
        </section>
        
        <section>
          <title>get_plugin_config</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_plugin_config(option);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_plugin_config(option)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_plugin_config(option)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_plugin_config(option)
            </command>
          </para>
          <para>
            Gibt den Wert einer Option eines Plugins zur�ck. Die Option wird aus
            der Datei "<literal>~/.weechat/plugins.rc</literal>" gelesen und 
            sieht so aus: "<literal>plugin.option=value</literal>" 
            (Hinweis: Der Name des Plugins wird automatisch gesetzt).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>option</option>: Name der zu lesenden Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Wert der Option, leerer String wenn die Option nicht 
            gefunden wurde.
          </para>
          <para>
            Beispiele:
<screen>
# perl
$value = weechat::get_plugin_config("my_var");

# python
value = weechat.get_plugin_config("my_var")

# ruby
value = Weechat.get_plugin_config("my_var")

-- lua
value = weechat.get_plugin_config("my_var")
</screen>
          </para>
        </section>
        
        <section>
          <title>set_plugin_config</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::set_plugin_config(option, value);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.set_plugin_config(option, value)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.set_plugin_config(option, value)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.set_plugin_config(option, value)
            </command>
          </para>
          <para>
            Setzt den Wert einer Option eines Plugins. Die Option bzw. ihr Wert
            wird in "<literal>~/.weechat/plugins.rc</literal>" geschrieben und 
            sieht so aus: "<literal>plugin.option=value</literal>" 
            (Hinweis: der Name des Plugins wird automatisch gesetzt).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>option</option>: Name der Option, die gesetzt werden soll
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>value</option>: Der neue Wert der Option
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 wenn die Option gesetzt wurde, 0 wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::set_plugin_config("my_var", "value");

# python
weechat.set_plugin_config("my_var", "value")

# ruby
Weechat.set_plugin_config("my_var", "value")

-- lua
weechat.set_plugin_config("my_var", "value")
</screen>
          </para>
        </section>
        
      </section>
      
    </section>
    
  </chapter>
  
  <!-- ======================== Auteurs / Support ========================= -->
  
  <chapter id="chapAuthorsSupport">
    <title>Autoren / Support</title>
    
    <para>
      Dieses Kapitel listet Autoren und Beitragende f�r WeeChat auf, und
      zeigt die M�glichkeiten um Support zu bekommen.
    </para>
    
    <section id="secAuthors">
      <title>Autoren</title>
      
      <para>
        WeeChat wird entwickelt von:
        <itemizedlist>
          <listitem>
            <para>
              <emphasis>FlashCode (S�bastien Helleu)</emphasis>
              <email>flashcode AT flashtux.org</email> -
              Hauptentwickler
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Kolter</emphasis>
              <email>kolter AT free.fr</email> -
              Entwickler
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Ptitlouis</emphasis>
              <email>ptitlouis AT sysif.net</email> -
              erzeugt Debian-Pakete
            </para>
          </listitem>
        </itemizedlist>
      </para>
      
    </section>
    
    <section id="secContributors">
      <title>Beitragende</title>
      
      <para>
        Die folgenden Personen trugen zur Entwicklung von WeeChat bei:
        <itemizedlist>
          <listitem>
            <para>
              <emphasis>Jiri Golembiovsky</emphasis> -
              Tschechische �bersetzung, Patches
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Rudolf Polzer</emphasis> -
              Patches
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Jim Ramsay</emphasis> -
              Patches
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Odin</emphasis> -
              SuSE RPM
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Pistos</emphasis> -
              Patches
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Gwenn</emphasis> -
              Patches
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>voroskoi</emphasis> -
              Ungarische �bersetzung
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Frank Zacharias</emphasis> -
              Deutsch �bersetzung
            </para>
          </listitem>
          <listitem>
            <para>
              <emphasis>Pavel Shevchuk</emphasis> -
              Russisch �bersetzung
            </para>
          </listitem>
        </itemizedlist>
      </para>
      
    </section>
    
    <section id="secSupport">
      <title>Support bekommen</title>
      
      <para>
        Bevor Sie nach Support fragen, sollten Sie die Dokumentation und die FAQ
        gelesen haben, die bei WeeChat angeboten wird. (Die Dokumentation
        ist dieses Dokument, wenn Sie sie nicht bis zu dieser Zeile gelesen
        haben, sollten Sie sie noch Mal lesen!)
      </para>
      
      <para>
        <itemizedlist>
          <listitem>
            <para>
              IRC: Server "<literal>irc.freenode.net</literal>",
              Channel "<literal>#weechat</literal>"
            </para>
          </listitem>
          <listitem>
            <para>
              WeeChat Forum:
              <ulink url="http://forums.flashtux.org">
                http://forums.flashtux.org
              </ulink>
            </para>
          </listitem>
          <listitem>
            <para>
              Mailingliste:
              <itemizedlist>
                <listitem>
                  <para>
                    Zum abonnieren:
                    <ulink url="http://mail.nongnu.org/mailman/listinfo/weechat-support">
                      http://mail.nongnu.org/mailman/listinfo/weechat-support
                    </ulink>
                  </para>
                </listitem>
                <listitem>
                  <para>
                    Um eine Mail an die Liste zu senden:
                    <email>weechat-support@nongnu.org</email>
                  </para>
                </listitem>
              </itemizedlist>
              Das Archiv der Mailingliste ist hier:  
              <ulink url="http://mail.nongnu.org/archive/html/weechat-support">
                http://mail.nongnu.org/archive/html/weechat-support
              </ulink>
            </para>
          </listitem>
        </itemizedlist>
      </para>
      
    </section>
    
  </chapter>
  
</book>