list))
(defun riece-format-identity (identity &optional prefix-only)
+ "Convert IDENTITY object to a string.
+If the optional 2nd argument PREFIX-ONLY is non-nil, don't append
+server part of the identity.
+
+The returned string will be abbreviated by
+`riece-abbrev-identity-string-function', and `riece-identity' property
+will be added."
(let ((string
(if (or prefix-only
(equal (riece-identity-server identity) ""))
(concat (riece-identity-prefix identity) " "
(riece-identity-server identity)))))
(if riece-abbrev-identity-string-function
- (funcall riece-abbrev-identity-string-function string)
- string)))
+ (setq string (funcall riece-abbrev-identity-string-function string)))
+ (put-text-property 0 (length string) 'riece-identity identity string)
+ string))
(defun riece-parse-identity (string)
+ "Convert STRING to an identity object.
+The string will be expanded by
+`riece-expand-identity-string-function'."
(if riece-expand-identity-string-function
(setq string (funcall riece-expand-identity-string-function string)))
(riece-make-identity (if (string-match " " string)
"")))
(defun riece-completing-read-identity (prompt channels
- &optional predicate must-match
- initial)
+ &optional predicate require-match
+ initial history default)
+ "Read an identity object in the minibuffer, with completion.
+PROMPT is a string to prompt with; normally it ends in a colon and a space.
+CHANNELS is a list of identity objects.
+The rest of arguments are the same as `completing-read'."
(let* ((string
(completing-read
prompt
(list (riece-format-identity channel)))
(delq nil (copy-sequence (or channels
riece-current-channels))))
- predicate must-match initial))
+ predicate require-match initial history default))
(identity
(riece-parse-identity string)))
(unless (string-match (concat "^\\(" riece-channel-regexp "\\|"