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

<!--

WeeChat documentation (german version)

Copyright (c) 2003-2008 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 3 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, see <http://www.gnu.org/licenses/>.

-->

<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.2//EN"
"file:///usr/share/xml/docbook/schema/dtd/4.2/docbookx.dtd"
[
  <!-- ***** auto-built: *****  -->
  <!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">

  <!-- **** written by hand: **** -->
  <!ENTITY intro.de.xml SYSTEM "intro.de.xml">
  <!ENTITY install.de.xml SYSTEM "install.de.xml">
  <!ENTITY usage.de.xml SYSTEM "usage.de.xml">
  <!ENTITY plugins.de.xml SYSTEM "plugins.de.xml">
  <!ENTITY plugin_api.de.xml SYSTEM "plugin_api.de.xml">
  <!ENTITY plugin_charset.de.xml SYSTEM "plugin_charset.de.xml">
  <!ENTITY plugin_scripts.de.xml SYSTEM "plugin_scripts.de.xml">
  <!ENTITY authors.de.xml SYSTEM "authors.de.xml">
]>

<book lang="de">
  
  <bookinfo>
    
    <title>WeeChat 0.2.7-dev - User guide</title>
    <subtitle>Schneller, leichter und erweiterbarer Chat Client</subtitle>
    
    <author>
      <firstname>S�bastien</firstname>
      <surname>Helleu</surname>
      <email>flashcode AT flashtux.org</email>
    </author>
    
    &date.xml;
    
    <copyright>
      <year>2008</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 3
        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,
        &lt;http://www.gnu.org/licenses/&gt;.
      </para>
    </legalnotice>
    
    <abstract>
      <para>
        Dieses Dokument beschreibt den WeeChat Chat 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 Chat 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="secGITSources">
      <title>GIT Quellen</title>
      
      <para>
        Warnung: GIT Quellen sind f�r fortgeschrittene Anwender, das
        �bersetzen k�nnte fehlschlagen oder das Ergebnis nicht stabil sein.
        Sie wurden gewarnt!
      </para>
      
      <para>
        Um die GIT Quellen zu bekommen, sind folgende Kommandos n�tig:
