1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-12 14:14:48 +02:00

relay: send event "buffer_line_data_changed" to clients of "weechat" protocol

This commit is contained in:
Sébastien Helleu
2024-06-27 22:21:09 +02:00
parent 7d6afff01c
commit 3993aa310f
6 changed files with 327 additions and 1 deletions
+1 -1
View File
@@ -24,7 +24,7 @@
- relay: add infos "relay_api_version" and "relay_api_version_number"
- core: add hdata count in evaluation of expressions with `hdata_count:name[list]` or `hdata_count:name[pointer]`
- core: add completion "bars_items"
- api, relay: send new signal "buffer_line_data_changed" when a line is updated in a buffer via hdata, send event "buffer_line_data_changed" to API clients
- api, relay: send new signal "buffer_line_data_changed" when a line is updated in a buffer via hdata, send event "buffer_line_data_changed" to clients of "api" and "weechat" protocols
- api: add hashtable type "longlong"
- api: add function line_search_by_id
- doc: add doc on "api" relay
+71
View File
@@ -1488,6 +1488,9 @@ WeeChat reserved identifiers:
| _buffer_line_added | buffer | hdata: line
| Line added in buffer. | Display line in buffer.
| _buffer_line_data_changed | buffer | hdata: line
| Line changed in buffer. | Update line displayed in buffer.
| _nicklist | nicklist | hdata: nicklist_item
| Nicklist for a buffer. | Replace nicklist.
@@ -2098,6 +2101,74 @@ hda:
message: 'hello!'
----
[[message_buffer_line_data_changed]]
==== _buffer_line_data_changed
This message is sent to the client when the signal "buffer_line_data_changed"
is sent by WeeChat.
Data sent as hdata:
[width="100%",cols="3m,2,10",options="header"]
|===
| Name | Type | Description
| buffer | pointer | Buffer pointer.
| id | integer | Line identifier.
| date | time | Date of message.
| date_usec | integer | Microseconds of date.
| date_printed | time | Date when WeeChat displayed message.
| date_usec_printed | integer | Microseconds of date when WeeChat displayed message.
| displayed | char | 1 if message is displayed, 0 if message is filtered (hidden).
| notify_level | char | Notify level: -1 = notify disabled, 0 = low, 1 = message, 2 = private, 3 = highlight.
| highlight | char | 1 if line has a highlight, otherwise 0.
| tags_array | array of strings | List of tags for line.
| prefix | string | Prefix.
| message | string | Message.
|===
Example: message _hello!_ from nick _FlashCode_ on buffer _irc.libera.#weechat_ has been updated:
[source,python]
----
id: '_buffer_line_data_changed'
hda:
keys: {
'buffer': 'ptr',
'id': 'int',
'date': 'tim',
'date_usec': 'int',
'date_printed': 'tim',
'date_usec_printed': 'int',
'displayed': 'chr',
'notify_level': 'chr',
'highlight': 'chr',
'tags_array': 'arr',
'prefix': 'str',
'message': 'str',
}
path: ['line_data']
item 1:
__path: ['0x4a49600']
buffer: '0x4a715d0'
id: 12
date: 1362728993
date_usec: 902765
date_printed: 1362728993
date_usec_printed: 902765
displayed: 1
notify_level: 1
highlight: 0
tags_array: [
'irc_privmsg',
'notify_message',
'prefix_nick_142',
'nick_FlashCode',
'log1',
]
prefix: 'F06@F@00142FlashCode'
message: 'hello!'
----
[[message_buffer_closing]]
==== _buffer_closing
+71
View File
@@ -1514,6 +1514,9 @@ Les identifiants réservés par WeeChat :
| _buffer_line_added | buffer | hdata : line
| Ligne ajoutée dans le tampon. | Afficher la ligne dans le tampon.
| _buffer_line_data_changed | buffer | hdata: line
| Ligne changée dans le tampon. | Modifier la ligne affichée dans le tampon.
| _nicklist | nicklist | hdata : nicklist_item
| Liste de pseudos pour un tampon. | Remplacer la liste de pseudos.
@@ -2127,6 +2130,74 @@ hda:
message: 'hello!'
----
[[message_buffer_line_data_changed]]
==== _buffer_line_data_changed
Ce message est envoyé au client lorsque le signal "buffer_line_data_changed"
est envoyé par WeeChat.
Données envoyées dans le hdata :
[width="100%",cols="3m,2,10",options="header"]
|===
| Nom | Type | Description
| buffer | pointeur | Pointeur vers le tampon.
| id | entier | Identifiant de ligne.
| date | date/heure | Date du message.
| date_usec | entier | Microsecondes de la date.
| date_printed | date/heure | Date d'affichage du message.
| date_usec_printed | entier | Microsecondes de la date d'affichage du message.
| displayed | caractère | 1 si le message est affiché, 0 si le message est filtré (caché).
| notify_level | caractère | Niveau de notification : -1 = notification désactivée, 0 = bas, 1 = message, 2 = privé, 3 = highlight.
| highlight | caractère | 1 si la ligne a un highlight, sinon 0.
| tags_array | tableau de chaînes | Liste des étiquettes de la ligne.
| prefix | chaîne | Préfixe.
| message | chaîne | Message.
|===
Exemple : le message _hello!_ du pseudo _FlashCode_ sur le tampon _irc.libera.#weechat_ a été mis à jour:
[source,python]
----
id: '_buffer_line_data_changed'
hda:
keys: {
'buffer': 'ptr',
'id': 'int',
'date': 'tim',
'date_usec': 'int',
'date_printed': 'tim',
'date_usec_printed': 'int',
'displayed': 'chr',
'notify_level': 'chr',
'highlight': 'chr',
'tags_array': 'arr',
'prefix': 'str',
'message': 'str',
}
path: ['line_data']
item 1:
__path: ['0x4a49600']
buffer: '0x4a715d0'
id: 12
date: 1362728993
date_usec: 902765
date_printed: 1362728993
date_usec_printed: 902765
displayed: 1
notify_level: 1
highlight: 0
tags_array: [
'irc_privmsg',
'notify_message',
'prefix_nick_142',
'nick_FlashCode',
'log1',
]
prefix: 'F06@F@00142FlashCode'
message: 'hello!'
----
[[message_buffer_closing]]
==== _buffer_closing
+78
View File
@@ -1524,6 +1524,10 @@ WeeChat の予約識別子:
| _buffer_line_added | buffer | hdata: line
| バッファへの行追加 | バッファに行を表示
// TRANSLATION MISSING
| _buffer_line_data_changed | buffer | hdata: line
| Line changed in buffer. | Update line displayed in buffer.
| _nicklist | nicklist | hdata: nicklist_item
| バッファのニックネームリスト | ニックネームリストを置換
@@ -2138,6 +2142,80 @@ hda:
message: 'hello!'
----
[[message_buffer_line_added]]
==== _buffer_line_added
// TRANSLATION MISSING
This message is sent to the client when the signal "buffer_line_data_changed"
is sent by WeeChat.
hdata として送られるデータ:
[width="100%",cols="3m,2,10",options="header"]
|===
| 名前 | 型 | 説明
| buffer | pointer | バッファへのポインタ
// TRANSLATION MISSING
| id | integer | Line identifier.
| date | time | メッセージの日付
// TRANSLATION MISSING
| date_usec | integer | Microseconds of date.
| date_printed | time | WeeChat メッセージを表示した日付
// TRANSLATION MISSING
| date_usec_printed | integer | Microseconds of date when WeeChat displayed message.
| displayed | char | メッセージが表示される場合は 1、メッセージがフィルタされる (隠される) 場合は 0
// TRANSLATION MISSING
| notify_level | char | Notify level: -1 = notify disabled, 0 = low, 1 = message, 2 = private, 3 = highlight.
| highlight | char | 行がハイライト部分を含む場合は 1、それ以外は 0
| tags_array | string の配列 | 行に対するタグのリスト
| prefix | string | プレフィックス
| message | string | メッセージ
|===
// TRANSLATION MISSING
Example: message _hello!_ from nick _FlashCode_ on buffer _irc.libera.#weechat_ has been updated:
[source,python]
----
id: '_buffer_line_data_changed'
hda:
keys: {
'buffer': 'ptr',
'id': 'int',
'date': 'tim',
'date_used': 'int',
'date_printed': 'tim',
'date_usec_printed': 'int',
'displayed': 'chr',
'notify_level': 'chr',
'highlight': 'chr',
'tags_array': 'arr',
'prefix': 'str',
'message': 'str',
}
path: ['line_data']
item 1:
__path: ['0x4a49600']
buffer: '0x4a715d0'
id: 12
date: 1362728993
date_usec: 902765
date_printed: 1362728993
date_usec_printed: 902765
displayed: 1
notify_level: 1
highlight: 0
tags_array: [
'irc_privmsg',
'notify_message',
'prefix_nick_142',
'nick_FlashCode',
'log1',
]
prefix: 'F06@F@00142FlashCode'
message: 'hello!'
----
[[message_buffer_closing]]
==== _buffer_closing
+75
View File
@@ -1403,6 +1403,10 @@ WeeChat резервисани идентификатори:
| _buffer_line_added | buffer | hdata: line
| У бафер је додата линија. | Приказ линије у баферу.
// TRANSLATION MISSING
| _buffer_line_data_changed | buffer | hdata: line
| Line changed in buffer. | Update line displayed in buffer.
| _nicklist | nicklist | hdata: nicklist_item
| Листа надимака за бафер. | Замена листе надимака.
@@ -1998,6 +2002,77 @@ hda:
message: 'здраво!'
----
[[message_buffer_line_data_changed]]
==== _buffer_line_data_changed
// TRANSLATION MISSING
This message is sent to the client when the signal "buffer_line_data_changed"
is sent by WeeChat.
Подаци се шаљу као hdata:
[width="100%", cols="3m,2,10", options="header"]
|===
| Име | Тип | Опис
| buffer | показивач | Показивач на бафер.
// TRANSLATION MISSING
| id | цео број | Line identifier.
| date | време | Датум поруке.
| date_usec | цео број | Микросекунде датума.
| date_printed | време | Датум када је програм WeeChat приказао поруку.
| date_usec_printed | цео број | Микросекунде датума када је WeeChat приказао поруку.
| displayed | карактер | 1 ако је порука приказана, 0 ако је порука филтрирана (скривена).
| notify_level | карактер | Ниво обавештења: -1 = обавештење искључено, 0 = ниски, 1 = порука, 2 = приватно, 3 = истицање.
| highlight | карактер | 1 ако се у линији налази истицање, у супротном 0.
| tags_array | низ стрингова | Листа ознака за линију.
| prefix | стринг | Префикс.
| message | стринг | Порука.
|===
// TRANSLATION MISSING
Example: message _hello!_ from nick _FlashCode_ on buffer _irc.libera.#weechat_ has been updated:
[source,python]
----
id: '_buffer_line_data_changed'
hda:
keys: {
'buffer': 'ptr',
'id': 'int',
'date': 'tim',
'date_usec': 'int',
'date_printed': 'tim',
'date_usec_printed': 'int',
'displayed': 'chr',
'notify_level': 'chr',
'highlight': 'chr',
'tags_array': 'arr',
'prefix': 'str',
'message': 'str',
}
path: ['line_data']
item 1:
__path: ['0x4a49600']
buffer: '0x4a715d0'
id: 12
date: 1362728993
date_usec: 902765
date_printed: 1362728993
date_usec_printed: 902765
displayed: 1
notify_level: 1
highlight: 0
tags_array: [
'irc_privmsg',
'notify_message',
'prefix_nick_142',
'nick_FlashCode',
'log1',
]
prefix: 'F06@F@00142FlashCode'
message: 'здраво!'
----
[[message_buffer_closing]]
==== _buffer_closing
@@ -1128,6 +1128,37 @@ relay_weechat_protocol_signal_buffer_cb (const void *pointer, void *data,
}
}
}
else if (strcmp (signal, "buffer_line_data_changed") == 0)
{
ptr_line_data = (struct t_gui_line_data *)signal_data;
if (!ptr_line_data)
return WEECHAT_RC_OK;
ptr_buffer = weechat_hdata_pointer (relay_hdata_line_data, ptr_line_data,
"buffer");
if (!ptr_buffer || relay_buffer_is_relay (ptr_buffer))
return WEECHAT_RC_OK;
/* send signal only if sync with flag "buffer" */
if (relay_weechat_protocol_is_sync (ptr_client, ptr_buffer,
RELAY_WEECHAT_PROTOCOL_SYNC_BUFFER))
{
msg = relay_weechat_msg_new (str_signal);
if (msg)
{
snprintf (cmd_hdata, sizeof (cmd_hdata),
"line_data:0x%lx",
(unsigned long)ptr_line_data);
relay_weechat_msg_add_hdata (
msg, cmd_hdata,
"buffer,id,date,date_usec,date_printed,date_usec_printed,"
"displayed,notify_level,highlight,tags_array,"
"prefix,message");
relay_weechat_msg_send (ptr_client, msg);
relay_weechat_msg_free (msg);
}
}
}
else if (strcmp (signal, "buffer_closing") == 0)
{
ptr_buffer = (struct t_gui_buffer *)signal_data;