emacs-elpa-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[elpa] externals/ement 8d8619c2e0 12/30: Add command `ement-room-compose


From: ELPA Syncer
Subject: [elpa] externals/ement 8d8619c2e0 12/30: Add command `ement-room-compose-send-direct'
Date: Sun, 3 Mar 2024 06:58:15 -0500 (EST)

branch: externals/ement
commit 8d8619c2e086909751b69cc4beca6ae7a59af5ee
Author: Phil Sainty <phil@catalyst.net.nz>
Commit: Phil Sainty <phil@catalyst.net.nz>

    Add command `ement-room-compose-send-direct'
    
    Extracts common functionality `ement-room-compose-send-prepare' for
    both `ement-room-compose-send' and `ement-room-compose-send-direct'.
---
 ement-room.el | 47 ++++++++++++++++++++++++++++++++++++++---------
 1 file changed, 38 insertions(+), 9 deletions(-)

diff --git a/ement-room.el b/ement-room.el
index b5f7ef739b..dad06cb0b2 100644
--- a/ement-room.el
+++ b/ement-room.el
@@ -3781,24 +3781,34 @@ To be called from a minibuffer opened from
                                          (skip-chars-backward " \t\r\n")
                                          (point))))
 
-(defun ement-room-compose-send ()
-  "Prompt to send the current compose buffer's contents.
-To be called from an `ement-room-compose' buffer."
-  (interactive)
+(defun ement-room-compose-send-prepare ()
+  "Bindings for `ement-room-compose-send' and 
`ement-room-compose-send-direct'."
   (cl-assert ement-room-compose-buffer)
   (cl-assert ement-room) (cl-assert ement-session)
+  ;; Capture the necessary values from the compose buffer before killing it and
+  ;; switching back to the room buffer.  Return the values as a list.
   (let ((body (ement-room-compose-buffer-string-trimmed))
-        (room ement-room)
-        (session ement-session)
         (input-method current-input-method)
         (send-message-filter ement-room-send-message-filter)
         (replying-to-event ement-room-replying-to-event)
-        (editing-event ement-room-editing-event))
+        (editing-event ement-room-editing-event)
+        (room ement-room)
+        (session ement-session))
+    (quit-restore-window nil 'kill)
+    (ement-view-room room session)
+    (list body input-method send-message-filter replying-to-event 
editing-event room session)))
+
+(defun ement-room-compose-send ()
+  "Prompt to send the current compose buffer's contents.
+To be called from an `ement-room-compose' buffer.
+See also `ement-room-compose-send-direct'."
+  (interactive)
+  (cl-destructuring-bind (body input-method send-message-filter
+                               replying-to-event editing-event room session)
+      (ement-room-compose-send-prepare)
     ;; Putting body in the kill ring seems like the best thing to do, to ensure
     ;; it doesn't get lost if the user exits the minibuffer before sending.
     (kill-new body)
-    (quit-restore-window nil 'kill)
-    (ement-view-room room session)
     (let* ((prompt (format "Send message (%s): " (ement-room-display-name 
room)))
            (current-input-method input-method) ; Bind around read-string call.
            (ement-room-send-message-filter send-message-filter)
@@ -3821,6 +3831,25 @@ To be called from an `ement-room-compose' buffer."
                                                          
(ement--original-event-for
                                                           replying-to-event 
session)))))))
 
+(defun ement-room-compose-send-direct ()
+  "Directly send the current compose buffer's contents.
+To be called from an `ement-room-compose' buffer.
+See also `ement-room-compose-send'."
+  (interactive)
+  (cl-destructuring-bind (body _input-method send-message-filter
+                               replying-to-event editing-event room session)
+      (ement-room-compose-send-prepare)
+    (add-to-history 'ement-room-message-history body)
+    (let ((ement-room-send-message-filter send-message-filter))
+      (if editing-event
+          (ement-room-edit-message (ement--original-event-for editing-event 
session)
+                                   room session body)
+        (ement-room-send-message room session
+                                 :body body
+                                 :replying-to-event (and replying-to-event
+                                                         
(ement--original-event-for
+                                                          replying-to-event 
session)))))))
+
 (defun ement-room-init-compose-buffer (room session)
   "Set up the current buffer as a compose buffer.
 Sets ROOM and SESSION buffer-locally, binds `save-buffer' in



reply via email to

[Prev in Thread] Current Thread [Next in Thread]