annotate lisp/mail/mailalias.el @ 72550:666bd542be19

(get_window_cursor_type): Replace BOX cursor on images with a hollow box cursor if image is larger than 32x32 (or the default frame font if that is bigger). Replace any other cursor on images with hollow box cursor, as redisplay doesn't support bar and hbar cursors on images.
author Kim F. Storm <storm@cua.dk>
date Sun, 27 Aug 2006 22:23:07 +0000
parents 067115a6e738
children f7702c5f335d c5406394f567
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1 ;;; mailalias.el --- expand and complete mailing address aliases
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 474
diff changeset
2
64754
fafd692d1e40 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64085
diff changeset
3 ;; Copyright (C) 1985, 1987, 1995, 1996, 1997, 2002, 2003,
68648
067115a6e738 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 65117
diff changeset
4 ;; 2004, 2005, 2006 Free Software Foundation, Inc.
846
20674ae6bf52 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 811
diff changeset
5
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
6 ;; Maintainer: FSF
811
e694e0879463 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 807
diff changeset
7 ;; Keywords: mail
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
8
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
9 ;; This file is part of GNU Emacs.
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
10
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
12 ;; it under the terms of the GNU General Public License as published by
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
13 ;; the Free Software Foundation; either version 2, or (at your option)
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
14 ;; any later version.
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
15
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
16 ;; GNU Emacs is distributed in the hope that it will be useful,
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
19 ;; GNU General Public License for more details.
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
20
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
21 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14038
diff changeset
22 ;; along with GNU Emacs; see the file COPYING. If not, write to the
64085
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64036
diff changeset
23 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18a818a2ee7c Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64036
diff changeset
24 ;; Boston, MA 02110-1301, USA.
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
25
2307
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1448
diff changeset
26 ;;; Commentary:
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1448
diff changeset
27
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1448
diff changeset
28 ;; Basic functions for defining and expanding mail aliases.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1448
diff changeset
29 ;; These seal off the interface to the alias-definition parts of a
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1448
diff changeset
30 ;; .mailrc file formatted for BSD's Mail or USL's mailx.
10e417efb12a Added or corrected Commentary sections
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 1448
diff changeset
31
807
4f28bd14272c *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 659
diff changeset
32 ;;; Code:
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
33
8801
eee06aef6f56 Require sendmail. Delete redundant defvar.
Karl Heuer <kwzh@gnu.org>
parents: 8494
diff changeset
34 (require 'sendmail)
1448
99fb20ef1a17 (mail-aliases): Add definition here.
Richard M. Stallman <rms@gnu.org>
parents: 1434
diff changeset
35
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
36 (defgroup mailalias nil
64036
f76eec5e4eee (mailalias): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 62620
diff changeset
37 "Expanding mail aliases."
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
38 :group 'mail)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
39
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
40 (defcustom mail-passwd-files '("/etc/passwd")
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
41 "*List of files from which to determine valid user names."
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
42 :type '(repeat string)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
43 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
44
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
45 (defcustom mail-passwd-command nil
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
46 "*Shell command to retrieve text to add to `/etc/passwd', or nil."
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
47 :type '(choice string (const nil))
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
48 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
49
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
50 (defvar mail-directory-names t
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
51 "Alist of mail address directory entries.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
52 When t this still needs to be initialized.")
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
53
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
54 (defvar mail-address-field-regexp
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
55 "^\\(Resent-\\)?\\(To\\|From\\|CC\\|BCC\\|Reply-to\\):")
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
56
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
57 (defcustom mail-complete-alist
18607
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
58 ;; Don't use backquote here; we don't want backquote to get loaded
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
59 ;; just because of loading this file.
21752
122b15805e79 (mail-complete-alist): Don't refer to mail-address-field-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 20810
diff changeset
60 ;; Don't refer to mail-address-field-regexp here;
122b15805e79 (mail-complete-alist): Don't refer to mail-address-field-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 20810
diff changeset
61 ;; that confuses some things such as cus-dep.el.
122b15805e79 (mail-complete-alist): Don't refer to mail-address-field-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 20810
diff changeset
62 (cons '("^\\(Resent-\\)?\\(To\\|From\\|CC\\|BCC\\|Reply-to\\):"
122b15805e79 (mail-complete-alist): Don't refer to mail-address-field-regexp.
Richard M. Stallman <rms@gnu.org>
parents: 20810
diff changeset
63 . (mail-get-names pattern))
18607
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
64 '(("Newsgroups:" . (if (boundp 'gnus-active-hashtb)
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
65 gnus-active-hashtb
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
66 (if (boundp news-group-article-assoc)
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
67 news-group-article-assoc)))
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
68 ("Followup-To:" . (mail-sentto-newsgroups))
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
69 ;;("Distribution:" ???)
a7dd2801b909 (mail-complete-alist): Don't use backquote.
Richard M. Stallman <rms@gnu.org>
parents: 18168
diff changeset
70 ))
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
71 "*Alist of header field and expression to return alist for completion.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
72 The expression may reference the variable `pattern'
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
73 which will hold the string being completed.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
74 If not on matching header, `mail-complete-function' gets called instead."
24172
0e451bef1fe0 (mail-complete-alist): Use alist as customize
Andreas Schwab <schwab@suse.de>
parents: 23356
diff changeset
75 :type 'alist
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
76 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
77 (put 'mail-complete-alist 'risky-local-variable t)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
78
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
79 ;;;###autoload
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
80 (defcustom mail-complete-style 'angles
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
81 "*Specifies how \\[mail-complete] formats the full name when it completes.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
82 If `nil', they contain just the return address like:
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
83 king@grassland.com
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
84 If `parens', they look like:
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
85 king@grassland.com (Elvis Parsley)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
86 If `angles', they look like:
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
87 Elvis Parsley <king@grassland.com>"
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
88 :type '(choice (const angles) (const parens) (const nil))
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
89 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
90
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
91 (defcustom mail-complete-function 'ispell-complete-word
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
92 "*Function to call when completing outside `mail-complete-alist'-header."
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
93 :type '(choice function (const nil))
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
94 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
95
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
96 (defcustom mail-directory-function nil
50865
c29829b8ca9c (mail-directory-function, mail-directory-requery, mail-directory): Don't quote
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
97 "*Function to get completions from directory service or nil for none.
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
98 See `mail-directory-requery'."
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
99 :type '(choice function (const nil))
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
100 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
101
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
102 ;; This is for when the directory is huge, or changes frequently.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
103 (defcustom mail-directory-requery nil
50865
c29829b8ca9c (mail-directory-function, mail-directory-requery, mail-directory): Don't quote
Juanma Barranquero <lekktu@gmail.com>
parents: 49598
diff changeset
104 "*When non-nil call `mail-directory-function' for each completion.
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
105 In that case, one argument gets passed to the function, the partial string
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
106 entered so far."
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
107 :type 'boolean
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
108 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
109
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
110 (defcustom mail-directory-process nil
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
111 "*Shell command to get the list of names from a mail directory.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
112 This value is used when the value of `mail-directory-function'
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
113 is `mail-directory-process'. The value should be a list
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
114 of the form (COMMAND ARG ...), where each of the list elements
60964
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
115 is evaluated. COMMAND should evaluate to a string. When
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
116 `mail-directory-requery' is non-nil, during evaluation of these
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
117 elements, the variable `pattern' contains the partial input being
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
118 completed. `pattern' is nil when `mail-directory-requery' is nil.
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
119
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
120 The value might look like this:
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
121
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
122 '(remote-shell-program \"HOST\" \"-nl\" \"USER\" \"COMMAND\")
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
123
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
124 or like this:
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
125
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
126 '(remote-shell-program \"HOST\" \"-n\" \"COMMAND '^\" pattern \"'\")"
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
127 :type 'sexp
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
128 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
129 (put 'mail-directory-process 'risky-local-variable t)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
130
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
131 (defcustom mail-directory-stream nil
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
132 "*List of (HOST SERVICE) for stream connection to mail directory."
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
133 :type 'sexp
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
134 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
135 (put 'mail-directory-stream 'risky-local-variable t)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
136
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
137 (defcustom mail-directory-parser nil
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
138 "*How to interpret the output of `mail-directory-function'.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
139 Three types of values are possible:
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
140
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
141 - nil means to gather each line as one name
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
142 - regexp means first \\(grouping\\) in successive matches is name
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
143 - function called at beginning of buffer that returns an alist of names"
18168
0fa57e6872f0 (mail-directory-parser): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 18161
diff changeset
144 :type '(choice (const nil) regexp function)
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
145 :group 'mailalias)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
146 (put 'mail-directory-parser 'risky-local-variable t)
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
147
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
148 ;; Internal variables.
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
149
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
150 (defvar mail-names t
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
151 "Alist of local users, aliases and directory entries as available.
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
152 Elements have the form (MAILNAME) or (MAILNAME . FULLNAME).
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
153 If the value means t, it means the real value should be calculated
60964
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
154 for the next use. This is used in `mail-complete'.")
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
155
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
156 (defvar mail-local-names t
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
157 "Alist of local users.
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
158 When t this still needs to be initialized.")
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
159
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
160
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
161 ;; Called from sendmail-send-it, or similar functions,
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
162 ;; only if some mail aliases are defined.
17797
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
163 ;;;###autoload
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
164 (defun expand-mail-aliases (beg end &optional exclude)
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
165 "Expand all mail aliases in suitable header fields found between BEG and END.
21867
ccda1e80b153 (expand-mail-aliases): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21752
diff changeset
166 If interactive, expand in header fields.
11856
abf2dbc46f7d (expand-mail-aliases): Expand aliases in
Karl Heuer <kwzh@gnu.org>
parents: 11639
diff changeset
167 Suitable header fields are `To', `From', `CC' and `BCC', `Reply-to', and
abf2dbc46f7d (expand-mail-aliases): Expand aliases in
Karl Heuer <kwzh@gnu.org>
parents: 11639
diff changeset
168 their `Resent-' variants.
abf2dbc46f7d (expand-mail-aliases): Expand aliases in
Karl Heuer <kwzh@gnu.org>
parents: 11639
diff changeset
169
221
ce8e0192266e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 219
diff changeset
170 Optional second arg EXCLUDE may be a regular expression defining text to be
ce8e0192266e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 219
diff changeset
171 removed from alias expansions."
17797
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
172 (interactive
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
173 (save-excursion
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
174 (list (goto-char (point-min))
21867
ccda1e80b153 (expand-mail-aliases): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 21752
diff changeset
175 (mail-header-end))))
14038
49642146f16c (expand-mail-aliases, define-mail-alias): Fix calls to `sendmail-sync-aliases'
Karl Heuer <kwzh@gnu.org>
parents: 13653
diff changeset
176 (sendmail-sync-aliases)
17797
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
177 (when (eq mail-aliases t)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
178 (setq mail-aliases nil)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
179 (build-mail-aliases))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
180 (save-excursion
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
181 (goto-char beg)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
182 (setq end (set-marker (make-marker) end))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
183 (let ((case-fold-search nil))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
184 (while (let ((case-fold-search t))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
185 (re-search-forward mail-address-field-regexp end t))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
186 (skip-chars-forward " \t")
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
187 (let ((beg1 (point))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
188 end1 pos epos seplen
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
189 ;; DISABLED-ALIASES records aliases temporarily disabled
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
190 ;; while we scan text that resulted from expanding those aliases.
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
191 ;; Each element is (ALIAS . TILL-WHEN), where TILL-WHEN
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
192 ;; is where to reenable the alias (expressed as number of chars
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
193 ;; counting from END1).
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
194 (disabled-aliases nil))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
195 (re-search-forward "^[^ \t]" end 'move)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
196 (beginning-of-line)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
197 (skip-chars-backward " \t\n")
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
198 (setq end1 (point-marker))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
199 (goto-char beg1)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
200 (while (< (point) end1)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
201 (setq pos (point))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
202 ;; Reenable any aliases which were disabled for ranges
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
203 ;; that we have passed out of.
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
204 (while (and disabled-aliases
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
205 (> pos (- end1 (cdr (car disabled-aliases)))))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
206 (setq disabled-aliases (cdr disabled-aliases)))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
207 ;; EPOS gets position of end of next name;
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
208 ;; SEPLEN gets length of whitespace&separator that follows it.
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
209 (if (re-search-forward "[ \t]*[\n,][ \t]*" end1 t)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
210 (setq epos (match-beginning 0)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
211 seplen (- (point) epos))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
212 (setq epos (marker-position end1) seplen 0))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
213 (let ((string (buffer-substring-no-properties pos epos))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
214 translation)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
215 (if (and (not (assoc string disabled-aliases))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
216 (setq translation (cdr (assoc string mail-aliases))))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
217 (progn
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
218 ;; This name is an alias. Disable it.
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
219 (setq disabled-aliases (cons (cons string (- end1 epos))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
220 disabled-aliases))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
221 ;; Replace the alias with its expansion
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
222 ;; then rescan the expansion for more aliases.
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
223 (goto-char pos)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
224 (insert translation)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
225 (when exclude
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
226 (let ((regexp (concat "\\b\\(" exclude "\\)\\b"))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
227 (end (point-marker)))
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
228 (goto-char pos)
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
229 (while (re-search-forward regexp end t)
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
230 (replace-match ""))
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
231 (goto-char end)))
17797
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
232 (delete-region (point) (+ (point) (- epos pos)))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
233 (goto-char pos))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
234 ;; Name is not an alias. Skip to start of next name.
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
235 (goto-char epos)
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
236 (forward-char seplen))))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
237 (set-marker end1 nil)))
7faea977229c make expand-mail-aliases interactive
Simon Marshall <simon@gnu.org>
parents: 17310
diff changeset
238 (set-marker end nil))))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
239
10327
8822b968b11c Use `mail-personal-alias-file' globally in place of hardwired "~/.mailrc".
Noah Friedman <friedman@splode.com>
parents: 9644
diff changeset
240 ;; Called by mail-setup, or similar functions, only if the file specified
8822b968b11c Use `mail-personal-alias-file' globally in place of hardwired "~/.mailrc".
Noah Friedman <friedman@splode.com>
parents: 9644
diff changeset
241 ;; by mail-personal-alias-file (usually `~/.mailrc') exists.
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
242 (defun build-mail-aliases (&optional file)
10327
8822b968b11c Use `mail-personal-alias-file' globally in place of hardwired "~/.mailrc".
Noah Friedman <friedman@splode.com>
parents: 9644
diff changeset
243 "Read mail aliases from personal aliases file and set `mail-aliases'.
8822b968b11c Use `mail-personal-alias-file' globally in place of hardwired "~/.mailrc".
Noah Friedman <friedman@splode.com>
parents: 9644
diff changeset
244 By default, this is the file specified by `mail-personal-alias-file'."
8822b968b11c Use `mail-personal-alias-file' globally in place of hardwired "~/.mailrc".
Noah Friedman <friedman@splode.com>
parents: 9644
diff changeset
245 (setq file (expand-file-name (or file mail-personal-alias-file)))
20810
55e8d6d2c3b1 (define-mail-alias): If FROM-MAILRC-FILE, don't call sendmail-sync-aliases.
Richard M. Stallman <rms@gnu.org>
parents: 20490
diff changeset
246 ;; In case mail-aliases is t, make sure define-mail-alias
55e8d6d2c3b1 (define-mail-alias): If FROM-MAILRC-FILE, don't call sendmail-sync-aliases.
Richard M. Stallman <rms@gnu.org>
parents: 20490
diff changeset
247 ;; does not recursively call build-mail-aliases.
55e8d6d2c3b1 (define-mail-alias): If FROM-MAILRC-FILE, don't call sendmail-sync-aliases.
Richard M. Stallman <rms@gnu.org>
parents: 20490
diff changeset
248 (setq mail-aliases nil)
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
249 (let ((buffer nil)
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
250 (obuf (current-buffer)))
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
251 (unwind-protect
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
252 (progn
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
253 (setq buffer (generate-new-buffer " mailrc"))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
254 (set-buffer buffer)
7732
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
255 (while file
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
256 (cond ((get-file-buffer file)
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
257 (insert (save-excursion
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
258 (set-buffer (get-file-buffer file))
13653
acde2327c000 (build-mail-aliases): Use buffer-substring-no-properties not buffer-substring.
Richard M. Stallman <rms@gnu.org>
parents: 12516
diff changeset
259 (buffer-substring-no-properties
acde2327c000 (build-mail-aliases): Use buffer-substring-no-properties not buffer-substring.
Richard M. Stallman <rms@gnu.org>
parents: 12516
diff changeset
260 (point-min) (point-max)))))
7732
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
261 ((file-exists-p file) (insert-file-contents file))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
262 ((file-exists-p (setq file (concat "~/" file)))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
263 (insert-file-contents file))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
264 (t (setq file nil)))
65117
c491b27f2b26 (build-mail-aliases): Delete comments
Richard M. Stallman <rms@gnu.org>
parents: 64754
diff changeset
265 (goto-char (point-min))
c491b27f2b26 (build-mail-aliases): Delete comments
Richard M. Stallman <rms@gnu.org>
parents: 64754
diff changeset
266 ;; Delete comments from the contents.
c491b27f2b26 (build-mail-aliases): Delete comments
Richard M. Stallman <rms@gnu.org>
parents: 64754
diff changeset
267 (while (search-forward "# " nil t)
c491b27f2b26 (build-mail-aliases): Delete comments
Richard M. Stallman <rms@gnu.org>
parents: 64754
diff changeset
268 (let ((p (- (point) 2)))
c491b27f2b26 (build-mail-aliases): Delete comments
Richard M. Stallman <rms@gnu.org>
parents: 64754
diff changeset
269 (end-of-line)
c491b27f2b26 (build-mail-aliases): Delete comments
Richard M. Stallman <rms@gnu.org>
parents: 64754
diff changeset
270 (delete-region p (point))))
7732
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
271 ;; Don't lose if no final newline.
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
272 (goto-char (point-max))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
273 (or (eq (preceding-char) ?\n) (newline))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
274 (goto-char (point-min))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
275 ;; handle "\\\n" continuation lines
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
276 (while (not (eobp))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
277 (end-of-line)
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
278 (if (= (preceding-char) ?\\)
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
279 (progn (delete-char -1) (delete-char 1) (insert ?\ ))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
280 (forward-char 1)))
7732
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
281 (goto-char (point-min))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
282 ;; handle `source' directives -- Eddy/1994/May/25
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
283 (cond ((re-search-forward "^source[ \t]+" nil t)
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
284 (re-search-forward "\\S-+")
13653
acde2327c000 (build-mail-aliases): Use buffer-substring-no-properties not buffer-substring.
Richard M. Stallman <rms@gnu.org>
parents: 12516
diff changeset
285 (setq file (buffer-substring-no-properties
acde2327c000 (build-mail-aliases): Use buffer-substring-no-properties not buffer-substring.
Richard M. Stallman <rms@gnu.org>
parents: 12516
diff changeset
286 (match-beginning 0) (match-end 0)))
7732
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
287 (beginning-of-line)
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
288 (insert "# ") ; to ensure we don't re-process this file
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
289 (beginning-of-line))
b99162ca5247 (build-mail-aliases): Handle source directives.
Richard M. Stallman <rms@gnu.org>
parents: 3743
diff changeset
290 (t (setq file nil))))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
291 (goto-char (point-min))
12516
254987dd395f * mailalias.el (build-mail-aliases): Fixed the regexp for "^group".
Francesco Potortì <pot@gnu.org>
parents: 12448
diff changeset
292 (while (re-search-forward
23356
a05ab8915917 (build-mail-aliases): Don't allow
Karl Heuer <kwzh@gnu.org>
parents: 22621
diff changeset
293 "^\\(a\\|alias\\|g\\|group\\)[ \t]+\\([^ \t\n]+\\)" nil t)
12516
254987dd395f * mailalias.el (build-mail-aliases): Fixed the regexp for "^group".
Francesco Potortì <pot@gnu.org>
parents: 12448
diff changeset
294 (let* ((name (match-string 2))
23356
a05ab8915917 (build-mail-aliases): Don't allow
Karl Heuer <kwzh@gnu.org>
parents: 22621
diff changeset
295 (start (progn (skip-chars-forward " \t") (point)))
a05ab8915917 (build-mail-aliases): Don't allow
Karl Heuer <kwzh@gnu.org>
parents: 22621
diff changeset
296 value)
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
297 (end-of-line)
23356
a05ab8915917 (build-mail-aliases): Don't allow
Karl Heuer <kwzh@gnu.org>
parents: 22621
diff changeset
298 (setq value (buffer-substring-no-properties start (point)))
a05ab8915917 (build-mail-aliases): Don't allow
Karl Heuer <kwzh@gnu.org>
parents: 22621
diff changeset
299 (unless (equal value "")
a05ab8915917 (build-mail-aliases): Don't allow
Karl Heuer <kwzh@gnu.org>
parents: 22621
diff changeset
300 (define-mail-alias name value t))))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
301 mail-aliases)
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
302 (if buffer (kill-buffer buffer))
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
303 (set-buffer obuf))))
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
304
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
305 ;; Always autoloadable in case the user wants to define aliases
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
306 ;; interactively or in .emacs.
256
7e4c7ef44243 *** empty log message ***
Roland McGrath <roland@gnu.org>
parents: 221
diff changeset
307 ;;;###autoload
7971
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
308 (defun define-mail-alias (name definition &optional from-mailrc-file)
221
ce8e0192266e *** empty log message ***
Richard M. Stallman <rms@gnu.org>
parents: 219
diff changeset
309 "Define NAME as a mail alias that translates to DEFINITION.
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
310 This means that sending a message to NAME will actually send to DEFINITION.
12448
7291d1627d2c (define-mail-alias): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11856
diff changeset
311
7291d1627d2c (define-mail-alias): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11856
diff changeset
312 Normally, the addresses in DEFINITION must be separated by commas.
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 39866
diff changeset
313 If FROM-MAILRC-FILE is non-nil, then addresses in DEFINITION
12448
7291d1627d2c (define-mail-alias): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11856
diff changeset
314 can be separated by spaces; an address can contain spaces
7291d1627d2c (define-mail-alias): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11856
diff changeset
315 if it is quoted with double-quotes."
7291d1627d2c (define-mail-alias): Doc fix.
Richard M. Stallman <rms@gnu.org>
parents: 11856
diff changeset
316
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
317 (interactive "sDefine mail alias: \nsDefine %s as mail alias for: ")
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
318 ;; Read the defaults first, if we have not done so.
20810
55e8d6d2c3b1 (define-mail-alias): If FROM-MAILRC-FILE, don't call sendmail-sync-aliases.
Richard M. Stallman <rms@gnu.org>
parents: 20490
diff changeset
319 ;; But not if we are doing that already right now.
55e8d6d2c3b1 (define-mail-alias): If FROM-MAILRC-FILE, don't call sendmail-sync-aliases.
Richard M. Stallman <rms@gnu.org>
parents: 20490
diff changeset
320 (unless from-mailrc-file
55e8d6d2c3b1 (define-mail-alias): If FROM-MAILRC-FILE, don't call sendmail-sync-aliases.
Richard M. Stallman <rms@gnu.org>
parents: 20490
diff changeset
321 (sendmail-sync-aliases))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
322 (if (eq mail-aliases t)
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
323 (progn
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
324 (setq mail-aliases nil)
10327
8822b968b11c Use `mail-personal-alias-file' globally in place of hardwired "~/.mailrc".
Noah Friedman <friedman@splode.com>
parents: 9644
diff changeset
325 (if (file-exists-p mail-personal-alias-file)
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
326 (build-mail-aliases))))
3743
e67f922b73ed (define-mail-alias): Remove excess whitespace better.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
327 ;; strip garbage from front and end
e67f922b73ed (define-mail-alias): Remove excess whitespace better.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
328 (if (string-match "\\`[ \t\n,]+" definition)
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
329 (setq definition (substring definition (match-end 0))))
3743
e67f922b73ed (define-mail-alias): Remove excess whitespace better.
Richard M. Stallman <rms@gnu.org>
parents: 2307
diff changeset
330 (if (string-match "[ \t\n,]+\\'" definition)
474
c3bbd755b7da *** empty log message ***
Jim Blandy <jimb@redhat.com>
parents: 256
diff changeset
331 (setq definition (substring definition 0 (match-beginning 0))))
7971
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
332 (let ((result '())
8494
ae554ccf4fb5 (define-mail-alias): Avoid error if DEFINITION is "".
Richard M. Stallman <rms@gnu.org>
parents: 7971
diff changeset
333 ;; If DEFINITION is null string, avoid looping even once.
ae554ccf4fb5 (define-mail-alias): Avoid error if DEFINITION is "".
Richard M. Stallman <rms@gnu.org>
parents: 7971
diff changeset
334 (start (and (not (equal definition "")) 0))
7971
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
335 (L (length definition))
20490
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
336 convert-backslash
7971
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
337 end tem)
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
338 (while start
20490
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
339 (setq convert-backslash nil)
7971
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
340 ;; If we're reading from the mailrc file, then addresses are delimited
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
341 ;; by spaces, and addresses with embedded spaces must be surrounded by
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
342 ;; double-quotes. Otherwise, addresses are separated by commas.
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
343 (if from-mailrc-file
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
344 (if (eq ?\" (aref definition start))
22081
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
345 ;; The following test on `found' compensates for a bug
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
346 ;; in match-end, which does not return nil when match
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
347 ;; failed.
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
348 (let ((found (string-match "[^\\]\\(\\([\\][\\]\\)*\\)\"[ \t,]*"
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
349 definition start)))
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
350 (setq start (1+ start)
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
351 end (and found (match-end 1))
0f4e461dd691 (define-mail-alias): Compensate for not resetting the match data when
Richard M. Stallman <rms@gnu.org>
parents: 21867
diff changeset
352 convert-backslash t))
8494
ae554ccf4fb5 (define-mail-alias): Avoid error if DEFINITION is "".
Richard M. Stallman <rms@gnu.org>
parents: 7971
diff changeset
353 (setq end (string-match "[ \t,]+" definition start)))
ae554ccf4fb5 (define-mail-alias): Avoid error if DEFINITION is "".
Richard M. Stallman <rms@gnu.org>
parents: 7971
diff changeset
354 (setq end (string-match "[ \t\n,]*,[ \t\n,]*" definition start)))
20490
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
355 (let ((temp (substring definition start end))
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
356 (pos 0))
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
357 (setq start (and end
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
358 (/= (match-end 0) L)
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
359 (match-end 0)))
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
360 (if convert-backslash
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
361 (while (string-match "[\\]" temp pos)
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
362 (setq temp (replace-match "" t t temp))
49598
0d8b17d428b5 Trailing whitepace deleted.
Juanma Barranquero <lekktu@gmail.com>
parents: 39866
diff changeset
363 (if start
20490
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
364 (setq start (1- start)))
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
365 (setq pos (match-end 0))))
c383d1397e12 (define-mail-alias): Handle backslash-quoting
Richard M. Stallman <rms@gnu.org>
parents: 18607
diff changeset
366 (setq result (cons temp result))))
7971
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
367 (setq definition (mapconcat (function identity)
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
368 (nreverse result)
e02c5d5d76cd (define-mail-alias): Copy parsing code from mailabbrev.el.
Richard M. Stallman <rms@gnu.org>
parents: 7970
diff changeset
369 ", "))
53
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
370 (setq tem (assoc name mail-aliases))
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
371 (if tem
a8efef5eb891 Initial revision
Joseph Arceneaux <jla@gnu.org>
parents:
diff changeset
372 (rplacd tem definition)
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
373 (setq mail-aliases (cons (cons name definition) mail-aliases)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
374 mail-names t))))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
375
14678
f77d51b836d0 (mail-complete): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 14551
diff changeset
376 ;;;###autoload
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
377 (defun mail-complete (arg)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
378 "Perform completion on header field or word preceding point.
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
379 Completable headers are according to `mail-complete-alist'. If none matches
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
380 current header, calls `mail-complete-function' and passes prefix arg if any."
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
381 (interactive "P")
15501
3cc16244b779 Resync mail aliases if necessary.
Simon Marshall <simon@gnu.org>
parents: 14799
diff changeset
382 ;; Read the defaults first, if we have not done so.
3cc16244b779 Resync mail aliases if necessary.
Simon Marshall <simon@gnu.org>
parents: 14799
diff changeset
383 (sendmail-sync-aliases)
3cc16244b779 Resync mail aliases if necessary.
Simon Marshall <simon@gnu.org>
parents: 14799
diff changeset
384 (if (eq mail-aliases t)
3cc16244b779 Resync mail aliases if necessary.
Simon Marshall <simon@gnu.org>
parents: 14799
diff changeset
385 (progn
3cc16244b779 Resync mail aliases if necessary.
Simon Marshall <simon@gnu.org>
parents: 14799
diff changeset
386 (setq mail-aliases nil)
3cc16244b779 Resync mail aliases if necessary.
Simon Marshall <simon@gnu.org>
parents: 14799
diff changeset
387 (if (file-exists-p mail-personal-alias-file)
3cc16244b779 Resync mail aliases if necessary.
Simon Marshall <simon@gnu.org>
parents: 14799
diff changeset
388 (build-mail-aliases))))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
389 (let ((list mail-complete-alist))
22621
e017a2c05245 (mail-complete): Fix the test of (mail-heder-end).
Richard M. Stallman <rms@gnu.org>
parents: 22081
diff changeset
390 (if (and (< 0 (mail-header-end))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
391 (save-excursion
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
392 (if (re-search-backward "^[^\t]" nil t)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
393 (while list
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
394 (if (looking-at (car (car list)))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
395 (setq arg (cdr (car list))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
396 list ())
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
397 (setq list (cdr list)))))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
398 arg))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
399 (let* ((end (point))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
400 (beg (save-excursion
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
401 (skip-chars-backward "^ \t<,:")
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
402 (point)))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
403 (pattern (buffer-substring beg end))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
404 completion)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
405 (setq list (eval arg)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
406 completion (try-completion pattern list))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
407 (cond ((eq completion t))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
408 ((null completion)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
409 (message "Can't find completion for \"%s\"" pattern)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
410 (ding))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
411 ((not (string= pattern completion))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
412 (delete-region beg end)
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
413 (let ((alist-elt (assoc completion mail-names)))
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
414 (if (cdr alist-elt)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
415 (cond ((eq mail-complete-style 'parens)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
416 (insert completion " (" (cdr alist-elt) ")"))
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
417 ((eq mail-complete-style 'angles)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
418 (insert (cdr alist-elt) " <" completion ">"))
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
419 (t
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
420 (insert completion)))
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
421 (insert completion))))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
422 (t
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
423 (message "Making completion list...")
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
424 (with-output-to-temp-buffer "*Completions*"
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
425 (display-completion-list
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
426 (all-completions pattern list)))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
427 (message "Making completion list...%s" "done"))))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
428 (funcall mail-complete-function arg))))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
429
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
430 (defun mail-get-names (pattern)
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
431 "Fetch local users and global mail addresses for completion.
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
432 Consults `/etc/passwd' and a directory service if one is set up via
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
433 `mail-directory-function'.
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
434 PATTERN is the string we want to complete."
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
435 (if (eq mail-local-names t)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
436 (save-excursion
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
437 (set-buffer (generate-new-buffer " passwd"))
17210
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
438 (let ((files mail-passwd-files))
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
439 (while files
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
440 (insert-file-contents (car files) nil nil nil t)
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
441 (setq files (cdr files))))
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
442 (if mail-passwd-command
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
443 (call-process shell-file-name nil t nil
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
444 shell-command-switch mail-passwd-command))
62620
564274a2eaa2 (mail-get-names): Avoid beginning-of-buffer.
Richard M. Stallman <rms@gnu.org>
parents: 62402
diff changeset
445 (goto-char (point-min))
17210
5c7c572f57f8 (mail-passwd-command): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 15501
diff changeset
446 (setq mail-local-names nil)
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
447 (while (not (eobp))
14799
619266555aec (mail-get-names): Understand "+username" format for /etc/passwd lines.
Richard M. Stallman <rms@gnu.org>
parents: 14678
diff changeset
448 ;;Recognize lines like
619266555aec (mail-get-names): Understand "+username" format for /etc/passwd lines.
Richard M. Stallman <rms@gnu.org>
parents: 14678
diff changeset
449 ;; nobody:*:65534:65534::/:
619266555aec (mail-get-names): Understand "+username" format for /etc/passwd lines.
Richard M. Stallman <rms@gnu.org>
parents: 14678
diff changeset
450 ;; +demo::::::/bin/csh
619266555aec (mail-get-names): Understand "+username" format for /etc/passwd lines.
Richard M. Stallman <rms@gnu.org>
parents: 14678
diff changeset
451 ;; +ethanb
619266555aec (mail-get-names): Understand "+username" format for /etc/passwd lines.
Richard M. Stallman <rms@gnu.org>
parents: 14678
diff changeset
452 ;;while skipping
619266555aec (mail-get-names): Understand "+username" format for /etc/passwd lines.
Richard M. Stallman <rms@gnu.org>
parents: 14678
diff changeset
453 ;; +@SOFTWARE
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
454 ;; The second \(...\) matches the user id.
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
455 (if (looking-at "\\+?\\([^:@\n+]+\\):[^:\n]*:\\([^\n:]*\\):")
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
456 (add-to-list 'mail-local-names
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
457 (cons (match-string 1)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
458 (user-full-name
62402
a7e02ef1e3d6 Replace `string-to-int' by `string-to-number'.
Juanma Barranquero <lekktu@gmail.com>
parents: 60964
diff changeset
459 (string-to-number (match-string 2))))))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
460 (beginning-of-line 2))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
461 (kill-buffer (current-buffer))))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
462 (if (or (eq mail-names t)
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
463 (eq mail-directory-names t))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
464 (let (directory)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
465 (and mail-directory-function
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
466 (eq mail-directory-names t)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
467 (setq directory
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
468 (mail-directory (if mail-directory-requery pattern))))
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
469 (or mail-directory-requery
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
470 (setq mail-directory-names directory))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
471 (if (or directory
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
472 (eq mail-names t))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
473 (setq mail-names
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
474 (sort (append (if (consp mail-aliases)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
475 (mapcar
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
476 (function (lambda (a) (list (car a))))
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
477 mail-aliases))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
478 (if (consp mail-local-names)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
479 mail-local-names)
60964
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
480 (or directory
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
481 (when (consp mail-directory-names)
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
482 mail-directory-names)))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
483 (lambda (a b)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
484 ;; should cache downcased strings
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
485 (string< (downcase (car a))
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
486 (downcase (car b)))))))))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
487 mail-names)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
488
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
489
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
490 (defun mail-directory (pattern)
60964
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
491 "Use mail-directory facility to get user names matching PATTERN.
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
492 If PATTERN is nil, get all the defined user names.
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
493 This function calls `mail-directory-function' to query the directory,
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
494 then uses `mail-directory-parser' to parse the output it returns."
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
495 (save-excursion
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
496 (message "Querying directory...")
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
497 (set-buffer (generate-new-buffer " *mail-directory*"))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
498 (funcall mail-directory-function pattern)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
499 (goto-char 1)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
500 (let (directory)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
501 (if (stringp mail-directory-parser)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
502 (while (re-search-forward mail-directory-parser nil t)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
503 (setq directory
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
504 (cons (match-string 1) directory)))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
505 (if mail-directory-parser
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
506 (setq directory (funcall mail-directory-parser))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
507 (while (not (eobp))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
508 (setq directory
17310
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
509 (cons (buffer-substring (point)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
510 (progn
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
511 (forward-line)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
512 (if (bolp)
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
513 (1- (point))
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
514 (point))))
9c0ece61d60a (mail-complete-style): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 17210
diff changeset
515 directory)))))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
516 (kill-buffer (current-buffer))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
517 (message "Querying directory...done")
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
518 directory)))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
519
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
520
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
521 (defun mail-directory-process (pattern)
18161
1f13d44dcbbf Customize. Doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17797
diff changeset
522 "Run a shell command to output names in directory.
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
523 See `mail-directory-process'."
60964
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
524 (when (consp mail-directory-process)
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
525 (apply 'call-process (eval (car mail-directory-process)) nil t nil
0b933f58d514 (mail-directory-process): Do nothing if mail-directory-process is an atom.
Richard M. Stallman <rms@gnu.org>
parents: 52401
diff changeset
526 (mapcar 'eval (cdr mail-directory-process)))))
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
527
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
528 ;; This should handle a dialog. Currently expects port to spit out names.
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
529 (defun mail-directory-stream (pattern)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
530 "Open a stream to retrieve names in directory.
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
531 See `mail-directory-stream'."
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
532 (let (mailalias-done)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
533 (set-process-sentinel
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
534 (apply 'open-network-stream "mailalias" (current-buffer)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
535 mail-directory-stream)
39866
a4570786d40d Do not double variables in the lambda-list.
Pavel Janík <Pavel@Janik.cz>
parents: 24172
diff changeset
536 (lambda (x y)
14551
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
537 (setq mailalias-done t)))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
538 (while (not mailalias-done)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
539 (sit-for .1))))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
540
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
541 (defun mail-sentto-newsgroups ()
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
542 "Return all entries from Newsgroups: header as completion alist."
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
543 (save-excursion
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
544 (if (mail-position-on-field "newsgroups" t)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
545 (let ((point (point))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
546 list)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
547 (while (< (skip-chars-backward "^:, \t\n") 0)
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
548 (setq list `((,(buffer-substring (point) point))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
549 ,@list))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
550 (skip-chars-backward ", \t\n")
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
551 (setq point (point)))
dc2881fa11ea (mail-names, mail-local-names, mail-directory-names)
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
552 list))))
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 474
diff changeset
553
923
9f3cc03dae67 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
554 (provide 'mailalias)
9f3cc03dae67 entered into RCS
Jim Blandy <jimb@redhat.com>
parents: 846
diff changeset
555
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 50865
diff changeset
556 ;;; arch-tag: 1d6a0f87-eb34-4d45-8816-60c1b952cf46
659
505130d1ddf8 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 474
diff changeset
557 ;;; mailalias.el ends here