Mercurial > emacs
annotate etc/ETAGS.EBNF @ 49506:ac9e2eeeb03d
New format of AUTHORS file; list each
author name once followed by contributed and changed files.
Improve selection of entries to include in list, and generate list
of unrecognized entries indicating syntax errors in ChangeLog files.
(authors-coding-system): New variable.
(authors-many-files): Update doc string.
(authors-aliases): Change format. Now one entry with multiple
aliases per author.
(authors-valid-file-names, authors-renamed-files-alist)
(authors-renamed-files-regexps): New variables.
(authors-canonical-file-name): New function. Validates that file
exists or occurs in one of the above lists. Record unrecognized
file names in global authors-invalid-file-names list.
(authors-add): Change to record per-change counts.
(authors-canonical-author-name): Handle new format of
authors-aliases list.
(authors-scan-change-log): Rename FILE arg to LOG-FILE.
Change doc string to describe new entry format.
Only add author entries for valid file names.
(authors-print): Replace by authors-add-to-author-list.
(authors-add-to-author-list): New function which reorders
per-file entries and adds them to global authors-author-list.
(authors): Instead of authors-print to insert in *Authors* buffer,
use authors-add-to-author-list to reorder the list and then
insert result in *Authors* buffer with new format.
Generate *Authors Errors* compilation-mode buffer listing
unrecognized ChangeLog entries.
author | Kim F. Storm <storm@cua.dk> |
---|---|
date | Wed, 29 Jan 2003 00:13:11 +0000 |
parents | d0c1bb6d79a0 |
children | ed7a08ddfaf8 d7ddb3e565de |
rev | line source |
---|---|
46127
6225d6b17d2e
Back to the old explanation, which was more concise, with just the first
Francesco Potortì <pot@gnu.org>
parents:
46126
diff
changeset
|
1 -*- indented-text -*- |
6225d6b17d2e
Back to the old explanation, which was more concise, with just the first
Francesco Potortì <pot@gnu.org>
parents:
46126
diff
changeset
|
2 |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
3 This file contains two sections: |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
4 |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
5 1) An EBNF (Extended Backus Normal Form) description of the format of |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
6 the tags file created by etags.c and interpreted by etags.el; |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
7 2) A discussion of tag names and implicit tag names. |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
8 |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
9 ====================== 1) EBNF tag file description ===================== |
45799 | 10 |
47054
d0c1bb6d79a0
Forgot a piece, put back in.
Francesco Potortì <pot@gnu.org>
parents:
47053
diff
changeset
|
11 Productions created from current behaviour to aid extensions |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
12 Francesco Potorti` <pot@gnu.org> 2002 |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
13 ---------------- |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
14 |
45799 | 15 FF ::= #x0c /* tag section starter */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
16 |
45799 | 17 LF ::= #x0a /* line terminator */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
18 |
43857
1e419a707ae1
*** empty log message ***
Francesco Potortì <pot@gnu.org>
parents:
43850
diff
changeset
|
19 DEL ::= #x7f /* pattern terminator */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
20 |
43857
1e419a707ae1
*** empty log message ***
Francesco Potortì <pot@gnu.org>
parents:
43850
diff
changeset
|
21 SOH ::= #x01 /* name terminator */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
22 |
43858
8d0430162d52
*** empty log message ***
Francesco Potortì <pot@gnu.org>
parents:
43857
diff
changeset
|
23 regchar ::= [^#x0a#x0c#x7f] /* regular character */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
24 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
25 regstring ::= { regchar } /* regular string */ |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
26 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
27 unsint ::= [0-9] { [0-9] } /* non-negative integer */ |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
28 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
29 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
30 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
31 tagfile ::= { tagsection } /* a tags file */ |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
32 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
33 tagsection ::= FF LF ( includesec | regularsec ) LF |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
34 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
35 includesec ::= filename ",include" [ LF fileprop ] |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
36 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
37 regularsec ::= filename "," [ unsint ] [ LF fileprop ] { LF tag } |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
38 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
39 filename ::= regchar regstring /* a file name */ |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
40 |
45799 | 41 fileprop ::= "(" regstring ")" /* an elisp alist */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
42 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
43 tag ::= directtag | patterntag |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
44 |
45799 | 45 directtag ::= DEL realposition /* no pattern */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
46 |
43857
1e419a707ae1
*** empty log message ***
Francesco Potortì <pot@gnu.org>
parents:
43850
diff
changeset
|
47 patterntag ::= pattern DEL [ tagname SOH ] position |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
48 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
49 pattern ::= regstring /* a tag pattern */ |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
50 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
51 tagname ::= regchar regstring /* a tag name */ |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
52 |
45799 | 53 position ::= realposition | "," /* charpos,linepos */ |
43850
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
54 |
4c55c058ad72
Description of the tags file format.
Francesco Potortì <pot@gnu.org>
parents:
diff
changeset
|
55 realposition ::= "," unsint | unsint "," | unsint "," unsint |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
56 |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
57 ==================== end of EBNF tag file description ==================== |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
58 |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
59 |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
60 |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
61 ======================= 2) discussion of tag names ======================= |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
62 |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
63 - WHAT ARE TAG NAMES |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
64 Tag lines in a tags file are usually made from the above defined pattern |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
65 and by an optional tag name. The pattern is a string that is searched |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
66 in the source file to find the tagged line. |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
67 |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
68 - WHY TAG NAMES ARE GOOD |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
69 When a user looks for a tag, Emacs first compares the tag with the tag |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
70 names contained in the tags file. If no match is found, Emacs compares |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
71 the tag with the patterns. The tag name is then the preferred way to |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
72 look for tags in the tags file, because when the tag name is present |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
73 Emacs can find a tag faster and more accurately. These tag names are |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
74 part of tag lines in the tags file, so we call them "explicit". |
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
75 |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
76 - WHY IMPLICIT TAG NAMES ARE EVEN BETTER |
46127
6225d6b17d2e
Back to the old explanation, which was more concise, with just the first
Francesco Potortì <pot@gnu.org>
parents:
46126
diff
changeset
|
77 When a tag line has no name, but a name can be deduced from the pattern, |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
78 we say that the tag line has an implicit tag name. Often tag names are |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
79 redundant; this happens when the name of a tag is an easily guessable |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
80 substring of the tag pattern. We define a set of rules to decide |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
81 whether it is possible to deduce the tag name from the pattern, and make |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
82 an unnamed tag in those cases. The name deduced from the pattern of an |
47054
d0c1bb6d79a0
Forgot a piece, put back in.
Francesco Potortì <pot@gnu.org>
parents:
47053
diff
changeset
|
83 unnamed tag is the implicit name of that tag. |
d0c1bb6d79a0
Forgot a piece, put back in.
Francesco Potortì <pot@gnu.org>
parents:
47053
diff
changeset
|
84 When the user looks for a tag, and Emacs founds no explicit tag names |
d0c1bb6d79a0
Forgot a piece, put back in.
Francesco Potortì <pot@gnu.org>
parents:
47053
diff
changeset
|
85 that match it, Emacs then looks for an tag whose implicit tag name |
d0c1bb6d79a0
Forgot a piece, put back in.
Francesco Potortì <pot@gnu.org>
parents:
47053
diff
changeset
|
86 matches the request. etags.c uses implicit tag names when possible, in |
d0c1bb6d79a0
Forgot a piece, put back in.
Francesco Potortì <pot@gnu.org>
parents:
47053
diff
changeset
|
87 order to reduce the size of the tags file. |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
88 An implicit tag name is deduced from the pattern by discarding the |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
89 last character if it is one of ` \f\t\n\r()=,;', then taking all the |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
90 rightmost consecutive characters in the pattern which are not one of |
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
91 those. |
45946
c5474d1cf831
Added discussion on tag names.
Francesco Potortì <pot@gnu.org>
parents:
45799
diff
changeset
|
92 |
47053
b87525d8fbd7
Clarified per rms request.
Francesco Potortì <pot@gnu.org>
parents:
46989
diff
changeset
|
93 ===================== end of discussion of tag names ===================== |