Update of /project/beirc/cvsroot/beirc
In directory common-lisp:/tmp/cvs-serv14752
Modified Files:
application.lisp message-display.lisp receivers.lisp
Log Message:
remove calls to deprecated function irc:trailing-argument and replace them
(where useful) with the irc:destructuring-arguments binding form.
also, fix the (change-space-requirements ) reader error that annoyed
Paolo Amoroso. Sorry for that.
--- /project/beirc/cvsroot/beirc/application.lisp 2006/02/16 23:46:57 1.38
+++ /project/beirc/cvsroot/beirc/application.lisp 2006/02/22 16:30:50 1.39
@@ -244,9 +244,9 @@
(clim-sys:destroy-process ticker-process))))))))
(defun message-directed-to-me-p (frame message)
- (let ((my-nick (slot-value frame 'nick))
- (text (or (irc:trailing-argument message) "")))
- (search my-nick text)))
+ (irc:destructuring-arguments (&last body) message
+ (let ((my-nick (slot-value frame 'nick)))
+ (search my-nick (or body "")))))
(defun interesting-message-p (message)
(typep message '(or irc:irc-privmsg-message irc:irc-notice-message irc:irc-topic-message irc:irc-kick-message irc:ctcp-action-message)))
@@ -411,8 +411,7 @@
(make-instance message-type
:received-time (get-universal-time)
:connection :local
- :trailing-argument trailing-argument
- :arguments arguments
+ :arguments `(,@arguments ,trailing-argument)
:command command
:HOST "localhost"
:USER "localuser"
@@ -788,15 +787,15 @@
nil) ;### put the server you initially connected to here.
(defmethod trailing-argument* (message)
- (irc:trailing-argument message))
+ (car (last (irc:arguments message))))
(defmethod trailing-argument* ((message cl-irc:ctcp-action-message))
(or
(ignore-errors ;###
- (let ((p1 (position #\space (irc:trailing-argument message))))
- (subseq (irc:trailing-argument message)
+ (let ((p1 (position #\space (car (last (irc:arguments message))))))
+ (subseq (car (last (irc:arguments message)))
(1+ p1)
- (1- (length (irc:trailing-argument message))))))
+ (1- (length (car (last (irc:arguments message))))))))
"#Garbage parsing message#"))
(defmethod process-message (*application-frame* (message cl-irc:ctcp-action-message))
--- /project/beirc/cvsroot/beirc/message-display.lisp 2006/02/16 23:46:57 1.31
+++ /project/beirc/cvsroot/beirc/message-display.lisp 2006/02/22 16:30:50 1.32
@@ -1,5 +1,8 @@
(in-package :beirc)
+(declaim (optimize (debug 2) (speed 0)
+ (space 0)))
+
(defvar *max-preamble-length* 0)
(define-presentation-type url ()
@@ -29,6 +32,7 @@
(member (irc:source message) (focused-nicks receiver) :test #'string=))
(defun message-from-ignored-nick-p (message receiver)
+ (declare (ignore receiver))
(member (irc:source message) (slot-value *application-frame* 'ignored-nicks)
:test #'string=))
@@ -136,11 +140,12 @@
(with-text-face
(*standard-output*
(if (message-from-focused-nick-p message receiver) :bold :roman))
- (formatting-message (t message receiver)
- ((write-string start-string *standard-output*)
- (present (irc:source message) 'unhighlighted-nickname)
- (write-string end-string *standard-output*))
- ((format-message* (irc:trailing-argument message))))))))
+ (irc:destructuring-arguments (&last body) message
+ (formatting-message (t message receiver)
+ ((write-string start-string *standard-output*)
+ (present (irc:source message) 'unhighlighted-nickname)
+ (write-string end-string *standard-output*))
+ ((format-message* body))))))))
(defmethod print-message ((message irc:IRC-PRIVMSG-MESSAGE) receiver)
(print-privmsg-like-message message receiver "<" ">"))
@@ -149,13 +154,13 @@
(print-privmsg-like-message message receiver "-" "-"))
(defmethod print-message ((message irc:ctcp-action-message) receiver)
- (let ((source (cl-irc:source message))
- (matter (trailing-argument* message)))
+ (let ((source (cl-irc:source message)))
(formatting-message (t message receiver)
- ((format t "*"))
- ((present source 'unhighlighted-nickname)
- (format t " ")
- (format-message* matter :start-length (+ 2 (length source)))))))
+ ((format t "*"))
+ ((present source 'unhighlighted-nickname)
+ (format t " ")
+ (format-message* (trailing-argument* message)
+ :start-length (+ 2 (length source)))))))
(defmethod print-message ((message irc:ctcp-version-message) receiver)
(let ((source (cl-irc:source message)))
@@ -173,14 +178,13 @@
,@(loop for (message-type . message-name) in message-specs
collect
`(defmethod print-message ((message ,message-type) receiver)
- (formatting-message (t message receiver)
- ((format t "~A" (irc:source message)))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format-message*
- (format nil "~@[~A: ~]~{~A ~}~A"
- ,message-name
- (cdr (irc:arguments message))
- (irc:trailing-argument message)))))))))))
+ (irc:destructuring-arguments (_ &rest arguments &last body) message
+ (declare (ignore _))
+ (formatting-message (t message receiver)
+ ((format t "~A" (irc:source message)))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (format-message*
+ (format nil "~@[~A: ~]~{~A ~}~A" ,message-name (butlast arguments) body)))))))))))
(define-server-message-printer ((irc:irc-rpl_motd-message . "MODT")
(irc:irc-rpl_motdstart-message . "MOTD")
(irc:irc-rpl_isupport-message)
@@ -204,37 +208,25 @@
(irc:irc-rpl_noaway-message)
(irc:irc-rpl_unaway-message))))
-(defmethod print-message ((message irc:irc-rpl_isupport-message) receiver)
- (formatting-message (t message receiver)
- ((format t "~A" (irc:source message)))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format t "MOTD: ~A" (irc:trailing-argument message))))))
-
-(defmethod print-message ((message irc:irc-rpl_motd-message) receiver)
- (formatting-message (t message receiver)
- ((format t "~A" (irc:source message)))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format t "MOTD: ~A" (irc:trailing-argument message))))))
-
(defmethod print-message (message receiver)
- (formatting-message (t message receiver)
- ((format t "!!! ~A" (irc:source message)))
- ((with-drawing-options (*standard-output* :ink +red+ :text-size :small)
- (format t "~A ~A :~A" (irc:command message)
- (irc:arguments message)
- (irc:trailing-argument message))))))
+ (irc:destructuring-arguments (&whole args &last body) message
+ (formatting-message (t message receiver)
+ ((format t "!!! ~A" (irc:source message)))
+ ((with-drawing-options (*standard-output* :ink +red+ :text-size :small)
+ (format t "~A ~A :~A" (irc:command message) (butlast args) body))))))
;;; user-related messages
(defmethod print-message ((message irc:irc-quit-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format t "Quit: ")
- (present (irc:source message) 'nickname)
- (format t ": ")
- (format-message* (irc:trailing-argument message)
- :start-length (+ 8 (length (irc:source message))))))))
+ (irc:destructuring-arguments (&optional body) message
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (format t "Quit: ")
+ (present (irc:source message) 'nickname)
+ (unless (null body)
+ (format t ": ")
+ (format-message* body :start-length (+ 8 (length (irc:source message))))))))))
(defun present-as-hostmask (user host)
(write-char #\()
@@ -243,61 +235,66 @@
(write-char #\)))
(defmethod print-message ((message irc:irc-nick-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format t "Nick change: ")
- (present (irc:source message) 'nickname)
- (write-string " ")
- (present-as-hostmask (irc:user message) (irc:host message))
- (write-string " is now known as ")
- (present (irc:trailing-argument message) 'nickname)))))
+ (irc:destructuring-arguments (&last body) message
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (format t "Nick change: ")
+ (present (irc:source message) 'nickname)
+ (write-string " ")
+ (present-as-hostmask (irc:user message) (irc:host message))
+ (write-string " is now known as ")
+ (present body 'nickname))))))
(defmethod print-message ((message irc:irc-rpl_whoisuser-message) receiver)
(formatting-message (t message receiver)
((format t " "))
((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (destructuring-bind (me nickname user host &rest args) (irc:arguments message)
- (declare (ignore me args))
+ (irc:destructuring-arguments (me nickname user host &last ircname) message
+ (declare (ignore me))
(present nickname 'nickname)
(format t " is ")
(present-as-hostmask user host)
- (format t " (~A)" (irc:trailing-argument message)))))))
+ (format t " (~A)" ircname))))))
(defmethod print-message ((message irc:irc-rpl_whoischannels-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (present (second (irc:arguments message)) 'nickname)
- (format-message* (format nil " is in ~A" (irc:trailing-argument message))
- :start-length (length (second (irc:arguments message))))))))
+ (irc:destructuring-arguments (me nickname &last body) message
+ (declare (ignore me))
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (present nickname 'nickname)
+ (format-message* (format nil " is in ~A" body) :start-length (length nickname)))))))
(defmethod print-message ((message irc:irc-rpl_whoisserver-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (present (second (irc:arguments message)) 'nickname)
- (format-message* (format nil " is on ~A: ~A"
- (third (irc:arguments message))
- (irc:trailing-argument message))
- :start-length (length (second (irc:arguments message))))))))
+ (irc:destructuring-arguments (me nickname server &last server-callout) message
+ (declare (ignore me))
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (present nickname 'nickname)
+ (format-message* (format nil " is on ~A: ~A" server server-callout)
+ :start-length (length nickname)))))))
(defmethod print-message ((message irc:irc-rpl_away-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (present (second (irc:arguments message)) 'nickname)
- (format-message* (format nil " is away: ~A" (irc:trailing-argument message))
- :start-length (length (second (irc:arguments message))))))))
+ (irc:destructuring-arguments (me nickname &last away-msg) message
+ (declare (ignore me))
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (present nickname 'nickname)
+ (format-message* (format nil " is away: ~A" away-msg)
+ :start-length (length (second (irc:arguments message)))))))))
(defmethod print-message ((message irc:irc-rpl_whoisidentified-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (present (second (irc:arguments message)) 'nickname)
- (write-char #\Space)
- (format-message* (irc:trailing-argument message)
- :start-length (length (second (irc:arguments message))))))))
+ (irc:destructuring-arguments (me nickname body) message
+ (declare (ignore me))
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (present nickname 'nickname)
+ (write-char #\Space)
+ (format-message* body :start-length (length (second (irc:arguments message)))))))))
;;; channel management messages
@@ -305,20 +302,22 @@
(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)))))))
+ (irc:destructuring-arguments (me target &rest rest) message
+ (declare (ignore me rest))
+ (let* ((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 +red3+ :text-size :small)
- (format-message* (format nil "Not permitted: ~A" (irc:trailing-argument message)))))))
+ (irc:destructuring-arguments (&last body) message
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +red3+ :text-size :small)
+ (format-message* (format nil "Not permitted: ~A" body)))))))
(defun print-topic (receiver message sender channel topic)
(formatting-message (t message receiver)
@@ -331,38 +330,41 @@
(format-message* (format nil " set the topic for ~A to ~A" channel topic))))))))
(defmethod print-message ((message irc:irc-topic-message) receiver)
- (print-topic receiver message (irc:source message)
- (first (irc:arguments message)) (irc:trailing-argument message)))
+ (irc:destructuring-arguments (channel &last topic) message
+ (print-topic receiver message (irc:source message) channel topic)))
(defmethod print-message ((message irc:irc-rpl_topic-message) receiver)
- (print-topic receiver message nil
- (second (irc:arguments message)) (irc:trailing-argument message)))
+ (irc:destructuring-arguments (channel &last topic) message
+ (print-topic receiver message nil channel topic)))
(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)
+ (irc:destructuring-arguments (me channel who time) 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)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format-message* (format nil "~A Names: ~A" (third (irc:arguments message))
- (irc:trailing-argument message)))))))
+ (irc:destructuring-arguments (me privacy channel &last nicks) message
+ (declare (ignore me privacy))
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (format-message* (format nil "~A Names: ~A" channel nicks)))))))
(defmethod print-message ((message irc:irc-part-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format t "Part: ")
- (present (irc:source message) 'nickname)
- (format-message* (format nil " left ~A: ~A" (first (irc:arguments message))
- (irc:trailing-argument message)))))))
+ (irc:destructuring-arguments (channel &optional part-msg) message
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (format t "Part: ")
+ (present (irc:source message) 'nickname)
+ (format t " left ~A" channel)
+ (unless (null part-msg)
+ (format-message* (format nil ": ~A" part-msg))))))))
(defmethod print-message ((message irc:irc-join-message) receiver)
(formatting-message (t message receiver)
@@ -374,15 +376,17 @@
(present-as-hostmask (irc:user message) (irc:host message))))))
(defmethod print-message ((message irc:irc-kick-message) receiver)
- (formatting-message (t message receiver)
- ((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (present (irc:source message) 'nickname)
- (write-string " kicked ")
- (present (second (irc:arguments message)) 'nickname)
- (format-message* (format nil ": ~A" (irc:trailing-argument message))
- :start-length (+ 9 (length (second (irc:arguments message)))
- (length (irc:source message))))))))
+ (irc:destructuring-arguments (channel victim &optional kick-msg) message
+ (declare (ignore channel))
+ (formatting-message (t message receiver)
+ ((format t " "))
+ ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (present (irc:source message) 'nickname)
+ (write-string " kicked ")
+ (present victim 'nickname)
+ (unless (null kick-msg)
+ (format-message* (format nil ": ~A" kick-msg)
+ :start-length (+ 9 (length victim) (length (irc:source message))))))))))
;;; XXX: uses unexported symbols from cl-irc, but I think their
;;; unexportedness is accidental.
@@ -422,12 +426,12 @@
(case (length (irc:arguments message))
(1 (formatting-message (t message receiver)
((format t " "))
- ((with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
- (format-message* (format nil "~A set mode ~A ~A" (irc:source message)
- (irc:trailing-argument message)
- (first (irc:arguments message))))))))
+ ((irc:destructuring-arguments (channel 1c-mode) message
+ (with-drawing-options (*standard-output* :ink +gray33+ :text-size :small)
+ (format-message* (format nil "~A set mode ~A ~A" (irc:source message)
+ channel 1c-mode)))))))
(t
- (destructuring-bind (target &rest args) (irc:arguments message)
+ (irc:destructuring-arguments (target &rest args) message
(let* ((connection (current-connection *application-frame*))
(target (or (irc:find-user connection target)
(irc:find-channel connection target)))
--- /project/beirc/cvsroot/beirc/receivers.lisp 2006/02/16 23:46:57 1.15
+++ /project/beirc/cvsroot/beirc/receivers.lisp 2006/02/22 16:30:50 1.16
@@ -55,7 +55,8 @@
(setf (slot-value receiver 'tab-pane)
(make-tab-pane-from-list (title receiver) (pane receiver) 'receiver-pane))
(add-pane (tab-pane receiver) (find-pane-named frame 'query))
- ;; resize the pane to fit the tab container change-space-requirements pane)))
+ ;; resize the pane to fit the tab container
+ (change-space-requirements pane)))
(setf (gethash (tab-pane receiver) (tab-panes-to-receivers frame)) receiver))
(defun find-receiver (name frame)
@@ -146,7 +147,7 @@
(macrolet ((define-nth-arg-message-receiver-lookup (&rest clauses)
"Defines receiver-for-message methods that return
the receiver associated with the nth arg of the
- irc message or the trailing arg if NTH in the
+ irc message or the last arg if NTH in the
clauses is nil.
Each clause must have this format:
@@ -158,7 +159,7 @@
`(defmethod receiver-for-message ((message ,message-type) frame)
(let ((target ,(if (numberp nth)
`(nth ,nth (irc:arguments message))
- `(irc:trailing-argument message))))
+ `(first (last (irc:arguments message))))))
(intern-receiver target frame :channel target))))))))
(define-nth-arg-message-receiver-lookup
(0 irc:irc-topic-message irc:irc-kick-message)