From c904061b1d6bdcc8792a39511ade26c6ad560dc7 Mon Sep 17 00:00:00 2001 From: Ismaël Bouya Date: Mon, 29 Oct 2018 22:16:19 +0100 Subject: Add open thread command with cursor --- README.md | 2 ++ wee_slack.py | 12 ++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index a87ee95..2014076 100644 --- a/README.md +++ b/README.md @@ -273,6 +273,7 @@ The cursor mode and mouse mode can be used to interact with older messages, for In cursor mode, the `M` key achieves the same result (memo: the default for weechat is to paste the message with `m`, `M` simply copies the id). In addition, `R` will prepare a `/reply id` and `D` will delete the message (provided it’s yours). +`T` will open the thread associated to a message, equivalent to `/thread id` Please see weechat’s documentation about [how to use the cursor mode](https://weechat.org/files/doc/stable/weechat_user.en.html#key_bindings_cursor_context) or [adapt the bindings](https://weechat.org/files/doc/stable/weechat_user.en.html#command_weechat_key) to your preference. @@ -282,6 +283,7 @@ Default: /key bindctxt cursor @chat(python.*.slack.com.*):M hsignal:slack_cursor_message /key bindctxt cursor @chat(python.*.slack.com.*):D hsignal:slack_cursor_delete /key bindctxt cursor @chat(python.*.slack.com.*):R hsignal:slack_cursor_reply +/key bindctxt cursor @chat(python.*.slack.com.*):T hsignal:slack_cursor_thread ``` hsignals `slack_mouse` and `slack_cursor_message` currently have the same meaning but may be subject to evolutions. diff --git a/wee_slack.py b/wee_slack.py index cf5c3f0..77173f0 100644 --- a/wee_slack.py +++ b/wee_slack.py @@ -3534,10 +3534,13 @@ def thread_command_callback(data, current_buffer, args): args = args.split() if args[0] == '/thread': if len(args) == 2: + thread_id = args[1] + if thread_id[0] == "$": + thread_id = thread_id[1:] try: - pm = channel.messages[SlackTS(args[1])] + pm = channel.messages[SlackTS(thread_id)] except: - pm = channel.hashed_messages[args[1]] + pm = channel.hashed_messages[thread_id] pm.open_thread(switch=config.switch_buffer_on_join) return w.WEECHAT_RC_OK_EAT elif args[0] == '/reply': @@ -3755,6 +3758,9 @@ def line_event_cb(data, signal, hashtable): elif data == "reply": w.command(buffer_pointer, "/cursor stop") w.command(buffer_pointer, "/input insert /reply {}\\x20".format(message_hash)) + elif data == "thread": + w.command(buffer_pointer, "/cursor stop") + w.command(buffer_pointer, "/thread {}".format(message_hash)) return w.WEECHAT_RC_OK @slack_buffer_required @@ -3898,11 +3904,13 @@ def setup_hooks(): "@chat(python.*.slack.com.*):M": "hsignal:slack_cursor_message", "@chat(python.*.slack.com.*):D": "hsignal:slack_cursor_delete", "@chat(python.*.slack.com.*):R": "hsignal:slack_cursor_reply", + "@chat(python.*.slack.com.*):T": "hsignal:slack_cursor_thread", }) w.hook_hsignal("slack_mouse", "line_event_cb", "message") w.hook_hsignal("slack_cursor_delete", "line_event_cb", "delete") w.hook_hsignal("slack_cursor_reply", "line_event_cb", "reply") + w.hook_hsignal("slack_cursor_thread", "line_event_cb", "thread") w.hook_hsignal("slack_cursor_message", "line_event_cb", "message") # Hooks to fix/implement -- cgit