From d5975c96e9d9fbafa1bbaa0075c5a91cf3229d2b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Helleu?= Date: Thu, 27 Jun 2024 21:37:47 +0200 Subject: [PATCH] relay: send event "buffer_line_data_changed" to API clients --- CHANGELOG.md | 2 +- doc/en/weechat_relay_api.en.adoc | 55 +++++++++++----------- doc/fr/weechat_relay_api.fr.adoc | 55 +++++++++++----------- src/plugins/relay/api/relay-api-protocol.c | 21 +++++++++ 4 files changed, 78 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index c631bd58d..a4a875968 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -23,7 +23,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: send new signal "buffer_line_data_changed" when a line is updated in a buffer via hdata +- 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: add hashtable type "longlong" - api: add function line_search_by_id - doc: add doc on "api" relay diff --git a/doc/en/weechat_relay_api.en.adoc b/doc/en/weechat_relay_api.en.adoc index d72436e15..1b4d4e2f6 100644 --- a/doc/en/weechat_relay_api.en.adoc +++ b/doc/en/weechat_relay_api.en.adoc @@ -1466,33 +1466,34 @@ The following events are sent to the client, according to synchronization option [width="100%",cols="5,3,3,5",options="header"] |=== -| Event | Buffer id | Body type | Body -| `buffer_opened` | buffer id | `buffer` | buffer with all lines and nicks -| `buffer_type_changed` | buffer id | `buffer` | buffer -| `buffer_moved` | buffer id | `buffer` | buffer -| `buffer_merged` | buffer id | `buffer` | buffer -| `buffer_unmerged` | buffer id | `buffer` | buffer -| `buffer_hidden` | buffer id | `buffer` | buffer -| `buffer_unhidden` | buffer id | `buffer` | buffer -| `buffer_renamed` | buffer id | `buffer` | buffer -| `buffer_title_changed` | buffer id | `buffer` | buffer -| `buffer_localvar_added` | buffer id | `buffer` | buffer -| `buffer_localvar_changed` | buffer id | `buffer` | buffer -| `buffer_localvar_removed` | buffer id | `buffer` | buffer -| `buffer_cleared` | buffer id | `buffer` | buffer -| `buffer_closing` | buffer id | `buffer` | buffer -| `buffer_closed` | buffer id | (not defined) | (not defined) -| `buffer_line_added` | buffer id | `line` | buffer line -| `input_text_changed` | buffer id | `buffer` | buffer -| `input_text_cursor_moved` | buffer id | `buffer` | buffer -| `upgrade` ^(1)^ | -1 | (not defined) | (not defined) -| `upgrade_ended` ^(1)^ | -1 | (not defined) | (not defined) -| `nicklist_group_changed` | buffer id | `nick_group` | nick group -| `nicklist_group_added` | buffer id | `nick_group` | nick group -| `nicklist_group_removing` | buffer id | `nick_group` | nick group -| `nicklist_nick_added` | buffer id | `nick` | nick -| `nicklist_nick_removing` | buffer id | `nick` | nick -| `nicklist_nick_changed` | buffer id | `nick` | nick +| Event | Buffer id | Body type | Body +| `buffer_opened` | buffer id | `buffer` | buffer with all lines and nicks +| `buffer_type_changed` | buffer id | `buffer` | buffer +| `buffer_moved` | buffer id | `buffer` | buffer +| `buffer_merged` | buffer id | `buffer` | buffer +| `buffer_unmerged` | buffer id | `buffer` | buffer +| `buffer_hidden` | buffer id | `buffer` | buffer +| `buffer_unhidden` | buffer id | `buffer` | buffer +| `buffer_renamed` | buffer id | `buffer` | buffer +| `buffer_title_changed` | buffer id | `buffer` | buffer +| `buffer_localvar_added` | buffer id | `buffer` | buffer +| `buffer_localvar_changed` | buffer id | `buffer` | buffer +| `buffer_localvar_removed` | buffer id | `buffer` | buffer +| `buffer_cleared` | buffer id | `buffer` | buffer +| `buffer_closing` | buffer id | `buffer` | buffer +| `buffer_closed` | buffer id | (not defined) | (not defined) +| `buffer_line_added` | buffer id | `line` | buffer line +| `buffer_line_data_changed` | buffer id | `line` | buffer line +| `input_text_changed` | buffer id | `buffer` | buffer +| `input_text_cursor_moved` | buffer id | `buffer` | buffer +| `upgrade` ^(1)^ | -1 | (not defined) | (not defined) +| `upgrade_ended` ^(1)^ | -1 | (not defined) | (not defined) +| `nicklist_group_changed` | buffer id | `nick_group` | nick group +| `nicklist_group_added` | buffer id | `nick_group` | nick group +| `nicklist_group_removing` | buffer id | `nick_group` | nick group +| `nicklist_nick_added` | buffer id | `nick` | nick +| `nicklist_nick_removing` | buffer id | `nick` | nick +| `nicklist_nick_changed` | buffer id | `nick` | nick |=== [NOTE] diff --git a/doc/fr/weechat_relay_api.fr.adoc b/doc/fr/weechat_relay_api.fr.adoc index 379fe806b..470b8281a 100644 --- a/doc/fr/weechat_relay_api.fr.adoc +++ b/doc/fr/weechat_relay_api.fr.adoc @@ -1492,33 +1492,34 @@ Les évènements suivants sont envoyés au client, selon les options de synchron [width="100%",cols="5,3,3,5",options="header"] |=== -| Évènement | Id tampon | Type de corps | Corps -| `buffer_opened` | id tampon | `buffer` | tampon avec les lignes et pseudos -| `buffer_type_changed` | id tampon | `buffer` | tampon -| `buffer_moved` | id tampon | `buffer` | tampon -| `buffer_merged` | id tampon | `buffer` | tampon -| `buffer_unmerged` | id tampon | `buffer` | tampon -| `buffer_hidden` | id tampon | `buffer` | tampon -| `buffer_unhidden` | id tampon | `buffer` | tampon -| `buffer_renamed` | id tampon | `buffer` | tampon -| `buffer_title_changed` | id tampon | `buffer` | tampon -| `buffer_localvar_added` | id tampon | `buffer` | tampon -| `buffer_localvar_changed` | id tampon | `buffer` | tampon -| `buffer_localvar_removed` | id tampon | `buffer` | tampon -| `buffer_cleared` | id tampon | `buffer` | tampon -| `buffer_closing` | id tampon | `buffer` | tampon -| `buffer_closed` | id tampon | (non défini) | (non défini) -| `buffer_line_added` | id tampon | `line` | ligne de tampon -| `input_text_changed` | id tampon | `buffer` | tampon -| `input_text_cursor_moved` | id tampon | `buffer` | tampon -| `upgrade` ^(1)^ | -1 | (non défini) | (non défini) -| `upgrade_ended` ^(1)^ | -1 | (non défini) | (non défini) -| `nicklist_group_changed` | id tampon | `nick_group` | groupe de pseudos -| `nicklist_group_added` | id tampon | `nick_group` | groupe de pseudos -| `nicklist_group_removing` | id tampon | `nick_group` | groupe de pseudos -| `nicklist_nick_added` | id tampon | `nick` | pseudo -| `nicklist_nick_removing` | id tampon | `nick` | pseudo -| `nicklist_nick_changed` | id tampon | `nick` | pseudo +| Évènement | Id tampon | Type de corps | Corps +| `buffer_opened` | id tampon | `buffer` | tampon avec les lignes et pseudos +| `buffer_type_changed` | id tampon | `buffer` | tampon +| `buffer_moved` | id tampon | `buffer` | tampon +| `buffer_merged` | id tampon | `buffer` | tampon +| `buffer_unmerged` | id tampon | `buffer` | tampon +| `buffer_hidden` | id tampon | `buffer` | tampon +| `buffer_unhidden` | id tampon | `buffer` | tampon +| `buffer_renamed` | id tampon | `buffer` | tampon +| `buffer_title_changed` | id tampon | `buffer` | tampon +| `buffer_localvar_added` | id tampon | `buffer` | tampon +| `buffer_localvar_changed` | id tampon | `buffer` | tampon +| `buffer_localvar_removed` | id tampon | `buffer` | tampon +| `buffer_cleared` | id tampon | `buffer` | tampon +| `buffer_closing` | id tampon | `buffer` | tampon +| `buffer_closed` | id tampon | (non défini) | (non défini) +| `buffer_line_added` | id tampon | `line` | ligne de tampon +| `buffer_line_data_changed` | id tampon | `line` | ligne de tampon +| `input_text_changed` | id tampon | `buffer` | tampon +| `input_text_cursor_moved` | id tampon | `buffer` | tampon +| `upgrade` ^(1)^ | -1 | (non défini) | (non défini) +| `upgrade_ended` ^(1)^ | -1 | (non défini) | (non défini) +| `nicklist_group_changed` | id tampon | `nick_group` | groupe de pseudos +| `nicklist_group_added` | id tampon | `nick_group` | groupe de pseudos +| `nicklist_group_removing` | id tampon | `nick_group` | groupe de pseudos +| `nicklist_nick_added` | id tampon | `nick` | pseudo +| `nicklist_nick_removing` | id tampon | `nick` | pseudo +| `nicklist_nick_changed` | id tampon | `nick` | pseudo |=== [NOTE] diff --git a/src/plugins/relay/api/relay-api-protocol.c b/src/plugins/relay/api/relay-api-protocol.c index 0d596dfb8..890c67b40 100644 --- a/src/plugins/relay/api/relay-api-protocol.c +++ b/src/plugins/relay/api/relay-api-protocol.c @@ -193,6 +193,27 @@ relay_api_protocol_signal_buffer_cb (const void *pointer, void *data, cJSON_Delete (json); } } + 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; + + json = relay_api_msg_line_data_to_json ( + ptr_line_data, RELAY_API_DATA(ptr_client, sync_colors)); + if (json) + { + buffer_id = relay_api_get_buffer_id (ptr_buffer); + relay_api_msg_send_event (ptr_client, signal, buffer_id, + "line", json); + cJSON_Delete (json); + } + } return WEECHAT_RC_OK; }