-;;; riece-commands.el --- commands available in command buffer
+;;; riece-commands.el --- commands available in command buffer -*- lexical-binding: t -*-
;; Copyright (C) 1998-2003 Daiki Ueno
;; Author: Daiki Ueno <ueno@unixuser.org>
(require 'riece-message)
(require 'riece-mcat)
-(autoload 'derived-mode-class "derived")
-
;;; Channel movement:
(defun riece-command-switch-to-channel (channel)
(interactive (list (riece-completing-read-identity
(riece-command-switch-to-channel channel)
(error "No such channel!")))))
+(defun riece-command-reorder-channels ()
+ "Reorder channel list."
+ (interactive)
+ (let ((binding (mapcar
+ (lambda (channel)
+ (if channel
+ (riece-parse-identity channel)))
+ riece-default-channel-binding))
+ (pointer riece-current-channels)
+ channels)
+ (while pointer
+ (if (car pointer)
+ (setq channels (riece-identity-assign-binding (car pointer) channels
+ binding)))
+ (setq pointer (cdr pointer)))
+ (setq riece-current-channels channels)
+ (riece-emit-signal 'channel-list-changed)))
+
(defun riece-command-select-command-buffer ()
"Select the command buffer."
(interactive)
(defun riece-command-kick-with-ban (user pattern &optional message)
(interactive
- (let ((completion-ignore-case t))
+ (let ((completion-ignore-case t)
+ user)
(riece-check-channel-commands-are-usable t)
(riece-with-server-buffer (riece-identity-server riece-current-channel)
+ (setq user (completing-read
+ (riece-mcat "Kick user: ")
+ (riece-channel-get-users (riece-identity-prefix
+ riece-current-channel))))
(list
- (completing-read (riece-mcat "Kick user: ")
- (riece-channel-get-users (riece-identity-prefix
- riece-current-channel)))
- (completing-read (riece-mcat "Ban pattern: ")
- (mapcar
- (lambda (user)
- (list (concat (car user) "!"
- (riece-user-get-user-at-host
- (car user)))))
- users))
+ user
+ (read-from-minibuffer
+ (riece-mcat "Ban pattern: ")
+ (concat user "!" (riece-user-get-user-at-host user)))
(if current-prefix-arg
(read-string "Message: "))))))
(riece-send-string (format "MODE %s :+b %s\r\n"
"Really want to query LIST without argument? ")))
(riece-send-string (format "LIST %s\r\n" pattern))))
+(defvar riece-temp-minibuffer-message)
+(defvar riece-overriding-server-name)
(defun riece-command-change-mode (channel change)
(interactive
(let* ((completion-ignore-case t)
(riece-identity-prefix channel)
change))))
-(defun riece-command-set-operators (users &optional arg)
+(defun riece-command-set-operators (users &optional _arg)
(interactive
(progn
(riece-check-channel-commands-are-usable t)
(mapconcat #'identity (nreverse group) " ")))
(setq group nil)))))
-(defun riece-command-set-speakers (users &optional arg)
+(defun riece-command-set-speakers (users &optional _arg)
(interactive
(progn
(riece-check-channel-commands-are-usable t)
(riece-line-beginning-position)
(riece-line-end-position))
nil)
- (let ((next-line-add-newlines t))
- (next-line 1)))
+ (forward-line 1)
+ (when (eobp)
+ (insert "\n")))
+
(defun riece-command-enter-message-as-notice ()
"Send the current line to the current channel as NOTICE."
(riece-line-beginning-position)
(riece-line-end-position))
t)
- (let ((next-line-add-newlines t))
- (next-line 1)))
+ (forward-line 1)
+ (when (eobp)
+ (insert "\n")))
(defun riece-command-enter-message-to-user (user)
"Send the current line to USER."
user)
(riece-display-message
(riece-make-message (riece-current-nickname) user text nil t)))
- (let ((next-line-add-newlines t))
- (next-line 1)))
+ (forward-line 1)
+ (when (eobp)
+ (insert "\n")))
(defun riece-command-join-channel (target key)
(unless (riece-server-opened (riece-identity-server target))
(riece-join-channel target)
(riece-switch-to-channel target))))
-(defun riece-command-join (target)
+(defun riece-command-join (targets)
(interactive
- (let ((completion-ignore-case t))
+ (let ((completion-ignore-case t)
+ (candidates (mapcar (lambda (channel)
+ (list (riece-format-identity channel)))
+ (delq nil (riece-get-identities-on-server
+ (riece-current-server-name)))))
+ (default (if riece-join-channel-candidate
+ (riece-format-identity
+ riece-join-channel-candidate))))
(list
- (if riece-join-channel-candidate
- (let ((default (riece-format-identity
- riece-join-channel-candidate)))
- (riece-completing-read-identity
- (format (riece-mcat "Join channel/user (default %s): ") default)
- (riece-get-identities-on-server (riece-current-server-name))
- nil nil nil nil default))
- (riece-completing-read-identity
- (riece-mcat "Join channel/user: ")
- (riece-get-identities-on-server (riece-current-server-name)))))))
- (let ((pointer (riece-identity-member target riece-current-channels)))
- (if pointer
+ (mapcar #'riece-parse-identity
+ (riece-completing-read-multiple
+ (if default
+ (format (riece-mcat "Join channel/user (default %s)")
+ default)
+ (riece-mcat "Join channel/user"))
+ candidates nil nil nil nil default)))))
+ (let (pointer)
+ (if (and (= (length targets) 1)
+ (setq pointer (riece-identity-member (car targets)
+ riece-current-channels)))
(riece-command-switch-to-channel (car pointer))
- (if (riece-channel-p (riece-identity-prefix target))
- (riece-command-join-channel target nil)
- (riece-command-join-partner target)))))
+ (setq pointer targets)
+ (while pointer
+ (if (riece-channel-p (riece-identity-prefix (car pointer)))
+ (riece-command-join-channel (car pointer) nil)
+ (riece-command-join-partner (car pointer)))
+ (setq pointer (cdr pointer))))))
(defun riece-command-part-channel (target message)
(unless (riece-server-opened (riece-identity-server target))
"Prevent automatic scrolling of the dialogue window.
If prefix argument ARG is non-nil, toggle frozen status."
(interactive "P")
- (with-current-buffer (if (eq (derived-mode-class major-mode)
- 'riece-dialogue-mode)
+ (with-current-buffer (if (riece-derived-mode-p 'riece-dialogue-mode)
(current-buffer)
(if (and riece-channel-buffer-mode
riece-channel-buffer)
The difference from `riece-command-freeze' is that your messages are hidden.
If prefix argument ARG is non-nil, toggle frozen status."
(interactive "P")
- (with-current-buffer (if (eq (derived-mode-class major-mode)
- 'riece-dialogue-mode)
+ (with-current-buffer (if (riece-derived-mode-p 'riece-dialogue-mode)
(current-buffer)
(if (and riece-channel-buffer-mode
riece-channel-buffer)
(if (riece-server-process server-name)
(error "%s is already opened" server-name))
(riece-open-server
- (riece-server-name-to-server server-name)
+ (riece-server-name-to-server (if (equal server-name "")
+ riece-server
+ server-name))
server-name))
(defun riece-command-close-server (server-name &optional message)