<screen><prompt>$ </prompt><userinput>git-clone git://git.sv.gnu.org/weechat.git</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 / Strg + B</entry>
                <entry>
                  Gehe zum vorherigen Zeichen in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Rechts / Strg + F</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>
              <!-- TRANSLATION NEEDED -->
              <row>
                <entry>Strg + C dann B</entry>
                <entry>
                  Insert code for bold text.
                </entry>
              </row>
              <row>
                <entry>Strg + C dann C</entry>
                <entry>
                  Insert code for colored text.
                </entry>
              </row>
              <row>
                <entry>Strg + C dann O</entry>
                <entry>
                  Insert code for color reset.
                </entry>
              </row>
              <row>
                <entry>Strg + C dann R</entry>
                <entry>
                  Insert code for reverse color.
                </entry>
              </row>
              <row>
                <entry>Strg + C dann U</entry>
                <entry>
                  Insert code for underlined text.
                </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 + R</entry>
                <entry>
                  Suche nach Text im Pufferverlauf
                  (zwei Mal: suche nach dem genauen Text)
                </entry>
              </row>
              <row>
                <entry>Strg + S dann Strg + U</entry>
                <entry>
                  <!-- TRANSLATION NEEDED -->
                  Set unread marker on all buffers
                </entry>
              </row>
              <row>
                <entry>Strg + T</entry>
                <entry>
                  Zeichen transponieren
                </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>Strg + Y</entry>
                <entry>
                  Inhalt der Zwischenablage einf�gen
                </entry>
              </row>
              <row>
                <entry>R�ckschritt / Strg + H</entry>
                <entry>
                  L�sche das vorhergehende Zeichen in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Entfernen / Strg + D</entry>
                <entry>
                  L�sche das n�chste Zeichen in der Kommandozeile
                </entry>
              </row>
              <row>
                <entry>Tabulator / Shift + 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 / Strg + J / Strg + M</entry>
                <entry>
                  F�hre ein Kommando aus oder sende eine Nachricht
                  (im Suchmodus: Suche anhalten)
                </entry>
              </row>
              <row>
                <entry>Hoch / Runter</entry>
                <entry>
                  Rufe das letzte Kommando/die letzte Nachricht wieder auf
                  (im Suchmodus: suche r�ckw�rts/vorw�rts)
                </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>F9 / F10</entry>
                <entry>
                  Bl�ttere in der Topic
                </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 + I</entry>
                <entry>
                  Entferne den letzten Hinweis in der Infobar
                </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 then Alt + P</entry>
                <entry>
                  <!-- TRANSLATION NEEDED -->
                  Switch to buffer previously displayed
                </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 Servers
                  (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
        <!-- TRANSLATION NEEDED -->
        (press Ctrl-C then following letter, with optional value):
        <informaltable colsep="0" frame="none">
          <tgroup cols="2">
            <thead>
              <row>
                <entry>Code</entry>
                <entry>Beschreibung</entry>
              </row>
            </thead>
            <tbody>
              <row>
                <entry>^Cb</entry>
                <entry>
                  Fett (bold)
                </entry>
              </row>
              <row>
                <entry>^Ccxx</entry>
                <entry>
                  Textfarbe "<literal>xx</literal>" (color)
                  (siehe Farbtabelle)
                </entry>
              </row>
              <row>
                <entry>^Ccxx,yy</entry>
                <entry>
                  Textfarbe "<literal>xx</literal>"
                  und Hintergrund "<literal>yy</literal>"
                  (siehe Farbtabelle)
                </entry>
              </row>
              <row>
                <entry>^Co</entry>
                <entry>
                  Schalte Farben und Attribute ab
                </entry>
              </row>
              <row>
                <entry>^Cr</entry>
                <entry>
                  umgedrehte Farben (tausche Textfarbe mit Hintergrundfarbe)
                </entry>
              </row>
              <row>
                <entry>^Cu</entry>
                <entry>
                  Unterstreiche Text
                </entry>
              </row>
            </tbody>
          </tgroup>
        </informaltable>
        Hinweis: Der gleiche Farbcode (ohne die Nummer) kann zum Ausschalten
        des Attributes verwendet werden.
      </para>
      
      <para>
        Farbcodes f�r ^Cc:
        <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>^Cc12^Cbhello^Cb^Cc04^Cu everybody^Cu^Cc!</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="5">
            <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 ~/.weechat/weechat_fifo_*
    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_set_charset">
          <title>set_charset</title>
          
          <para>
            Prototyp:
            <command>
              void set_charset (t_weechat_plugin *plugin, char *charset)
            </command>
          </para>
          <para>
            Legt neuen Zeichensatz f�r ein Plugin fest.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>charset</option>: neuer Zeichensatz, der benutzt
                  werden soll
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            Beispiel:
            <screen>plugin->set_charset (plugin, "ISO-8859-1");</screen>
          </para>
        </section>
        
        <section id="secAPI_iconv_to_internal">
          <title>iconv_to_internal</title>
          
          <para>
            Prototyp:
            <command>
              void iconv_to_internal (t_weechat_plugin *plugin, char *charset,
                                      char *string)
            </command>
          </para>
          <para>
            Konvertiert eine Zeichenkette in das interne Format von WeeChat
            (UTF-8).
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>charset</option>: urspr�nglicher Zeichensatz, von
                  dem konvertiert werden soll
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string</option>: zu konvertierende Zeichenkette
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: konvertierte Zeichenkette
          </para>
          <para>
            Anmerkung: der Speicher, der durch das Ergebnis belegt wird, muss
            mit free() wieder freigegeben werden.
          </para>
          <para>
            Beispiel:
            <screen>char *str = plugin->iconv_to_internal (plugin, "ISO-8859-1", "iso string: � �");</screen>
          </para>
        </section>
        
        <section id="secAPI_iconv_from_internal">
          <title>iconv_from_internal</title>
          
          <para>
            Prototyp:
            <command>
              void iconv_from_internal (t_weechat_plugin *plugin, char *charset,
                                        char *string)
            </command>
          </para>
          <para>
            Konvertiert eine Zeichenkette von dem internen WeeChat-Zeichensatz
            (UTF-8) in einen anderen.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>charset</option>: Ziel-Zeichensatz
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>string</option>: zu konvertierende Zeichenkette
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: konvertierte Zeichenkette
          </para>
          <para>
            Anmerkung: der Speicher, der durch das Ergebnis belegt wird, muss
            mit free() wieder freigegeben werden.
          </para>
          <para>
            Beispiel:
            <screen>char *str = plugin->iconv_from_internal (plugin, "ISO-8859-1", "utf-8 string: � �");</screen>
          </para>
        </section>
        
        <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_mkdir_home">
          <title>mkdir_home</title>
          
          <para>
            Prototyp:
            <command>
              int mkdir_home (t_weechat_plugin *plugin, char *directory)
            </command>
          </para>
          <para>
            Erzeugt ein Verzeichnis im WeeChat-Verzeichnis.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Pluginstrukur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>directory</option>: Verzeichnis, das erzeugt werden
                  soll
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 wenn das Verzeichnis erfolgreich erstellt wurde, 0
            wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiel:
<screen>
if (!plugin->mkdir_home (plugin, "temp"))
    plugin->print_server(plugin, "Konnte 'temp'-Verzeichnis im WeeChat-Verzeichnis nicht erstellen.");
</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>
          <!-- TRANSLATION NEEDED -->
          <para>
            To display colored text, there are following codes:
            <informaltable colsep="0" frame="none">
              <tgroup cols="2">
                <thead>
                  <row>
                    <entry>Code</entry>
                    <entry>Description</entry>
                  </row>
                </thead>
                <tbody>
                  <row>
                    <entry>0x02</entry>
                    <entry>
                      bold text
                    </entry>
                  </row>
                  <row>
                    <entry>0x03 + "xx"</entry>
                    <entry>
                      text color "<literal>xx</literal>"
                      (see <xref linkend="secAPI_get_irc_color" /> for colors)
                    </entry>
                  </row>
                  <row>
                    <entry>0x03 + "xx,yy"</entry>
                    <entry>
                      text color "<literal>xx</literal>"
                      and background "<literal>yy</literal>"
                      (see <xref linkend="secAPI_get_irc_color" /> for colors)
                    </entry>
                  </row>
                  <row>
                    <entry>0x0F</entry>
                    <entry>
                      disable color and attributes
                    </entry>
                  </row>
                  <row>
                    <entry>0x12</entry>
                    <entry>
                      reverse video (revert text color with background)
                    </entry>
                  </row>
                  <row>
                    <entry>0x1F</entry>
                    <entry>
                      underlined text
                    </entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
            Note: the same code (without number for 0x03) may be used to stop
            the attribute.
          </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");
plugin->print (plugin, NULL, NULL,
               "Test: \x02 Fett \x0F\x03%02d Blau \x03%02d Gr�n",
               plugin->get_irc_color (plugin, "blue"),
               plugin->get_irc_color (plugin, "green"));
</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>
            <!-- TRANSLATION NEEDED -->
            To display colored text, see <xref linkend="secAPI_print" />.
          </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 ("*"
                  f�r alle Nachrichten).
                  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>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_WITH_HIGHLIGHT</literal>: Funktion
                  erfolgreich vervollst�ndigt und eine Hervorhebung bei den
                  empfangenen Nachrichten eingebaut
                </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;
}
...
t_plugin_handler *msg_handler;
msg_handler = 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 oder "-" 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>%*</literal></entry>
                          <entry>
                            <!-- TRANSLATION NEEDED -->
                            repeat last completion for all following arguments
                            (this code has to be at the end of completion
                            template, preceded by "|")
                          </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>alle channels (inklusive Queries)</entry>
                        </row>
                        <row>
                          <entry><literal>%f</literal></entry>
                          <entry>Dateiname</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>%m</literal></entry>
                          <entry>Nicknamen des gegenw�rtigen Servers</entry>
                        </row>
                        <row>
                          <entry><literal>%M</literal></entry>
                          <entry>
                            Nicks auf dem gegenw�rtigen Server (in allen
                            offenen Channeln)
                          </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;
}
...
t_plugin_handler *cmd_handler;
cmd_handler = 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;
}
...
t_plugin_handler *timer_handler;
timer_handler = 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 my_keyb (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;
}
...
t_plugin_handler *keyb_handler;
keyb_handler = plugin->keyboard_handler_add (plugin, &amp;my_keyb);
</screen>
          </para>
        </section>
        
        <section id="secAPI_event_handler_add">
          <title>event_handler_add</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_handler *event_handler_add (t_weechat_plugin
              *plugin, char *event, t_plugin_handler_func *function,
              char *handler_args, void *handler_pointer)
            </command>
          </para>
          <para>
            F�gt einen Ereignishandler hinzu, der aufgerufen wird, wenn ein
            Ereignis eintritt.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Strukture
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>event</option> : Ereignis (siehe folgende Tabelle)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: aufgerufene Funktion
                </para>
                <para>
                  Es wird folgender Prototyp verwendet:
                  <command>
                    int my_function (t_weechat_plugin *plugin,
                    int argc, char **argv,
                    char *handler_args, void *handler_pointer)
                  </command>
                </para>
                <para>
                  <!-- TRANSLATION NEEDED -->
                  Arguments depend on event (see table below).
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_args</option>: Argument, die an die aufgerufene
                  Funktion �bergeben werden
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>handler_pointer</option>: Pointer, der an die
                  aufgerufene Funktion �bergeben werden
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <!-- TRANSLATION NEEDED -->
          <para>
            List of events:
            <informaltable colsep="0" frame="none">
              <tgroup cols="3">
                <thead>
                  <row>
                    <entry>Ereignis</entry>
                    <entry>Beschreibung</entry>
                    <entry>Arguments</entry>
                  </row>
                </thead>
                <tbody>
                  <row>
                    <entry><literal>buffer_open</literal></entry>
                    <entry>ein Puffer wurde ge�ffnet</entry>
                    <entry>
                      argc = 1, argv = { buffer number }
                    </entry>
                  </row>
                  <row>
                    <entry><literal>buffer_close</literal></entry>
                    <entry>ein Puffer wurde geschlossen</entry>
                    <entry>
                      argc = 1, argv = { buffer number }
                    </entry>
                  </row>
                  <row>
                    <entry><literal>buffer_move</literal></entry>
                    <entry>a buffer was moved</entry>
                    <entry>
                      argc = 2, argv = { new buffer number, old number }
                    </entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            R�ckgabewert: Pointer auf den neuen Ereignishandler.
          </para>
          <para>
            Anmerkung: die aufgerufene Function 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 erfolgreich beendet
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            Beispiel:
<screen>
int my_event (t_weechat_plugin *plugin, int argc, char **argv,
              char *handler_args, void *handler_pointer)
{
    plugin->print (plugin, NULL, NULL, "my_event");
    return PLUGIN_RC_OK;
}
...
t_plugin_handler *event_handler;
event_handler = plugin->event_handler_add (plugin, "buffer_open",
                                           &amp;my_event);
