xref: /vim-8.2.3635/runtime/doc/makehtml.awk (revision 388a5d4f)
1071d4279SBram MoolenaarBEGIN   {
2071d4279SBram Moolenaar	# some initialization variables
3071d4279SBram Moolenaar	asciiart="no";
4071d4279SBram Moolenaar	wasset="no";
5071d4279SBram Moolenaar	lineset=0;
6071d4279SBram Moolenaar	sample="no";
7071d4279SBram Moolenaar	while ( getline ti <"tags.ref" > 0 ) {
8071d4279SBram Moolenaar		nf=split(ti,tag,"	");
9071d4279SBram Moolenaar		tagkey[tag[1]]="yes";tagref[tag[1]]=tag[2];
10071d4279SBram Moolenaar	}
11071d4279SBram Moolenaar	skip_word["and"]="yes";
12071d4279SBram Moolenaar	skip_word["backspace"]="yes";
13071d4279SBram Moolenaar	skip_word["beep"]="yes";
14071d4279SBram Moolenaar	skip_word["bugs"]="yes";
15071d4279SBram Moolenaar	skip_word["da"]="yes";
16071d4279SBram Moolenaar	skip_word["end"]="yes";
17071d4279SBram Moolenaar	skip_word["ftp"]="yes";
18071d4279SBram Moolenaar	skip_word["go"]="yes";
19071d4279SBram Moolenaar	skip_word["help"]="yes";
20071d4279SBram Moolenaar	skip_word["home"]="yes";
21071d4279SBram Moolenaar	skip_word["news"]="yes";
22071d4279SBram Moolenaar	skip_word["index"]="yes";
23071d4279SBram Moolenaar	skip_word["insert"]="yes";
24071d4279SBram Moolenaar	skip_word["into"]="yes";
25071d4279SBram Moolenaar	skip_word["put"]="yes";
26071d4279SBram Moolenaar	skip_word["reference"]="yes";
27071d4279SBram Moolenaar	skip_word["section"]="yes";
28071d4279SBram Moolenaar	skip_word["space"]="yes";
29071d4279SBram Moolenaar	skip_word["starting"]="yes";
30071d4279SBram Moolenaar	skip_word["toggle"]="yes";
31071d4279SBram Moolenaar	skip_word["various"]="yes";
32071d4279SBram Moolenaar	skip_word["version"]="yes";
33071d4279SBram Moolenaar	skip_word["is"]="yes";
34071d4279SBram Moolenaar}
35071d4279SBram Moolenaar#
36071d4279SBram Moolenaar# protect special chars
37071d4279SBram Moolenaar#
38071d4279SBram Moolenaar/[><&�]/ {gsub(/&/,"\\&amp;");gsub(/>/,"\\&gt;");gsub(/</,"\\&lt;");gsub("�","\\&aacute;");}
39071d4279SBram Moolenaar#
40071d4279SBram Moolenaar# end of sample lines by non-blank in first column
41071d4279SBram Moolenaar#
42071d4279SBram Moolenaarsample == "yes" && substr($0,1,4) == "&lt;" { sample = "no"; gsub(/^&lt;/, " "); }
43071d4279SBram Moolenaarsample == "yes" && substr($0,1,1) != " " && substr($0,1,1) != "	" && length($0) > 0 { sample = "no" }
44071d4279SBram Moolenaar#
45071d4279SBram Moolenaar# sample lines printed bold unless empty...
46071d4279SBram Moolenaar#
47071d4279SBram Moolenaarsample == "yes" && $0 =="" { print ""; next; }
48071d4279SBram Moolenaarsample == "yes" && $0 !="" { print "<B>" $0 "</B>"; next; }
49071d4279SBram Moolenaar#
50071d4279SBram Moolenaar# start of sample lines in next line
51071d4279SBram Moolenaar#
52071d4279SBram Moolenaar$0 == "&gt;" { sample = "yes"; print ""; next; }
53071d4279SBram Moolenaarsubstr($0,length($0)-4,5) == " &gt;" { sample = "yes"; gsub(/ &gt;$/, ""); }
54071d4279SBram Moolenaar#
55071d4279SBram Moolenaar# header lines printed bold, colored
56071d4279SBram Moolenaar#
57071d4279SBram Moolenaarsubstr($0,length($0),1) == "~" { print "<B><FONT COLOR=\"PURPLE\">" substr($0,1,length($0)-1) "</FONT></B>"; next; }
58071d4279SBram Moolenaar#
59071d4279SBram Moolenaar#ad hoc code
60071d4279SBram Moolenaar#
61*388a5d4fSBram Moolenaar/^"\|& / {gsub(/\|/,"\\&#124;"); }
62071d4279SBram Moolenaar/ = b / {gsub(/ b /," \\&#98; "); }
63071d4279SBram Moolenaar#
64071d4279SBram Moolenaar# one letter tag
65071d4279SBram Moolenaar#
66071d4279SBram Moolenaar/[ 	]\*.\*[ 	]/ {gsub(/\*/,"ZWWZ"); }
67071d4279SBram Moolenaar#
68071d4279SBram Moolenaar# isolated "*"
69071d4279SBram Moolenaar#
70071d4279SBram Moolenaar/[ 	]\*[ 	]/ {gsub(/ \* /," \\&#42; ");
71071d4279SBram Moolenaar		    gsub(/ \*	/," \\&#42;	");
72071d4279SBram Moolenaar		    gsub(/	\* /,"	\\&#42; ");
73071d4279SBram Moolenaar		    gsub(/	\*	/,"	\\&#42;	"); }
74071d4279SBram Moolenaar#
75071d4279SBram Moolenaar# tag start
76071d4279SBram Moolenaar#
77071d4279SBram Moolenaar/[ 	]\*[^ 	]/	{gsub(/ \*/," ZWWZ");gsub(/	\*/,"	ZWWZ");}
78071d4279SBram Moolenaar/^\*[^ 	]/ 	 {gsub(/^\*/,"ZWWZ");}
79071d4279SBram Moolenaar#
80071d4279SBram Moolenaar# tag end
81071d4279SBram Moolenaar#
82071d4279SBram Moolenaar/[^ 	]\*$/ 	 {gsub(/\*$/,"ZWWZ");}
83071d4279SBram Moolenaar/[^ \/	]\*[ 	]/  {gsub(/\*/,"ZWWZ");}
84071d4279SBram Moolenaar#
85071d4279SBram Moolenaar# isolated "|"
86071d4279SBram Moolenaar#
87071d4279SBram Moolenaar/[ 	]\|[ 	]/ {gsub(/ \| /," \\&#124; ");
88071d4279SBram Moolenaar		    gsub(/ \|	/," \\&#124;	");
89071d4279SBram Moolenaar		    gsub(/	\| /,"	\\&#124; ");
90071d4279SBram Moolenaar		    gsub(/	\|	/,"	\\&#124;	"); }
91071d4279SBram Moolenaar/'\|'/ { gsub(/'\|'/,"'\\&#124;'"); }
92071d4279SBram Moolenaar/\^V\|/ {gsub(/\^V\|/,"^V\\&#124;");}
93071d4279SBram Moolenaar/ \\\|	/ {gsub(/\|/,"\\&#124;");}
94071d4279SBram Moolenaar#
95071d4279SBram Moolenaar# one letter pipes and "||" false pipe (digraphs)
96071d4279SBram Moolenaar#
97071d4279SBram Moolenaar/[ 	]\|.\|[ 	]/ && asciiart == "no" {gsub(/\|/,"YXXY"); }
98071d4279SBram Moolenaar/^\|.\|[ 	]/ {gsub(/\|/,"YXXY"); }
99071d4279SBram Moolenaar/\|\|/ {gsub(/\|\|/,"\\&#124;\\&#124;"); }
100071d4279SBram Moolenaar/^shellpipe/ {gsub(/\|/,"\\&#124;"); }
101071d4279SBram Moolenaar#
102071d4279SBram Moolenaar# pipe start
103071d4279SBram Moolenaar#
104071d4279SBram Moolenaar/[ 	]\|[^ 	]/ && asciiart == "no"	{gsub(/ \|/," YXXY");
105071d4279SBram Moolenaar			gsub(/	\|/,"	YXXY");}
106071d4279SBram Moolenaar/^\|[^ 	]/ 	 {gsub(/^\|/,"YXXY");}
107071d4279SBram Moolenaar#
108071d4279SBram Moolenaar# pipe end
109071d4279SBram Moolenaar#
110071d4279SBram Moolenaar/[^ 	]\|$/ && asciiart == "no" {gsub(/\|$/,"YXXY");}
111071d4279SBram Moolenaar/[^ 	]\|[s ,.);	]/ && asciiart == "no" {gsub(/\|/,"YXXY");}
112071d4279SBram Moolenaar/[^ 	]\|]/ && asciiart == "no" {gsub(/\|/,"YXXY");}
113071d4279SBram Moolenaar#
114071d4279SBram Moolenaar# various
115071d4279SBram Moolenaar#
116071d4279SBram Moolenaar/'"/ 	{gsub(/'"/,"\\&#39;\\&#34;'");}
117071d4279SBram Moolenaar/"/	{gsub(/"/,"\\&quot;");}
118071d4279SBram Moolenaar/%/	{gsub(/%/,"\\&#37;");}
119071d4279SBram Moolenaar
120071d4279SBram MoolenaarNR == 1 { nf=split(FILENAME,f,".")
121071d4279SBram Moolenaar	print "<HTML>";
122071d4279SBram Moolenaar
123071d4279SBram Moolenaar	print "<HEAD>"
124071d4279SBram Moolenaar	if ( FILENAME == "mbyte.txt" ) {
125071d4279SBram Moolenaar	    # needs utf-8 as uses many languages
126071d4279SBram Moolenaar	    print "<META HTTP-EQUIV=\"Content-type\" content=\"text/html; charset=UTF-8\">";
127071d4279SBram Moolenaar	} else {
128071d4279SBram Moolenaar	    # common case - Latin1
129071d4279SBram Moolenaar	    print "<META HTTP-EQUIV=\"Content-type\" content=\"text/html; charset=ISO-8859-1\">";
130071d4279SBram Moolenaar	}
131071d4279SBram Moolenaar	print "<TITLE>Vim documentation: " f[1] "</TITLE>";
132071d4279SBram Moolenaar	print "</HEAD>";
133071d4279SBram Moolenaar
134071d4279SBram Moolenaar	print "<BODY BGCOLOR=\"#ffffff\">";
135071d4279SBram Moolenaar	print "<H1>Vim documentation: " f[1] "</H1>";
136071d4279SBram Moolenaar	print "<A NAME=\"top\"></A>";
137071d4279SBram Moolenaar	if ( FILENAME != "help.txt" ) {
1389b2200acSBram Moolenaar	  print "<A HREF=\"index.html\">main help file</A>\n";
139071d4279SBram Moolenaar	}
140071d4279SBram Moolenaar	print "<HR>";
141071d4279SBram Moolenaar	print "<PRE>";
142071d4279SBram Moolenaar	filename=f[1]".html";
143071d4279SBram Moolenaar}
144071d4279SBram Moolenaar
145071d4279SBram Moolenaar# set to a low value to test for few lines of text
146071d4279SBram Moolenaar# NR == 99999 { exit; }
147071d4279SBram Moolenaar
148071d4279SBram Moolenaar# ignore underlines and tags
149071d4279SBram Moolenaarsubstr($0,1,5) == " vim:" { next; }
150071d4279SBram Moolenaarsubstr($0,1,4) == "vim:" { next; }
151071d4279SBram Moolenaar# keep just whole lines of "-", "="
152071d4279SBram Moolenaarsubstr($0,1,3) == "===" && substr($0,75,1) != "=" { next; }
153071d4279SBram Moolenaarsubstr($0,1,3) == "---" && substr($0,75,1) != "-" { next; }
154071d4279SBram Moolenaar
155071d4279SBram Moolenaar{
156071d4279SBram Moolenaar	nstar = split($0,s,"ZWWZ");
157071d4279SBram Moolenaar	for ( i=2 ; i <= nstar ; i=i+2 ) {
158071d4279SBram Moolenaar		nbla=split(s[i],blata,"[ 	]");
159071d4279SBram Moolenaar		if ( nbla > 1 ) {
160071d4279SBram Moolenaar			gsub("ZWWZ","*");
161071d4279SBram Moolenaar			nstar = split($0,s,"ZWWZ");
162071d4279SBram Moolenaar		}
163071d4279SBram Moolenaar	}
164071d4279SBram Moolenaar	npipe = split($0,p,"YXXY");
165071d4279SBram Moolenaar	for ( i=2 ; i <= npipe ; i=i+2 ) {
166071d4279SBram Moolenaar		nbla=split(p[i],blata,"[ 	]");
167071d4279SBram Moolenaar		if ( nbla > 1 ) {
168071d4279SBram Moolenaar			gsub("YXXY","|");
169071d4279SBram Moolenaar			ntabs = split($0,p,"YXXY");
170071d4279SBram Moolenaar		}
171071d4279SBram Moolenaar	}
172071d4279SBram Moolenaar}
173071d4279SBram Moolenaar
174071d4279SBram Moolenaar
175071d4279SBram MoolenaarFILENAME == "gui.txt" && asciiart == "no"  \
176071d4279SBram Moolenaar	  && $0 ~ /\+----/ && $0 ~ /----\+/ {
177071d4279SBram Moolenaar	asciiart= "yes";
178071d4279SBram Moolenaar	asciicnt=0;
179071d4279SBram Moolenaar	}
180071d4279SBram Moolenaar
181071d4279SBram MoolenaarFILENAME == "quotes.txt" && asciiart == "no" \
182071d4279SBram Moolenaar	  && $0 ~ /In summary:/ {
183071d4279SBram Moolenaar	asciiart= "yes";
184071d4279SBram Moolenaar	asciicnt=0;
185071d4279SBram Moolenaar	}
186071d4279SBram Moolenaar
187071d4279SBram MoolenaarFILENAME == "usr_20.txt" && asciiart == "no" \
188071d4279SBram Moolenaar	  && $0 ~ /an empty line at the end:/ {
189071d4279SBram Moolenaar	asciiart= "yes";
190071d4279SBram Moolenaar	asciicnt=0;
191071d4279SBram Moolenaar	}
192071d4279SBram Moolenaar
193071d4279SBram Moolenaarasciiart == "yes" && $0=="" { asciicnt++; }
194071d4279SBram Moolenaar
195071d4279SBram Moolenaarasciiart == "yes" && asciicnt == 2 { asciiart = "no"; }
196071d4279SBram Moolenaar
197071d4279SBram Moolenaarasciiart == "yes" { npipe = 1; }
198071d4279SBram Moolenaar#	{ print NR " <=> " asciiart; }
199071d4279SBram Moolenaar
200071d4279SBram Moolenaar#
201071d4279SBram Moolenaar# line contains  "*"
202071d4279SBram Moolenaar#
203071d4279SBram Moolenaarnstar > 2 && npipe < 3 {
204071d4279SBram Moolenaar	printf("\n");
205071d4279SBram Moolenaar	for ( i=1; i <= nstar ; i=i+2 ) {
206071d4279SBram Moolenaar		this=s[i];
207071d4279SBram Moolenaar		put_this();
208071d4279SBram Moolenaar		ii=i+1;
209071d4279SBram Moolenaar		nbla = split(s[ii],blata," ");
210071d4279SBram Moolenaar		if ( ii <= nstar ) {
211071d4279SBram Moolenaar			if ( nbla == 1 && substr(s[ii],length(s[ii]),1) != " " ) {
212071d4279SBram Moolenaar			printf("*<A NAME=\"%s\"></A>",s[ii]);
213071d4279SBram Moolenaar				printf("<B>%s</B>*",s[ii]);
214071d4279SBram Moolenaar			} else {
215071d4279SBram Moolenaar			printf("*%s*",s[ii]);
216071d4279SBram Moolenaar			}
217071d4279SBram Moolenaar		}
218071d4279SBram Moolenaar	}
219071d4279SBram Moolenaar	printf("\n");
220071d4279SBram Moolenaar	next;
221071d4279SBram Moolenaar	}
222071d4279SBram Moolenaar#
223071d4279SBram Moolenaar# line contains "|"
224071d4279SBram Moolenaar#
225071d4279SBram Moolenaarnpipe > 2 && nstar < 3 {
226071d4279SBram Moolenaar	if  ( npipe%2 == 0 ) {
227071d4279SBram Moolenaar		for ( i=1; i < npipe ; i++ ) {
228071d4279SBram Moolenaar			gsub("ZWWZ","*",p[i]);
229071d4279SBram Moolenaar			printf("%s|",p[i]);
230071d4279SBram Moolenaar		}
231071d4279SBram Moolenaar		printf("%s\n",p[npipe]);
232071d4279SBram Moolenaar		next;
233071d4279SBram Moolenaar		}
234071d4279SBram Moolenaar	for ( i=1; i <= npipe ; i++ )
235071d4279SBram Moolenaar		{
236071d4279SBram Moolenaar		if ( i % 2 == 1 ) {
237071d4279SBram Moolenaar			gsub("ZWWZ","*",p[i]);
238071d4279SBram Moolenaar			this=p[i];
239071d4279SBram Moolenaar			put_this();
240071d4279SBram Moolenaar			}
241071d4279SBram Moolenaar			else {
242071d4279SBram Moolenaar			nfn=split(p[i],f,".");
243071d4279SBram Moolenaar			if ( nfn == 1 || f[2] == "" || f[1] == "" || length(f[2]) < 3 ) {
244071d4279SBram Moolenaar				find_tag1();
245071d4279SBram Moolenaar				}
246071d4279SBram Moolenaar				else {
2479b2200acSBram Moolenaar					if ( f[1] == "index" ) {
2489b2200acSBram Moolenaar		printf "|<A HREF=\"vimindex.html\">" p[i] "</A>|";
2499b2200acSBram Moolenaar					} else {
2509b2200acSBram Moolenaar						if ( f[1] == "help" ) {
2519b2200acSBram Moolenaar		printf "|<A HREF=\"index.html\">" p[i] "</A>|";
2529b2200acSBram Moolenaar						} else {
253071d4279SBram Moolenaar		printf "|<A HREF=\"" f[1] ".html\">" p[i] "</A>|";
254071d4279SBram Moolenaar						}
255071d4279SBram Moolenaar					}
256071d4279SBram Moolenaar				}
2579b2200acSBram Moolenaar			}
2589b2200acSBram Moolenaar		}
259071d4279SBram Moolenaar		printf("\n");
260071d4279SBram Moolenaar		next;
261071d4279SBram Moolenaar	}
262071d4279SBram Moolenaar#
263071d4279SBram Moolenaar# line contains both "|" and "*"
264071d4279SBram Moolenaar#
265071d4279SBram Moolenaarnpipe > 2 && nstar > 2 {
266071d4279SBram Moolenaar	printf("\n");
267071d4279SBram Moolenaar	for ( j=1; j <= nstar ; j=j+2 ) {
268071d4279SBram Moolenaar		npipe = split(s[j],p,"YXXY");
269071d4279SBram Moolenaar		if ( npipe > 1 ) {
270071d4279SBram Moolenaar			for ( np=1; np<=npipe; np=np+2 ) {
271071d4279SBram Moolenaar				this=p[np];
272071d4279SBram Moolenaar				put_this();
273071d4279SBram Moolenaar				i=np+1;find_tag1();
274071d4279SBram Moolenaar			}
275071d4279SBram Moolenaar		} else {
276071d4279SBram Moolenaar			this=s[j];
277071d4279SBram Moolenaar			put_this();
278071d4279SBram Moolenaar		}
279071d4279SBram Moolenaar		jj=j+1;
280071d4279SBram Moolenaar		nbla = split(s[jj],blata," ");
281071d4279SBram Moolenaar		if ( jj <= nstar && nbla == 1 && s[jj] != "" ) {
282071d4279SBram Moolenaar		printf("*<A NAME=\"%s\"></A>",s[jj]);
283071d4279SBram Moolenaar			printf("<B>%s</B>*",s[jj]);
284071d4279SBram Moolenaar		} else {
285071d4279SBram Moolenaar			if ( s[jj] != "" ) {
286071d4279SBram Moolenaar			printf("*%s*",s[jj]);
287071d4279SBram Moolenaar			}
288071d4279SBram Moolenaar		}
289071d4279SBram Moolenaar	}
290071d4279SBram Moolenaar	printf("\n");
291071d4279SBram Moolenaar	next;
292071d4279SBram Moolenaar	}
293071d4279SBram Moolenaar#
294071d4279SBram Moolenaar# line contains e-mail address [email protected]
295071d4279SBram Moolenaar#
296071d4279SBram Moolenaar$0 ~ /@/ && $0 ~ /[a-zA-Z0-9]@[a-z]/ \
297071d4279SBram Moolenaar	{
298071d4279SBram Moolenaar	nemail=split($0,em," ");
299071d4279SBram Moolenaar	if ( substr($0,1,1) == "	" ) { printf("	"); }
300071d4279SBram Moolenaar	for ( i=1; i <= nemail; i++ ) {
301071d4279SBram Moolenaar		if ( em[i] ~ /@/ ) {
302071d4279SBram Moolenaar			if ( substr(em[i],2,3) == "lt;" && substr(em[i],length(em[i])-2,3) == "gt;" ) {
303071d4279SBram Moolenaar				mailaddr=substr(em[i],5,length(em[i])-8);
304071d4279SBram Moolenaar				printf("<A HREF=\"mailto:%s\">&lt;%s&gt;</A> ",mailaddr,mailaddr);
305071d4279SBram Moolenaar			} else {
306071d4279SBram Moolenaar				if ( substr(em[i],2,3) == "lt;" && substr(em[i],length(em[i])-3,3) == "gt;" ) {
307071d4279SBram Moolenaar					mailaddr=substr(em[i],5,length(em[i])-9);
308071d4279SBram Moolenaar					printf("<A HREF=\"mailto:%s\">&lt;%s&gt;</A>%s ",mailaddr,mailaddr,substr(em[i],length(em[i]),1));
309071d4279SBram Moolenaar				} else {
310071d4279SBram Moolenaar					printf("<A HREF=\"mailto:%s\">%s</A> ",em[i],em[i]);
311071d4279SBram Moolenaar				}
312071d4279SBram Moolenaar			}
313071d4279SBram Moolenaar		} else {
314071d4279SBram Moolenaar				printf("%s ",em[i]);
315071d4279SBram Moolenaar		}
316071d4279SBram Moolenaar	}
317071d4279SBram Moolenaar	#print "*** " NR " " FILENAME " - possible mail ref";
318071d4279SBram Moolenaar	printf("\n");
319071d4279SBram Moolenaar	next;
320071d4279SBram Moolenaar	}
321071d4279SBram Moolenaar#
322071d4279SBram Moolenaar# line contains http / ftp reference
323071d4279SBram Moolenaar#
324071d4279SBram Moolenaar$0 ~ /http:\/\// || $0 ~ /ftp:\/\// {
325071d4279SBram Moolenaar	gsub("URL:","");
326071d4279SBram Moolenaar	gsub("&lt;","");
327071d4279SBram Moolenaar	gsub("&gt;","");
328071d4279SBram Moolenaar	gsub("\\(","");
329071d4279SBram Moolenaar	gsub("\\)","");
330071d4279SBram Moolenaar	nemail=split($0,em," ");
331071d4279SBram Moolenaar	for ( i=1; i <= nemail; i++ ) {
332071d4279SBram Moolenaar		if ( substr(em[i],1,5) == "http:" ||
333071d4279SBram Moolenaar	     	substr(em[i],1,4) == "ftp:" ) {
334071d4279SBram Moolenaar			if ( substr(em[i],length(em[i]),1) != "." ) {
335071d4279SBram Moolenaar				printf("	<A HREF=\"%s\">%s</A>",em[i],em[i]);
336071d4279SBram Moolenaar			} else {
337071d4279SBram Moolenaar				em[i]=substr(em[i],1,length(em[i])-1);
338071d4279SBram Moolenaar				printf("	<A HREF=\"%s\">%s</A>.",em[i],em[i]);
339071d4279SBram Moolenaar			}
340071d4279SBram Moolenaar		} else {
341071d4279SBram Moolenaar		printf(" %s",em[i]);
342071d4279SBram Moolenaar		}
343071d4279SBram Moolenaar	}
344071d4279SBram Moolenaar	#print "*** " NR " " FILENAME " - possible http ref";
345071d4279SBram Moolenaar	printf("\n");
346071d4279SBram Moolenaar	next;
347071d4279SBram Moolenaar	}
348071d4279SBram Moolenaar#
349071d4279SBram Moolenaar# some lines contains just one "almost regular" "*"...
350071d4279SBram Moolenaar#
351071d4279SBram Moolenaarnstar == 2  {
352071d4279SBram Moolenaar	this=s[1];
353071d4279SBram Moolenaar	put_this();
354071d4279SBram Moolenaar	printf("*");
355071d4279SBram Moolenaar	this=s[2];
356071d4279SBram Moolenaar	put_this();
357071d4279SBram Moolenaar	printf("\n");
358071d4279SBram Moolenaar	next;
359071d4279SBram Moolenaar	}
360071d4279SBram Moolenaar#
361071d4279SBram Moolenaar# regular line
362071d4279SBram Moolenaar#
363071d4279SBram Moolenaar	{ ntabs = split($0,tb,"	");
364071d4279SBram Moolenaar	for ( i=1; i < ntabs ; i++) {
365071d4279SBram Moolenaar		this=tb[i];
366071d4279SBram Moolenaar		put_this();
367071d4279SBram Moolenaar		printf("	");
368071d4279SBram Moolenaar		}
369071d4279SBram Moolenaar	this=tb[ntabs];
370071d4279SBram Moolenaar	put_this();
371071d4279SBram Moolenaar	printf("\n");
372071d4279SBram Moolenaar	}
373071d4279SBram Moolenaar
374071d4279SBram Moolenaar
375071d4279SBram Moolenaarasciiart == "yes"  && $0 ~ /\+-\+--/  \
376071d4279SBram Moolenaar	&& $0 ~ "scrollbar" { asciiart = "no"; }
377071d4279SBram Moolenaar
378071d4279SBram MoolenaarEND {
379071d4279SBram Moolenaar	topback();
380071d4279SBram Moolenaar	print "</PRE>\n</BODY>\n\n\n</HTML>"; }
381071d4279SBram Moolenaar
382071d4279SBram Moolenaar#
383071d4279SBram Moolenaar# as main we keep index.txt (by default)
384071d4279SBram Moolenaar#
385071d4279SBram Moolenaarfunction topback () {
386071d4279SBram Moolenaar	if ( FILENAME != "tags" ) {
387071d4279SBram Moolenaar	if ( FILENAME != "help.txt" ) {
388071d4279SBram Moolenaar	printf("<A HREF=\"#top\">top</A> - ");
3899b2200acSBram Moolenaar	printf("<A HREF=\"index.html\">main help file</A>\n");
390071d4279SBram Moolenaar	} else {
391071d4279SBram Moolenaar	printf("<A HREF=\"#top\">top</A>\n");
392071d4279SBram Moolenaar	}
393071d4279SBram Moolenaar	}
394071d4279SBram Moolenaar}
395071d4279SBram Moolenaar
396071d4279SBram Moolenaarfunction find_tag1() {
397071d4279SBram Moolenaar	if ( p[i] == "" ) { return; }
398071d4279SBram Moolenaar	if ( tagkey[p[i]] == "yes" ) {
399071d4279SBram Moolenaar		which=tagref[p[i]];
400071d4279SBram Moolenaar		put_href();
401071d4279SBram Moolenaar		return;
402071d4279SBram Moolenaar	}
403071d4279SBram Moolenaar	# if not found, then we have a problem
404071d4279SBram Moolenaar	print "============================================"  >>"errors.log";
405071d4279SBram Moolenaar	print FILENAME ", line " NR ", pointer: >>" p[i] "<<" >>"errors.log";
406071d4279SBram Moolenaar	print $0 >>"errors.log";
407071d4279SBram Moolenaar	which="intro.html";
408071d4279SBram Moolenaar	put_href();
409071d4279SBram Moolenaar}
410071d4279SBram Moolenaar
411071d4279SBram Moolenaarfunction see_tag() {
412071d4279SBram Moolenaar# ad-hoc code:
413071d4279SBram Moolenaarif ( atag == "\"--" || atag == "--\"" ) { return; }
414071d4279SBram Moolenaarif_already();
415071d4279SBram Moolenaarif ( already == "yes" ) {
416071d4279SBram Moolenaar	printf("%s",aword);
417071d4279SBram Moolenaar	return;
418071d4279SBram Moolenaar	}
419071d4279SBram Moolenaarallow_one_char="no";
420071d4279SBram Moolenaarfind_tag2();
421071d4279SBram Moolenaarif ( done == "yes" ) { return; }
422071d4279SBram Moolenaarrightchar=substr(atag,length(atag),1);
423071d4279SBram Moolenaarif (    rightchar == "." \
424071d4279SBram Moolenaar     || rightchar == "," \
425071d4279SBram Moolenaar     || rightchar == ":" \
426071d4279SBram Moolenaar     || rightchar == ";" \
427071d4279SBram Moolenaar     || rightchar == "!" \
428071d4279SBram Moolenaar     || rightchar == "?" \
429071d4279SBram Moolenaar     || rightchar == ")" ) {
430071d4279SBram Moolenaar	atag=substr(atag,1,length(atag)-1);
431071d4279SBram Moolenaar	if_already();
432071d4279SBram Moolenaar	if ( already == "yes" ) {
433071d4279SBram Moolenaar		printf("%s",aword);
434071d4279SBram Moolenaar		return;
435071d4279SBram Moolenaar	}
436071d4279SBram Moolenaar	find_tag2();
437071d4279SBram Moolenaar	if ( done == "yes" ) { printf("%s",rightchar);return; }
438071d4279SBram Moolenaar	leftchar=substr(atag,1,1);
439071d4279SBram Moolenaar	lastbut1=substr(atag,length(atag),1);
440071d4279SBram Moolenaar	if (    leftchar == "'" && lastbut1 == "'"  ) {
441071d4279SBram Moolenaar		allow_one_char="yes";
442071d4279SBram Moolenaar		atag=substr(atag,2,length(atag)-2);
443071d4279SBram Moolenaar		if_already();
444071d4279SBram Moolenaar		if ( already == "yes" ) {
445071d4279SBram Moolenaar			printf("%s",aword);
446071d4279SBram Moolenaar			return;
447071d4279SBram Moolenaar		}
448071d4279SBram Moolenaar		printf("%s",leftchar);
449071d4279SBram Moolenaar		aword=substr(atag,1,length(atag))""lastbut1""rightchar;
450071d4279SBram Moolenaar		find_tag2();
451071d4279SBram Moolenaar		if ( done == "yes" ) { printf("%s%s",lastbut1,rightchar);return; }
452071d4279SBram Moolenaar		}
453071d4279SBram Moolenaar	}
454071d4279SBram Moolenaaratag=aword;
455071d4279SBram Moolenaarleftchar=substr(atag,1,1);
456071d4279SBram Moolenaarif (    leftchar == "'" && rightchar == "'"  ) {
457071d4279SBram Moolenaar	allow_one_char="yes";
458071d4279SBram Moolenaar	atag=substr(atag,2,length(atag)-2);
459071d4279SBram Moolenaar	if  ( atag == "<" ) { printf(" |%s|%s| ",atag,p[2]); }
460071d4279SBram Moolenaar	if_already();
461071d4279SBram Moolenaar	if ( already == "yes" ) {
462071d4279SBram Moolenaar		printf("%s",aword);
463071d4279SBram Moolenaar		return;
464071d4279SBram Moolenaar		}
465071d4279SBram Moolenaar	printf("%s",leftchar);
466071d4279SBram Moolenaar	find_tag2();
467071d4279SBram Moolenaar	if ( done == "yes" ) { printf("%s",rightchar);return; }
468071d4279SBram Moolenaar	printf("%s%s",atag,rightchar);
469071d4279SBram Moolenaar	return;
470071d4279SBram Moolenaar	}
471071d4279SBram Moolenaarlast2=substr(atag,length(atag)-1,2);
472071d4279SBram Moolenaarfirst2=substr(atag,1,2);
473071d4279SBram Moolenaarif (    first2 == "('" && last2 == "')"  ) {
474071d4279SBram Moolenaar	allow_one_char="yes";
475071d4279SBram Moolenaar	atag=substr(atag,3,length(atag)-4);
476071d4279SBram Moolenaar	if_already();
477071d4279SBram Moolenaar	if ( already == "yes" ) {
478071d4279SBram Moolenaar		printf("%s",aword);
479071d4279SBram Moolenaar		return;
480071d4279SBram Moolenaar		}
481071d4279SBram Moolenaar	printf("%s",first2);
482071d4279SBram Moolenaar	find_tag2();
483071d4279SBram Moolenaar	if ( done == "yes" ) { printf("%s",last2);return; }
484071d4279SBram Moolenaar	printf("%s%s",atag,last2);
485071d4279SBram Moolenaar	return;
486071d4279SBram Moolenaar	}
487071d4279SBram Moolenaarif ( last2 == ".)" ) {
488071d4279SBram Moolenaar	atag=substr(atag,1,length(atag)-2);
489071d4279SBram Moolenaar	if_already();
490071d4279SBram Moolenaar	if ( already == "yes" ) {
491071d4279SBram Moolenaar		printf("%s",aword);
492071d4279SBram Moolenaar		return;
493071d4279SBram Moolenaar		}
494071d4279SBram Moolenaar	find_tag2();
495071d4279SBram Moolenaar	if ( done == "yes" ) { printf("%s",last2);return; }
496071d4279SBram Moolenaar	printf("%s%s",atag,last2);
497071d4279SBram Moolenaar	return;
498071d4279SBram Moolenaar	}
499071d4279SBram Moolenaarif ( last2 == ")." ) {
500071d4279SBram Moolenaar	atag=substr(atag,1,length(atag)-2);
501071d4279SBram Moolenaar	find_tag2();
502071d4279SBram Moolenaar	if_already();
503071d4279SBram Moolenaar	if ( already == "yes" ) {
504071d4279SBram Moolenaar		printf("%s",aword);
505071d4279SBram Moolenaar		return;
506071d4279SBram Moolenaar		}
507071d4279SBram Moolenaar	if ( done == "yes" ) { printf("%s",last2);return; }
508071d4279SBram Moolenaar	printf("%s%s",atag,last2);
509071d4279SBram Moolenaar	return;
510071d4279SBram Moolenaar	}
511071d4279SBram Moolenaarfirst6=substr(atag,1,6);
512071d4279SBram Moolenaarlast6=substr(atag,length(atag)-5,6);
513071d4279SBram Moolenaarif ( last6 == atag ) {
514071d4279SBram Moolenaar	printf("%s",aword);
515071d4279SBram Moolenaar	return;
516071d4279SBram Moolenaar	}
517071d4279SBram Moolenaarlast6of7=substr(atag,length(atag)-6,6);
518071d4279SBram Moolenaarif ( first6 == "&quot;" && last6of7 == "&quot;" && length(atag) > 12 ) {
519071d4279SBram Moolenaar	allow_one_char="yes";
520071d4279SBram Moolenaar	atag=substr(atag,7,length(atag)-13);
521071d4279SBram Moolenaar	if_already();
522071d4279SBram Moolenaar	if ( already == "yes" ) {
523071d4279SBram Moolenaar		printf("%s",aword);
524071d4279SBram Moolenaar		return;
525071d4279SBram Moolenaar		}
526071d4279SBram Moolenaar	printf("%s",first6);
527071d4279SBram Moolenaar	find_tag2();
528071d4279SBram Moolenaar	if ( done == "yes" ) { printf("&quot;%s",rightchar); return; }
529071d4279SBram Moolenaar	printf("%s&quot;%s",atag,rightchar);
530071d4279SBram Moolenaar	return;
531071d4279SBram Moolenaar	}
532071d4279SBram Moolenaarif ( first6 == "&quot;" && last6 != "&quot;" ) {
533071d4279SBram Moolenaar	allow_one_char="yes";
534071d4279SBram Moolenaar	atag=substr(atag,7,length(atag)-6);
535071d4279SBram Moolenaar	if ( atag == "[" ) { printf("&quot;%s",atag); return; }
536071d4279SBram Moolenaar	if ( atag == "." ) { printf("&quot;%s",atag); return; }
537071d4279SBram Moolenaar	if ( atag == ":" ) { printf("&quot;%s",atag); return; }
538071d4279SBram Moolenaar	if ( atag == "a" ) { printf("&quot;%s",atag); return; }
539071d4279SBram Moolenaar	if ( atag == "A" ) { printf("&quot;%s",atag); return; }
540071d4279SBram Moolenaar	if ( atag == "g" ) { printf("&quot;%s",atag); return; }
541071d4279SBram Moolenaar	if_already();
542071d4279SBram Moolenaar	if ( already == "yes" ) {
543071d4279SBram Moolenaar		printf("&quot;%s",atag);
544071d4279SBram Moolenaar		return;
545071d4279SBram Moolenaar		}
546071d4279SBram Moolenaar	printf("%s",first6);
547071d4279SBram Moolenaar	find_tag2();
548071d4279SBram Moolenaar	if ( done == "yes" ) { return; }
549071d4279SBram Moolenaar	printf("%s",atag);
550071d4279SBram Moolenaar	return;
551071d4279SBram Moolenaar	}
552071d4279SBram Moolenaarif ( last6 == "&quot;" && first6 == "&quot;" ) {
553071d4279SBram Moolenaar	allow_one_char="yes";
554071d4279SBram Moolenaar	atag=substr(atag,7,length(atag)-12);
555071d4279SBram Moolenaar	if_already();
556071d4279SBram Moolenaar	if ( already == "yes" ) {
557071d4279SBram Moolenaar		printf("%s",aword);
558071d4279SBram Moolenaar		return;
559071d4279SBram Moolenaar		}
560071d4279SBram Moolenaar	printf("%s",first6);
561071d4279SBram Moolenaar	find_tag2();
562071d4279SBram Moolenaar	if ( done == "yes" ) { printf("%s",last6);return; }
563071d4279SBram Moolenaar	printf("%s%s",atag,last6);
564071d4279SBram Moolenaar	return;
565071d4279SBram Moolenaar	}
566071d4279SBram Moolenaarlast6of7=substr(atag,length(atag)-6,6);
567071d4279SBram Moolenaarif ( last6of7 == "&quot;" && first6 == "&quot;" ) {
568071d4279SBram Moolenaar	allow_one_char="yes";
569071d4279SBram Moolenaar	atag=substr(atag,7,length(atag)-13);
570071d4279SBram Moolenaar	#printf("\natag=%s,aword=%s\n",atag,aword);
571071d4279SBram Moolenaar	if_already();
572071d4279SBram Moolenaar	if ( already == "yes" ) {
573071d4279SBram Moolenaar		printf("%s",aword);
574071d4279SBram Moolenaar		return;
575071d4279SBram Moolenaar		}
576071d4279SBram Moolenaar	printf("%s",first6);
577071d4279SBram Moolenaar	find_tag2();
578071d4279SBram Moolenaar	if ( done == "yes" ) { printf("%s%s",last6of7,rightchar);return; }
579071d4279SBram Moolenaar	printf("%s%s%s",atag,last6of7,rightchar);
580071d4279SBram Moolenaar	return;
581071d4279SBram Moolenaar	}
582071d4279SBram Moolenaarprintf("%s",aword);
583071d4279SBram Moolenaar}
584071d4279SBram Moolenaar
585071d4279SBram Moolenaarfunction find_tag2() {
586071d4279SBram Moolenaar	done="no";
587071d4279SBram Moolenaar	# no blanks present in a tag...
588071d4279SBram Moolenaar	ntags=split(atag,blata,"[ 	]");
589071d4279SBram Moolenaar	if ( ntags > 1 ) { return; }
590071d4279SBram Moolenaar	if 	( ( allow_one_char == "no" ) && \
5915e3cb7e8SBram Moolenaar		  ( index("!#$%&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",atag) !=0 ) ) {
592071d4279SBram Moolenaar		return;
593071d4279SBram Moolenaar	}
594071d4279SBram Moolenaar	if ( skip_word[atag] == "yes" ) { return; }
595071d4279SBram Moolenaar	if ( wasset == "yes" && lineset == NR ) {
596071d4279SBram Moolenaar	wasset="no";
597071d4279SBram Moolenaar	see_opt();
598071d4279SBram Moolenaar	if ( done_opt == "yes" ) {return;}
599071d4279SBram Moolenaar	}
600071d4279SBram Moolenaar	if ( wasset == "yes" && lineset != NR ) {
601071d4279SBram Moolenaar	wasset="no";
602071d4279SBram Moolenaar	}
603071d4279SBram Moolenaar	if ( atag == ":set" ) {
604071d4279SBram Moolenaar	wasset="yes";
605071d4279SBram Moolenaar	lineset=NR;
606071d4279SBram Moolenaar	}
607071d4279SBram Moolenaar	if ( tagkey[atag] == "yes" ) {
608071d4279SBram Moolenaar		which=tagref[atag];
609071d4279SBram Moolenaar		put_href2();
610071d4279SBram Moolenaar		done="yes";
611071d4279SBram Moolenaar	}
612071d4279SBram Moolenaar}
613071d4279SBram Moolenaar
614071d4279SBram Moolenaarfunction find_tag3() {
615071d4279SBram Moolenaar	done="no";
616071d4279SBram Moolenaar	# no blanks present in a tag...
617071d4279SBram Moolenaar	ntags=split(btag,blata,"[ 	]");
618071d4279SBram Moolenaar	if ( ntags > 1 ) { return; }
619071d4279SBram Moolenaar	if 	( ( allow_one_char == "no" ) && \
6205e3cb7e8SBram Moolenaar		  ( index("!#$%&'()+,-./0:;=?@ACINX\\[\\]^_`at\\{\\}~",btag) !=0 ) ) {
621071d4279SBram Moolenaar	  	return;
622071d4279SBram Moolenaar	}
623071d4279SBram Moolenaar	if ( skip_word[btag] == "yes" ) { return; }
624071d4279SBram Moolenaar	if ( tagkey[btag] == "yes" ) {
625071d4279SBram Moolenaar		which=tagref[btag];
626071d4279SBram Moolenaar		put_href3();
627071d4279SBram Moolenaar		done="yes";
628071d4279SBram Moolenaar	}
629071d4279SBram Moolenaar}
630071d4279SBram Moolenaar
631071d4279SBram Moolenaarfunction put_href() {
632071d4279SBram Moolenaar	if ( p[i] == "" ) { return; }
633071d4279SBram Moolenaar	if ( which == FILENAME ) {
634071d4279SBram Moolenaar		printf("|<A HREF=\"#%s\">%s</A>|",p[i],p[i]);
635071d4279SBram Moolenaar		}
636071d4279SBram Moolenaar		else {
637071d4279SBram Moolenaar		nz=split(which,zz,".");
638071d4279SBram Moolenaar		if ( zz[2] == "txt" || zz[1] == "tags" ) {
639071d4279SBram Moolenaar		printf("|<A HREF=\"%s.html#%s\">%s</A>|",zz[1],p[i],p[i]);
640071d4279SBram Moolenaar		}
641071d4279SBram Moolenaar		else {
642071d4279SBram Moolenaar		printf("|<A HREF=\"intro.html#%s\">%s</A>|",p[i],p[i]);
643071d4279SBram Moolenaar		}
644071d4279SBram Moolenaar	}
645071d4279SBram Moolenaar}
646071d4279SBram Moolenaar
647071d4279SBram Moolenaarfunction put_href2() {
648071d4279SBram Moolenaar	if ( atag == "" ) { return; }
649071d4279SBram Moolenaar	if ( which == FILENAME ) {
650071d4279SBram Moolenaar		printf("<A HREF=\"#%s\">%s</A>",atag,atag);
651071d4279SBram Moolenaar		}
652071d4279SBram Moolenaar		else {
653071d4279SBram Moolenaar		nz=split(which,zz,".");
654071d4279SBram Moolenaar		if ( zz[2] == "txt" || zz[1] == "tags" ) {
655071d4279SBram Moolenaar		printf("<A HREF=\"%s.html#%s\">%s</A>",zz[1],atag,atag);
656071d4279SBram Moolenaar		}
657071d4279SBram Moolenaar		else {
658071d4279SBram Moolenaar		printf("<A HREF=\"intro.html#%s\">%s</A>",atag,atag);
659071d4279SBram Moolenaar		}
660071d4279SBram Moolenaar	}
661071d4279SBram Moolenaar}
662071d4279SBram Moolenaar
663071d4279SBram Moolenaarfunction put_href3() {
664071d4279SBram Moolenaar	if ( btag == "" ) { return; }
665071d4279SBram Moolenaar	if ( which == FILENAME ) {
666071d4279SBram Moolenaar		printf("<A HREF=\"#%s\">%s</A>",btag,btag2);
667071d4279SBram Moolenaar		}
668071d4279SBram Moolenaar		else {
669071d4279SBram Moolenaar		nz=split(which,zz,".");
670071d4279SBram Moolenaar		if ( zz[2] == "txt" || zz[1] == "tags" ) {
671071d4279SBram Moolenaar		printf("<A HREF=\"%s.html#%s\">%s</A>",zz[1],btag,btag2);
672071d4279SBram Moolenaar		}
673071d4279SBram Moolenaar		else {
674071d4279SBram Moolenaar		printf("<A HREF=\"intro.html#%s\">%s</A>",btag,btag2);
675071d4279SBram Moolenaar		}
676071d4279SBram Moolenaar	}
677071d4279SBram Moolenaar}
678071d4279SBram Moolenaar
679071d4279SBram Moolenaarfunction put_this() {
680071d4279SBram Moolenaar	ntab=split(this,ta,"	");
681071d4279SBram Moolenaar	for ( nta=1 ; nta <= ntab ; nta++ ) {
682071d4279SBram Moolenaar		ata=ta[nta];
683071d4279SBram Moolenaar		lata=length(ata);
684071d4279SBram Moolenaar		aword="";
685071d4279SBram Moolenaar		for ( iata=1 ; iata <=lata ; iata++ ) {
686071d4279SBram Moolenaar			achar=substr(ata,iata,1);
687071d4279SBram Moolenaar			if ( achar != " " ) { aword=aword""achar; }
688071d4279SBram Moolenaar			else {
689071d4279SBram Moolenaar				if ( aword != "" ) { atag=aword;
690071d4279SBram Moolenaar					see_tag();
691071d4279SBram Moolenaar					aword="";
692071d4279SBram Moolenaar					printf(" "); }
693071d4279SBram Moolenaar				else	{
694071d4279SBram Moolenaar					printf(" ");
695071d4279SBram Moolenaar					}
696071d4279SBram Moolenaar			}
697071d4279SBram Moolenaar		}
698071d4279SBram Moolenaar		if ( aword != "" ) { atag=aword;
699071d4279SBram Moolenaar					see_tag();
700071d4279SBram Moolenaar					}
701071d4279SBram Moolenaar		if ( nta != ntab ) { printf("	"); }
702071d4279SBram Moolenaar	}
703071d4279SBram Moolenaar}
704071d4279SBram Moolenaar
705071d4279SBram Moolenaarfunction if_already() {
706071d4279SBram Moolenaar	already="no";
707071d4279SBram Moolenaar	if  ( npipe < 2 ) { return; }
708071d4279SBram Moolenaar	if  ( atag == ":au" && p[2] == ":autocmd" ) { already="yes";return; }
709071d4279SBram Moolenaar	for ( npp=2 ; npp <= npipe ; npp=npp+2 ) {
710071d4279SBram Moolenaar		if 	(  (  (index(p[npp],atag)) != 0 \
711071d4279SBram Moolenaar			      && length(p[npp]) > length(atag) \
712071d4279SBram Moolenaar			      && length(atag) >= 1  \
713071d4279SBram Moolenaar			    ) \
714071d4279SBram Moolenaar			    || (p[npp] == atag) \
715071d4279SBram Moolenaar			) {
716071d4279SBram Moolenaar		# printf("p=|%s|,tag=|%s| ",p[npp],atag);
717071d4279SBram Moolenaar		already="yes"; return; }
718071d4279SBram Moolenaar	}
719071d4279SBram Moolenaar}
720071d4279SBram Moolenaar
721071d4279SBram Moolenaarfunction see_opt() {
722071d4279SBram Moolenaar	done_opt="no";
723071d4279SBram Moolenaar	stag=atag;
724071d4279SBram Moolenaar	nfields = split(atag,tae,"=");
725071d4279SBram Moolenaar	if ( nfields > 1 )  {
726071d4279SBram Moolenaar		btag="'"tae[1]"'";
727071d4279SBram Moolenaar		btag2=tae[1];
728071d4279SBram Moolenaar	    find_tag3();
729071d4279SBram Moolenaar		if (done == "yes") {
730071d4279SBram Moolenaar			for ( ntae=2 ; ntae <= nfields ; ntae++ ) {
731071d4279SBram Moolenaar				printf("=%s",tae[ntae]);
732071d4279SBram Moolenaar			}
733071d4279SBram Moolenaar			atag=stag;
734071d4279SBram Moolenaar			done_opt="yes";
735071d4279SBram Moolenaar			return;
736071d4279SBram Moolenaar		}
737071d4279SBram Moolenaar		btag=tae[1];
738071d4279SBram Moolenaar		btag2=tae[1];
739071d4279SBram Moolenaar	    find_tag3();
740071d4279SBram Moolenaar		if ( done=="yes" ) {
741071d4279SBram Moolenaar			for ( ntae=2 ; ntae <= nfields ; ntae++ ) {
742071d4279SBram Moolenaar				printf("=%s",tae[ntae]);
743071d4279SBram Moolenaar			}
744071d4279SBram Moolenaar			atag=stag;
745071d4279SBram Moolenaar			done_opt="yes";
746071d4279SBram Moolenaar			return;
747071d4279SBram Moolenaar		}
748071d4279SBram Moolenaar	}
749071d4279SBram Moolenaar	nfields = split(atag,tae,"&quot;");
750071d4279SBram Moolenaar	if ( nfields > 1 )  {
751071d4279SBram Moolenaar		btag="'"tae[1]"'";
752071d4279SBram Moolenaar		btag2=tae[1];
753071d4279SBram Moolenaar	   	find_tag3();
754071d4279SBram Moolenaar		if (done == "yes") {
755071d4279SBram Moolenaar			printf("&quot;");
756071d4279SBram Moolenaar			atag=stag;
757071d4279SBram Moolenaar			done_opt="yes";
758071d4279SBram Moolenaar			return;
759071d4279SBram Moolenaar		}
760071d4279SBram Moolenaar		btag=tae[1];
761071d4279SBram Moolenaar		btag2=tae[1];
762071d4279SBram Moolenaar	    find_tag3();
763071d4279SBram Moolenaar		if (done == "yes") {
764071d4279SBram Moolenaar			printf("&quot;");
765071d4279SBram Moolenaar			atag=stag;
766071d4279SBram Moolenaar			done_opt="yes";
767071d4279SBram Moolenaar			return;
768071d4279SBram Moolenaar		}
769071d4279SBram Moolenaar	}
770071d4279SBram Moolenaar	btag="'"tae[1]"'";
771071d4279SBram Moolenaar	btag2=tae[1];
772071d4279SBram Moolenaar	find_tag3();
773071d4279SBram Moolenaar	if (done == "yes") {
774071d4279SBram Moolenaar		atag=stag;
775071d4279SBram Moolenaar		done_opt="yes";
776071d4279SBram Moolenaar		return;
777071d4279SBram Moolenaar	}
778071d4279SBram Moolenaar	btag=tae[1];
779071d4279SBram Moolenaar	btag2=tae[1];
780071d4279SBram Moolenaar	find_tag3();
781071d4279SBram Moolenaar	if (done == "yes") {
782071d4279SBram Moolenaar		atag=stag;
783071d4279SBram Moolenaar		done_opt="yes";
784071d4279SBram Moolenaar		return;
785071d4279SBram Moolenaar	}
786071d4279SBram Moolenaar	atag=stag;
787071d4279SBram Moolenaar}
788