X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-alias.el;h=81362e7d6a18b616fa36ae6006fdff26fa3c6a52;hp=7b94277a1b1ac33b8809ebbb9e6618373af4d55d;hb=117f0f29b6ad99dd268d88c274d347a200001079;hpb=5f970d03127482e329b46ff75691a3d9fcc90179 diff --git a/lisp/riece-alias.el b/lisp/riece-alias.el index 7b94277..81362e7 100644 --- a/lisp/riece-alias.el +++ b/lisp/riece-alias.el @@ -50,9 +50,9 @@ :type 'boolean :group 'riece-alias) -(defcustom riece-alias-use-atmark nil - "If non-nil, use atmark to separate prefix and server." - :type 'boolean +(defcustom riece-alias-alternate-separator nil + "A string to separate prefix and server." + :type '(choice (const nil) string) :group 'riece-alias) (defcustom riece-alias-alist nil @@ -79,49 +79,64 @@ nil nil string) string)) -(defun riece-alias-escape-atmark (string) +(defun riece-alias-escape-alternate-separator (string) (let ((index 0)) - (while (string-match "@" string index) + (while (string-match (regexp-quote riece-alias-alternate-separator) + string index) (setq index (1+ (match-end 0)) - string (replace-match "@@" nil nil string))) + string (replace-match (concat riece-alias-alternate-separator + riece-alias-alternate-separator) + nil t string))) string)) -(defun riece-alias-abbrev-atmark (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-atmark prefix) "@" - (riece-alias-escape-atmark server))) - (riece-alias-escape-atmark string))) + (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-atmark (string) +(defun riece-alias-expand-alternate-separator (string) (let ((index 0) prefix - server - length) + server) (while (and (null prefix) - (string-match "@+" string index)) - (setq length (- (match-end 0) (match-beginning 0)) - string (replace-match (make-string (/ length 2) ?@) - nil nil string) - index (+ (match-beginning 0) (/ length 2))) - (unless (zerop (% length 2)) - (setq prefix (substring string 0 index)))) + (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 "@@" server index) - (setq server (replace-match "@" nil nil server) - index (1- (match-end 0)))) + (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))))) (defun riece-alias-abbrev-identity-string (string) (if riece-alias-enable-percent-hack (setq string (riece-alias-abbrev-percent-hack string))) - (if riece-alias-use-atmark - (setq string (riece-alias-abbrev-atmark string))) + (if riece-alias-alternate-separator + (setq string (riece-alias-abbrev-alternate-separator string))) (let ((alist riece-alias-alist)) (catch 'done (while alist @@ -131,17 +146,17 @@ string))) (defun riece-alias-expand-identity-string (string) - (if riece-alias-enable-percent-hack - (setq string (riece-alias-expand-percent-hack string))) - (if riece-alias-use-atmark - (setq string (riece-alias-expand-atmark string))) (let ((alist riece-alias-alist)) (catch 'done (while alist (if (equal (cdr (car alist)) string) (throw 'done (car (car alist)))) (setq alist (cdr alist))) - string))) + string)) + (if riece-alias-alternate-separator + (setq string (riece-alias-expand-alternate-separator string))) + (if riece-alias-enable-percent-hack + (setq string (riece-alias-expand-percent-hack string)))) (defun riece-alias-insinuate () )