From: plugd Date: Mon, 20 May 2024 12:10:05 +0000 (+0200) Subject: Implemented actions. X-Git-Url: https://thelambdalab.xyz/gitweb/index.cgi?a=commitdiff_plain;h=5d44f825451c39c26e010eb5bd889469005117d7;p=lurk.git Implemented actions. --- diff --git a/murk.el b/murk.el index 1903a33..e15bc84 100644 --- a/murk.el +++ b/murk.el @@ -346,7 +346,7 @@ The head of this list is always the current context.") (seq-find (lambda (ctx) (equal (seq-take ctx 2) test-ctx)) murk-contexts)) - (assoc server murk-contexts))) + (car (member (list server) murk-contexts)))) (defun murk-cycle-contexts (&optional reverse) (setq murk-contexts @@ -516,6 +516,15 @@ The head of this list is always the current context.") (concat (murk-context->string context) " <" from ">")) text))) +(defun murk-display-action (server from to action-text) + (let ((context (if (string-prefix-p "#" to) + (murk-get-context server to) + (murk-get-context server)))) + (murk-display-string + context + (concat (murk-context->string context) " *") + from " " action-text))) + (defun murk-display-notice (context &rest notices) (murk-display-string context @@ -762,7 +771,7 @@ The head of this list is always the current context.") " on " server " (no response sent)")) ((rx (: "\01ACTION " (let action-text (* (not "\01"))) "\01")) - (murk-display-action from to action-text)) + (murk-display-action server from to action-text)) (_ (murk-display-message server from to text))))) @@ -787,6 +796,7 @@ The head of this list is always the current context.") ("TOPIC" "Set/query topic for current channel." murk-command-topic) ("USERS" "List nicks of users in current context." murk-command-users) ("MSG" "Send private message to user." murk-command-msg murk-nick-completions) + ("ME" "Display action." murk-command-me) ("CLEAR" "Clear buffer text." murk-command-clear murk-context-completions) ("HELP" "Display help on client commands." murk-command-help murk-help-completions)) "Table of commands explicitly supported by murk.") @@ -928,6 +938,22 @@ The head of this list is always the current context.") to text)) (murk-display-notice nil "Usage: /msg ")))) +(defun murk-command-me (params) + (let* ((ctx (murk-current-context)) + (server (murk-context-server ctx))) + (if (and ctx (not (murk-server-context-p ctx))) + (if params + (let* ((channel (murk-context-channel ctx)) + (my-nick (murk-connection-nick server)) + (action (string-join params " ")) + (ctcp-text (concat "\01ACTION " action "\01"))) + (murk-send-msg server + (murk-msg nil nil "PRIVMSG" + (list channel ctcp-text))) + (murk-display-action server my-nick channel action)) + (murk-display-notice nil "Usage: /me ")) + (murk-display-notice nil "No current channel.")))) + (defun murk-command-users (_params) (let ((ctx (murk-current-context))) (if (and ctx (not (murk-server-context-p ctx)))