X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-commands.el;h=c242442052fb810ed6cb047e0c164745b9fd34b3;hp=0d42b6cca0c815b780d44e173298dadec49e0dd3;hb=c29e67d9775fc091a53a59d8fb315ef2e05bd46b;hpb=d70fffc24b829817f3da9da9363ca690dd862640 diff --git a/lisp/riece-commands.el b/lisp/riece-commands.el index 0d42b6c..c242442 100644 --- a/lisp/riece-commands.el +++ b/lisp/riece-commands.el @@ -38,7 +38,7 @@ (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))) @@ -189,11 +189,10 @@ the layout to the selected layout-name." (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 @@ -253,7 +252,8 @@ the layout to the selected layout-name." (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)) @@ -278,87 +278,67 @@ the layout to the selected layout-name." (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." @@ -449,9 +429,11 @@ the layout to the selected layout-name." 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))) @@ -507,48 +489,50 @@ the layout to the selected layout-name." (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." @@ -596,19 +580,24 @@ If prefix argument ARG is non-nil, toggle frozen status." (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."