*** /afs/athena/user/k/k/kkkken/elisp/zwrite.el Mon May 18 15:23:28 1992 --- myzwrite.el Sun Apr 11 16:42:51 1993 *************** *** 1,3 **** - (provide 'zwrite) --- 1,2 ---- *************** *** 11,17 **** (defvar zwrite-last-zgram nil "List of class, instance, recipient, body of last *sent* zephyrgram") (define-abbrev-table 'zwrite-abbrev-table '()) ! (defun zwrite-triple (class instance recipient &optional generic-buffer-name) "Start a zwrite process to the given triple. Allow the user to enter a message. Run zwrite-hook." --- 10,21 ---- (defvar zwrite-last-zgram nil "List of class, instance, recipient, body of last *sent* zephyrgram") + ; Alists have the form (("name") ("anothername") ("foo")) + (defvar zwrite-recipient-list (list (list (user-login-name)))) + (defvar zwrite-instance-list (list (list ))) + (define-abbrev-table 'zwrite-abbrev-table '()) ! (defun zwrite-triple (class instance recipient &optional ! generic-buffer-name save-pair) "Start a zwrite process to the given triple. Allow the user to enter a message. Run zwrite-hook." *************** *** 33,37 **** --- 37,43 ---- (make-local-variable 'zwrite-target) (make-local-variable 'zwrite-process) + (make-local-variable 'zwrite-save-pair) (setq zwrite-target (list class instance recipient)) + (setq zwrite-save-pair save-pair) (use-local-map (make-sparse-keymap)) (local-set-key "\C-c\C-c" 'zwrite-send) *************** *** 46,49 **** --- 52,56 ---- (run-hooks 'zwrite-hook))) + (defun zwrite-filter (proc str) (save-excursion *************** *** 61,64 **** --- 68,73 ---- ((string-match (regexp-quote "Message sent") str) (insert "zwrite successful") + (if zwrite-save-pair + (zwrite-add-to-list (cdr zwrite-save-pair) (car zwrite-save-pair))) (message "Message sent to %s" zwrite-target)) (t *************** *** 109,118 **** (kill-buffer (process-buffer proc))) ! (defun zwrite-get-option (prompt specified last) (or specified ! (let ((input (read-from-minibuffer ! (format "%s [%s]: " prompt ! last)))) ! (if (equal input "") nil input)) last)) --- 118,125 ---- (kill-buffer (process-buffer proc))) ! (defun zwrite-get-option (prompt specified last list) (or specified ! (let ( (input (completing-read (format "%s [%s]: " prompt last) list)) ) ! (if (equal input "") (eq 1 0) input)) last)) *************** *** 119,126 **** (defun zwrite-personal (&optional recip) (interactive) ! (setq zwrite-last-recipient ! (zwrite-get-option "Send personal message to" ! recip zwrite-last-recipient)) ! (zwrite-triple "message" "personal" zwrite-last-recipient)) (defun zwrite-instance (&optional inst) --- 126,135 ---- (defun zwrite-personal (&optional recip) (interactive) ! (setq zwrite-last-recipient ! (zwrite-get-option "Send personal message to" ! recip zwrite-last-recipient ! zwrite-recipient-list)) ! (zwrite-triple "message" "personal" zwrite-last-recipient nil ! (cons zwrite-last-recipient zwrite-recipient-list))) (defun zwrite-instance (&optional inst) *************** *** 128,133 **** (setq zwrite-last-instance (zwrite-get-option "Write to instance" ! inst zwrite-last-instance)) ! (zwrite-triple "message" zwrite-last-instance "*")) (defun zwrite-i-help () --- 137,144 ---- (setq zwrite-last-instance (zwrite-get-option "Write to instance" ! inst zwrite-last-instance ! zwrite-instance-list)) ! (zwrite-triple "message" zwrite-last-instance "*" nil ! (cons zwrite-last-instance zwrite-instance-list))) (defun zwrite-i-help () *************** *** 203,205 **** --- 214,226 ---- (zwrite-instance instance)))))) + + (defun zwrite-add-to-list (list name) + "Make a new entry at the beginning of LIST which contains NAME as + it's car. Creates a list suitable for use as an alist." + (if (not (assoc name list)) + (let ((new-entry (cons name nil)) + (new-cell (cons (car list) (cdr list)))) + (setcar list new-entry) + (setcdr list new-cell) + list)))