Update of /project/beirc/cvsroot/beirc In directory common-lisp.net:/tmp/cvs-serv12043
Modified Files: beirc.lisp Log Message: add /part and better /close functionality.
* /part exits the current channel and leaves the receiver intact. * /close closes the receiver and parts the channel (if the closed receiver is a channel). The part message from a closed channel goes to the server buffer.
Date: Sat Sep 24 19:39:36 2005 Author: afuchs
Index: beirc/beirc.lisp diff -u beirc/beirc.lisp:1.23 beirc/beirc.lisp:1.24 --- beirc/beirc.lisp:1.23 Sat Sep 24 19:28:38 2005 +++ beirc/beirc.lisp Sat Sep 24 19:39:36 2005 @@ -178,7 +178,11 @@
(defmethod receiver-for-message ((message irc:irc-part-message) frame) (let ((target (first (irc:arguments message)))) - (intern-receiver target frame :channel target))) + (if (and + (null (find-receiver target frame)) + (string= (irc:source message) (slot-value frame 'nick))) + (server-receiver frame) ; don't re-open previously closed channels. + (intern-receiver target frame :channel target))))
(defmethod receiver-for-message ((message irc:irc-mode-message) frame) (case (length (irc:arguments message)) @@ -497,7 +501,15 @@ (raise-receiver receiver))
(define-beirc-command (com-close :name t) ((receiver 'receiver :prompt "receiver")) + (let* ((connection (current-connection *application-frame*)) + (channel (irc:find-channel connection (title receiver)))) + (when channel + (irc:part connection channel))) (remove-receiver receiver *application-frame*)) + +(define-beirc-command (com-part :name t) () + (irc:part (current-connection *application-frame*) + (title (current-receiver *application-frame*))))
(define-beirc-command (com-focus :name t) ((who 'nickname :prompt "who")) (pushnew who (current-focused-nicks) :test #'string=))