[cl-irc-devel] [PATCH] Add last argument to add-hook
Julien Danjou
julien at danjou.info
Tue Dec 25 17:50:48 UTC 2012
It can be useful to be able to run some hook in last, so let's add an option
do that.
---
protocol.lisp | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/protocol.lisp b/protocol.lisp
index 1c2ec19..cd5ddd7 100644
--- a/protocol.lisp
+++ b/protocol.lisp
@@ -198,7 +198,7 @@ connection.")
(defgeneric read-irc-message (connection))
(defgeneric send-irc-message (connection command &rest arguments))
(defgeneric get-hooks (connection class))
-(defgeneric add-hook (connection class hook))
+(defgeneric add-hook (connection class hook &optional last))
(defgeneric remove-hook (connection class hook))
(defgeneric remove-hooks (connection class))
(defgeneric remove-all-hooks (connection))
@@ -379,10 +379,13 @@ server, via the `connection'."
(gethash class (hooks connection)))
;;applies to both irc and dcc-connections
-(defmethod add-hook (connection class hook)
- "Add `hook' to `class'."
+(defmethod add-hook (connection class hook &optional last)
+ "Add `hook' to `class'.
+If `last' is not nil, put this hook last."
(setf (gethash class (hooks connection))
- (pushnew hook (gethash class (hooks connection)))))
+ (if last
+ (append (gethash class (hooks connection)) (list hook))
+ (pushnew hook (gethash class (hooks connection))))))
(defmethod remove-hook ((connection connection) class hook)
"Remove `hook' from `class'."
--
1.8.1.rc0
More information about the cl-irc-devel
mailing list