</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_modifier_add">
          <title>modifier_add</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_modifier *modifier_add (t_weechat_plugin *plugin,
              char *type, char *message, t_plugin_modifier_func *function,
              char *modifier_args, void *modifier_pointer)
            </command>
          </para>
          <para>
            F�ge einen Nachrichtenmodifikator hinzu.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>type</option>: Modifikatorart:
                  <informaltable colsep="0" frame="none">
                    <tgroup cols="2">
                      <thead>
                        <row>
                          <entry>Art</entry>
                          <entry>Beschreibung</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
                          <entry><literal>irc_in</literal></entry>
                          <entry>wird bei eingehenden IRC-Nachrichten aufgerufen</entry>
                        </row>
                        <row>
                          <entry><literal>irc_user</literal></entry>
                          <entry>
                            wird bei jeder Benutzernachricht (oder Befehl)
                            aufgerufen (bevor WeeChat die Nachricht parst)
                          </entry>
                        </row>
                        <row>
                          <entry><literal>irc_out</literal></entry>
                          <entry>
                            wird unmittelbar vor dem Abschicken einer ausgehenden
                            Nachricht an den IRC-Server aufgerufen (auch bei
                            Nachrichten, die WeeChat automatisch an den Server
                            sendet)
                          </entry>
                        </row>
                      </tbody>
                    </tgroup>
                  </informaltable>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>: Name der IRC-Nachricht (wird nur
                  bei den Arten "irc_in" and "irc_out" benutzt)
                  Um eine Liste der IRC-Nachrichten zu erhalten, lies bitte
                  folgende Dokumente:<acronym>RFC</acronym>s
                  <ulink url="http://www.ietf.org/rfc/rfc1459.txt">1459</ulink>
                  and
                  <ulink url="http://www.ietf.org/rfc/rfc2812.txt">2812</ulink>.
                  Au�erdem gibt es den Wert "*", der alle Nachrichten
                  anspricht (ohne Filter).
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: aufgerufene Funktion
                </para>
                <para>
                  Folgender Prototyp wird daf�r benutzt:
                  <command>
                    int my_function (t_weechat_plugin *plugin,
                    int argc, char **argv,
                    char *modifier_args, void *modifier_pointer)
                  </command>
                </para>
                <para>
                  Argument argc hat den Wert 2, folgende Werte sind in dem 
                  argv-Array:
                  <itemizedlist>
                    <listitem>
                      <para>argv[0] = Servername</para>
                    </listitem>
                    <listitem>
                      <para>argv[1] = Nachricht</para>
                    </listitem>
                  </itemizedlist>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>modifier_args</option>: an die Funktion �bergebene
                  Werte
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>modifier_pointer</option>: an die Funktion
                  �bergebener Zeiger
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Zeiger auf den neuen Nachrichtenmodifikator
          </para>
          <para>
            Anmerkung: Die Funktion muss die ver�nderte Zeichenkette oder NULL 
            (wenn keine �nderungen erfolgten) zur�ckgeben.
            Wenn die Funktion eine leere Zeichenkette zur�ckgibt, wird die
            Nachricht komplett verworfen und nicht weiter von WeeChat
            verarbeitet. (Seien Sie vorsichtig mit dem Verwerfen von
            Nachrichten!) Die zur�ckgegebene Zeichenkette muss mit malloc()
            zugewiesen worden sein und wird von WeeChat nach Gebrauch
            automatisch mit free() wieder freigegeben.
          </para>
          <para>
            Beispiel:
<screen>
char *adder (t_weechat_plugin *plugin, int argc, char **argv,
             char *modifier_args, void *modifier_pointer)
{
    char *string;
    string = malloc (strlen (argv[1]) + 16);
    strcpy (string, argv[1]);
    strcat (string, "test");
    return string;
}
...
t_plugin_modifier *modifier;
modifier = plugin->modifier_add (plugin, "irc_in", "privmsg",
                                 &amp;adder, NULL, NULL);
</screen>
          </para>
        </section>
        
        <section id="secAPI_modifier_remove">
          <title>modifier_remove</title>
          
          <para>
            Prototyp:
            <command>
              void modifier_remove (t_weechat_plugin *plugin,
              t_plugin_modifier *modifier)
            </command>
          </para>
          <para>
            Entfernt einen Nachrichtenmodifikator.
          </para>
          <para>
            Arguments:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>modifier</option>: zu entfernender Modifikator
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner
          </para>
          <para>
            Beispiel:
            <screen>plugin->modifier_remove (plugin, my_modifier);</screen>
          </para>
        </section>
        
        <section id="secAPI_modifier_remove_all">
          <title>modifier_remove_all</title>
          
          <para>
            Prototyp:
            <command>
              void modifier_remove_all (t_weechat_plugin *plugin)
            </command>
          </para>
          <para>
            Entfernt alle Modifikatoren f�r ein Plugin.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Plugin-Struktur
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner
          </para>
          <para>
            Beispiel:
            <screen>plugin->modifier_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>type</literal></entry>
                          <entry>
                            Puffertyp: 0=standard, 1=DCC, 2=raw IRC data
                          </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 id="secAPI_get_irc_color">
          <title>get_irc_color</title>
          
          <para>
            Prototype:
            <command>
              int get_irc_color (t_weechat_plugin *plugin,
              char *color_name)
            </command>
          </para>
          <para>
            Hole IRC-Farbindex mit dem Farbnamen.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf die Pluginstruktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>color_name</option>: Farbname
                  Folgende Farben sind erlaubt:
                  <informaltable colsep="0" frame="none">
                    <tgroup cols="2">
                      <thead>
                        <row>
                          <entry>Farbname</entry>
                          <entry>Wert</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
                          <entry>white</entry>
                          <entry>0</entry>
                        </row>
                        <row>
                          <entry>black</entry>
                          <entry>1</entry>
                        </row>
                        <row>
                          <entry>blue</entry>
                          <entry>2</entry>
                        </row>
                        <row>
                          <entry>green</entry>
                          <entry>3</entry>
                        </row>
                        <row>
                          <entry>lightred</entry>
                          <entry>4</entry>
                        </row>
                        <row>
                          <entry>red</entry>
                          <entry>5</entry>
                        </row>
                        <row>
                          <entry>magenta</entry>
                          <entry>6</entry>
                        </row>
                        <row>
                          <entry>brown</entry>
                          <entry>7</entry>
                        </row>
                        <row>
                          <entry>yellow</entry>
                          <entry>8</entry>
                        </row>
                        <row>
                          <entry>lightgreen</entry>
                          <entry>9</entry>
                        </row>
                        <row>
                          <entry>cyan</entry>
                          <entry>10</entry>
                        </row>
                        <row>
                          <entry>lightcyan</entry>
                          <entry>11</entry>
                        </row>
                        <row>
                          <entry>lightblue</entry>
                          <entry>12</entry>
                        </row>
                        <row>
                          <entry>lightmagenta</entry>
                          <entry>13</entry>
                        </row>
                        <row>
                          <entry>gray</entry>
                          <entry>14</entry>
                        </row>
                        <row>
                          <entry>lightgray</entry>
                          <entry>15</entry>
                        </row>
                      </tbody>
                    </tgroup>
                  </informaltable>
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: IRC-Farbindex, -1 wenn die Farbe nicht gefunden wurde.
          </para>
          <para>
            Beispiel:
