+ ("001"
+ (let* ((params (murk-msg-params msg))
+ (nick (elt params 0))
+ (text (string-join (seq-drop params 1) " ")))
+ (murk-set-connection-nick server nick)
+ (murk-display-notice nil text)))
+
+ ((rx (= 3 (any digit)))
+ (murk-display-notice nil (mapconcat 'identity (cdr (murk-msg-params msg)) " ")))
+
+ ((and "JOIN"
+ (guard (equal (murk-connection-nick server)
+ (murk-msg-src msg))))
+ (let ((channel (car (murk-msg-params msg))))
+ (murk-add-context (list server channel))
+ (murk-display-notice (murk-current-context)
+ "Joining channel " channel " on " server)
+ (murk-render-prompt)))
+
+ ((and "PART"
+ (guard (equal (murk-connection-nick server)
+ (murk-msg-src msg))))
+ (let ((channel (car (murk-msg-params msg))))
+ (murk-display-notice (murk-current-context) "Left channel " channel)
+ (murk-remove-context (list server channel))
+ (murk-render-prompt)))
+
+ ("QUIT"
+ (let ((nick (murk-msg-src msg))
+ (reason (mapconcat 'identity (murk-msg-params msg) " ")))
+ (murk-del-user nick)
+ (if murk-show-joins
+ (murk-display-notice nil nick " quit: " reason))))
+