;;; Channel movement:
(defun riece-command-switch-to-channel (channel)
(interactive (list (riece-completing-read-identity
- "Channel/User: " riece-current-channels nil t)))
+ "Switch to channel/user: "
+ riece-current-channels nil t)))
(unless (equal channel riece-current-channel)
(riece-switch-to-channel channel)))
(let ((command-name (symbol-name this-command)))
(if (string-match "[0-9]+$" command-name)
(list (string-to-number (match-string 0 command-name)))
- (list (string-to-number (read-string "Number: "))))))
+ (list (string-to-number (read-string "Switch to number: "))))))
(let ((channel (nth (1- number) riece-current-channels)))
(if channel
(riece-command-switch-to-channel channel)
(defun riece-command-change-layout (name)
"Select a layout-name from all current available layouts and change
the layout to the selected layout-name."
- (interactive (list (completing-read "Layout: " riece-layout-alist)))
+ (interactive (list (completing-read "Change layout: " riece-layout-alist)))
(setq riece-layout name
riece-save-variables-are-dirty t)
(riece-command-configure-windows))
(interactive
(let* ((completion-ignore-case t)
(user (riece-completing-read-identity
- "User: "
- (riece-get-users-on-server (riece-current-server-name)))))
+ "Finger user: "
+ (riece-get-users-on-server (riece-current-server-name))
+ nil nil nil nil nil t)))
(list user current-prefix-arg)))
(if recurse
(riece-send-string (format "WHOIS %s %s\r\n"
(progn
(riece-check-channel-commands-are-usable t)
(list (read-from-minibuffer
- "Topic: " (cons (or (riece-with-server-buffer
- (riece-identity-server
- riece-current-channel)
- (riece-channel-get-topic
- (riece-identity-prefix
- riece-current-channel)))
- "")
- 0)))))
+ "Set topic: " (cons (or (riece-with-server-buffer
+ (riece-identity-server
+ riece-current-channel)
+ (riece-channel-get-topic
+ (riece-identity-prefix
+ riece-current-channel)))
+ "")
+ 0)))))
(riece-send-string (format "TOPIC %s :%s\r\n"
(riece-identity-prefix riece-current-channel)
topic)))
(let ((completion-ignore-case t))
(riece-check-channel-commands-are-usable t)
(list (riece-completing-read-identity
- "User: "
- (riece-get-users-on-server (riece-current-server-name))))))
+ "Invite user: "
+ (riece-get-users-on-server (riece-current-server-name))
+ nil nil nil nil nil t))))
(riece-send-string (format "INVITE %s %s\r\n"
(riece-identity-prefix user)
(riece-identity-prefix riece-current-channel))))
(let ((completion-ignore-case t))
(riece-check-channel-commands-are-usable t)
(list (completing-read
- "User: "
+ "Kick user: "
(riece-with-server-buffer
(riece-identity-server riece-current-channel)
(riece-channel-get-users (riece-identity-prefix
(interactive
(let ((completion-ignore-case t))
(list (read-from-minibuffer
- "Pattern: "
+ "NAMES pattern: "
(if (and riece-current-channel
(riece-channel-p (riece-identity-prefix
riece-current-channel)))
(interactive
(let ((completion-ignore-case t))
(list (read-from-minibuffer
- "Pattern: "
+ "WHO pattern: "
(if (and riece-current-channel
(riece-channel-p (riece-identity-prefix
riece-current-channel)))
(interactive
(let ((completion-ignore-case t))
(list (read-from-minibuffer
- "Pattern: "
+ "LIST pattern: "
(if (and riece-current-channel
(riece-channel-p (riece-identity-prefix
riece-current-channel)))
(channel
(if current-prefix-arg
(riece-completing-read-identity
- "Channel/User: "
- (riece-get-identities-on-server (riece-current-server-name)))
+ "Change mode for channel/user: "
+ (riece-get-identities-on-server (riece-current-server-name))
+ nil nil nil nil nil t)
(riece-check-channel-commands-are-usable t)
riece-current-channel))
(riece-overriding-server-name (riece-identity-server channel))
(concat (riece-concat-channel-modes
channel "Mode (? for help)") ": ")
nil riece-minibuffer-map))))
- (riece-send-string (format "MODE %s :%s\r\n" (riece-identity-prefix channel)
- change)))
+ (if (equal change "")
+ (riece-send-string (format "MODE %s\r\n"
+ (riece-identity-prefix channel)))
+ (riece-send-string (format "MODE %s %s\r\n"
+ (riece-identity-prefix channel)
+ change))))
(defun riece-command-set-operators (users &optional arg)
(interactive
(riece-check-channel-commands-are-usable t)
(let ((completion-ignore-case t))
(list (riece-completing-read-multiple
- "Users"
+ (if current-prefix-arg
+ "Unset +o for users"
+ "Set +o for users")
(riece-with-server-buffer
(riece-identity-server riece-current-channel)
(riece-channel-get-users (riece-identity-prefix
(riece-check-channel-commands-are-usable t)
(let ((completion-ignore-case t))
(list (riece-completing-read-multiple
- "Users"
+ (if current-prefix-arg
+ "Unset +v for users"
+ "Set +v for users")
(riece-with-server-buffer
(riece-identity-server riece-current-channel)
(riece-channel-get-users (riece-identity-prefix
(defun riece-command-send-message (message notice)
"Send MESSAGE to the current channel."
+ (run-hooks 'riece-command-send-message-hook)
(if (equal message "")
(error "No text to send"))
(riece-check-channel-commands-are-usable)
(defun riece-command-enter-message-to-user (user)
"Send the current line to USER."
(interactive
- (let ((completion-ignore-case t))
- (list (riece-completing-read-identity
- "User: "
- (riece-get-users-on-server (riece-current-server-name))))))
+ (if (and (bolp) (eolp))
+ (error "No text to send")
+ (let ((completion-ignore-case t))
+ (list (riece-completing-read-identity
+ "Message to user: "
+ (riece-get-users-on-server (riece-current-server-name))
+ nil nil nil nil nil t)))))
(let ((text (buffer-substring
(riece-line-beginning-position)
(riece-line-end-position))))
(let ((default (riece-format-identity
riece-join-channel-candidate)))
(riece-completing-read-identity
- (format "Channel/User (default %s): " default)
+ (format "Join channel/user (default %s): " default)
(riece-get-identities-on-server (riece-current-server-name))
nil nil nil nil default))
(riece-completing-read-identity
- "Channel/User: "
+ "Join channel/user: "
(riece-get-identities-on-server (riece-current-server-name)))))
key)
(if (and current-prefix-arg
(let* ((completion-ignore-case t)
(target
(riece-completing-read-identity
- (format "Channel/User (default %s): "
+ (format "Part from channel/user (default %s): "
(riece-format-identity riece-current-channel))
riece-current-channels nil nil nil nil
(riece-format-identity riece-current-channel)))
(defun riece-command-quit (&optional arg)
"Quit IRC."
(interactive "P")
- (if (y-or-n-p "Really quit IRC? ")
- (if riece-server-process-alist
- (let ((message
- (if arg
- (read-string "Message: ")
- riece-quit-message))
- (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))))
+ (if (null riece-server-process-alist)
+ (progn
+ (message "No server process")
+ (ding))
+ (if (y-or-n-p "Really quit IRC? ")
+ (let ((message
+ (if arg
+ (read-string "Message: ")
+ riece-quit-message))
+ (alist riece-server-process-alist))
+ (while alist
+ (riece-quit-server-process (cdr (car alist)) message)
+ (setq alist (cdr alist)))))))
(defun riece-command-raw (command)
"Enter raw IRC command, which is sent to the server."
(interactive "sIRC command: ")
(riece-send-string (concat command "\r\n")))
+(defun riece-command-beginning-of-buffer ()
+ "Scroll channel buffer to the beginning."
+ (interactive)
+ (let (buffer window)
+ (setq buffer (if riece-channel-buffer-mode
+ riece-channel-buffer
+ riece-dialogue-buffer))
+ (or (setq window (get-buffer-window buffer))
+ (setq window (get-buffer-window riece-dialogue-buffer)
+ buffer riece-dialogue-buffer))
+ (when window
+ (save-selected-window
+ (select-window window)
+ (goto-char (point-min))))))
+
(defun riece-command-end-of-buffer ()
- "Get end of the dialogue buffer."
+ "Scroll channel buffer to the end."
(interactive)
(let (buffer window)
(setq buffer (if riece-channel-buffer-mode
(interactive "r")
(kill-new (buffer-substring-no-properties start end)))
+(defun riece-command-complete-user ()
+ "Complete a user name in the current buffer."
+ (interactive)
+ (let* ((completion-ignore-case t)
+ (table (mapcar (lambda (user)
+ (list (riece-format-identity user t)))
+ (riece-get-users-on-server
+ (riece-current-server-name))))
+ (current (or (current-word) ""))
+ (completion (try-completion current table))
+ (all (all-completions current table)))
+ (if (eq completion t)
+ nil
+ (if (null completion)
+ (message "Can't find completion for \"%s\"" current)
+ (if (equal current completion)
+ (with-output-to-temp-buffer "*Help*"
+ (display-completion-list all))
+ (re-search-forward "\\>" nil t)
+ (delete-region (point) (- (point) (length current)))
+ (insert completion))))))
+
(defun riece-command-open-server (server-name)
(interactive
- (list (completing-read "Server: " riece-server-alist)))
+ (list (completing-read "Open server: " riece-server-alist)))
(if (riece-server-process server-name)
(error "%s is already opened" server-name))
(riece-open-server
(defun riece-command-close-server (server-name &optional message)
(interactive
- (list (completing-read "Server: " riece-server-process-alist)
+ (list (completing-read "Close server: " riece-server-process-alist)
(if current-prefix-arg
(read-string "Message: ")
riece-quit-message)))