;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Code:
(defun riece-command-configure-windows ()
(interactive)
+ "Reconfigure windows with the current layout."
(riece-redisplay-buffers t))
+(defun riece-command-suspend-resume ()
+ (interactive)
+ "Save or restore the current window configuration."
+ (let ((entry (assq 'riece-window-configuration (frame-parameters))))
+ (modify-frame-parameters (selected-frame)
+ (list (cons 'riece-window-configuration
+ (current-window-configuration))))
+ (if (cdr entry)
+ (set-window-configuration (cdr entry))
+ (delete-other-windows))
+ (message
+ (substitute-command-keys
+ "\\[riece-command-suspend-resume] to get back the last windows"))))
+
(defun riece-command-change-layout (name)
"Select a layout-name from all current available layouts and change
the layout to the selected layout-name."
riece-save-variables-are-dirty t)
(riece-command-configure-windows))
+(defun riece-command-toggle-others-buffer-mode ()
+ (interactive)
+ (setq riece-others-buffer-mode
+ (not riece-others-buffer-mode)
+ riece-save-variables-are-dirty t)
+ (riece-command-configure-windows))
+
(defun riece-command-toggle-user-list-buffer-mode ()
(interactive)
(setq riece-user-list-buffer-mode
0)))))
(riece-send-string (format "TOPIC %s :%s\r\n"
(riece-identity-prefix riece-current-channel)
- topic)))
+ topic)
+ riece-current-channel))
(defun riece-command-invite (user)
(interactive
"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-send-string (format "INVITE %s :%s\r\n"
(riece-identity-prefix user)
(riece-identity-prefix riece-current-channel))))
user message)
(format "KICK %s %s\r\n"
(riece-identity-prefix riece-current-channel)
- user))))
+ user))
+ riece-current-channel))
(defun riece-command-names (pattern)
(interactive
(riece-send-string
(format "NOTICE %s :%s\r\n"
(riece-identity-prefix riece-current-channel)
- message))
+ message)
+ riece-current-channel)
(riece-display-message
(riece-make-message (riece-current-nickname) riece-current-channel
message 'notice t)))
(riece-send-string
(format "PRIVMSG %s :%s\r\n"
(riece-identity-prefix riece-current-channel)
- message))
+ message)
+ riece-current-channel)
(riece-display-message
(riece-make-message (riece-current-nickname) riece-current-channel
message nil t))))
(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
- "Message to user: "
- (riece-get-users-on-server (riece-current-server-name))
- nil nil nil nil nil t))))
+ (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))))
(riece-send-string
- (format "PRIVMSG %s :%s\r\n" (riece-identity-prefix user) text))
+ (format "PRIVMSG %s :%s\r\n" (riece-identity-prefix user) text)
+ user)
(riece-display-message
(riece-make-message (riece-current-nickname) user text nil t)))
(let ((next-line-add-newlines t))
(next-line 1)))
(defun riece-command-join-channel (target key)
- (let ((process (riece-server-process (riece-identity-server target))))
- (unless process
- (error "%s" (substitute-command-keys
- "Type \\[riece-command-open-server] to open server.")))
- (riece-process-send-string process
- (if key
- (format "JOIN %s :%s\r\n"
- (riece-identity-prefix target)
- key)
- (format "JOIN %s\r\n"
- (riece-identity-prefix target))))))
+ (unless (riece-server-opened (riece-identity-server target))
+ (error "%s" (substitute-command-keys
+ "Type \\[riece-command-open-server] to open server.")))
+ (riece-send-string (if key
+ (format "JOIN %s :%s\r\n"
+ (riece-identity-prefix target)
+ key)
+ (format "JOIN %s\r\n"
+ (riece-identity-prefix target)))
+ target))
(defun riece-command-join-partner (target)
(let ((pointer (riece-identity-member target riece-current-channels)))
(riece-join-channel target)
(riece-switch-to-channel target))))
-(defun riece-command-join (target &optional key)
+(defun riece-command-join (target)
(interactive
- (let* ((completion-ignore-case t)
- (target
- (if riece-join-channel-candidate
- (let ((default (riece-format-identity
- riece-join-channel-candidate)))
- (riece-completing-read-identity
- (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
- "Join channel/user: "
- (riece-get-identities-on-server (riece-current-server-name)))))
- key)
- (if (and current-prefix-arg
- (riece-channel-p (riece-identity-prefix target)))
- (setq key
- (riece-read-passwd (format "Key for %s: "
- (riece-format-identity target)))))
- (list target key)))
+ (let ((completion-ignore-case t))
+ (list
+ (if riece-join-channel-candidate
+ (let ((default (riece-format-identity
+ riece-join-channel-candidate)))
+ (riece-completing-read-identity
+ (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
+ "Join channel/user: "
+ (riece-get-identities-on-server (riece-current-server-name)))))))
(let ((pointer (riece-identity-member target riece-current-channels)))
(if pointer
(riece-command-switch-to-channel (car pointer))
(if (riece-channel-p (riece-identity-prefix target))
- (riece-command-join-channel target key)
+ (riece-command-join-channel target nil)
(riece-command-join-partner target)))))
(defun riece-command-part-channel (target message)
- (let ((process (riece-server-process (riece-identity-server target))))
- (riece-process-send-string process
- (if message
- (format "PART %s :%s\r\n"
- (riece-identity-prefix target)
- message)
- (format "PART %s\r\n"
- (riece-identity-prefix target))))))
+ (unless (riece-server-opened (riece-identity-server target))
+ (error "%s" (substitute-command-keys
+ "Type \\[riece-command-open-server] to open server.")))
+ (riece-send-string (if message
+ (format "PART %s :%s\r\n"
+ (riece-identity-prefix target)
+ message)
+ (format "PART %s\r\n"
+ (riece-identity-prefix target)))
+ target))
(defun riece-command-part (target &optional message)
(interactive
(riece-format-identity riece-current-channel))
riece-current-channels nil nil nil nil
(riece-format-identity riece-current-channel)))
- message)
- (if (and current-prefix-arg
- (riece-channel-p (riece-identity-prefix target)))
- (setq message (read-string "Message: ")))
+ (message
+ (if current-prefix-arg
+ (read-string "Message: ")
+ riece-part-message)))
(list target message))))
(if (riece-identity-member target riece-current-channels)
(if (riece-channel-p (riece-identity-prefix target))
(let ((message
(if arg
(read-string "Message: ")
- riece-quit-message))
+ riece-quit-message))
(alist riece-server-process-alist))
(while alist
(riece-quit-server-process (cdr (car alist)) message)
(list (riece-format-identity user t)))
(riece-get-users-on-server
(riece-current-server-name))))
- (current (current-word))
+ (current (or (current-word) ""))
(completion (try-completion current table))
(all (all-completions current table)))
(if (eq completion t)
(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))))))
(if current-prefix-arg
(read-string "Message: ")
riece-quit-message)))
- (riece-quit-server-process (riece-server-process server-name) message))
+ (let ((process (riece-server-process server-name)))
+ (unless process
+ (error "%s is not opened" server-name))
+ (riece-quit-server-process process message)))
(defun riece-command-universal-server-name-argument ()
(interactive)
(message "")
(call-interactively command)))
+(eval-when-compile
+ (autoload 'riece-save-variables-files "riece"))
+(defun riece-command-save-variables ()
+ "Save `riece-variables-file'."
+ (interactive)
+ (if (or riece-save-variables-are-dirty
+ (y-or-n-p "No changes made. Save anyway? "))
+ (riece-save-variables-files)))
+
(provide 'riece-commands)
;;; riece-commands.el ends here