The expression may reference the variable `pattern'
which will hold the string being completed.
If not on matching header, `mail-complete-function' gets called instead."
- :type 'sexp
+ :type 'alist
:group 'mailalias)
(put 'mail-complete-alist 'risky-local-variable t)
(t (setq file nil))))
(goto-char (point-min))
(while (re-search-forward
- "^\\(a\\|alias\\|g\\|group\\)[ \t]+\\([^ \t]+\\)" nil t)
+ "^\\(a\\|alias\\|g\\|group\\)[ \t]+\\([^ \t\n]+\\)" nil t)
(let* ((name (match-string 2))
- (start (progn (skip-chars-forward " \t") (point))))
+ (start (progn (skip-chars-forward " \t") (point)))
+ value)
(end-of-line)
- (define-mail-alias
- name
- (buffer-substring-no-properties start (point))
- t)))
+ (setq value (buffer-substring-no-properties start (point)))
+ (unless (equal value "")
+ (define-mail-alias name value t))))
mail-aliases)
(if buffer (kill-buffer buffer))
(set-buffer obuf))))
;; double-quotes. Otherwise, addresses are separated by commas.
(if from-mailrc-file
(if (eq ?\" (aref definition start))
- (progn (string-match "[^\\]\\(\\([\\][\\]\\)*\\)\"[ \t,]*" definition start)
- (setq start (1+ start)
- end (match-end 1)
- convert-backslash t))
+ ;; The following test on `found' compensates for a bug
+ ;; in match-end, which does not return nil when match
+ ;; failed.
+ (let ((found (string-match "[^\\]\\(\\([\\][\\]\\)*\\)\"[ \t,]*"
+ definition start)))
+ (setq start (1+ start)
+ end (and found (match-end 1))
+ convert-backslash t))
(setq end (string-match "[ \t,]+" definition start)))
(setq end (string-match "[ \t\n,]*,[ \t\n,]*" definition start)))
(let ((temp (substring definition start end))
(if (file-exists-p mail-personal-alias-file)
(build-mail-aliases))))
(let ((list mail-complete-alist))
- (if (and (> 0 (mail-header-end))
+ (if (and (< 0 (mail-header-end))
(save-excursion
(if (re-search-backward "^[^\t]" nil t)
(while list
(set-process-sentinel
(apply 'open-network-stream "mailalias" (current-buffer)
mail-directory-stream)
- (lambda (x x)
+ (lambda (x y)
(setq mailalias-done t)))
(while (not mailalias-done)
(sit-for .1))))