<screen>
int color_blue = plugin->get_irc_color (plugin, "blue"); /* return 2 */
</screen>
          </para>
        </section>
                
        <section id="secAPI_input_color">
          <title>input_color</title>
          
          <para>
            Prototyp:
            <command>
              void input_color (t_weechat_plugin *plugin,
              int color, int start, int length)
            </command>
          </para>
          <para>
            Erzeugt einen Farbcode im Eingabepuffer.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf die Pluginstruktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>color</option>: Textfarbe (wenn der Wert &lt; 0 ist,
                  dann wird der Eingabepuffer aufgefrischt und nicht ver�ndert)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>start</option>: Startposition f�r Einf�rbung (wenn
                  der Wert &lt; 0 ist, wird die Maske neu initialisiert)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>length</option>: L�nge der Einf�rbung (wenn der Wert
                  &lt;= 0 ist, wird die Maske neu initialisiert)
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiele:
<screen>
plugin->input_color (plugin, plugin->get_irc_color (plugin, "blue"), 10, 5);
</screen>
          </para>
        </section>
        
        <section id="secAPI_get_window_info">
          <title>get_window_info</title>
          
          <para>
            Prototype:
            <command>
              t_plugin_window_info *get_window_info (t_weechat_plugin *plugin)
            </command>
          </para>
          <para>
            Gibt die Liste der WeeChat-Fenster zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Pluginstruktur
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: verkettete Liste der WeeChat-Fenster.
            <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>win_x</literal></entry>
                    <entry>horizontale Fensterposition</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>win_y</literal></entry>
                    <entry>vertikale Fensterposition</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>win_width</literal></entry>
                    <entry>Fensterbreite</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>win_height</literal></entry>
                    <entry>Fensterh�he</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>win_width_pct</literal></entry>
                    <entry>
                      Breite in % (im Vergleich zum �bergeordneten Fenster)
                    </entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>win_height_pct</literal></entry>
		    <entry>
                      H�he % (im Vergleich zum �bergeordneten Fenster)
                    </entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>num_buffer</literal></entry>
                    <entry>Anzahl der angezeigten Puffer</entry>
                  </row>
                  <row>
                    <entry>t_plugin_window_info *</entry>
                    <entry><literal>prev_window</literal></entry>
                    <entry>
                      Zeiger auf die Informationen des vorhergehenden Fensters
                    </entry>
                  </row>
                  <row>
                    <entry>t_plugin_window_info *</entry>
                    <entry><literal>next_window</literal></entry>
		    <entry>
                      Zeiger auf die Informationen des n�chsten Fensters
                    </entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            Anmerkung: Das Ergebnis muss nach Benutzung durch einen Aufruf der
            "free_window_info"-Funktion gel�scht werden.
          </para>
          <para>
            Example:
<screen>
t_plugin_window_info *window_info, *ptr_window;

window_info = plugin->get_window_info (plugin);
if (window_info)
{
    for (ptr_window = window_info; ptr_window; ptr_window = ptr_window->next_window)
    {
        plugin->print (plugin, NULL, NULL, "--- window info ---");
        plugin->print (plugin, NULL, NULL, "(%d,%d), size: %dx%d, %%size: %d%%x%d%%",
                       ptr_window->win_x, ptr_window->win_y,
                       ptr_window->win_width, ptr_window->win_height,
                       ptr_window->win_width_pct, ptr_window->win_height_pct);
        plugin->print (plugin, NULL, NULL, "num_buffer: %d", ptr_window->num_buffer);
    }
    plugin->free_window_info (plugin, window_info);
}
else
    plugin->print (plugin, NULL, NULL, "no window info!");
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_window_info">
          <title>free_window_info</title>
          
          <para>
            Prototyp:
            <command>
              void free_window_info (t_weechat_plugin *plugin,
              t_plugin_window_info *window_info)
            </command>
          </para>
          <para>
            Gibt den Speicher wieder frei, der von der
            Fenster-Informationsliste belegt wird.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Pluginstruktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>window_info</option>: Zeiger auf
                  Fenster-Informationsliste, der von der
                  "get_window_info"-Funktion zur�ckgegeben wurde
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
            <screen>plugin->free_window_info (plugin, window_info);</screen>
          </para>
        </section>
        
        <section id="secAPI_get_buffer_info">
          <title>get_buffer_info</title>
          
          <para>
            Prototyp:
            <command>
              t_plugin_buffer_info *get_buffer_info (t_weechat_plugin *plugin)
            </command>
          </para>
          <para>
            Gibt eine Liste der WeeChat-Puffer zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Pluginstruktur
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: verkettete Liste der WeeChat-Puffer.
            <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>Puffertyp: 0=standard, 1=DCC, 2=raw IRC data</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>number</literal></entry>
                    <entry>Puffer-Nummer</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>num_displayed</literal></entry>
                    <entry>Anzahl der Fenster im Puffer</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>server_name</literal></entry>
                    <entry>Servername f�r den Puffer (kann NULL sein)</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>channel_name</literal></entry>
                    <entry>Channelname f�r den Puffer (kann NULL sein)</entry>
                  </row>
                  <row>
                    <entry>int</entry>
                    <entry><literal>notify_level</literal></entry>
                    <entry>Benachrichtigungslevel f�r den Puffer</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>log_filename</literal></entry>
                    <entry>
                      Name der Logdatei (NULL bedeutet, dass nichts geloggt
                      wird)
                    </entry>
                  </row>
                  <row>
                    <entry>t_plugin_buffer_info *</entry>
                    <entry><literal>prev_buffer</literal></entry>
                    <entry>Zeiger auf die vorhergehenden Pufferinformationen</entry>
                  </row>
                  <row>
                    <entry>t_plugin_buffer_info *</entry>
                    <entry><literal>next_buffer</literal></entry>
		    <entry>Zeiger auf die n�chsten Pufferinformationen</entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            Bemerkung: Das Ergebnis muss nach der Auswertung mit der
            "free_buffer_info"-Funktion wieder gel�scht werden.
          </para>
          <para>
            Beispiel:
<screen>
t_plugin_buffer_info *buffer_info, *ptr_buffer;

