api: add modifier "input_text_for_buffer"

v2.8-utf8proc
Sebastien Helleu 2012-01-24 19:02:06 +01:00
parent f7a0f8ae39
commit 009925b9ac
5 changed files with 110 additions and 68 deletions

View File

@ -42,6 +42,7 @@ Version 0.3.7 (under dev!)
* core: fix compilation error with "pid_t" on Mac OS X (bug #34639)
* core: enable background process under Cygwin to connect to servers, fix
reconnection problem (bug #34626)
* api: add modifier "input_text_for_buffer"
* api: add support of URL in hook_process/hook_process_hashtable (task #10247)
* api: add new functions strcasecmp_range, strncasecmp_range,
string_regex_flags, string_regcomp, hashtable_map_string,

View File

@ -8345,7 +8345,8 @@ Arguments:
content of message received from IRC server (before charset decoding) |
new content of message
| irc | irc_in2_xxx ^(1)^ |
| irc | irc_in2_xxx ^(1)^ +
(_new in version 0.3.5_) |
server name |
content of message received from IRC server (after charset decoding) |
new content of message
@ -8360,25 +8361,32 @@ Arguments:
empty string |
"1" to display bar, "0" to hide it
| weechat | history_add |
| weechat | history_add +
(_new in version 0.3.2_) |
string with buffer pointer ("0x123..") |
input buffer (from user) to add in command history (buffer and global) |
content of command line to add in command history (buffer and global) |
string added to command history
| weechat | input_text_content |
string with buffer pointer ("0x123..") |
input buffer (from user) |
new content of input buffer
content of command line |
new content of command line
| weechat | input_text_display |
string with buffer pointer ("0x123..") |
input buffer (from user), without cursor tag |
new content of input buffer, for display only (input buffer is not changed)
content of command line, without cursor tag |
new string, for display only (command line is not changed)
| weechat | input_text_display_with_cursor |
string with buffer pointer ("0x123..") |
input buffer (from user), with cursor tag |
new content of input buffer, for display only (input buffer is not changed)
content of command line, with cursor tag |
new string, for display only (command line is not changed)
| weechat | input_text_for_buffer +
(_new in version 0.3.7_) |
string with buffer pointer ("0x123..") |
content of command line sent to buffer (text or command) |
new content of command line sent to buffer
| weechat | weechat_print |
plugin;buffer_name;tags |

View File

@ -8481,7 +8481,8 @@ Paramètres :
contenu du message reçu du serveur IRC (avant décodage du jeu de caractères) |
nouveau contenu du message
| irc | irc_in2_xxx ^(1)^ |
| irc | irc_in2_xxx ^(1)^ +
(_nouveau dans la version 0.3.5_) |
nom de serveur |
contenu du message reçu du serveur IRC (après décodage du jeu de caractères) |
nouveau contenu du message
@ -8496,28 +8497,35 @@ Paramètres :
chaîne vide |
"1" pour afficher la barre, "0" pour la cacher
| weechat | history_add |
| weechat | history_add +
(_nouveau dans la version 0.3.2_) |
chaîne avec un pointeur vers le tampon ("0x123..") |
chaîne saisie par l'utilisateur à ajouter à l'historique des commandes
contenu de la ligne de commande à ajouter à l'historique des commandes
(tampon et global) |
chaîne ajoutée à l'historique des commandes
| weechat | input_text_content |
chaîne avec un pointeur vers le tampon ("0x123..") |
chaîne saisie par l'utilisateur |
nouvelle chaîne
contenu de la ligne de commande |
nouvelle chaîne pour la ligne de commande
| weechat | input_text_display |
chaîne avec un pointeur vers le tampon ("0x123..") |
chaîne saisie par l'utilisateur, sans le code du curseur dedans |
nouvelle chaîne, pour affichage seulement (les données de l'utilisateur ne
sont pas changées)
contenu de la ligne de commande, sans le code du curseur dedans |
nouvelle chaîne, pour affichage seulement (la ligne de commande n'est pas
modifiée)
| weechat | input_text_display_with_cursor |
chaîne avec un pointeur vers le tampon ("0x123..") |
chaîne saisie par l'utilisateur, avec le code du curseur dedans |
nouvelle chaîne, pour affichage seulement (les données de l'utilisateur ne
sont pas changées)
contenu de la ligne de commande, avec le code du curseur dedans |
nouvelle chaîne, pour affichage seulement (la ligne de commande n'est pas
modifiée)
| weechat | input_text_for_buffer +
(_nouveau dans la version 0.3.7_) |
chaîne avec un pointeur vers le tampon ("0x123..") |
contenu de la ligne de commande envoyée au tampon (texte ou commande) |
nouveau contenu de la ligne de commande envoyée au tampon
| weechat | weechat_print |
extension;nom_tampon;étiquettes |

View File

@ -8409,7 +8409,8 @@ Argomenti:
contenuto del messaggio ricevuto dal server IRC (prima della codifica del set caratteri) |
nuovo contenuto del messaggio
| irc | irc_in2_xxx ^(1)^ |
| irc | irc_in2_xxx ^(1)^ +
(_novità nella versione 0.3.5_) |
nome server |
contenuto del messaggio ricevuto dal server IRC (dopo la codifica del set caratteri) |
nuovo contenuto del messaggio
@ -8424,27 +8425,37 @@ Argomenti:
stringa vuota |
"1" per visualizzare la barra, "0" per nasconderla
| weechat | history_add |
// TRANSLATION MISSING
| weechat | history_add +
(_novità nella versione 0.3.2_) |
stringa con puntatore al buffer ("0x123..") |
input buffer (from user) to add in command history (buffer and global) |
content of command line to add in command history (buffer and global) |
string added to command history
// TRANSLATION MISSING
| weechat | input_text_content |
stringa con puntatore al buffer ("0x123..") |
input buffer (dall'utente) |
nuovo contenuto del buffer di input
content of command line |
new content of command line
// TRANSLATION MISSING
| weechat | input_text_display |
stringa con puntatore al buffer ("0x123..") |
buffer di input (dall'utente), senza tag di cursore |
nuovo contenuto del buffer di input, solo per visualizzazione (il buffer
di input non è modificato)
content of command line, without cursor tag |
new string, for display only (command line is not changed)
// TRANSLATION MISSING
| weechat | input_text_display_with_cursor |
stringa con puntatore al buffer ("0x123..") |
buffer di input (dall'utente), con tag di cursore |
nuovo contenuto del buffer di input, solo per la visualizzazione (buffer di
input non è modificato)
content of command line, with cursor tag |
new string, for display only (command line is not changed)
// TRANSLATION MISSING
| weechat | input_text_for_buffer +
(_novità nella versione 0.3.7_) |
stringa con puntatore al buffer ("0x123..") |
content of command line sent to buffer (text or command) |
new content of command line sent to buffer
| weechat | weechat_print |
plugin;buffer_name;tags |

View File

@ -158,57 +158,71 @@ input_exec_command (struct t_gui_buffer *buffer,
void
input_data (struct t_gui_buffer *buffer, const char *data)
{
char *pos, *buf;
char *pos, *buf, str_buffer[128], *new_data;
const char *ptr_data, *ptr_data_for_buffer;
int length, char_size;
if (!buffer || !data || !data[0] || (data[0] == '\r') || (data[0] == '\n'))
return;
/* use new data (returned by plugin) */
ptr_data = data;
while (ptr_data && ptr_data[0])
{
pos = strchr (ptr_data, '\n');
if (pos)
pos[0] = '\0';
/* execute modifier "input_text_for_buffer" */
snprintf (str_buffer, sizeof (str_buffer),
"0x%lx", (long unsigned int)buffer);
new_data = hook_modifier_exec (NULL,
"input_text_for_buffer",
str_buffer,
data);
ptr_data_for_buffer = string_input_for_buffer (ptr_data);
if (ptr_data_for_buffer)
/* data not dropped? */
if (!new_data || new_data[0])
{
ptr_data = (new_data) ? new_data : data;
while (ptr_data && ptr_data[0])
{
/*
* input string is NOT a command, send it to buffer input
* callback
*/
if (string_is_command_char (ptr_data_for_buffer))
pos = strchr (ptr_data, '\n');
if (pos)
pos[0] = '\0';
ptr_data_for_buffer = string_input_for_buffer (ptr_data);
if (ptr_data_for_buffer)
{
char_size = utf8_char_size (ptr_data_for_buffer);
length = strlen (ptr_data_for_buffer) + char_size + 1;
buf = malloc (length);
if (buf)
/*
* input string is NOT a command, send it to buffer input
* callback
*/
if (string_is_command_char (ptr_data_for_buffer))
{
memcpy (buf, ptr_data_for_buffer, char_size);
snprintf (buf + char_size, length - char_size,
"%s", ptr_data_for_buffer);
input_exec_data (buffer, buf);
free (buf);
char_size = utf8_char_size (ptr_data_for_buffer);
length = strlen (ptr_data_for_buffer) + char_size + 1;
buf = malloc (length);
if (buf)
{
memcpy (buf, ptr_data_for_buffer, char_size);
snprintf (buf + char_size, length - char_size,
"%s", ptr_data_for_buffer);
input_exec_data (buffer, buf);
free (buf);
}
}
else
input_exec_data (buffer, ptr_data_for_buffer);
}
else
input_exec_data (buffer, ptr_data_for_buffer);
}
else
{
/* input string is a command */
input_exec_command (buffer, 1, buffer->plugin, ptr_data);
}
{
/* input string is a command */
input_exec_command (buffer, 1, buffer->plugin, ptr_data);
}
if (pos)
{
pos[0] = '\n';
ptr_data = pos + 1;
if (pos)
{
pos[0] = '\n';
ptr_data = pos + 1;
}
else
ptr_data = NULL;
}
else
ptr_data = NULL;
}
if (new_data)
free (new_data);
}