X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-commands.el;h=f924e5142ecb4e343ca37ef0dcf56df92d70b333;hp=22d2755640e3d0dffd76aac70db589e0a7448598;hb=959667e06ff0b385e618faee300a08f4d3a36991;hpb=d2d5efa3884cc8eba9396e7c247ed02fe7295a80 diff --git a/lisp/riece-commands.el b/lisp/riece-commands.el index 22d2755..f924e51 100644 --- a/lisp/riece-commands.el +++ b/lisp/riece-commands.el @@ -19,8 +19,8 @@ ;; 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: @@ -112,8 +112,23 @@ (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." @@ -129,6 +144,13 @@ 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 @@ -172,7 +194,8 @@ the layout to the selected layout-name." 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 @@ -182,7 +205,7 @@ the layout to the selected layout-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-send-string (format "INVITE %s :%s\r\n" (riece-identity-prefix user) (riece-identity-prefix riece-current-channel)))) @@ -205,7 +228,8 @@ the layout to the selected layout-name." 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 @@ -363,14 +387,16 @@ the layout to the selected layout-name." (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)))) @@ -398,16 +424,19 @@ the layout to the selected layout-name." (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)) @@ -418,13 +447,13 @@ the layout to the selected layout-name." (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)))))) + (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))) @@ -433,43 +462,39 @@ the layout to the selected layout-name." (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 process + (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 @@ -482,10 +507,10 @@ the layout to the selected layout-name." (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)) @@ -614,7 +639,7 @@ If prefix argument ARG is non-nil, toggle frozen status." (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) @@ -668,7 +693,7 @@ If prefix argument ARG is non-nil, toggle frozen status." (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) @@ -678,6 +703,7 @@ If prefix argument ARG is non-nil, toggle frozen status." (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))))))