buffer_info = plugin->get_buffer_info (plugin);
if (buffer_info)
{
    for (ptr_buffer = buffer_info; ptr_buffer; ptr_buffer = ptr_buffer->next_buffer)
    {
        plugin->print (plugin, NULL, NULL, "--- buffer info ---");
        plugin->print (plugin, NULL, NULL, "type: %d", ptr_buffer->type);
        plugin->print (plugin, NULL, NULL, "number: %d", ptr_buffer->number);
        plugin->print (plugin, NULL, NULL, "num_displayed: %d", ptr_buffer->num_displayed);
        plugin->print (plugin, NULL, NULL, "server: %s", ptr_buffer->server_name);
        plugin->print (plugin, NULL, NULL, "channel: %s", ptr_buffer->channel_name);
        plugin->print (plugin, NULL, NULL, "notify level: %d", ptr_buffer->notify_level);
        plugin->print (plugin, NULL, NULL, "log filename: %s", ptr_buffer->log_filename);
    }
    plugin->free_buffer_info (plugin, buffer_info);
}
else
    plugin->print (plugin, NULL, NULL, "no buffer info!");
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_buffer_info">
          <title>free_buffer_info</title>
          
          <para>
            Prototyp:
            <command>
              void free_buffer_info (t_weechat_plugin *plugin,
              t_plugin_buffer_info *buffer_info)
            </command>
          </para>
          <para>
            Gibt den Speicher frei, der von der Puffer-Informationsliste
            belegt wird.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Pluginstruktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>buffer_info</option>: pointer to buffer info list
                  returned by "get_buffer_info" function
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiel:
            <screen>plugin->free_buffer_info (plugin, buffer_info);</screen>
          </para>
        </section>
        
        <section id="secAPI_get_buffer_data">
          <title>get_buffer_data</title>
          
          <para>
            Prototype:
            <command>
              t_plugin_buffer_data *get_buffer_info (t_weechat_plugin *plugin,
              char *server, char *channel)
            </command>
          </para>
          <para>
            Gibt den Inhalt des Puffers zur�ck.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Pluginstruktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>server</option>: interner Name des Servers
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>channel</option>: Channelname
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: Pufferinhalt (verkettete Liste mit den Zeilen).
            <informaltable colsep="0" frame="none">
              <tgroup cols="2">
                <thead>
                  <row>
                    <entry>Typ</entry>
                    <entry>Feld</entry>
                    <entry>Beschreibung</entry>
                  </row>
                </thead>
                <tbody>
                  <row>
                    <entry>time_t</entry>
                    <entry><literal>date</literal></entry>
                    <entry>Datum/Zeit</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>nick</literal></entry>
                    <entry>Nick</entry>
                  </row>
                  <row>
                    <entry>char *</entry>
                    <entry><literal>data</literal></entry>
                    <entry>Zeileninhalt (Farbcodes wurden entfernt)</entry>
                  </row>
                  <row>
                    <entry>t_plugin_buffer_line *</entry>
                    <entry><literal>prev_line</literal></entry>
                    <entry>Zeiger auf die vorherige Zeile</entry>
                  </row>
                  <row>
                    <entry>t_plugin_buffer_line *</entry>
                    <entry><literal>next_line</literal></entry>
		    <entry>Zeiger auf die n�chste Zeile</entry>
                  </row>
                </tbody>
              </tgroup>
            </informaltable>
          </para>
          <para>
            Bemerkung: Das Ergebnis muss nach der Auswertung mit der
            "free_buffer_data"-Funktion wieder gel�scht werden.
          </para>
          <para>
            Example:
<screen>
t_plugin_buffer_line *buffer_line, *ptr_line;
char text_time[256];

buffer_line = plugin->get_buffer_data (plugin);
if (buffer_line)
{
    for (ptr_line = buffer_line; ptr_line; ptr_line = ptr_line->next_line)
    {
        strftime (text_time, sizeof (text_time), "%x %X", localtime (&amp;(ptr_line->date)));
        plugin->print (plugin, NULL, NULL, "date: %s, nick: %s, data: %s",
                       text_time, ptr_line->nick, ptr_line->data);
    }
    plugin->free_buffer_data (plugin, buffer_line);
}
</screen>
          </para>
        </section>
        
        <section id="secAPI_free_buffer_data">
          <title>free_buffer_data</title>
          
          <para>
            Prototype:
            <command>
              void free_buffer_data (t_weechat_plugin *plugin,
              t_plugin_buffer_line *buffer_line)
            </command>
          </para>
          <para>
            Gibt den Speicher frei, der von den Pufferzeilen belegt wurde.
          </para>
          <para>
            Arguments:
            <itemizedlist>
              <listitem>
                <para>
                  <option>plugin</option>: Zeiger auf Pluginstruktur
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>buffer_line</option>: Zeiger auf Pufferzeilen, der
                  von der "get_buffer_data"-Funktion zur�ckgegeben wurde
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Beispiele:
            <screen>plugin->free_buffer_data (plugin, buffer_line);</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="secCharset">
      <title>Zeichensatz Plugin</title>
      
      <para>
        Das Zeichensatz-Plugin erm�glicht das Ver- und Entschl�sseln von Daten
        auf 3 Ebenen: Global, pro Server oder pro Channel.
        Das Plugin ist optional, wird jedoch empfohlen: wenn es nicht geladen
        ist, kann WeeChat nur UTF-8-Daten lesen und schreiben.
      </para>
      
      <para>
        Das Zeichensatz-Plugin sollte beim Start von WeeChat automatisch geladen
        werden.
        Um sicherzustellen, dass das Plugin geladen wurde, versuchen Sie:
        "<literal>/charset</literal>".
        Wenn der Befehl nicht gefunden wird, laden Sie das Plugin manuell mit
        dem Befehl: <screen>/plugin load charset</screen>
        Wenn das Plugin nicht gefunden wird, kompilieren Sie WeeChat erneut
        mit Plugin- und Zeichensatz-Support
      </para>
      
      <para>
        Wenn das Zeichensatz-Plugin startet, zeigt es den Terminalzeichensatz
        und den internen Zeichensatz an. Der Terminalzeichensatz h�ngt von
        den LOCALE-Einstellungen ab, der interne ist UTF-8.
        Zum Beispiel:
<screen>
-P- Charset plugin starting, terminal charset: ISO-8859-15 (WeeChat internal: UTF-8)
</screen>
      </para>
            
      <section id="secCharsetSettings">
        <title>Einstellungen</title>
        
        <itemizedlist>
          <listitem>
            <para>
              Um den globalen Zeichensatz zum Kodieren und Dekodieren
              festzulegen, benutzen Sie den "<literal>/setp</literal>" Befehl.
              Zum Beispiel:
<screen>
/setp charset.global.decode = ISO-8859-15
/setp charset.global.encode = ISO-8859-15
</screen>
              Wenn der Zeichensatz zum Dekodieren nicht gesetzt ist (z.B. beim
              ersten Start des Plugins), wird es automatisch auf den
              Terminalzeichensatz eingestellt (wenn es nicht UTF-8 ist) oder
              als Voreinstellung auf "<literal>ISO-8859-1</literal>" gesetzt.
              Der voreingestellte Enkodierungszeichensatz ist leer, so dass in
              der Voreinstellung mit dem internen Zeichensatz (UTF-8) enkodiert
              wird.
            </para>
          </listitem>
          <listitem>
            <para>
              Um den Serverzeichensatz festzulegen, benutzen Sie den
              "<literal>/charset</literal>"-Befehl im Server-Puffer.
              Wenn Sie nur einen Zeichensatz vorgeben, wird dieser automatisch
              zum Enkodieren und Dekodieren verwendet.
              Zum Beispiel:
              <screen>/charset ISO-8859-15</screen>
              Das ist gleichbedeutend mit:
