X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-400.el;h=e469edf6d7a6eb565442743305cf5b0a732569ca;hp=5a45b66704ee77f54ff4a4d35267d4a99b7fe65c;hb=d080467e2726a99eecfa48a3153ba0a9d602ed4a;hpb=4b29776da15420296d4042f9433aab1430fabca6 diff --git a/lisp/riece-400.el b/lisp/riece-400.el index 5a45b66..e469edf 100644 --- a/lisp/riece-400.el +++ b/lisp/riece-400.el @@ -28,32 +28,61 @@ (require 'riece-misc) (eval-when-compile - (autoload 'riece-default-handle-numeric-reply "riece-filter")) + (autoload 'riece-default-handle-numeric-reply "riece-handle")) (defun riece-handle-default-400-message (prefix number name string) (riece-default-handle-numeric-reply riece-error-prefix prefix number name string)) +(defun riece-handle-read-string (prompt) + (condition-case nil + (let (inhibit-quit) + (read-string prompt)) + (quit + (ignore (message "%s" (concat prompt "Quit")))))) + (defun riece-handle-432-message (prefix number name string) "ERR_ERRONEUSNICKNAME \" :Erroneous nickname\"." - (riece-send-string - (format "NICK %s\r\n" - (read-string - (format "Erroneous nickname \"%s\". Choose a new one: " - (car (riece-split-parameters string))))))) + (let ((nickname + (riece-handle-read-string + (format "Erroneous nickname \"%s\". Choose a new one: " + (car (riece-split-parameters string)))))) + (if nickname + (riece-send-string (format "NICK %s\r\n" nickname))))) (defun riece-handle-433-message (prefix number name string) "ERR_NICKNAMEINUSE \" :Nickname is already in use\"." - (riece-send-string - (format "NICK %s\r\n" - (read-string - (format "Nickname \"%s\" already in use. Choose a new one: " - (car (riece-split-parameters string))))))) + (let ((nickname + (riece-handle-read-string + (format "Nickname \"%s\" already in use. Choose a new one: " + (car (riece-split-parameters string)))))) + (if nickname + (riece-send-string (format "NICK %s\r\n" nickname))))) (defun riece-handle-464-message (prefix number name string) "ERR_PASSWDMISMATCH \":Password incorrect\"." (message "Password incorrect from %s." prefix) (setq riece-reconnect-with-password t)) +(defun riece-handle-475-message (prefix number name string) + "ERR_BADCHANNELKEY \" :Cannot join channel (+k)\"." + (let* ((parameters (riece-split-parameters string)) + (channel-identity (riece-make-identity (car parameters) + riece-server-name)) + key) + (message "%s: %s" (car parameters) (nth 1 parameters)) + (setq key + (condition-case nil + (let (inhibit-quit) + (riece-read-passwd + (format "Key for %s: " + (riece-format-identity channel-identity t)))) + (quit + (message "Key for %s: Quit" + (riece-format-identity channel-identity t)) + 'quit))) + (unless (eq key 'quit) + (riece-command-join-channel channel-identity key)))) + (provide 'riece-400) ;;; riece-400.el ends here