- (cond
- ((equal (lirc-msg-cmd msg) "PING")
- (lirc-send-msg
- (lirc-msg nil nil "PONG" (lirc-msg-params msg))))
- ((string-match (rx (= 3 digit)) (lirc-msg-cmd msg))
- (lirc-display-string (string-join (cdr (lirc-msg-params msg)) " ")))
- (t
- (lirc-display-string (lirc-msg->string msg))))))
+ (pcase (lirc-msg-cmd msg)
+ ("PING"
+ (lirc-send-msg
+ (lirc-msg nil nil "PONG" (lirc-msg-params msg))))
+ ;; ((rx (= 3 digit))
+ ;; (lirc-display-string (string-join (cdr (lirc-msg-params msg)) " ")))
+
+ ("353" ; NAMEREPLY
+ (let* ((params (lirc-msg-params msg))
+ (channel (elt params 2))
+ (names (split-string (elt params 3))))
+ (apply #'lirc-add-channel-users (cons channel names))))
+
+ ((and "JOIN"
+ (guard (equal lirc-nick (lirc-msg-src msg))))
+ (let ((channel (car (lirc-msg-params msg))))
+ (setq lirc-current-channel channel)
+ (lirc-add-channel channel)
+ (lirc-render-prompt)))
+
+ ("JOIN"
+ (let ((channel (car (lirc-msg-params msg)))
+ (nick (lirc-msg-src msg)))
+ (lirc-add-channel-users channel nick)))
+
+ ((and "PART"
+ (guard (equal lirc-nick (lirc-msg-src msg))))
+ (setq lirc-current-channel nil)
+ (lirc-del-channel (car (lirc-msg-params msg))))
+
+ ("PART"
+ (let ((channel (car (lirc-msg-params msg)))
+ (nick (lirc-msg-src msg)))
+ (lirc-del-channel-users channel nick)))
+
+ ((and "NICK"
+ (guard (equal lirc-nick (lirc-msg-src msg))))
+ (setq lirc-nick (car (lirc-msg-params msg)))
+ (lirc-display-string (concat "*** Set nick to " lirc-nick)))
+
+ ("PRIVMSG"
+ (let ((nick (lirc-msg-src msg))
+ (channel (car (lirc-msg-params msg)))
+ (text (cadr (lirc-msg-params msg))))
+ (lirc-display-string (concat channel " <" nick "> " text))))
+ (_
+ (lirc-display-string (lirc-msg->string msg))))))