<screen>
/charset decode ISO-8859-15
/charset encode ISO-8859-15
</screen>
            </para>
          </listitem>
          <listitem>
            <para>
              Um den zeichensatz im Channel (oder einem privatem Chat)
              festzulegen, m�ssen Sie den gleichen Befehl wie f�r den Server
              benutzen, jedoch in dem Channel-Puffer (oder Query-Puffer) 
            </para>
          </listitem>
        </itemizedlist>
                
      </section>
      
      <section id="secCharsetFAQ">
        <title>FAQ</title>
        
        <para>
          Wenn Sie Probleme mit den Zeichen oder dem Zeichensatz-Plugin haben:
          <itemizedlist>
            <listitem>
              <para>
                �berpr�fen Sie, ob weechat-curses zu libcursesw gelinkt ist
                (Achtung: Wird bei den meisten, jedoch nicht bei allen
                Distributionen ben�tigt):
                <screen>ldd /pfad/zu/weechat-curses</screen>
              </para>
            </listitem>
            <listitem>
              <para>
                �berpr�fen Sie die Zeichensatz-Zeile im Server-Puffer, dort
                sollten ISO-XXXXXX oder UTF-8 f�r den Terminal-Zeichensatz
                stehen. Wenn Sie dort ANSI_X3.4-1968 oder andere Werte sehen,
                sind Ihre LOCALES eventuell falsch eingestellt.
              </para>
            </listitem>
            <listitem>
              <para>
                Setze die globalen Dekodier-Einstellungen, z.B.:
                <screen>/setp charset.global.decode = ISO-8859-15</screen>
              </para>
            </listitem>
          </itemizedlist>
        </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 id="secScriptPerl">
          <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 id="secScriptPython">
          <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 id="secScriptRuby">
          <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 id="secScriptLua">
          <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 id="secScript_register">
          <title>register</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::register(name, version, end_function, description,
              [charset]);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.register(name, version, end_function, description,
              [charset])
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.register(name, version, end_function, description,
              [charset])
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.register(name, version, end_function, description,
              [charset])
            </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>
              <listitem>
                <para>
                  <option>charset</option>: Zeichensatz, der von dem Script
                  benutzt wird, sollten Sie setzen, wenn das Script nicht in
                  UTF-8 geschrieben ist
                </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!", "ISO-8859-1");

# python
weechat.register("test", "1.0", "end_test", "Test script!", "ISO-8859-1")

# ruby
Weechat.register("test", "1.0", "end_test", "Test script!", "ISO-8859-1")

-- lua
weechat.register("test", "1.0", "end_test", "Test script!", "ISO-8859-1")
</screen>
          </para>
        </section>
        
        <section id="secScript_set_charset">
          <title>set_charset</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::set_charset(charset);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.set_charset(charset)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.set_charset(charset)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.set_charset(charset)
            </command>
          </para>
          <para>
            Legt einen neuen Script-Zeichensatz fest.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>charset</option>: neuer Script-Zeichensatz
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1, wenn der Zeichensatz erfolgreich gesetzt wurd, 0,
            wenn ein Fehler aufgetreten ist
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::set_charset("ISO-8859-1");

# python
weechat.set_charset("ISO-8859-1")

# ruby
Weechat.set_charset("ISO-8859-1")

-- lua
weechat.set_charset("ISO-8859-1")
</screen>
          </para>
        </section>
        
        <section id="secScript_print">
          <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>
            <!-- TRANSLATION NEEDED -->
            To display colored text, see <xref linkend="secAPI_print" />.
          </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");
weechat::print("test: \x0305 rot \x0F normal");

# 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>
        
        <!-- TRANSLATION NEEDED -->
        <section id="secScript_print_server">
          <title>print_server</title>
          
          <para>
            Perl prototype:
            <command>
              weechat::print_server(message)
            </command>
          </para>
          <para>
            Python prototype:
            <command>
              weechat.print_server(message)
            </command>
          </para>
          <para>
            Ruby prototype:
            <command>
              Weechat.print_server(message)
            </command>
          </para>
          <para>
            Lua prototype:
            <command>
              weechat.print_server(message)
            </command>
          </para>
          <para>
            Display a message on server buffer.
          </para>
          <para>
            Arguments:
            <itemizedlist>
              <listitem>
                <para>
                  <option>message</option>: message
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            To display colored text, see <xref linkend="secAPI_print" />.
          </para>
          <para>
            Return value: 1 if success, 0 if an error occurred.
          </para>
          <para>
            Examples:
<screen>
# perl
weechat::print_server("message");
weechat::print_server("test: \x0305 rot \x0F normal");

# python
weechat.print_server("message")

# ruby
Weechat.print_server("message")

