(defun riece-command-switch-to-channel (channel)
(interactive (list (riece-completing-read-identity
"Channel/User: " riece-current-channels nil t)))
- (unless (equal channel riece-current-channels)
+ (unless (equal channel riece-current-channel)
(riece-switch-to-channel channel)
(riece-redisplay-buffers)))
(riece-check-channel-commands-are-usable t)
(list (completing-read
"User: "
- (mapcar #'list
- (riece-with-server-buffer
- (riece-identity-server riece-current-channel)
- (riece-channel-get-users
- (riece-identity-prefix riece-current-channel)))))
+ (riece-with-server-buffer
+ (riece-identity-server riece-current-channel)
+ (riece-channel-get-users (riece-identity-prefix
+ riece-current-channel))))
(if current-prefix-arg
(read-string "Message: ")))))
(riece-send-string
(channel
(if current-prefix-arg
(riece-completing-read-identity
- "Channel/User: " riece-current-channels)
+ "Channel/User: "
+ (riece-get-identities-on-server (riece-current-server-name)))
(riece-check-channel-commands-are-usable t)
riece-current-channel))
(riece-overriding-server-name (riece-identity-server channel))
(interactive
(progn
(riece-check-channel-commands-are-usable t)
- (let ((operators
- (riece-with-server-buffer
- (riece-identity-server riece-current-channel)
- (riece-channel-get-operators
- (riece-identity-prefix riece-current-channel))))
- (completion-ignore-case t)
- users)
- (if current-prefix-arg
- (setq users (riece-completing-read-multiple
- "Users"
- (mapcar #'list operators)))
- (setq users (riece-completing-read-multiple
- "Users"
- (delq nil (mapcar
- (lambda (user)
- (unless (member user operators)
- (list user)))
- (riece-with-server-buffer
- (riece-identity-server
- riece-current-channel)
- (riece-channel-get-users
- (riece-identity-prefix
- riece-current-channel))))))))
- (list users current-prefix-arg))))
+ (let ((completion-ignore-case t))
+ (list (riece-completing-read-multiple
+ "Users"
+ (riece-with-server-buffer
+ (riece-identity-server riece-current-channel)
+ (riece-channel-get-users (riece-identity-prefix
+ riece-current-channel)))
+ (if current-prefix-arg
+ (lambda (user)
+ (memq ?o (cdr user)))
+ (lambda (user)
+ (not (memq ?o (cdr user))))))
+ current-prefix-arg))))
(let (group)
(while users
(setq group (cons (car users) group)
users (cdr users))
- (if (or (= (length group) 3)
- (null users))
- (riece-send-string
- (format "MODE %s %c%s %s\r\n"
- (riece-identity-prefix riece-current-channel)
- (if current-prefix-arg
- ?-
- ?+)
- (make-string (length group) ?o)
- (mapconcat #'identity group " ")))))))
+ (when (or (= (length group) 3)
+ (null users))
+ (riece-send-string
+ (format "MODE %s %c%s %s\r\n"
+ (riece-identity-prefix riece-current-channel)
+ (if current-prefix-arg
+ ?-
+ ?+)
+ (make-string (length group) ?o)
+ (mapconcat #'identity group " ")))
+ (setq group nil)))))
(defun riece-command-set-speakers (users &optional arg)
(interactive
(progn
(riece-check-channel-commands-are-usable t)
- (let ((speakers
- (riece-with-server-buffer
- (riece-identity-server riece-current-channel)
- (riece-channel-get-speakers
- (riece-identity-prefix riece-current-channel))))
- (completion-ignore-case t)
- users)
- (if current-prefix-arg
- (setq users (riece-completing-read-multiple
- "Users"
- (mapcar #'list speakers)))
- (setq users (riece-completing-read-multiple
- "Users"
- (delq nil (mapcar
- (lambda (user)
- (unless (member user speakers)
- (list user)))
- (riece-with-server-buffer
- (riece-identity-server
- riece-current-channel)
- (riece-channel-get-users
- (riece-identity-prefix
- riece-current-channel))))))))
- (list users current-prefix-arg))))
+ (let ((completion-ignore-case t))
+ (list (riece-completing-read-multiple
+ "Users"
+ (riece-with-server-buffer
+ (riece-identity-server riece-current-channel)
+ (riece-channel-get-users (riece-identity-prefix
+ riece-current-channel)))
+ (if current-prefix-arg
+ (lambda (user)
+ (memq ?v (cdr user)))
+ (lambda (user)
+ (not (memq ?v (cdr user))))))
+ current-prefix-arg))))
(let (group)
(while users
(setq group (cons (car users) group)
users (cdr users))
- (if (or (= (length group) 3)
- (null users))
- (riece-send-string
- (format "MODE %s %c%s %s\r\n"
- (riece-identity-prefix riece-current-channel)
- (if current-prefix-arg
- ?-
- ?+)
- (make-string (length group) ?v)
- (mapconcat #'identity group " ")))))))
+ (when (or (= (length group) 3)
+ (null users))
+ (riece-send-string
+ (format "MODE %s %c%s %s\r\n"
+ (riece-identity-prefix riece-current-channel)
+ (if current-prefix-arg
+ ?-
+ ?+)
+ (make-string (length group) ?v)
+ (mapconcat #'identity group " ")))
+ (setq group nil)))))
(defun riece-command-send-message (message notice)
"Send MESSAGE to the current channel."
riece-join-channel-candidate)))
(riece-completing-read-identity
(format "Channel/User (default %s): " default)
- riece-current-channels nil nil nil nil default))
+ (riece-get-identities-on-server (riece-current-server-name))
+ nil nil nil nil default))
(riece-completing-read-identity
- "Channel/User: " riece-current-channels)))
+ "Channel/User: "
+ (riece-get-identities-on-server (riece-current-server-name)))))
key)
(if (and current-prefix-arg
(riece-channel-p (riece-identity-prefix target)))
(defun riece-command-scroll-down (lines)
"Scroll LINES down dialogue buffer from command buffer."
(interactive "P")
- (let ((other-window-scroll-buffer
- (if riece-channel-buffer-mode
- riece-channel-buffer
- riece-dialogue-buffer)))
- (when (get-buffer-window other-window-scroll-buffer)
- (condition-case nil
- (scroll-other-window-down lines)
- (beginning-of-buffer
- (message "Beginning of buffer"))))))
+ (let ((buffer (if (and riece-channel-buffer-mode
+ riece-current-channel)
+ riece-channel-buffer
+ riece-dialogue-buffer)))
+ (if (get-buffer-window buffer)
+ (condition-case nil
+ (let ((other-window-scroll-buffer buffer))
+ (scroll-other-window-down lines))
+ (beginning-of-buffer
+ (message "Beginning of buffer"))))))
(defun riece-command-scroll-up (lines)
"Scroll LINES up dialogue buffer from command buffer."
(interactive "P")
- (let* ((other-window-scroll-buffer
- (if riece-channel-buffer-mode
- riece-channel-buffer
- riece-dialogue-buffer)))
- (when (get-buffer-window other-window-scroll-buffer)
- (condition-case nil
- (scroll-other-window lines)
- (end-of-buffer
- (message "End of buffer"))))))
-
-(defun riece-command-nick-scroll-down (lines)
- "Scroll LINES down nick buffer from command buffer."
+ (let ((buffer (if (and riece-channel-buffer-mode
+ riece-current-channel)
+ riece-channel-buffer
+ riece-dialogue-buffer)))
+ (if (get-buffer-window buffer)
+ (condition-case nil
+ (let ((other-window-scroll-buffer buffer))
+ (scroll-other-window lines))
+ (end-of-buffer
+ (message "End of buffer"))))))
+
+(defun riece-command-user-list-scroll-down (lines)
+ "Scroll LINES down user list buffer from command buffer."
(interactive "P")
- (let ((other-window-scroll-buffer riece-user-list-buffer))
- (when (get-buffer-window other-window-scroll-buffer)
+ (if (get-buffer-window riece-user-list-buffer)
(condition-case nil
- (scroll-other-window-down lines)
+ (let ((other-window-scroll-buffer riece-user-list-buffer))
+ (scroll-other-window-down lines))
(beginning-of-buffer
- (message "Beginning of buffer"))))))
+ (message "Beginning of buffer")))))
-(defun riece-command-nick-scroll-up (lines)
- "Scroll LINES up nick buffer from command buffer."
+(defun riece-command-user-list-scroll-up (lines)
+ "Scroll LINES up user list buffer from command buffer."
(interactive "P")
- (let* ((other-window-scroll-buffer riece-user-list-buffer))
- (when (get-buffer-window other-window-scroll-buffer)
+ (if (get-buffer-window riece-user-list-buffer)
(condition-case nil
- (scroll-other-window lines)
+ (let ((other-window-scroll-buffer riece-user-list-buffer))
+ (scroll-other-window lines))
(end-of-buffer
- (message "End of buffer"))))))
+ (message "End of buffer")))))
(defun riece-command-toggle-away (&optional message)
"Mark yourself as being away."
(riece-update-status-indicators)
(force-mode-line-update t))
+(eval-when-compile
+ (autoload 'riece-exit "riece"))
(defun riece-command-quit (&optional arg)
"Quit IRC."
(interactive "P")
(if (y-or-n-p "Really quit IRC? ")
- (let ((message
- (if arg
- (read-string "Message: ")
- (or riece-quit-message
- (riece-extended-version))))
- (alist riece-server-process-alist))
- (while alist
- (riece-quit-server-process (cdr (car alist)) message)
- (setq alist (cdr alist))))))
+ (if riece-server-process-alist
+ (let ((message
+ (if arg
+ (read-string "Message: ")
+ (or riece-quit-message
+ (riece-extended-version))))
+ (alist riece-server-process-alist))
+ (while alist
+ (riece-quit-server-process (cdr (car alist)) message)
+ (setq alist (cdr alist))))
+ ;; If no server process is available, exit immediately.
+ (riece-exit))))
(defun riece-command-raw (command)
"Enter raw IRC command, which is sent to the server."