Mercurial > emacs
annotate lispref/permute-index @ 42015:0473e709920b
*** empty log message ***
author | Stefan Monnier <monnier@iro.umontreal.ca> |
---|---|
date | Thu, 13 Dec 2001 19:25:07 +0000 |
parents | c189486396ff |
children | 23a1cea22d13 |
rev | line source |
---|---|
41200
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
1 #!/bin/sh |
41131 | 2 # Generate a permuted index of all names. |
3 # The result is a file called index.fns. | |
4 | |
5 # Copyright (C) 2001 Free Software Foundation, Inc. | |
6 # | |
7 # This file is part of GNU Emacs. | |
8 # | |
9 # GNU Emacs is free software; you can redistribute it and/or modify | |
10 # it under the terms of the GNU General Public License as published by | |
11 # the Free Software Foundation; either version 2, or (at your option) | |
12 # any later version. | |
13 # | |
14 # GNU Emacs is distributed in the hope that it will be useful, | |
15 # but WITHOUT ANY WARRANTY; without even the implied warranty of | |
16 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
17 # GNU General Public License for more details. | |
18 # | |
19 # You should have received a copy of the GNU General Public License | |
20 # along with GNU Emacs; see the file COPYING. If not, write to the | |
21 # Free Software Foundation, Inc., 59 Temple Place - Suite 330, | |
22 # Boston, MA 02111-1307, USA. | |
23 | |
24 # You will need to modify this for your needs. | |
25 | |
26 | |
27 set TEXINDEX=texindex # path to texindex command | |
28 #set EMACS=gnuemacs # your emacs command | |
29 #set TEX=tex # your tex command | |
30 | |
31 set MANUAL=elisp # the base name of the manual | |
32 | |
33 # goto 3 | |
34 | |
35 1: | |
36 echo "Extract raw index from texinfo fn index." | |
37 # Let texindex combine duplicate entries, later. | |
38 # But it wants to protect non-alphanumerics thus confusing ptx. | |
39 # Also change `\ ' to just a ` ', since texindex will fail. This is produced | |
40 # by `@findex two words' in an example environment (no doubt among others). | |
41 # delete wrapper parens | |
42 # change dots {} to dots{} | |
43 # change {-} to char form, so ptx wont ignore it. | |
44 # delete leading \entry { | |
45 # change '\ ' to ' ' | |
46 # change lines with = < > since they mess up field extraction. | |
47 # separate into fields delimited by " | |
41200
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
48 rm -f permuted.raw |
41131 | 49 cat ${MANUAL}.fn | \ |
50 sed \ | |
51 -e 's/(\([^)]*\))/\1/' \ | |
52 -e 's/\\dots {}/(\\dots{})/' \ | |
53 -e "s/{-}/{{\\tt\\char'055}}/" \ | |
54 -e 's,^[^ ]* {,,' \ | |
55 -e 's, },},' \ | |
56 -e 's,\\ , ,g' \ | |
57 -e 's/{\\tt\\char61}/=/' \ | |
58 -e 's/{\\tt\\gtr}/>/' \ | |
59 -e 's/{\\tt\\less}/</' \ | |
60 -e 's/}{/"/g' \ | |
41200
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
61 | awk -F\" '{print $2, $1}' > permuted.raw |
41131 | 62 |
63 2: | |
64 # Build break file for ptx. | |
65 cat <<EOF > permuted.break | |
66 - | |
67 : | |
68 EOF | |
69 # Build the ignore file for ptx. | |
41200
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
70 # We would like to ignore "and", "or", and "for", |
41131 | 71 # but ptx ignores ignore words even if they stand alone. |
72 cat <<EOF > permuted.ignore | |
73 the | |
74 in | |
75 to | |
76 as | |
77 a | |
78 an | |
79 of | |
80 on | |
81 them | |
82 how | |
83 from | |
84 by | |
85 EOF | |
86 | |
87 echo "Make troff permuted index." | |
41200
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
88 rm -f permuted.t |
41131 | 89 ptx -i permuted.ignore -b permuted.break -f -r -w 144 \ |
41200
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
90 < permuted.raw > permuted.t |
41131 | 91 |
92 3: | |
93 echo "Extract the desired fields." | |
41200
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
94 rm -f permuted.fields |
c189486396ff
Don't depend on csh-specific features. Replace
Eli Zaretskii <eliz@gnu.org>
parents:
41131
diff
changeset
|
95 awk -F\" '{printf "%s\"%s\"%s\n", $4,$6,$9}' permuted.t > permuted.fields |
41131 | 96 |
97 4: | |
98 echo "Format for texindex." | |
99 # delete lines that start with "and ", "for " | |
100 sed < permuted.fields \ | |
101 -e 's/=/{\\tt\\char61}/' \ | |
102 -e 's/>/{\\tt\\gtr}/' \ | |
103 -e 's/</{\\tt\\less}/' \ | |
104 -e '/"and /d' \ | |
105 -e '/"for /d' \ | |
106 | awk -F\" 'NF>0 {if ($1=="") {\ | |
107 print "\entry {" $2 "}{" 0+$3 "}{" $2 "}" }\ | |
108 else {\ | |
109 print "\entry {" $2 ", " $1 "}{" 0+$3 "}{" $2 ", " $1 "}"} }'\ | |
110 > permuted.fn | |
111 | |
112 5: | |
113 echo "Sort with texindex." | |
114 ${TEXINDEX} permuted.fn | |
115 #mv permuted.fns ${MANUAL}.fns | |
116 | |
117 # The resulting permuted.fns will be read when we run TeX | |
118 # on the manual the second time. Or you can use permuted.texinfo here. | |
119 #${TEX} permuted.texinfo | |
120 | |
121 6: | |
122 echo "Clean up." | |
123 rm -f permuted.fields permuted.t permuted.raw | |
124 rm -f permuted.break permuted.ignore permuted.fn |