"Return non-nil if an identity ELT is an element of LIST."
(catch 'found
(while list
- (if (and (vectorp (car list))
- (riece-identity-equal (car list) elt))
+ (if (riece-identity-equal (car list) elt)
(throw 'found list)
(setq list (cdr list))))))
take server names into account."
(catch 'found
(while list
- (if (and (vectorp (car list))
- (riece-identity-equal-no-server (car list) elt))
+ (if (riece-identity-equal-no-server (car list) elt)
(throw 'found list)
(setq list (cdr list))))))
(let ((prefix (riece-decode-coding-string
(riece-identity-prefix identity)))
(server (riece-identity-server identity)))
- (if (equal server "")
+ (if (or prefix-only (equal server ""))
prefix
(concat prefix " " server)))))
(riece-with-server-buffer server
(riece-make-identity (riece-encode-coding-string prefix) server))))
-(defun riece-completing-read-identity (prompt table
+(defun riece-completing-read-identity (prompt channels
&optional predicate must-match)
- (riece-encode-identity
- (completing-read
- prompt
- (mapcar (lambda (channel)
- (list (riece-decode-identity channel)))
- table)
- predicate must-match)))
+ (let* ((decoded
+ (completing-read
+ prompt
+ (delq nil (mapcar (lambda (channel)
+ (list (riece-decode-identity channel)))
+ (or channels riece-current-channels)))
+ predicate must-match))
+ (encoded
+ (riece-encode-identity decoded)))
+ (if (and (not (string-match "[ ,]" decoded))
+ (string-match "[ ,]" (riece-identity-prefix encoded))
+ (not (y-or-n-p (format "The encoded channel name contains illegal character \"%s\". continue? "
+ (match-string 0 (riece-identity-prefix encoded))))))
+ (error "Invalid channel name!"))
+ encoded))
(provide 'riece-identity)