[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[elpa] master 742c82e 020/187: Added message passing, but undocumented f
From: |
Michael Albinus |
Subject: |
[elpa] master 742c82e 020/187: Added message passing, but undocumented for now |
Date: |
Wed, 30 Dec 2015 11:49:26 +0000 |
branch: master
commit 742c82eb98b71ab20dab890cfb16a04eed048a22
Author: John Wiegley <address@hidden>
Commit: John Wiegley <address@hidden>
Added message passing, but undocumented for now
I'm having some serious difficulties with communicating to the child
Emacs over a pipe.
---
async.el | 56 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 56 insertions(+), 0 deletions(-)
diff --git a/async.el b/async.el
index 9ebebec..20322f6 100644
--- a/async.el
+++ b/async.el
@@ -173,6 +173,23 @@ its FINISH-FUNC is nil."
async-callback-value
(kill-buffer (current-buffer)))))
+(defun async-message-p (value)
+ "Return true of VALUE is an async.el message packet."
+ (and (listp value)
+ (plist-get value :async-message)))
+
+(defun async-send (&rest args)
+ "Send the given messages to the asychronous Emacs PROCESS."
+ (let ((args (append args '(:async-message t))))
+ (if async-in-child-emacs
+ (if async-callback
+ (funcall async-callback args))
+ (async--transmit-sexp (car args) (list 'quote (cdr args))))))
+
+(defun async-receive (&rest args)
+ "Send the given messages to the asychronous Emacs PROCESS."
+ (async--receive-sexp))
+
;;;###autoload
(defun async-start-process (name program finish-func &rest program-args)
"Start the executable PROGRAM asynchronously. See `async-start'.
@@ -311,6 +328,45 @@ returns nil. It can still be useful, however, as an
argument to
"3")
(message "Starting async-test-4...done"))
+(defun async-test-5 ()
+ (interactive)
+ (message "Starting async-test-5...")
+ (let ((proc
+ (async-start
+ ;; What to do in the child process
+ (lambda ()
+ (message "This is a test, sending message")
+ (async-send :hello "world")
+ ;; wait for a message
+ (let ((msg (async-receive)))
+ (message "Child got message: %s"
+ (plist-get msg :goodbye)))
+ (sleep-for 3)
+ 222)
+
+ ;; What to do when it finishes
+ (lambda (result)
+ (if (async-message-p result)
+ (message "Got hello from child process: %s"
+ (plist-get result :hello))
+ (message "Async process done, result should be 222: %s"
+ result))))))
+ (async-send proc :goodbye "everyone"))
+ (message "Starting async-test-5...done"))
+
+(defun async-test-6 ()
+ (interactive)
+ (message "Starting async-test-6...")
+ (async-start
+ ;; What to do in the child process
+ `(lambda ()
+ ,(async-inject-variables "\\`user-mail-address\\'")
+ (format "user-mail-address = %s" user-mail-address))
+
+ ;; What to do when it finishes
+ (lambda (result)
+ (message "Async process done: %s" result))))
+
(provide 'async)
;;; async.el ends here
- [elpa] master 0a7f3dd 008/187: Added async-inject-environment, (continued)
- [elpa] master 0a7f3dd 008/187: Added async-inject-environment, Michael Albinus, 2015/12/30
- [elpa] master 954c865 006/187: Updated README, Michael Albinus, 2015/12/30
- [elpa] master a8ac820 003/187: Renamed emacs-async.el to async.el, Michael Albinus, 2015/12/30
- [elpa] master 63fe7ee 010/187: Updated README, Michael Albinus, 2015/12/30
- [elpa] master c48d3db 009/187: Added smtpmail-async.el, Michael Albinus, 2015/12/30
- [elpa] master 728e791 005/187: Added dired-async, Michael Albinus, 2015/12/30
- [elpa] master 628a295 014/187: Send data over a pipe, rather than in an argument, Michael Albinus, 2015/12/30
- [elpa] master 190a040 012/187: Fixed async-smtpmail-send-it, Michael Albinus, 2015/12/30
- [elpa] master 4fb51ce 013/187: Corrected a problem with async deletions, Michael Albinus, 2015/12/30
- [elpa] master 1ad2902 011/187: Quiet byte-compiler warnings, Michael Albinus, 2015/12/30
- [elpa] master 742c82e 020/187: Added message passing, but undocumented for now,
Michael Albinus <=
- [elpa] master b80f1a5 018/187: Don't use pipes for communication just yet, Michael Albinus, 2015/12/30
- [elpa] master 497e4da 024/187: Fix to dired-async for wdired-mode, Michael Albinus, 2015/12/30
- [elpa] master e08c251 017/187: Added `dired-async-use-native-commands', Michael Albinus, 2015/12/30
- [elpa] master 7ba4f40 022/187: Always base64 encode, Michael Albinus, 2015/12/30
- [elpa] master 1028235 023/187: Don't use lexical-binding in dired-async.el, Michael Albinus, 2015/12/30
- [elpa] master 12ca991 016/187: Made some macros into functions, added debug code, Michael Albinus, 2015/12/30
- [elpa] master 386a876 019/187: Some minor adjustments, Michael Albinus, 2015/12/30
- [elpa] master dfaddaa 025/187: Use pipes instead of variable passing, Michael Albinus, 2015/12/30
- [elpa] master d771dff 015/187: Added `async-start-process', Michael Albinus, 2015/12/30
- [elpa] master 66610f4 026/187: smtpmail-async: Report status to user when done, Michael Albinus, 2015/12/30