API Funktionenset_charset
Prototyp:
void set_charset (t_weechat_plugin *plugin, char *charset)
Legt neuen Zeichensatz für ein Plugin fest.
Argumente:
: Zeiger auf Plugin-Struktur
: neuer Zeichensatz, der benutzt
werden soll
Beispiel:
plugin->set_charset (plugin, "ISO-8859-1");iconv_to_internal
Prototyp:
void iconv_to_internal (t_weechat_plugin *plugin, char *charset,
char *string)
Konvertiert eine Zeichenkette in das interne Format von WeeChat
(UTF-8).
Argumente:
: Zeiger auf Plugin-Struktur
: ursprünglicher Zeichensatz, von
dem konvertiert werden soll
: zu konvertierende Zeichenkette
Rückgabewert: konvertierte Zeichenkette
Anmerkung: der Speicher, der durch das Ergebnis belegt wird, muss
mit free() wieder freigegeben werden.
Beispiel:
char *str = plugin->iconv_to_internal (plugin, "ISO-8859-1", "iso string: é à");iconv_from_internal
Prototyp:
void iconv_from_internal (t_weechat_plugin *plugin, char *charset,
char *string)
Konvertiert eine Zeichenkette von dem internen WeeChat-Zeichensatz
(UTF-8) in einen anderen.
Argumente:
: Zeiger auf Plugin-Struktur
: Ziel-Zeichensatz
: zu konvertierende Zeichenkette
Rückgabewert: konvertierte Zeichenkette
Anmerkung: der Speicher, der durch das Ergebnis belegt wird, muss
mit free() wieder freigegeben werden.
Beispiel:
char *str = plugin->iconv_from_internal (plugin, "ISO-8859-1", "utf-8 string: é à");ascii_strcasecmp
Prototyp:
int ascii_strcasecmp (t_weechat_plugin *plugin,
char *string1, char *string2)
Vergleich von Zeichenketten unabhängig von Sprache und
Schreibweise (gross/klein).
Argumente:
: Zeiger auf Plugin-Struktur
: erste Zeichenkette des Vergleichs
: zweite Zeichenkette des Vergleichs
Rückgabewert: Unterschied zwischen den zwei Zeichenketten: kleiner
Null wenn
string1 < string2, Null wenn string1 == string2, grösser Null
wenn string1 > string2
Beispiel:
if (plugin->ascii_strcasecmp (plugin, "abc", "def") != 0) ...ascii_strncasecmp
Prototyp:
int ascii_strncasecmp (t_weechat_plugin *plugin,
char *string1, char *string2, int max)
Vergleich von Zeichenketten unabhängig von Sprache und Schreibweise
(gross/klein) für höchstens "max" Zeichen.
Argumente:
: Zeiger auf Plugin-Struktur
: erste Zeichenkette des Vergleichs
: zweite Zeichenkette des Vergleichs
: maximale Zahl an Zeichen für den
Vergleich
Rückgabewert: Unterschied zwischen den zwei Zeichenketten: kleiner
Null wenn string1 < string2, Null wenn string1 == string2,
grösser Null wenn string1 > string2
Beispiel:
if (plugin->ascii_strncasecmp (plugin, "abc", "def", 2) != 0) ...explode_string
Prototyp:
char **explode_string (t_weechat_plugin *plugin, char *string,
char *separators, int num_items_max, int *num_items)
Zerlege eine Zeichenkette entsprechend eines oder mehrerer
Trennzeichen(s).
Argumente:
: Zeiger auf eine Plugin-Struktur
: zu zerlegende Zeichenkette
: zu verwendende(s) Trennzeichen
: maximale Anzahl an zu
erzeugenden Teilen (0 = keine Grenze)
: Zeiger auf eine int-Variable,
die die Anzahl der erzeugten
Teile enthält
Rückgabewert: ein Array von Zeichenketten, NULL bei Fehlern.
Hinweis: Das zurückgegebene Array muss nach der Benutzung mittels
"free_exloded_string" explizit freigegeben werden.
Beispiel:
char **argv;
int argc;
argv = plugin->explode_string (plugin, string, " ", 0, &argc);
...
if (argv != NULL)
plugin->free_exploded_string (plugin, argv);
free_exploded_string
Prototyp:
char **free_exploded_string (t_weechat_plugin *plugin,
char **string)
Gib ein Array frei, dass infolge der Zerlegung eines Strings
reserviert wurde.
Argumente:
: Zeiger auf eine Plugin-Struktur
: ein Array von Strings
Rückgabewert: keiner (?).
Beispiel:
char *argv;
int argc;
argv = plugin->explode_string (plugin, string, " ", 0, &argc);
...
if (argv != NULL)
plugin->free_exploded_string (plugin, argv);
mkdir_home
Prototyp:
int mkdir_home (t_weechat_plugin *plugin, char *directory)
Erzeugt ein Verzeichnis im WeeChat-Verzeichnis.
Argumente:
: Zeiger auf Pluginstrukur
: Verzeichnis, das erzeugt werden
soll
Rückgabewert: 1 wenn das Verzeichnis erfolgreich erstellt wurde, 0
wenn ein Fehler aufgetreten ist.
Beispiel:
if (!plugin->mkdir_home (plugin, "temp"))
plugin->print_server(plugin, "Konnte 'temp'-Verzeichnis im WeeChat-Verzeichnis nicht erstellen.");
exec_on_files
Prototyp:
void exec_on_files (t_weechat_plugin *plugin, char *repertoire,
int (*callback)(t_weechat_plugin *, char *))
Führe eine Funktion auf allen Dateien eines Verzeichnisses aus.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Verzeichnis der zu verwendenden
Dateien
: die anzuwendende Funktion
Rückgabewert: keiner.
Beispiel:
int callback (t_weechat_plugin *plugin, char *file)
{
plugin->print_server (plugin, "file: %s", file);
return 1;
}
...
plugin->exec_on_files (plugin, "/tmp", &callback);
print
Prototyp:
void print (t_weechat_plugin *plugin,
char *server, char *channel, char *message, ...)
Sende eine Nachricht an einen WeeChat-Puffer, bezeichnet durch
server und channel (beide können NULL sein, dann wird der aktuelle
Puffer verwendet).
Argumente:
: Zeiger auf Plugin-Struktur
: interner Name des Servers, zu
welchem der Puffer gehört, in dem die Nachricht angezeigt
werden soll (kann NULL sein)
: Name des Channels, in dem die
Nachricht angezeigt werden soll (kann NULL sein)
: Nachricht
To display colored text, there are following codes:
CodeDescription0x02
bold text
0x03 + "xx"
text color "xx"
(see for colors)
0x03 + "xx,yy"
text color "xx"
and background "yy"
(see for colors)
0x0F
disable color and attributes
0x12
reverse video (revert text color with background)
0x1F
underlined text
Note: the same code (without number for 0x03) may be used to stop
the attribute.
Rückgabewert: keiner.
Beispiele:
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"));
print_server
Prototyp:
void print_server (t_weechat_plugin *plugin,
char *message, ...)
Zeige eine Nachricht im aktuellen Server-Puffer.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Nachricht
To display colored text, see .
Rückgabewert: keiner.
Beispiel: plugin->print_server (plugin, "hello");print_infobar
Prototyp:
void print_infobar (t_weechat_plugin *plugin,
int time, char *message, ...)
Zeige eine Nachricht in der Infobar für eine bestimmte Zeit
Argumente:
: Zeiger auf eine Plugin-Struktur
: Zeitspanne für die Anzeige (in
Sekunden, 0 = ständige Anzeige)
Rückgabewert: keiner.
Beispiel:
plugin->print_infobar (plugin, 5, "hello");
infobar_remove
Prototyp:
void infobar_remove (t_weechat_plugin *plugin, int count)
Entferne eine oder mehr Nachrichten aus der Infobar.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Anzahl der Nachrichten (wenn das
Argument kleiner als Null ist, werden alle Nachrichten
entfernt)
Rückgabewert: keiner.
Beispiel: plugin->infobar_remove (1);log
Prototyp:
void log (t_weechat_plugin *plugin,
char *server, char *channel, char *message, ...)
Schreibe eine Nachricht in die Log-Datei (für den entsprechenden
Server/Channel).
Argumente:
: Zeiger auf eine Plugin-Struktur
: interner Name des Servers, zu
welchem der Log-Puffer gehört (kann NULL sein)
: Name des Channels, zu welchem der
Log-Puffer gehört (kann NULL sein)
: Nachricht
Rückgabewert: keiner.
Beispiel:
plugin->log (plugin, "freenode", "#weechat", "test");
msg_handler_add
Prototyp:
t_plugin_handler *msg_handler_add (t_weechat_plugin
*plugin, char *message, t_plugin_handler_func *function,
char *handler_args, void *handler_pointer)
Erzeuge einen IRC-Message-Handler, der aufgerufen wird, wenn
eine Nachricht empfangen wird.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Name (Typ) der IRC-Nachricht ("*"
für alle Nachrichten).
Eine Liste der bekannten IRC-Nachrichten ist in den
RFCs
1459
und
2812
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:
NameBeschreibungweechat_pvprivate Nachricht empfangenweechat_highlight
hervorgehobene Nachricht (in einem Channel oder privatem Chat)
weechat_ctcp
CTCP-Nachricht empfangen (VERSION, PING, ...)
weechat_dcc
DCC-Nachricht empfangen (Chat oder Datei)
: Funktion, die aufgerufen wird,
wenn eine Nachricht empfangen wurde
Sie verwendet den folgenden Prototyp:
int my_function (t_weechat_plugin *plugin,
int argc, char **argv,
char *handler_args, void *handler_pointer)
Argument argc ist auf 3 gesetzt, die folgenden Werte sind
im argv-Array:
argv[0] = Server Nameargv[1] = IRC Nachrichtargv[2] = Kommando Argumente
: Argumente, die beim Aufruf
an die Funktion übergeben werden
: pointer given to function
when called
: Zeiger, der an die Funktion
übergeben wird
Rückgabewert: Zeiger auf den neuen Handler
Hinweis: die Funktion, die aufgerufen wird wenn eine Nachricht
empfangen wurde, muss einen der folgenden Werte zurückgeben:
PLUGIN_RC_KO: Funktion ist fehlgschlagen
PLUGIN_RC_OK: Funktion war erfolgreich
PLUGIN_RC_OK_IGNORE_WEECHAT: Die Nachricht
wird nicht an WeeChat übergeben
PLUGIN_RC_OK_IGNORE_PLUGINS: Die Nachricht
wird nicht an andere Plugins weitergegeben
PLUGIN_RC_OK_IGNORE_ALL: Die Nachricht
wird weder an WeeChat noch an andere
Plugins weitergegeben
PLUGIN_RC_OK_WITH_HIGHLIGHT: Funktion
erfolgreich vervollständigt und eine Hervorhebung bei den
empfangenen Nachrichten eingebaut
Beispiel:
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",
&msg_kick, NULL, NULL);
cmd_handler_add
Prototyp:
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)
Erzeugt einen Handler für ein WeeChat-Kommando, der aufgerufen
wird, wenn der Anwender das Kommando ausführt (Beispiel: /command).
Argumente:
: Zeiger auf eine Plugin-Struktur
: 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)
: kurze Beschreibung des
Kommandos (angezeigt beim Ausführen von /help command)
: kurze Beschreibung der Argumente
des Kommandos (angezeigt beim Ausführen von /help command)
: lange Beschreibung
der Argumente des Kommandos (angezeigt beim Ausführen von
/help command)
: Vorlage für die
Vervollständigung; zum Beispiel bedeutet
"abc|%w def|%i", 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.
Die folgenden Ersetzungen können verwendet werden:
CodeBeschreibung%-keine Vervollständigung für das Argument%*
repeat last completion for all following arguments
(this code has to be at the end of completion
template, preceded by "|")
%aAlias%A
Aliase und Kommandos (WeeChat, IRC und Plugins)
%cgegenwärtiger Channel%Calle channels (inklusive Queries)%fDateiname%hPlugin Kommandos%iIRC Kommandos (senden)%IIRC Kommandos (empfangen)%kGrundfunktionen%mNicknamen des gegenwärtigen Servers%M
Nicks auf dem gegenwärtigen Server (in allen
offenen Channeln)
%nNicknamen des gegenwärtigen Channels%N
Nicknamen und Hostnamen des gegenwärtigen
Channels
%oKonfigurationseinstellungen%OPlugin Optionen%pStandard "part" Nachricht%qStandard "quit" Nachricht%sName des gegenwärtigen Servers%SNamen aller definierten Server%tTopic des gegenwärtigen Channels%vWert einer Konfigurationseinstellung%VWert einer Plugin-Option%wWeeChat Kommandos
: Funktion, die aufgerufen wird,
wenn das Kommando ausgeführt wird
Sie verwendet den folgenden Prototypen:
int my_function (t_weechat_plugin *plugin,
int argc, char **argv,
char *handler_args, void *handler_pointer)
Das Argument argc ist auf 3 gesetzt, das Array argv enthält
die folgenden Werte:
argv[0] = Server Nameargv[1] = Kommandoargv[2] = Kommando-Argumente
: Argumente, die an die Funktion
übergeben werden
: Zeiger, der an die Funktion
übergeben wird
Rückgabewert: Zeiger auf den neuen Kommando-Handler.
Hinweis: die Funktion, die aufgerufen wird, wenn das Kommando
ausgeführt wird, muss einen der folgende Werte zurückgeben:
PLUGIN_RC_KO: Funktion ist fehlgeschlagen
PLUGIN_RC_OK: Funktion war erfolgreich
Beispiel:
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", &cmd_test, NULL, NULL);
timer_handler_add
Prototyp:
t_plugin_handler *timer_handler_add (t_weechat_plugin
*plugin, int interval, t_plugin_handler_func *function,
char *handler_args, void *handler_pointer)
Erzeuge einen zeitgesteuerten Handler, der periodisch
eine Funktion aufruft.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Intervall (in Secunden) zwischen
zwei Aufrufen der Funktion
: Funktion, die aufgerufen wird
Sie verwendet den folgenden Prototypen:
int my_function (t_weechat_plugin *plugin,
int argc, char **argv,
char *handler_args, void *handler_pointer)
Das Argument argc ist auf 0 gesetzt und argv ist auf NULL
gesetzt.
: Argumente der aufgerufenen
Funktion
: Zeiger, der an die Funktion
übergeben wird
Rückgabewert: Zeiger auf den neuen timer-Handler.
Hinweis: die Funktion, die aufgerufen wird, muss einen der folgende
Werte zurückgeben:
PLUGIN_RC_KO: Funktion ist fehlgeschlagen
PLUGIN_RC_OK: Funktion war erfolgreich
Beispiel:
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, &my_timer);
keyboard_handler_add
Prototyp:
t_plugin_handler *keyboard_handler_add (t_weechat_plugin
*plugin, t_plugin_handler_func *function,
char *handler_args, void *handler_pointer)
Erzeugt einen Keyboard-Handler, der nach dem Drücken einer Taste
aufgerufen wird.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Die Funktion, die aufgerufen wird
Sie verwendet den folgenden Prototypen:
int my_function (t_weechat_plugin *plugin,
int argc, char **argv,
char *handler_args, void *handler_pointer)
Das Argument argc ist auf 3 gesetzt, argv enthält die
folgenden Werte:
argv[0] = Taste, die gedrückt wurde
(Name der internen Funktion oder '*' gefolgt von einem
Tastaturcode)
argv[1] = Kommandozeile vor dem Tastendruck
argv[2] = Kommandozeile nach dem Tastendruck
: Argumente, die bei Aufruf der
Funktion übergeben
werden
: Zeiger auf die Funktion,
der bei Aufruf übergeben
wird
Rückgabewert: Zeiger auf den Handler.
Hinweis: Die aufgerufene Funktion muss einen der folgenden Werte
zurückgeben:
PLUGIN_RC_KO: Funktion ist fehlgeschlagen
PLUGIN_RC_OK: Funktion war erfolgreich
Beispiel:
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] && (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, &my_keyb);
event_handler_add
Prototyp:
t_plugin_handler *event_handler_add (t_weechat_plugin
*plugin, char *event, t_plugin_handler_func *function,
char *handler_args, void *handler_pointer)
Fügt einen Ereignishandler hinzu, der aufgerufen wird, wenn ein
Ereignis eintritt.
Argumente:
: Zeiger auf Plugin-Strukture
: Ereignis (siehe folgende Tabelle)
: aufgerufene Funktion
Es wird folgender Prototyp verwendet:
int my_function (t_weechat_plugin *plugin,
int argc, char **argv,
char *handler_args, void *handler_pointer)
Arguments depend on event (see table below).
: Argument, die an die aufgerufene
Funktion übergeben werden
: Pointer, der an die
aufgerufene Funktion übergeben werden
List of events:
EreignisBeschreibungArgumentsbuffer_openein Puffer wurde geöffnet
argc = 1, argv = { buffer number }
buffer_closeein Puffer wurde geschlossen
argc = 1, argv = { buffer number }
buffer_movea buffer was moved
argc = 2, argv = { new buffer number, old number }
Rückgabewert: Pointer auf den neuen Ereignishandler.
Anmerkung: die aufgerufene Function muss einen der folgenden Werte
zurückgeben:
PLUGIN_RC_KO: Funktion fehlgeschlagen
PLUGIN_RC_OK: Funktion erfolgreich beendet
Beispiel:
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",
&my_event);
handler_remove
Prototyp:
void handler_remove (t_weechat_plugin *plugin,
t_plugin_handler *handler)
Entfernt einen Nachrichten- oder Kommando-Handler.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Handler, der entfernt werden soll
Rückgabewert: keiner
Beispiel:
plugin->handler_remove (plugin, my_handler);handler_remove_all
Prototyp:
void handler_remove_all (t_weechat_plugin *plugin)
Entfernt alle Handler eines Plugins.
Argumente:
: Zeiger auf eine Plugin-Struktur
Rückgabewert: keiner
Beispiel:
plugin->handler_remove_all (plugin);modifier_add
Prototyp:
t_plugin_modifier *modifier_add (t_weechat_plugin *plugin,
char *type, char *message, t_plugin_modifier_func *function,
char *modifier_args, void *modifier_pointer)
Füge einen Nachrichtenmodifikator hinzu.
Argumente:
: Zeiger auf Plugin-Struktur
: Modifikatorart:
ArtBeschreibungirc_inwird bei eingehenden IRC-Nachrichten aufgerufenirc_user
wird bei jeder Benutzernachricht (oder Befehl)
aufgerufen (bevor WeeChat die Nachricht parst)
irc_out
wird unmittelbar vor dem Abschicken einer ausgehenden
Nachricht an den IRC-Server aufgerufen (auch bei
Nachrichten, die WeeChat automatisch an den Server
sendet)
: 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:RFCs
1459
and
2812.
Außerdem gibt es den Wert "*", der alle Nachrichten
anspricht (ohne Filter).
: aufgerufene Funktion
Folgender Prototyp wird dafür benutzt:
int my_function (t_weechat_plugin *plugin,
int argc, char **argv,
char *modifier_args, void *modifier_pointer)
Argument argc hat den Wert 2, folgende Werte sind in dem
argv-Array:
argv[0] = Servernameargv[1] = Nachricht
: an die Funktion übergebene
Werte
: an die Funktion
übergebener Zeiger
Rückgabewert: Zeiger auf den neuen Nachrichtenmodifikator
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.
Beispiel:
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",
&adder, NULL, NULL);
modifier_remove
Prototyp:
void modifier_remove (t_weechat_plugin *plugin,
t_plugin_modifier *modifier)
Entfernt einen Nachrichtenmodifikator.
Arguments:
: Zeiger auf Plugin-Struktur
: zu entfernender Modifikator
Rückgabewert: keiner
Beispiel:
plugin->modifier_remove (plugin, my_modifier);modifier_remove_all
Prototyp:
void modifier_remove_all (t_weechat_plugin *plugin)
Entfernt alle Modifikatoren für ein Plugin.
Argumente:
: Zeiger auf Plugin-Struktur
Rückgabewert: keiner
Beispiel:
plugin->modifier_remove_all (plugin);exec_command
Prototyp:
void exec_command (t_weechat_plugin
*plugin, char *server, char *channel, char *command)
Führe ein WeeChat-Kommando aus (oder sende eine Nachricht an
einen Channel).
Argumente:
: Zeiger auf eine Plugin-Struktur
: interner Name des Servers, auf den
das Kommando angewendet werden soll (kann NULL sein)
: Name des Channels, auf den das
Kommando angewendet werden soll (kann NULL sein)
: Kommando
Rückgabewert: keiner
Beispiel:
plugin->exec_command (plugin, NULL, NULL, "/help nick");
plugin->exec_command (plugin, "freenode", "#weechat", "hello");
get_info
Prototyp:
char *get_info (t_weechat_plugin *plugin,
char *info, char *server)
Gib eine Information über WeeChat oder einen Channel zurück.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Name (Typ) der Information:
InfoBeschreibungversionWeeChats VersionnickNicknamechannel
Name des Channels (NULL bei einem Server oder
Privatchat)
serverName des Serverstype
Puffertyp: 0=standard, 1=DCC, 2=raw IRC data
awayStatus des "away"-Flagsinactivity
Anzahl der Sekunden seit der letzten
Tastenbetätigung
input
Inhalt der Kommandozeile im gegenwärtigen Fenster
input_mask
Inhalt der Farbmaske für die Kommandozeile
input_pos
Position des Cursors in der Kommandozeile
weechat_dir
WeeChat-Verzeichnis (Standard: ~/.weechat/)
weechat_libdirWeeChat-Systemverzeichnis (Bibliotheken)weechat_sharedirWeeChat-Systemverzeichnis (gemeinsame Dateien)
: interner Name des Servers um
Informationen zu lesen (wenn benötigt)
Rückgabewert: angeforderte Information oder NULL
Hinweis: das Ergebnis muss nach Nutzung mit "free" wieder
freigegeben werden.
Beispiele:
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);
get_dcc_info
Prototyp:
t_plugin_info_dcc *get_dcc_info (t_weechat_plugin *plugin)
Gib eine Liste der aktiven oder beendeten DCCs zurück.
Argumente:
: Zeiger auf eine Plugin-Struktur
Rückgabewert: verkettete Liste von DCCs.
TypFeldBeschreibungchar *serverIRC Serverchar *channelIRC Channelinttype
DCC Typ:
0 = Chatanfrage empfangen,
1 = Chatanfrage gesendet,
2 = Datei empfangen,
3 = Datei gesendet
int*status
DCC Status:
0 = wartend,
1 = verbindend,
2 = aktiv,
3 = beendet,
4 = fehlgeschlagen,
5 = unterbrochen durch Anwender
time_tstart_timeDatum/Zeit der Erzeugung der DCCtime_tstart_transferDatum/Zeit des Beginns der Übertragung der DCCunsigned longaddrIP-Adresse des PartnersintportPort der DCCchar *nickNickname des Partnerschar *filenameDateinamechar *local_filenamelokaler Dateinameintfilename_suffixSuffix wenn die Datei umbenannt wirdunsigned longsizeDateigrösseunsigned longposPosition in Dateiunsigned longstart_resumeStartposition nach einer Unterbrechungunsigned longbytes_per_sec
Übertragungsrate (Bytes/s) seit Beginn der Übertragung
t_plugin_dcc_info *prev_dcc
Zeiger auf voheriges DCC-Info
t_plugin_dcc_info *next_dcc
Zeiger auf nächstes DCC-Info
Hinweis: Das Ergebnis muss nach der Benutzung mittels
"free_dcc_info" wieder freigegeben werden.
Beispiele:
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);
free_dcc_info
Prototyp:
void free_dcc_info (t_weechat_plugin *plugin,
t_plugin_dcc_info *dcc_info)
Gibt den Speicher einer Liste von DCC-Infos wieder frei.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Zeiger auf eine Liste mit
DCC-Infos, die mit "get_dcc_info" angelegt wurde
Rückgabewert: keiner.
Beispiel:
plugin->free_dcc_info (plugin, dcc_info);get_server_info
Prototyp:
t_plugin_server_info *get_server_info (t_weechat_plugin *plugin)
Gibt die Liste von IRC-Servern zurück (verbunden oder nicht)
Argumente:
: Zeiger auf eine Plugin-Struktur
Rückgabewert: Liste von IRC-Servern.
TypFeldBeschreibungchar *nameinterner Servernameintautoconnect1 wenn Autoconnect gesetzt ist, 0 sonstintautoreconnect
1 wenn autoreconnect gesetzt ist,
0 sonst
intautoreconnect_delayWartezeit vor erneutem Verbindungsversuchintcommand_line
1 wenn der Servername auf der Kommandozeile angegeben
wurde (ist somit temporär) 0 sonst
char *addressServeradresse (Name oder IP)intportPortintipv6IPv6-VerbindungintsslSSL-Verbindungchar *passwordPasswortchar *nick1primärer Nicknamechar *nick2alternativer Nicknamechar *nick3zweiter, alternativer Nicknamechar *usernameUsernamechar *real nametatsächlicher Namechar *command
Kommando, dass bei erfolgreicher Verbindung
ausgeführt wurde
intcommand_delayVerzögerung nach Ausführung des Kommandoschar *autojoinChannels, die automatisch betreten werden sollenintautorejoin
1 wenn Channels wieder betreten werden sollen, nachdem
man gekickt wurde 0 sonst
char *notify_levelsBenachrichtigungs-Level von Channelschar *charset_decode_isoZeichensatz zum Dekodieren von ISOchar *charset_decode_utfZeichensatz zum Dekodieren von UTFchar *charset_encode
Zeichensatz der Channels zum Kodieren von
Nachrichten
intis_connected1 wenn verbunden mit einem Server, 0 otherwiseintssl_connected1 wenn verbunden über SSL, 0 sonstchar *nickgegenwärtiger Nicknameintis_away1 wenn away-flag gesetzt ist, 0 sonsttime_taway_timeZeitspanne seit away-flag gesetzt istintlagLag (in Millisekunden)t_plugin_server_info *prev_serverZeiger auf vorherigen Knoten der Listet_plugin_server_info *next_serverZeiger auf nächsten Knoten der Liste
Hinweis: das Ergebnis muss nach der Benutzung mit
"free_server_info" wieder freigegeben werden.
Beispiel:
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);
}
free_server_info
Prototyp:
void free_server_info (t_weechat_plugin *plugin,
t_plugin_server_info *server_info)
Gib den Speicher einer Liste "server info" frei
Argumente:
: Zeiger auf eine Plugin-Struktur
: Zeiger auf eine Server-Liste,
der von der Funktion "get_server_info" zurückgegeben wurde.
Rückgabewert: keiner.
Beispiel:
plugin->free_server_info (plugin, server_info);get_channel_info
Prototyp:
t_plugin_channel_info *get_channel_info (t_weechat_plugin *plugin,
char *server)
Gib eine Liste der Channels für einen Server zurück.
Argumente:
: Zeiger auf eine Plugin-Struktur
: interner Name des Server
Rückgabewert: verkettete Liste von Channels für einen Server.
TypFeldBeschreibunginttype
0 für einen normalen Channel, 1 für einen Privaten
char *nameName des Channelschar *topicTopic des Channelschar *modesChannelmodus (Flags)intlimitAnzahl der erlaubten Userchar *keySchlüssel des Channelsintnicks_countAnzahl der Nicknamen des Channelst_plugin_channel_info *prev_channelZeiger auf vorherigem Knoten der Listet_plugin_channel_info *next_channelZeiger auf nächsten Knoten der Liste
Hinweis: Das Ergebnis muss nach der Benutzung mit
"free_channel_info" wieder freigegeben werden.
Beispiel:
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);
}
free_channel_info
Prototyp:
void free_channel_info (t_weechat_plugin *plugin,
t_plugin_channel_info *channel_info)
Gibt den Speicher einer Liste "channel info" wieder frei.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Zeiger auf eine Liste
"channel info", der von "get_channel_info" zurückgegeben
wurde
Rückgabewert: keiner.
Beispiel:
plugin->free_channel_info (plugin, channel_info);get_nick_info
Prototyp:
t_plugin_nick_info *get_nick_info (t_weechat_plugin *plugin,
char *server, char *channel)
Gib eine Liste der Nicknamen für einen Channel zurück.
Argumente:
: Zeiger auf eine Plugin-Struktur
: interner Name des Servers
: Name des Channels
Rückgabewert: verkettete Liste von Nicknamen eines Channels.
TypFeldBeschreibungchar *nickNicknamechar *hostHostnameintFlags
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)
t_plugin_nick_info *prev_nickZeiger auf vorherigen Knoten der Listet_plugin_nick_info *next_nickZeiger auf nächsten Knoten der Liste
Hinweis: Das Ergebnis muss nach der Benutzung mit "free_nick_info" wieder freigegeben werden.
Beispiel:
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);
}
free_nick_info
Prototyp:
void free_nick_info (t_weechat_plugin *plugin,
t_plugin_nick_info *nick_info)
Gibt den Speicher einer Liste "nick info" frei.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Zeiger auf eine Liste
"nick info", der von "get_nick_info" zurückgegeben wurde
Rückgabewert: keiner.
Beispiel:
plugin->free_nick_info (plugin, nick_info);get_config
Prototyp:
char *get_config (t_weechat_plugin *plugin, char *option)
Gibt den Wert einer Option der WeeChat-Konfiguration zurück.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Name der Option
Rückgabewert: Wert der Option, oder NULL, wenn nichts gefunden wurde.
Hinweis: Das Ergebnis muss nach der Benutzung mit "free" wieder
freigegeben werden.
Beispiel:
char *value1 = plugin->get_config (plugin, "look_set_title");
char *value2 = plugin->get_config (plugin, "freenode.server_autojoin");
set_config
Prototyp:
int set_config (t_weechat_plugin *plugin,
char *option, char *value)
Setze den Wert einer Option der WeeChat-Konfiguration.
Argumente:
: Zeiger auf eine Plugin-Struktur
: Name der Option
: der neue Wert der Option
Rückgabewert: 1 wenn der Wert der Option gesetzt werden konnte,
0 bei Auftreten eines Fehlers.
Beispiel:
plugin->set_config (plugin, "look_nicklist", "off");
get_plugin_config
Prototyp:
char *get_plugin_config (t_weechat_plugin *plugin, char *option)
Gibt den Wert einer Option eines Plugins zurück.
Die Option wird aus "~/.weechat/plugins.rc"
gelesen und sieht so aus: "plugin.option=value"
(Hinweis: der Name des Plugins wird automatisch gesetzt).
Argumente:
: Zeiger auf eine Plugin-Struktur
: Name der Option
Rückgabewert: Wert der Option, NULL wenn nichts gefunden wurde.
Hinweis: Das Ergebnis muss nach der Benutzung mit "free" wieder
freigegeben werden.
Beispiel:
char *value = plugin->get_plugin_config (plugin, "my_var");
set_plugin_config
Prototyp:
int set_plugin_config (t_weechat_plugin *plugin,
char *option, char *value)
Setzt den Wert einer Option eines Plugins.
Die Option wird in die Datei
"~/.weechat/plugins.rc" geschrieben
und sieht so aus: "plugin.option=value"
(Hinweis: der Name des Plugins wird automatisch gesetzt)
Argumente:
: Zeiger auf eine Plugin-Struktur
: Name der Option, die gesetzt werden soll
: Wert der zu setzenden Option
Rückgabewert: 1 wenn die Option gesetzt werden konnte, 0 wenn ein
Fehler aufgetreten ist.
Beispiel:
plugin->set_plugin_config (plugin, "my_var", "value");
get_irc_color
Prototype:
int get_irc_color (t_weechat_plugin *plugin,
char *color_name)
Hole IRC-Farbindex mit dem Farbnamen.
Argumente:
: Zeiger auf die Pluginstruktur
: Farbname
Folgende Farben sind erlaubt:
FarbnameWertwhite0black1blue2green3lightred4red5magenta6brown7yellow8lightgreen9cyan10lightcyan11lightblue12lightmagenta13gray14lightgray15
Rückgabewert: IRC-Farbindex, -1 wenn die Farbe nicht gefunden wurde.
Beispiel:
int color_blue = plugin->get_irc_color (plugin, "blue"); /* return 2 */
input_color
Prototyp:
void input_color (t_weechat_plugin *plugin,
int color, int start, int length)
Erzeugt einen Farbcode im Eingabepuffer.
Argumente:
: Zeiger auf die Pluginstruktur
: Textfarbe (wenn der Wert < 0 ist,
dann wird der Eingabepuffer aufgefrischt und nicht verändert)
: Startposition für Einfärbung (wenn
der Wert < 0 ist, wird die Maske neu initialisiert)
: Länge der Einfärbung (wenn der Wert
<= 0 ist, wird die Maske neu initialisiert)
Rückgabewert: keiner.
Beispiele:
plugin->input_color (plugin, plugin->get_irc_color (plugin, "blue"), 10, 5);
get_window_info
Prototype:
t_plugin_window_info *get_window_info (t_weechat_plugin *plugin)
Gibt die Liste der WeeChat-Fenster zurück.
Argumente:
: Zeiger auf Pluginstruktur
Rückgabewert: verkettete Liste der WeeChat-Fenster.
TypFeldBeschreibungintwin_xhorizontale Fensterpositionintwin_yvertikale Fensterpositionintwin_widthFensterbreiteintwin_heightFensterhöheintwin_width_pct
Breite in % (im Vergleich zum übergeordneten Fenster)
intwin_height_pct
Höhe % (im Vergleich zum übergeordneten Fenster)
intnum_bufferAnzahl der angezeigten Puffert_plugin_window_info *prev_window
Zeiger auf die Informationen des vorhergehenden Fensters
t_plugin_window_info *next_window
Zeiger auf die Informationen des nächsten Fensters
Anmerkung: Das Ergebnis muss nach Benutzung durch einen Aufruf der
"free_window_info"-Funktion gelöscht werden.
Example:
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!");
free_window_info
Prototyp:
void free_window_info (t_weechat_plugin *plugin,
t_plugin_window_info *window_info)
Gibt den Speicher wieder frei, der von der
Fenster-Informationsliste belegt wird.
Argumente:
: Zeiger auf Pluginstruktur
: Zeiger auf
Fenster-Informationsliste, der von der
"get_window_info"-Funktion zurückgegeben wurde
Rückgabewert: keiner.
Beispiel:
plugin->free_window_info (plugin, window_info);get_buffer_info
Prototyp:
t_plugin_buffer_info *get_buffer_info (t_weechat_plugin *plugin)
Gibt eine Liste der WeeChat-Puffer zurück.
Argumente:
: Zeiger auf Pluginstruktur
Rückgabewert: verkettete Liste der WeeChat-Puffer.
TypFeldBeschreibunginttypePuffertyp: 0=standard, 1=DCC, 2=raw IRC dataintnumberPuffer-Nummerintnum_displayedAnzahl der Fenster im Pufferchar *server_nameServername für den Puffer (kann NULL sein)char *channel_nameChannelname für den Puffer (kann NULL sein)intnotify_levelBenachrichtigungslevel für den Pufferchar *log_filename
Name der Logdatei (NULL bedeutet, dass nichts geloggt
wird)
t_plugin_buffer_info *prev_bufferZeiger auf die vorhergehenden Pufferinformationent_plugin_buffer_info *next_bufferZeiger auf die nächsten Pufferinformationen
Bemerkung: Das Ergebnis muss nach der Auswertung mit der
"free_buffer_info"-Funktion wieder gelöscht werden.
Beispiel:
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!");
free_buffer_info
Prototyp:
void free_buffer_info (t_weechat_plugin *plugin,
t_plugin_buffer_info *buffer_info)
Gibt den Speicher frei, der von der Puffer-Informationsliste
belegt wird.
Argumente:
: Zeiger auf Pluginstruktur
: pointer to buffer info list
returned by "get_buffer_info" function
Rückgabewert: keiner.
Beispiel:
plugin->free_buffer_info (plugin, buffer_info);get_buffer_data
Prototype:
t_plugin_buffer_data *get_buffer_info (t_weechat_plugin *plugin,
char *server, char *channel)
Gibt den Inhalt des Puffers zurück.
Argumente:
: Zeiger auf Pluginstruktur
: interner Name des Servers
: Channelname
Rückgabewert: Pufferinhalt (verkettete Liste mit den Zeilen).
TypFeldBeschreibungtime_tdateDatum/Zeitchar *nickNickchar *dataZeileninhalt (Farbcodes wurden entfernt)t_plugin_buffer_line *prev_lineZeiger auf die vorherige Zeilet_plugin_buffer_line *next_lineZeiger auf die nächste Zeile
Bemerkung: Das Ergebnis muss nach der Auswertung mit der
"free_buffer_data"-Funktion wieder gelöscht werden.
Example:
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 (&(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);
}
free_buffer_data
Prototype:
void free_buffer_data (t_weechat_plugin *plugin,
t_plugin_buffer_line *buffer_line)
Gibt den Speicher frei, der von den Pufferzeilen belegt wurde.
Arguments:
: Zeiger auf Pluginstruktur
: Zeiger auf Pufferzeilen, der
von der "get_buffer_data"-Funktion zurückgegeben wurde
Rückgabewert: keiner.
Beispiele:
plugin->free_buffer_data (plugin, buffer_line);