+(defun riece-alias-escape-alternate-separator (string)
+ (let ((index 0))
+ (while (string-match (regexp-quote riece-alias-alternate-separator)
+ string index)
+ (setq index (1+ (match-end 0))
+ string (replace-match (concat riece-alias-alternate-separator
+ riece-alias-alternate-separator)
+ nil t string)))
+ string))
+
+(defun riece-alias-abbrev-alternate-separator (string)
+ (if (string-match " " string)
+ (let ((prefix (substring string 0 (match-beginning 0)))
+ (server (substring string (match-end 0))))
+ (concat (riece-alias-escape-alternate-separator prefix)
+ riece-alias-alternate-separator
+ (riece-alias-escape-alternate-separator server)))
+ (riece-alias-escape-alternate-separator string)))
+
+(defun riece-alias-expand-alternate-separator (string)
+ (let ((index 0)
+ prefix
+ server)
+ (while (and (null prefix)
+ (string-match
+ (concat (regexp-quote riece-alias-alternate-separator)
+ (regexp-quote riece-alias-alternate-separator)
+ "\\|\\("
+ (regexp-quote riece-alias-alternate-separator)
+ "\\)")
+ string index))
+ (if (match-beginning 1) ;found a separator
+ (setq prefix (substring string 0 (match-beginning 1))
+ index (match-end 1))
+ (setq string (replace-match riece-alias-alternate-separator
+ nil t string)
+ index (- (match-end 0)
+ (length riece-alias-alternate-separator)))))
+ (if (null prefix)
+ string
+ (setq server (substring string index)
+ index 0)
+ (if (equal server "")
+ (while (string-match (regexp-quote
+ (concat riece-alias-alternate-separator
+ riece-alias-alternate-separator))
+ server index)
+ (setq server (replace-match riece-alias-alternate-separator
+ nil t server)
+ index (- (match-end 0)
+ (length riece-alias-alternate-separator))))
+ (concat prefix " " server)))))
+