@cindex disconnect from a channel
@cindex stop talking on a channel
@cindex kill channel buffer
-This leaves the current channel. You can optionally provide a reason
-for parting. When you kill a channel buffer, you automatically part the
-corresponding channel. (Also @code{/part you are too weird!}.)
+This leaves the current channel. You can optionally provide a
+different channel name and reason for parting. When you kill a
+channel buffer, you automatically part the corresponding channel.
+(Also @code{/part #emacs you are too weird!}.)
@item C-c C-r
@kindex C-c C-r
(read-string "Channel: "))))
(rcirc-send-string process (concat "INVITE " nick-channel)))
-;; TODO: /part #channel reason, or consider removing #channel altogether
(defun-rcirc-command part (channel)
- "Part CHANNEL."
+ "Part CHANNEL.
+CHANNEL should be a string of the form \"#CHANNEL-NAME REASON\".
+If omitted, CHANNEL-NAME defaults to TARGET, and REASON defaults
+to `rcirc-id-string'."
(interactive "sPart channel: ")
- (let ((channel (if (> (length channel) 0) channel target)))
- (rcirc-send-string process (concat "PART " channel " :" rcirc-id-string))))
+ (let ((channel (if (> (length channel) 0) channel target))
+ (msg rcirc-id-string))
+ (when (string-match "\\`\\([&#+!]\\S-+\\)?\\s-*\\(.+\\)?\\'" channel)
+ (when (match-beginning 2)
+ (setq msg (match-string 2 channel)))
+ (setq channel (if (match-beginning 1)
+ (match-string 1 channel)
+ target)))
+ (rcirc-send-string process (concat "PART " channel " :" msg))))
(defun-rcirc-command quit (reason)
"Send a quit message to server with REASON."