Update of /project/beirc/cvsroot/beirc In directory common-lisp.net:/tmp/cvs-serv22379
Modified Files: application.lisp message-display.lisp receivers.lisp Log Message: add handling for the "no such nick or channel" message.
Date: Mon Sep 26 12:52:05 2005 Author: afuchs
Index: beirc/application.lisp diff -u beirc/application.lisp:1.12 beirc/application.lisp:1.13 --- beirc/application.lisp:1.12 Mon Sep 26 11:46:25 2005 +++ beirc/application.lisp Mon Sep 26 12:52:05 2005 @@ -269,6 +269,8 @@ (raise-receiver receiver))
(define-beirc-command (com-close :name t) ((receiver 'receiver :prompt "receiver")) + (when (eql receiver (server-receiver *application-frame*)) + (error "Can't close the server tab for this application!")) (let* ((connection (current-connection *application-frame*)) (channel (irc:find-channel connection (title receiver)))) (when channel
Index: beirc/message-display.lisp diff -u beirc/message-display.lisp:1.19 beirc/message-display.lisp:1.20 --- beirc/message-display.lisp:1.19 Mon Sep 26 11:46:25 2005 +++ beirc/message-display.lisp Mon Sep 26 12:52:05 2005 @@ -244,10 +244,23 @@
;;; channel management messages
+(defmethod print-message ((message irc:irc-err_nosuchnick-message) receiver) + (formatting-message (t message receiver) + ((format t " ")) + ((with-drawing-options (*standard-output* :ink +red3+ :text-size :small) + (let* ((target (second (irc:arguments message))) + (close-p (string= (title receiver) + (irc:normalize-nickname (current-connection *application-frame*) + target)))) + (format-message* (format nil "No such nick or channel "~A". ~@[To close this tab, click ~]" + target close-p)) + (when close-p + (present `(com-close ,receiver) 'command))))))) + (defmethod print-message ((message irc:irc-err_chanoprivsneeded-message) receiver) (formatting-message (t message receiver) ((format t " ")) - ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small) + ((with-drawing-options (*standard-output* :ink +red3+ :text-size :small) (format-message* (format nil "Not permitted: ~A" (irc:trailing-argument message)))))))
(defun print-topic (receiver message sender channel topic) @@ -267,6 +280,16 @@ (defmethod print-message ((message irc:irc-rpl_topic-message) receiver) (print-topic receiver message nil (second (irc:arguments message)) (irc:trailing-argument message))) + +(defmethod print-message ((message irc:irc-rpl_topicwhotime-message) receiver) + (formatting-message (t message receiver) + ((format t " ")) + ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small) + (destructuring-bind (me channel who time) (irc:arguments message) + (declare (ignore me + time ; TODO: no date display for now. + )) + (format-message* (format nil "~A topic set by ~A" channel who)))))))
(defmethod print-message ((message irc:irc-rpl_namreply-message) receiver) (formatting-message (t message receiver)
Index: beirc/receivers.lisp diff -u beirc/receivers.lisp:1.5 beirc/receivers.lisp:1.6 --- beirc/receivers.lisp:1.5 Mon Sep 26 11:46:25 2005 +++ beirc/receivers.lisp Mon Sep 26 12:52:05 2005 @@ -142,7 +142,7 @@ (intern-receiver target frame :channel target)))))))) (define-nth-arg-message-receiver-lookup (0 irc:irc-topic-message irc:irc-kick-message) - (1 irc:irc-rpl_topic-message irc:irc-rpl_topicwhotime-message irc:irc-err_chanoprivsneeded-message irc:irc-err_nosuchnick-message) + (1 irc:irc-rpl_topic-message irc:irc-rpl_topicwhotime-message irc:irc-err_chanoprivsneeded-message) (2 irc:irc-rpl_namreply-message) (nil irc:irc-join-message)))
@@ -169,7 +169,8 @@ (define-current-receiver-message-types irc:irc-rpl_whoisuser-message irc:irc-rpl_whoischannels-message - irc:irc-rpl_whoisserver-message)) + irc:irc-rpl_whoisserver-message + irc:irc-err_nosuchnick-message))
(macrolet ((define-ignore-message-types (&rest mtypes) `(progn