-- lua
weechat.print_server("message")
</screen>
          </para>
        </section>
                
        <section id="secScript_print_infobar">
          <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 id="secScript_remove_infobar">
          <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 id="secScript_log">
          <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 id="secScript_add_message_handler">
          <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>
              <listitem>
                <para>
                  <literal>PLUGIN_RC_OK_WITH_HIGHLIGHT</literal>: Funktion
                  erfolgreich vervollst�ndigt und eine Hervorhebung bei den
                  empfangenen Nachrichten eingebaut
                </para>
              </listitem>
            </itemizedlist>
          </para>
        </section>
        
        <section id="secScript_add_command_handler">
          <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 
                  "<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.
                  (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 id="secScript_add_timer_handler">
          <title>add_timer_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_timer_handler(interval, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_timer_handler(interval, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_timer_handler(interval, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_timer_handler(interval, 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 id="secScript_add_keyboard_handler">
          <title>add_keyboard_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_keyboard_handler(function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_keyboard_handler(function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_keyboard_handler(function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_keyboard_handler(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(key, 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(key, 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 id="secScript_add_event_handler">
          <title>add_event_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_event_handler(event, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_event_handler(event, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_event_handler(event, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_event_handler(event, function)
            </command>
          </para>
          <para>
            F�gt einen Ereignis-Handler hinzu, der beim Auftreten eines
            Ereignisses aufgerufen wird.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>event</option> : Ereignis
                  (see <xref linkend="secAPI_event_handler_add" />)
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: aufgerufene Funktion
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewerte: 1 bei Erfolg, 0 bei aufgetretenen Fehlern
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::add_event_handler("buffer_open", "my_event");
sub my_event
{
    weechat::print("buffer open");
    return weechat::PLUGIN_RC_OK;
}

# python
weechat.add_event_handler("buffer_open", "my_event")
def my_event():
    weechat.prnt("buffer open")
    return weechat.PLUGIN_RC_OK

# ruby
Weechat.add_event_handler("buffer_open", "my_event")
def my_event()
    Weechat.print("buffer open")
    return Weechat::PLUGIN_RC_OK
end

-- lua
weechat.add_event_handler("buffer_open", "my_event")
function my_event()
    weechat.print("buffer open")
    return weechat.PLUGIN_RC_OK()
end
</screen>
          </para>
          <para>
            Bemerkung: aufgerufene Funktion 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 erfolgreich beendet
                </para>
              </listitem>
            </itemizedlist>
          </para>
        </section>
        
        <section id="secScript_remove_handler">
          <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 id="secScript_remove_timer_handler">
          <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 id="secScript_remove_keyboard_handler">
          <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�ckgabewerte: 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 id="secScrip_remove_event_handler">
          <title>remove_event_handler</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::remove_event_handler(function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.remove_event_handler(function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.remove_event_handler(function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.remove_event_handler(function)
            </command>
          </para>
          <para>
            Entfernt einen Ereignis-Handler.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>function</option>: Funktion
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewerte: 1 bei Erfolg, 0 wenn ein Fehler aufgetreten ist.
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::remove_event_handler("my_event");

# python
weechat.remove_event_handler("my_event")

# ruby
Weechat.remove_event_handler("my_event")

-- lua
weechat.remove_event_handler("my_event")
</screen>
          </para>
        </section>
        
        <section id="secScript_add_modifier">
          <title>add_modifier</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::add_modifier(type, message, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.add_modifier(type, message, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.add_modifier(type, message, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.add_modifier(type, message, function)
            </command>
          </para>
          <para>
            F�gt einen Nachrichtenmodifikator hinzu.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>type</option>: Modifikatorart:
                  <informaltable colsep="0" frame="none">
                    <tgroup cols="2">
                      <thead>
                        <row>
                          <entry>Art</entry>
                          <entry>Beschreibung</entry>
                        </row>
                      </thead>
                      <tbody>
                        <row>
                          <entry><literal>irc_in</literal></entry>
                          <entry>wird bei eingehenden IRC-Nachrichten aufgerufen</entry>
                        </row>
                        <row>
                          <entry><literal>irc_user</literal></entry>
                          <entry>
                            wird bei jeder Benutzernachricht (oder Befehl)
                            aufgerufen (bevor WeeChat die Nachricht parst)
                          </entry>
                        </row>
                        <row>
                          <entry><literal>irc_out</literal></entry>
                          <entry>
                            wird unmittelbar vor dem Abschicken einer ausgehenden
                            Nachricht an den IRC-Server aufgerufen (auch bei
                            Nachrichten, die WeeChat automatisch an den Server
                            sendet)
                          </entry>
                        </row>
                      </tbody>
                    </tgroup>
                  </informaltable>
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>:Name der IRC-Nachricht (wird nur bei
                  den Arten "irc_in" and "irc_out" benutzt) Um eine Liste der
                  IRC-Nachrichten zu erhalten, lies bitte folgende Dokumente:
                  <acronym>RFC</acronym>s
                  <ulink url="http://www.ietf.org/rfc/rfc1459.txt">1459</ulink>
                  and
                  <ulink url="http://www.ietf.org/rfc/rfc2812.txt">2812</ulink>.
                  Au�erdem gibt es den Wert "*", der alle Nachrichten
                  anspricht (ohne Filter).
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: aufgerufene Funktion
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 bei einem aufgetretenem Fehler
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::add_modifier("irc_in", "privmsg", "mod_in");
weechat::add_modifier("irc_out", "privmsg", "mod_out");
sub mod_in
{
    return "$_[1] [modifier IN]";
}
sub mod_out
{
    return "$_[1] [modifier OUT]";
}

# python
weechat.add_modifier("irc_in", "privmsg", "mod_in")
weechat.add_modifier("irc_out", "privmsg", "mod_out")
def mod_in(server, args):
    return args + " [modifier IN]"
def mod_out(server, args):
    return args + " [modifier OUT]"

# ruby
Weechat.add_modifier("irc_in", "privmsg", "mod_in")
Weechat.add_modifier("irc_out", "privmsg", "mod_out")
def mod_in(server, args)
    return args + " [modifier IN]"
end
def mod_out(server, args)
    return args + " [modifier OUT]"
end

-- lua
weechat.add_modifier("irc_in", "privmsg", "mod_in")
weechat.add_modifier("irc_out", "privmsg", "mod_out")
function mod_in(server, args)
    return args .. " [modifier IN]"
end
function mod_out(server, args)
    return args .. " [modifier OUT]"
end
</screen>
          </para>
        </section>
        
        <section id="secScript_remove_modifier">
          <title>remove_modifier</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::remove_modifier(type, message, function);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.remove_modifier(type, message, function)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.remove_modifier(type, message, function)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.remove_modifier(type, message, function)
            </command>
          </para>
          <para>
            Entfernt einen Nachrichtenmodifikator.
          </para>
          <para>
            Argumente:
            <itemizedlist>
              <listitem>
                <para>
                  <option>type</option>: Modifikatorart
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>message</option>: Nachrichtenart, die der Modifikator
                  verwaltet
                </para>
              </listitem>
              <listitem>
                <para>
                  <option>function</option>: Funktion
                </para>
              </listitem>
            </itemizedlist>
          </para>
          <para>
            R�ckgabewert: 1 bei Erfolg, 0 bei einem aufgetretenem Fehler
          </para>
          <para>
            Beispiele:
<screen>
# perl
weechat::remove_modifier("irc_in", "privmsg", "mod_in");

# python
weechat.remove_modifier("irc_in", "privmsg", "mod_in")

# ruby
Weechat.remove_modifier("irc_in", "privmsg", "mod_in")

-- lua
weechat.remove_modifier("irc_in", "privmsg", "mod_in")
</screen>
          </para>
        </section>
        
        <section id="secScript_command">
          <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 id="secScript_get_info">
          <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 id="secScript_get_dcc_info">
          <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 id="secScript_get_server_info">
          <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 id="secScript_get_channel_info">
          <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 id="secScript_get_nick_info">
          <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 id="secScript_get_config">
          <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 id="secScript_set_config">
          <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 id="secScript_get_plugin_config">
          <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 id="secScript_set_plugin_config">
          <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 id="secScript_get_irc_color">
          <title>get_irc_color</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_irc_color(color);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_irc_color(color)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_irc_color(color)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_irc_color(color)
            </command>
          </para>
          <para>
            Hole IRC-Farbindex mit dem Farbnamen.
          </para>
          <para>
            R�ckgabewert: IRC-Farbindex, -1 wenn die Farbe nicht gefunden wurde
            (siehe <xref linkend="secAPI_get_irc_color" />).
          </para>
          <para>
            Beispiele:
<screen>
# perl
my $color_blue = weechat::get_irc_color("blue");

# python
color_blue = weechat.get_irc_color("blue")

# ruby
color_blue = Weechat.get_irc_color("blue")

-- lua
color_blue = weechat.get_irc_color("blue")
</screen>
          </para>
        </section>
        
        <section id="secScript_input_color">
          <title>input_color</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::input_color(color);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.input_color(color)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.input_color(color)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.input_color(color)
            </command>
          </para>
          <para>
            Erzeugt einen Farbcode im Eingabepuffer.Add color in input buffer.
          </para>
          <para>
            R�ckgabewert: keiner.
          </para>
          <para>
            Bespiele:
<screen>
# perl
weechat::input_color(weechat::get_irc_color("blue"), 10, 5);

# python
weechat.input_color(weechat.get_irc_color("blue"), 10, 5)

# ruby
Weechat.input_color(Weechat.get_irc_color("blue"), 10, 5)

-- lua
weechat.input_color(weechat.get_irc_color("blue"), 10, 5)
</screen>
          </para>
        </section>
        
        <section id="secScript_get_window_info">
          <title>get_window_info</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_window_info();
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_window_info()
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_window_info()
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_window_info()
            </command>
          </para>
          <para>
            Gibt die Liste der WeeChat-Fenster zur�ck.
          </para>
          <para>
            R�ckgabewert: List der WeeChat-Fenster
            (see <xref linkend="secAPI_get_window_info" />).
          </para>
          <para>
            Besipiele:
<screen>
# perl
my @wf = weechat::get_window_info();
if (@wf)
{
    weechat::print("**** Fenster-Informationen ****");
    foreach my $w (@wf)
    {
        while ( my ($key, $value) = each %$w)
        {
            weechat::print(" > $key => $value");
        }
        weechat::print("----------------------");
    }
}
else
{
    weechat::print("**** Keine Fenster-Informationen ****");
}

# python
wf = weechat.get_window_info()
if wf != None and wf != []:
    weechat.prnt ("**** Fenster-Informationen ****")
    for w in wf:
        for i in w:
            weechat.prnt (" > %s => %s" % (i, w[i]))
        weechat.prnt ("----------------------")
else:
    weechat.prnt ("**** Keine Fenster-Informationen ****")

# ruby
wf = Weechat.get_window_info()
if wf != nil and wf != []   
    Weechat.print("**** Fenster-Informationen ****")
    wf.each do |w|
        w.each do |key, value|
            Weechat.print(" > #{key} => #{value}")
        end
        Weechat.print("----------------------")
    end
else
    Weechat.print("**** Keine Fenster-Informationen ****")
end

-- lua
wf = weechat.get_window_info()
if wf then
    weechat.print ("**** Fenster-Informationen ****")
    w, winfos = next (wf, nil)
    while (w) do
        key, value = next (winfos, nil)
        while (key) do
            weechat.print(" > " .. key .. " => " .. value)
            key, value = next (winfos, key)
        end
        weechat.print ("----------------------")
        w, winfos = next (wf, w)
    end
else
    weechat.print("**** Keine Fenster-Informationen ****")
end
</screen>
          </para>
        </section>
        
        <section id="secScript_get_buffer_info">
          <title>get_buffer_info</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_buffer_info();
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_buffer_info()
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_buffer_info()
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_buffer_info()
            </command>
          </para>
          <para>
            Gibt eine Liste der WeeChat-Puffer.
          </para>
          <para>
            R�ckgabewert: Liste der WeeChat-Puffer
            (siehe <xref linkend="secAPI_get_buffer_info" />).
          </para>
          <para>
            Beispiele:
<screen>
# perl
my $bf = weechat::get_buffer_info();
if ($bf)
{
    while ( my ($nobuf, $binfos) = each %$bf)
    {
        while ( my ($key, $value) = each %$binfos)
        {
            weechat::print(" > $key => $value");
        }
        weechat::print("----------------------");
    }
}
else
{
    weechat::print("**** keine Pufferinformationen ****");
}

# python
bf = weechat.get_buffer_info()
if bf != None and bf != {}:
    for b in bf:
        weechat.prnt ("**** Informationen f�r Puffer Nr. %d ****" % b)
        for c in bf[b]:
            weechat.prnt (" > %s => %s" % (c, bf[b][c]))
        weechat.prnt ("----------------------")
else:
    weechat.prnt ("**** keine Pufferinformationen ****")

# ruby
bf = Weechat.get_buffer_info()
if bf != nil and bf != {}
    bf.each do |n, c|
        Weechat.print("**** Informationen f�r Puffer Nr. #{n} ****")
        c.each do |key, value|
            Weechat.print(" > #{key} => #{value}")
        end
        Weechat.print("----------------------")
    end
else
    Weechat.print("**** keine Pufferinformationen ****")
end

-- lua
bf = weechat.get_buffer_info()
if bf then
    b, binfos = next (bf, nil)
    while (b) do
        weechat.print("**** Informationen f�r Puffer Nr. " .. b .. " ****")
        key, value = next (binfos, nil)
        while (key) do
            weechat.print(" > " .. key .. " => " .. value)
            key, value = next (binfos, key)
        end
        weechat.print ("----------------------")
        b, infos = next (bf, b)
    end
else
    weechat.print("**** keine Pufferinformationen ****")
end
</screen>
          </para>
        </section>
        
        <section id="secScript_get_buffer_data">
          <title>get_buffer_data</title>
          
          <para>
            Perl-Prototyp:
            <command>
              weechat::get_buffer_data(server, channel);
            </command>
          </para>
          <para>
            Python-Prototyp:
            <command>
              weechat.get_buffer_data(server, channel)
            </command>
          </para>
          <para>
            Ruby-Prototyp:
            <command>
              Weechat.get_buffer_data(server, channel)
            </command>
          </para>
          <para>
            Lua-Prototyp:
            <command>
              weechat.get_buffer_data(server, channel)
            </command>
          </para>
          <para>
            Gibt den Inhalt eines Puffers zur�ck.
          </para>
          <para>
            R�ckgabewert: Liste der Pufferzeilen
            (see <xref linkend="secAPI_get_buffer_data" />).
          </para>
          <para>
            Beispiele:
<screen>
# perl
my $server = weechat::get_info("server");
my $channel = weechat::get_info("channel");
my @bc = weechat::get_buffer_data($server, $channel);
if (@bc)
{
    weechat::print("**** Pufferdaten f�r '$channel'\@'$server' ****");
    foreach my $l (@bc) {
        while ( my ($key, $value) = each %$l) {
            weechat::print(" > $key => $value");
        }
        weechat::print("----------------------");
    }
}
else
{
    weechat::print("**** keine Pufferdaten ****");
}

# python
server = weechat.get_info("server")
channel = weechat.get_info("channel")
bc = weechat.get_buffer_data(server, channel)
if bc != None and bc != []:
    weechat.prnt ("**** Pufferdaten f�r '%s'@'%s' ****" % (channel, server))
    for l in bc:
        for i in l:
            weechat.prnt (" > %s => %s" % (i, l[i]))
        weechat.prnt ("----------------------")
else:
    weechat.prnt ("**** keine Pufferdaten ****")

# ruby
server = Weechat.get_info("server")
channel = Weechat.get_info("channel")
bc = Weechat.get_buffer_data(server, channel)
if bc != nil and bc != []   
    Weechat.print("**** Pufferdaten f�r '#{channel}'@'#{server}' ****")
    bc.each do |l|
        l.each do |key, value|
            Weechat.print(" > #{key} => #{value}")
        end
        Weechat.print("----------------------")
    end
else
    Weechat.print("**** keine Pufferdaten ****")
end

-- lua
server = weechat.get_info("server")
channel = weechat.get_info("channel")
bc = weechat.get_buffer_data(server, channel)
if bc then
    b, bdatas = next (bc, nil)
    weechat.print("**** Pufferdaten f�r '" .. channel .. "'@'" .. server .. "' ****")
    while (b) do 
        key, value = next (bdatas, nil)
        while (key) do
            weechat.print(" > " .. key .. " => " .. value)
            key, value = next (bdatas, key)
        end
        weechat.print ("----------------------")
        b, bdatas = next (bc, b)
    end
else
    weechat.print("**** keine Pufferdaten ****")
end
</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 (Emmanuel Bouthenot)</emphasis>
              <email>kolter AT openics.org</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> -
              Deutsche �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>