readme and muc pm tweak

master
bqv 3 years ago
parent 8779ca82dc
commit 8c74c62d8c
No known key found for this signature in database
GPG Key ID: 9E2FF3BDEBDFC910

@ -1,7 +1,7 @@
#+TITLE: weechat-xmpp #+TITLE: weechat-xmpp
#+AUTHOR: Tony Olagbaiye #+AUTHOR: Tony Olagbaiye
#+EMAIL: frony0@gmail.com #+EMAIL: bqv@fron.io
#+DATE: 2018-05-09 #+DATE: 2021-06-26
#+DESCRIPTION: Weechat plugin for XMPP #+DESCRIPTION: Weechat plugin for XMPP
#+KEYWORDS: weechat xmpp c api #+KEYWORDS: weechat xmpp c api
#+LANGUAGE: en #+LANGUAGE: en
@ -20,7 +20,7 @@
| Status: | XMPP for power users and digital masochists | | Status: | XMPP for power users and digital masochists |
| Location: | [[http://github.com/bqv/weechat-xmpp]] | | Location: | [[http://github.com/bqv/weechat-xmpp]] |
| Version: | 0.2.0 | | Version: | 0.2.1 |
| Disclaimer: | I'm lazy and unashamedly clinically insane | | Disclaimer: | I'm lazy and unashamedly clinically insane |
* Description * Description
@ -85,7 +85,7 @@
* Tasks * Tasks
** DONE [#A] Implement basic functionality (milestone v0.1) ** DONE Implement basic functionality (milestone v0.1)
* [X] Connecting * [X] Connecting
* [X] Pretty-printing stanzas * [X] Pretty-printing stanzas
* [X] Receiveing and formatting PMs to a dedicated buffer * [X] Receiveing and formatting PMs to a dedicated buffer
@ -93,34 +93,23 @@
* [X] Opening PMs (/chat) * [X] Opening PMs (/chat)
** TODO [#A] Implement essential functionality (milestone v0.2) ** TODO [#A] Implement essential functionality (milestone v0.2)
* [X] Opening PMs with initial message * [X] Opening PMs with initial message
* [-] OOB messages
* [X] Single media on a line
* [ ] Multiple media inline (protocol?)
* [ ] [#D] Encrypted (pgp/omemo)
* [X] Buffer autoswitch on enter/open * [X] Buffer autoswitch on enter/open
* [X] Handle open/enter jids with a resource without breaking * [X] Handle open/enter jids with a resource without breaking
* [X] Allow /close without crashing * [X] Allow /close without crashing
* [ ] [#B] Handle wide errors gracefully * [X] Highlight
* [ ] [#B] Event-driven MUC entrance * [X] MUC PMs
* [ ] [#C] XMPP Ping (xep-199) * [X] Send typing notifications
* [X] [#A] Highlight * [X] Recv typing notifications
* [-] MUCs * [X] Message Carbons
* [X] Opening (/enter) * [X] MAM Fetching
* [ ] [#B] Leave on /close * [/] Read receipts
* [X] Receiving * [X] Message Delivery (XEP-0184)
* [X] Sending * [X] Chat Markers (XEP-0333)
* [X] With /msg * [X] Composing
* [-] [#B] Edits * [X] Paused
* [X] [#B] Displaying * [?] Active
* [X] [#B] Tagging * [#] Inactive
* [ ] [#B] Making (/edit) * [#] Gone
* [X] [#C] Diff highlighting
* [ ] [#B] Handle errors gracefully
* [X] [#B] Presence/nicklist
* [X] [#B] Enters
* [X] [#B] Leaves
* [X] [#B] Tracking
* [X] [#B] Set/show topic
* [X] OMEMO (libomemo-c) * [X] OMEMO (libomemo-c)
* [X] Presence * [X] Presence
* [X] Disco * [X] Disco
@ -132,40 +121,82 @@
* [X] Device ID * [X] Device ID
* [X] Bundles * [X] Bundles
* [X] Messages * [X] Messages
* [X] [#C] MUC PMs * [-] PGP (gpgme)
* [X] [#A] Send typing notifications
* [X] [#A] Recv typing notifications
* [X] [#C] Read receipts
* [X] Chat Markers (XEP-0333)
* [X] Composing
* [X] Paused
* [?] Active
* [ ] Inactive
* [ ] Gone
* [X] Message Delivery (XEP-0184)
* [X] Message Carbons
* [ ] Service Disco
* [ ] /disco [domain]
* [ ] /whois [user|muc]
* [ ] User Avatars
* [ ] MUC Icons
* [X] MAM Fetching
* [-] Bookmarks / Roster
* [X] Autojoin bookmarks
* [ ] Except biboumi rooms
* [ ] Add bookmarks
* [ ] Delete bookmarks
* [ ] Roster
* [ ] OTR (libotr)
* [X] PGP (gpgme)
* [X] Use keyrings (from gnupg) * [X] Use keyrings (from gnupg)
* [X] Presence * [X] Presence
* [X] Decryption * [X] Decryption
* [X] Encryption * [X] Encryption
* [X] Custom set/clear key (/pgp) * [X] Custom set/clear key (/pgp)
* [ ] Save pgp key set per jid/muc * [ ] [#B] Save pgp key set per jid/muc
* [ ] Room Explorer (https://search.jabber.network/docs/api) * [ ] [#A] Account renaming
** TODO [#C] Adhere to CCS (milestone v0.3) * [-] OOB messages
* [X] Single media on a line
* [ ] [#D] Multiple media inline (protocol?)
* [ ] [#C] Encrypted (pgp/omemo)
* [ ] Handle wide errors gracefully
* [ ] [#C] Event-driven MUC entrance
* [ ] XMPP Ping (xep-199)
* [ ] [#C] Respond to s2c and m2c
* [ ] [#B] /ping for c2s and c2c
* [-] MUCs
* [X] Presence/nicklist
* [X] Enters
* [X] Leaves
* [X] Tracking
* [X] Set/show topic
* [X] Opening (/enter)
* [X] Receiving
* [X] Sending
* [X] With /msg
* [X] Handle errors gracefully
* [-] Edits
* [X] Displaying
* [X] Tagging
* [X] Diff highlighting
* [ ] [#B] Making (/edit)
* [ ] [#A] Leave on /close
* [ ] Service Disco
* [ ] [#B] /disco [domain]
* [ ] /whois [user|muc]
* [ ] [#B] User Avatars
* [ ] [#B] MUC Icons
* [-] Bookmarks / Roster (xep-048)
* [X] Autojoin bookmarks
* [ ] [#A] Except biboumi rooms
* [ ] [#B] Add bookmarks
* [ ] [#B] Delete bookmarks
* [ ] [#B] Roster
* [ ] [#D] OTR (libotr)
* [ ] [#C] Room Explorer (https://search.jabber.network/docs/api)
* [ ] [#C] DOAP
** TODO [#C] Adhere to CCS2022 (XEP-459) (milestone v0.3)
* [ ] Core
* [ ] Service Discovery (xep-030)
* [ ] Entity Capabilities (xep-115)
* [ ] Advanced
* [ ] Direct TLS (require secure connection)
* [ ] Personal Eventing Protocol (xep-163)
* [ ] IM
* [ ] File Upload (xep-363)
* [ ] VCard-temp (xep-054)
* [ ] MUC Invitations (xep-249)
* [ ] Advanced
* [ ] User Avatar (xep-084)
* [ ] User Avatar Compatibility (xep-398 xep-153)
* [ ] User Blocking (xep-191)
* [ ] PEP Native Bookmarks (xep-402)
* [ ] MUC Self-Ping (xep-410)
* [ ] Persistent Storage (xep-223)
* [ ] XML Storage (xep-049)
* [ ] Message Correction (xep-308)
* [ ] Direct File Transfer - Jingle (xep-234 xep-261)
* [ ] Extras
* [ ] Stateless Inline Media Sharing (xep-385)
* [ ] Consistent Color Generation (xep-392)
* [ ] Message Styling (xep-393)
* [ ] Extended Channel Search (xep-433)
* [ ] Message Retraction (xep-424)
* [ ] Message Moderation (xep-425)
** TODO [#D] Close all issues (milestone v1.0) ** TODO [#D] Close all issues (milestone v1.0)
* Contributing * Contributing

@ -564,6 +564,14 @@ int command__open(const void *pointer, void *data,
for (int i = 0; i < n_jid; i++) for (int i = 0; i < n_jid; i++)
{ {
jid = xmpp_jid_bare(ptr_account->context, jids[i]); jid = xmpp_jid_bare(ptr_account->context, jids[i]);
if (ptr_channel && !strchr(jid, '@'))
{
jid = xmpp_jid_new(
ptr_account->context,
xmpp_jid_node(ptr_account->context, ptr_channel->name),
xmpp_jid_domain(ptr_account->context, ptr_channel->name),
jid);
}
pres = xmpp_presence_new(ptr_account->context); pres = xmpp_presence_new(ptr_account->context);
xmpp_stanza_set_to(pres, jid); xmpp_stanza_set_to(pres, jid);
@ -571,19 +579,19 @@ int command__open(const void *pointer, void *data,
xmpp_send(ptr_account->connection, pres); xmpp_send(ptr_account->connection, pres);
xmpp_stanza_release(pres); xmpp_stanza_release(pres);
ptr_channel = channel__search(ptr_account, jid); struct t_channel *channel = channel__search(ptr_account, jid);
if (!ptr_channel) if (!channel)
ptr_channel = channel__new(ptr_account, CHANNEL_TYPE_PM, jid, jid); channel = channel__new(ptr_account, CHANNEL_TYPE_PM, jid, jid);
if (argc > 2) if (argc > 2)
{ {
text = argv_eol[2]; text = argv_eol[2];
channel__send_message(ptr_account, ptr_channel, jid, text); channel__send_message(ptr_account, channel, jid, text);
} }
char buf[16]; char buf[16];
int num = weechat_buffer_get_integer(ptr_channel->buffer, "number"); int num = weechat_buffer_get_integer(channel->buffer, "number");
snprintf(buf, sizeof(buf), "/buffer %d", num); snprintf(buf, sizeof(buf), "/buffer %d", num);
weechat_command(ptr_account->buffer, buf); weechat_command(ptr_account->buffer, buf);
} }
@ -968,7 +976,7 @@ void command__init()
"open", "open",
N_("open a direct xmpp chat"), N_("open a direct xmpp chat"),
N_("<jid>"), N_("<jid>"),
N_("jid: jid to target"), N_("jid: jid to target, or nick from the current muc"),
NULL, &command__open, NULL, NULL); NULL, &command__open, NULL, NULL);
if (!hook) if (!hook)
weechat_printf(NULL, "Failed to setup command /open"); weechat_printf(NULL, "Failed to setup command /open");

@ -130,26 +130,26 @@ void completion__init()
weechat_hook_completion("nick", weechat_hook_completion("nick",
N_("nicks of current Slack channel"), N_("nicks of current buffer"),
&completion__channel_nicks_cb, &completion__channel_nicks_cb,
NULL, NULL); NULL, NULL);
weechat_hook_completion("account", weechat_hook_completion("xmpp_account",
N_("xmpp accounts"), N_("xmpp accounts"),
&completion__accounts_cb, &completion__accounts_cb,
NULL, NULL); NULL, NULL);
option = weechat_config_get("weechat.completion.default_template"); option = weechat_config_get("weechat.completion.default_template");
default_template = weechat_config_string(option); default_template = weechat_config_string(option);
if (!weechat_strcasestr(default_template, "%(account)")) if (!weechat_strcasestr(default_template, "%(xmpp_account)"))
{ {
size_t length = snprintf(NULL, 0, "%s|%s", size_t length = snprintf(NULL, 0, "%s|%s",
default_template, default_template,
"%(account)") + 1; "%(xmpp_account)") + 1;
char *new_template = (char*)malloc(length); char *new_template = (char*)malloc(length);
snprintf(new_template, length, "%s|%s", snprintf(new_template, length, "%s|%s",
default_template, default_template,
"%(account)"); "%(xmpp_account)");
weechat_config_option_set(option, new_template, 1); weechat_config_option_set(option, new_template, 1);
free(new_template); free(new_template);
} }

@ -10,10 +10,10 @@
#define WEECHAT_XMPP_PLUGIN_NAME "xmpp" #define WEECHAT_XMPP_PLUGIN_NAME "xmpp"
#ifdef GIT_COMMIT #ifdef GIT_COMMIT
#define XMPP_PLUGIN_COMMIT XSTR(GIT_COMMIT) #define XMPP_PLUGIN_COMMIT XSTR(GIT_COMMIT)
#define WEECHAT_XMPP_PLUGIN_VERSION "0.2.0@" XMPP_PLUGIN_COMMIT #define WEECHAT_XMPP_PLUGIN_VERSION "0.2.1@" XMPP_PLUGIN_COMMIT
#else//GIT_COMMIT #else//GIT_COMMIT
#define XMPP_PLUGIN_COMMIT "unknown" #define XMPP_PLUGIN_COMMIT "unknown"
#define WEECHAT_XMPP_PLUGIN_VERSION "0.2.0" #define WEECHAT_XMPP_PLUGIN_VERSION "0.2.1"
#endif//GIT_COMMIT #endif//GIT_COMMIT
#define TIMER_INTERVAL_SEC 0.01 #define TIMER_INTERVAL_SEC 0.01

Loading…
Cancel
Save