Mercurial > hg > xemacs-beta
comparison man/w3.texi @ 0:376386a54a3c r19-14
Import from CVS: tag r19-14
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:45:50 +0200 |
parents | |
children | ac2d302a0011 |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:376386a54a3c |
---|---|
1 \input texinfo | |
2 @setfilename ../info/w3.info | |
3 @settitle Emacs-W3 User's Manual | |
4 @iftex | |
5 @finalout | |
6 @end iftex | |
7 @c @setchapternewpage odd | |
8 @c @smallbook | |
9 @tex | |
10 \overfullrule=0pt | |
11 %\global\baselineskip 30pt % for printing in double space | |
12 @end tex | |
13 @synindex cp fn | |
14 @synindex vr fn | |
15 @ifinfo | |
16 This file documents the Emacs-W3 World Wide Web browser. | |
17 | |
18 Copyright (C) 1993, 1994, 1995 William M. Perry | |
19 Copyright (C) 1996 Free Software Foundation | |
20 | |
21 Permission is granted to make and distribute verbatim copies of | |
22 this manual provided the copyright notice and this permission notice | |
23 are preserved on all copies. | |
24 | |
25 @ignore | |
26 Permission is granted to process this file through Tex and print the | |
27 results, provided the printed document carries copying permission | |
28 notice identical to this one except for the removal of this paragraph | |
29 (this paragraph not being relevant to the printed manual). | |
30 | |
31 @end ignore | |
32 @end ifinfo | |
33 @c | |
34 @titlepage | |
35 @sp 6 | |
36 @center @titlefont{Emacs-W3} | |
37 @center @titlefont{User's Manual} | |
38 @sp 4 | |
39 @center Third Edition, Emacs-W3 Version 2.3.0 | |
40 @sp 1 | |
41 @center February 1996 | |
42 @sp 5 | |
43 @center William M. Perry | |
44 @center @i{wmperry@@cs.indiana.edu} | |
45 @page | |
46 @vskip 0pt plus 1filll | |
47 Copyright @copyright{} 1993, 1994, 1995 William M. Perry@* | |
48 Copyright @copyright{} 1996 Free Software Foundation | |
49 | |
50 Permission is granted to make and distribute verbatim copies of@* | |
51 this manual provided the copyright notice and this permission notice@* | |
52 are preserved on all copies. | |
53 | |
54 @end titlepage | |
55 @page | |
56 @ifinfo | |
57 @node Top, Introduction,, (DIR) | |
58 This manual documents the Emacs-W3 World Wide Web browser, a Lisp program | |
59 which runs as a subsystem under Emacs. The manual is divided into the | |
60 following chapters. | |
61 | |
62 @menu | |
63 * Introduction:: What exactly is Emacs-W3? | |
64 * Setting Up:: How to set up and install Emacs-W3. | |
65 * Basic Usage:: Basic movement and usage of Emacs-W3. | |
66 * Compatibility:: Explanation of compatibility with | |
67 other web browsers. | |
68 * Controlling Formatting:: How to control HTML formatting | |
69 * MIME Support:: Support for MIME | |
70 * Security:: Various forms of security | |
71 * Non-Unix Operating Systems:: Special considerations necessary to get | |
72 up and running correctly under non-unix | |
73 OS's. | |
74 * Advanced Features:: Some of the more arcane features. | |
75 * More Help:: How to get more help---mailing lists, | |
76 newsgroups, etc. | |
77 * Future Directions:: Plans for future revisions | |
78 * Programming Interface:: How to use Emacs-W3 from other emacs | |
79 programs. | |
80 | |
81 Appendices: | |
82 * Reporting Bugs:: How to report a bug in Emacs-W3 | |
83 * Installing SSL:: Turning on SSL support | |
84 * Using PGP/PEM:: Turning on PGP/PEM encryption support | |
85 * Mailcap Files:: An explanation of Mailcap files | |
86 | |
87 Indices: | |
88 * General Index:: General Index | |
89 * Key Index:: Menus of command keys and their references | |
90 @end menu | |
91 @end ifinfo | |
92 | |
93 @node Introduction, Setting Up, Top, Top | |
94 @chapter Introduction | |
95 @cindex World Wide Web | |
96 Emacs-W3 is an Emacs subsystem that allows the user to browse the wonderful | |
97 World Wide Web (WWW). | |
98 | |
99 The World Wide Web was begun at the CERN physics institute in | |
100 Switzerland in 1991. The project was initiated by Tim Berners-Lee | |
101 (@i{timbl@@w3.org}) for distributing data between different research | |
102 groups effectively. | |
103 | |
104 | |
105 The Web has since grown into the most advanced information system | |
106 currently on the internet. It is now a global hypertext system with | |
107 servers and @dfn{browsers} (programs written to interpret the hypertext | |
108 language and display it correctly, and allow the user to follow links) | |
109 exist for all major platforms (VMS, Windows, DOS, Unix, VM, NeXTstep, | |
110 Amiga, and Macintosh). | |
111 | |
112 The basic concepts used in the Web are @b{hypertext} and @b{hypermedia}. | |
113 Hypertext is the same as regular text, with one exception---it can | |
114 contain links (cross-references) to other textual documents. Hypermedia | |
115 is slightly different---it can contain links to other forms of media | |
116 (movies, sounds, interactive programs, etc.). | |
117 | |
118 WWW also allows searches of indices that are located anywhere on the | |
119 network; in this respect, it mirrors certain capabilities found in both | |
120 WAIS and Gopher. | |
121 @iftex | |
122 @section Client Side View of WWW | |
123 @end iftex | |
124 @ifinfo | |
125 @center ---------------- | |
126 @center CLIENT SIDE VIEW | |
127 @center ---------------- | |
128 @end ifinfo | |
129 The WWW consists of documents and links. Indexes are special documents | |
130 which, rather than being read, may be searched. The result of such a | |
131 search is another @i{virtual} document containing links to the documents | |
132 found. A simple protocol, Hypertext Transfer Protocol or @i{HTTP}, is | |
133 used to allow a browser program to request a keyword search by a remote | |
134 information server. | |
135 | |
136 | |
137 The web contains documents in many formats. Those documents which are | |
138 hypertext, (real or virtual) contain links to other documents, or places | |
139 within documents. All documents, whether real, virtual or indexes, look | |
140 similar to the reader and are contained within the same addressing | |
141 scheme. | |
142 @iftex | |
143 @section Information Provider View of WWW | |
144 @end iftex | |
145 @ifinfo | |
146 @center ------------------------- | |
147 @center INFORMATION PROVIDER VIEW | |
148 @center ------------------------- | |
149 @end ifinfo | |
150 WWW browsers can access many existing data systems via existing | |
151 protocols (FTP, NNTP) or via HTTP and a gateway. In this way, the | |
152 critical mass of data is quickly exceeded, and the increasing use of the | |
153 system by readers and information suppliers encourage each other. | |
154 | |
155 Providing information is as simple as running a WWW server and pointing | |
156 it at an existing directory structure. The server automatically | |
157 generates a hypertext view of the files to guide the user around. | |
158 | |
159 | |
160 To personalize it, a few @b{SGML} hypertext files can be written to give | |
161 an even more friendly view. Also, any file available by anonymous FTP, | |
162 or any internet newsgroup can be immediately linked into the web. The | |
163 small start-up effort is designed to allow open contributions. At the | |
164 other end of the scale, large information providers may provide an HTTP | |
165 server with full text or keyword indexing. This may allow access to a | |
166 large existing database without changing the way that database is | |
167 managed. Such gateways have already been made into Oracle(tm), WAIS, | |
168 and Digital's VMS/Help systems, to name but a few. | |
169 | |
170 | |
171 The WWW model gets over the frustrating incompatibilities of data format | |
172 between suppliers and reader by allowing negotiation of format between a | |
173 smart browser and a smart server. This provides a basis for extension | |
174 into multimedia, and allow those who share application standards to make | |
175 full use of them across the web. | |
176 | |
177 | |
178 @ifinfo | |
179 Here is some more specific information about what Emacs-W3 does and does | |
180 not understand: | |
181 @menu | |
182 * Markup Languages Supported:: The different markup languages that | |
183 Emacs-W3 understands natively. | |
184 * Supported Protocols:: The different network protocols that | |
185 Emacs-W3 speaks to. | |
186 @end menu | |
187 @end ifinfo | |
188 @node Markup Languages Supported, Supported Protocols, Introduction, Introduction | |
189 @chapter Supported Markup Languages | |
190 Several different markup languages, and various extensions to those | |
191 languages, are supported by Emacs-W3. | |
192 @ifinfo | |
193 @center ---------- | |
194 @center HTML 2.0 | |
195 @center ---------- | |
196 @end ifinfo | |
197 @iftex | |
198 @section HTML 2.0 | |
199 @end iftex | |
200 The Hypertext Markup Language, or HTML, is composed of a set of elements | |
201 that define a document and guide its display. An HTML element may | |
202 include a name, some attributes and some text or hypertext, and appears | |
203 in an HTML document as <tag_name>text</tag_name>, <tag_name | |
204 attribute_name=argument>text</tag_name>, or just <tag_name>. | |
205 | |
206 | |
207 For example: @samp{<title>My Useful Document</title>}, and @samp{<pre | |
208 width=60> A lot of text here. </pre>}. | |
209 | |
210 An HTML document is composed of a single element: <html>...</html>, that | |
211 is, in turn, composed of head and body elements: <head>...</head>, and | |
212 <body>...</body>. To allow older HTML documents to remain readable, | |
213 <html>, <head>, and <body> are actually optional within HTML | |
214 documents. | |
215 | |
216 All the tags and attributes of HTML are fully supported in Emacs-W3. | |
217 | |
218 The full HTML 2.0 specification is available at any RFC | |
219 archive@footnote{ftp://ds.internic.net/}. It is RFC 1866. | |
220 | |
221 | |
222 @ifinfo | |
223 @center ---------- | |
224 @center HTML 3.0 | |
225 @center ---------- | |
226 @end ifinfo | |
227 @iftex | |
228 @section HTML 3.0 | |
229 @end iftex | |
230 @cindex HTML 3.0 | |
231 The HTML 3.0 language is an extension of HTML, with a large degree of | |
232 backward compatibility with HTML 2.0. The idea of having one huge HTML | |
233 3.0 document has been dropped in favor of several smaller supplementatry | |
234 RFCs. This will allow the standard to be upgraded much more quickly | |
235 than trying to agree on all the features at once. | |
236 | |
237 As each new chunk of HTML 3.0 is proposed and agreed upon, Emacs-W3 will | |
238 support it. | |
239 | |
240 :: WORK :: List currently supported chunks (embed, etc) :: | |
241 @itemize @bullet | |
242 @item Embed | |
243 Embedding of arbitrary objects into an HTML document. With the <embed> | |
244 tag, any type of document can be inserted. The most entertaining use of | |
245 this is with embedding MPEG movies into an emacs buffer. This requires | |
246 Lucid Emacs 19.10, or XEmacs 19.11, as well as a slightly patched | |
247 version of mpeg_play 2.0@footnote{The patch is available from | |
248 ftp://ftp.cs.indiana.edu/pub/elisp/w3/mpeg_patch}. | |
249 | |
250 @end itemize | |
251 @ifinfo | |
252 @center ---------- | |
253 @center Netscape-HTML | |
254 @center ---------- | |
255 @end ifinfo | |
256 @iftex | |
257 @section Netscape-HTML | |
258 @end iftex | |
259 I hate to say it, but I broke down and actually included some of the | |
260 Netscape extensions into Emacs-W3. | |
261 | |
262 @table @b | |
263 @item <font>...</font> | |
264 Changes the font size. Valid values range from 0-7. The default | |
265 font size is 3. The value given can optionally have a '+' or '-' | |
266 character in front of it to specify that it is relative to the document | |
267 basefont. Stylesheets are recommended instead, as they allow much | |
268 greater control.@xref{Style Sheets} | |
269 @item <center>...</center> | |
270 This ugly, ill-thought-out alternative to the HTML 3.0 align attribute on | |
271 headers and paragraphs was included for compatibility, and as an example | |
272 of how @b{not} to do things. | |
273 @item <isindex> | |
274 The isindex tag can now take a prompt attribute, to get rid of the | |
275 default 'This is a searchable index' label. | |
276 @item <hr width=xx align=xx> | |
277 The width and alignment of a horizontal rule can now be controlled. The | |
278 WIDTH attribute specifies how wide the rule should be, as a percentage | |
279 of the window width. | |
280 | |
281 | |
282 The ALIGN attribute specifies where the horizontal rule is placed. | |
283 Valid values are left, right, center, and indent. | |
284 @item <body background=@var{URL} bgcolor=@var{RGB} TEXT=@var{RGB} LINK=@var{RGB} ALINK=@var{RGB} VLINK=@var{RGB}> | |
285 Various colors can now be set on a document wide basis. This is done | |
286 with various attributes on the BODY tag. Stylesheets are really a | |
287 better way to do this, and are recommended. This is just for | |
288 compatibility. @xref{Style Sheets} | |
289 @b{NOTE:} Netscape requires that all colors be specified in RGB values - | |
290 this is not very intuitive for the avergage author, so Emacs-W3 allows | |
291 you to use logical system colors (ie: @samp{"PaleGoldenrod"} instead of | |
292 @samp{"#eee8aa"}). | |
293 @table @b | |
294 @item BACKGROUND=@var{url} | |
295 Specifies a graphic to tile in the background of the document. This | |
296 only works in XEmacs 19.12 or later. | |
297 @item BGCOLOR=@var{color} | |
298 Specifies the background of the document, as a color instead of a | |
299 graphic. | |
300 @item TEXT=@var{color} | |
301 Specifies the color of text on the page. | |
302 @item LINK=@var{color} | |
303 Specifies the color of hypertext links on the page. | |
304 @item VLINK=@var{color} | |
305 Specifies the color of hypertext links that have been visited already. | |
306 @item ALINK=@var{color} | |
307 Specifies the color of active hypertext links (links that have been | |
308 clicked on, but not yet fully retrieved). | |
309 @end table | |
310 @end table | |
311 @ifinfo | |
312 @center ---------- | |
313 @center SGML Features | |
314 @center ---------- | |
315 @end ifinfo | |
316 @iftex | |
317 @section SGML Features | |
318 @end iftex | |
319 @cindex SGML Features | |
320 @cindex Entity Definitions | |
321 @cindex Marked Sections | |
322 :: WORK :: Document marked sections, SGML features | |
323 @ifinfo | |
324 @center ---------- | |
325 @center Extras | |
326 @center ---------- | |
327 @end ifinfo | |
328 @iftex | |
329 @section Extra Markup | |
330 @end iftex | |
331 @cindex Easter Eggs | |
332 @cindex Fluff | |
333 @cindex Pomp & Circumstance | |
334 There are several different markup elements that are not officially part | |
335 of HTML or HTML 3.0 that Emacs-W3 supports. These are either items that | |
336 were dropped from HTML 3.0 after I had implemented them, or experimental | |
337 parts of HTML that should not be counted as "official" or long | |
338 lived. | |
339 @itemize @bullet | |
340 @item | |
341 More <HR> improvements. Text can be added into a horizontal rule by | |
342 using the LABEL and TEXTALIGN attributes. | |
343 | |
344 @example | |
345 <hr label="testing" textalign="right"> | |
346 yields | |
347 ----------------------------------------------------------testing- | |
348 | |
349 <hr label="testing" textalign="center"> | |
350 yields | |
351 -----------------------------testing------------------------------ | |
352 | |
353 <hr label="testing" textalign="left"> | |
354 yields | |
355 -Testing---------------------------------------------------------- | |
356 @end example | |
357 @item | |
358 FLAME support. For truly interesting dynamic documents. This is | |
359 replaced with a random quote from Mr. Angry (see @kbd{M-x flame} for a | |
360 sample). | |
361 @item | |
362 The top ten tags that did not make it into netscape. These tags were | |
363 posted to the newsgroup comp.infosystems.www.misc by Laura Lemay | |
364 (@i{lemay@@netcom.com}). Much thanks to her for the humor. | |
365 @table @b | |
366 @item <wired>...</wired> | |
367 Renders the enclosed text in a suitably ugly font/color combination. If | |
368 no default has been set up by the user, this is the default font, with | |
369 red text on a yellow background. | |
370 @item <roach>...</roach> | |
371 When selected, the enclosed text runs and hides under the nearest | |
372 window. OR, giggles a lot and demands nachos, depending on the | |
373 definition of "roach." (the formal definition, of course, to be | |
374 determined by the Official Honorary Internet Standards Committee For | |
375 Moving Really Slowly.) | |
376 @item <pinhead> | |
377 Inserts "zippyisms" into the enclosed text. Perfect for those professional | |
378 documents. This is sure to be a favorite of mine! | |
379 @item <secret>...</secret> | |
380 Must use secret spy decoder glasses (available direct from Netscape for | |
381 a reasonable fee) in order to read the enclosed text. Can also be read | |
382 by holding the computer in front of a full moon during the autumn | |
383 solstice. | |
384 | |
385 In Emacs-W3, this displays the text using rot13 encoding. | |
386 @item <hype> | |
387 Causes Marc Andreesen to magically appear and grant an interview (wanted | |
388 or not). Please use this tag sparingly. | |
389 @item <peek>....</peek> | |
390 @item <poke>...</poke> | |
391 Need more control over screen layout in HTML? Well, here ya go. | |
392 | |
393 Actually, <peek> could almost be considered useful. The VARIABLE | |
394 attribute can be used to insert the value of an emacs variable into the | |
395 current document. Things like 'Welcome to my page, <peek | |
396 variable=user-mail-address>' can be useful in freaking people | |
397 out. | |
398 @item <yogsothoth> | |
399 @cindex Gates Bill | |
400 @cindex Yogsothoth | |
401 Summons the elder gods to suck away your immortal soul. Or Bill Gates, | |
402 if the elder gods are busy. Unpredictable (but amusing) results occur | |
403 when the <YOGSOTHOTH> and <HYPE> tags are used in close proximity. | |
404 | |
405 @item <blink>...</blink> | |
406 Causes the enclosed text to .... ooops that one made it in. | |
407 @end table | |
408 @end itemize | |
409 @node Supported Protocols, , Markup Languages Supported, Introduction | |
410 @chapter Supported Protocols | |
411 @cindex Network Protocols | |
412 @cindex Protocols Supported | |
413 @cindex Supported Protocols | |
414 Emacs-W3 supports the following protocols | |
415 @table @b | |
416 @item Usenet News | |
417 Can either display an entire newsgroup or specific articles by | |
418 Message-ID: header. This supports a unix-style .newsrc file, so the | |
419 user does not see articles they have read using another newsreader, but | |
420 due to how news URLs work, the .newsrc file cannot be updated | |
421 reliably. | |
422 | |
423 To be more in line with the other URL schemes, the hostname and port of | |
424 an NNTP server can be specified. URLs of the form | |
425 news://hostname:port/messageID work, but will not work in most other | |
426 browsers. | |
427 | |
428 | |
429 @item HTTP | |
430 Supports both the HTTP/0.9 and HTTP/1.0 protocols. Fully MIME-compliant | |
431 with regards to HTTP/1.0. | |
432 @item Gopher | |
433 Support for all gopher types, including CSO queries. | |
434 @item Gopher+ | |
435 Support for Gopher+ retrievals. Support for converting ASK blocks into | |
436 HTML 3.0 FORMS and submitting them back to the server. | |
437 @item FTP | |
438 FTP is handled by either ange-ftp or efs. | |
439 @item Local files | |
440 Local files are handled, and MIME content-types are derived from the | |
441 file extensions. | |
442 @item Telnet | |
443 Telnet is handled by running the Emacs Lisp function @code{telnet}, or | |
444 spawning an xterm running telnet. | |
445 @item TN3270 | |
446 TN3270 is handled by running a tn3270 program in an Emacs buffer, or | |
447 spawning an xterm running tn3270. | |
448 @item Mailto | |
449 Causes a mail message to be started to a specific address. | |
450 @item mailserver | |
451 A more powerful version of mailto, which allows the author to specify | |
452 the subject and body text of the mail message. This type of link is | |
453 never fully executed without user confirmation, because it is possible | |
454 to insert insulting or threatening (and possibly illegal) data into the | |
455 message. The mail message is displayed, and the user must type 'yes' to | |
456 send it. | |
457 @item X-exec | |
458 A URL can cause a local executable to be run, and its output interpreted | |
459 as if it had come from an HTTP server. This is very useful, but is | |
460 still an experimental protocol, hence the X- prefix. | |
461 @item SSL | |
462 SSL requires a set of patches to the Emacs C code and SSLRef 2.0, or an | |
463 external program to run in a subprocess (similar to the @file{tcp.el} | |
464 package that comes with GNUS. @xref{Installing SSL} | |
465 @item Secure HTTP | |
466 Work is in progress to add support for the Secure HTTP specification | |
467 from Enterprise Information Technologies. The specification for SHTTP | |
468 can be found on EIT's web server at | |
469 http://www.commerce.net/information/standards/drafts/shttp.txt. | |
470 @end table | |
471 | |
472 @node Setting Up, Retrieving Emacs-W3, Introduction, Top | |
473 @comment node-name, next, previous, up | |
474 @chapter Setting Up | |
475 @cindex Setting Up Emacs-W3 | |
476 @cindex Retrieving Emacs-W3 | |
477 This section of the manual deals with getting, compiling, and | |
478 configuring @i{Emacs-W3}. | |
479 @ifinfo | |
480 @menu | |
481 * Retrieving Emacs-W3:: Retrieving Emacs-W3 via anonymous ftp | |
482 * Compiling Emacs-W3:: Compiling Emacs-W3 and its associated files | |
483 * Basic Setup:: Basic setup that everyone needs to do | |
484 * Firewalls:: How to set Emacs-W3 up to use a particular | |
485 firewall setup. | |
486 * Proxy Gateways:: Using a proxy server | |
487 @end menu | |
488 @end ifinfo | |
489 @node Retrieving Emacs-W3, Compiling Emacs-W3, Setting Up, Setting Up | |
490 @comment node-name, next, previous, up | |
491 @section Retrieving Emacs-W3 | |
492 | |
493 :: WORK :: Document that Emacs-W3 now requires the URL package as well | |
494 | |
495 @node Compiling Emacs-W3, Basic Setup, Retrieving Emacs-W3, Setting Up | |
496 @comment node-name, next, previous, up | |
497 @section Compiling Emacs-W3 | |
498 To install Emacs-W3, go into the @file{w3} subdirectory and edit the | |
499 @file{Makefile}. These variables might need to be changed: | |
500 @table @code | |
501 @item EMACS | |
502 This variable controls what version of Emacs is used to compile the | |
503 programs. It should be the full path to the Emacs executable on the | |
504 system. The default is to use GNU Emacs (@file{emacs}). | |
505 @item LISPDIR | |
506 This variable controls where the lisp code is copied to when it is | |
507 installed (with @code{make install}). This is usually the users | |
508 personal lisp code directory. The value is run through | |
509 @dfn{expand-file-name} and then added to the load-path. Default is | |
510 @file{~/lisp}. | |
511 @item DOTEMACS | |
512 This variable points to the Emacs customization file, default is | |
513 @file{~/.emacs}. | |
514 @item INFODIR | |
515 This variable points to the local info directory. This can be any valid | |
516 directory, as long as it is in @code{Info-default-directory-list} so | |
517 that info-mode can find it. Default is @file{/usr/local/info/}. | |
518 | |
519 @item MAKEINFO | |
520 This variables controls how the info files are built. Possible values | |
521 are @code{makeinfo} or @code{emacs -batch -q -f | |
522 batch-texinfo-format}. Default is @code{makeinfo}. | |
523 @end table | |
524 Once the @file{Makefile} has been modified, several different targets | |
525 can be built. | |
526 @table @code | |
527 @item make w3 | |
528 This compiles all the .el files into the much faster .elc files. | |
529 @item make install | |
530 Compiles all the .el files and copies .el and .elc files into the | |
531 directory specified by @code{LISPDIR}. | |
532 @item make emacs | |
533 Modifies the file specified by @code{DOTEMACS}. A statement modifying | |
534 the load-path variable and several autoload statements are added to the | |
535 end of the file. | |
536 @item make all | |
537 Compiles and installs the .el files, and also modify/create the | |
538 @code{DOTEMACS} file. | |
539 @item make w3.info | |
540 Creates the Emacs-readable info files. The info files are created in | |
541 the directory specified by @code{INFODIR}. The makefile variable | |
542 @code{MAKEINFO} determines how the info file is built. | |
543 @item make w3.dvi | |
544 Creates the printable documentation, using tex and texindex to properly | |
545 generate the indices. A @file{w3.dvi} file is left in the current | |
546 directory. | |
547 @end table | |
548 @node Basic Setup, Firewalls, Compiling Emacs-W3, Setting Up | |
549 @comment node-name, next, previous, up | |
550 @section Basic Setup | |
551 There are a few variables that almost all people need to change. | |
552 | |
553 @table @code | |
554 @item w3-default-homepage | |
555 @vindex w3-default-homepage | |
556 The url to open at startup. This defaults to the environment variable | |
557 WWW_HOME if it is not set it in the users @file{.emacs} file. If | |
558 WWW_HOME is undefined, then it defaults to the hypertext documentation | |
559 for Emacs-W3. | |
560 | |
561 @item w3-delay-image-loads | |
562 @vindex w3-delay-image-loads | |
563 Controls the loading of inlined images. If non-@code{nil}, images are | |
564 not loaded. If the correct image converters are not installed or the | |
565 network connection is very slow, it is best to set this to @code{t}. | |
566 Defaults to @code{nil}. | |
567 @item url-global-history-file | |
568 @vindex url-global-history-file | |
569 The global history file used by both Mosaic/X and Emacs-W3. This file | |
570 contains a list of all the URLs that have been visited. This file is parsed | |
571 at startup and used to provide URL completion. Emacs-W3 can read and | |
572 write Mosaic/X or Netscape 1.x style history files, or use its own | |
573 internal format (faster). The file type is determined automatically, or | |
574 prompted for if the file does not exist. | |
575 @item w3-hotlist-file | |
576 @vindex w3-hotlist-file | |
577 Hotlist filename. This should be the name of a file that is stored in | |
578 NCSA's Mosaic/X or Netscape's format. It is used to keep a listing of | |
579 commonly accessed URLs. | |
580 @item w3-personal-annotation-directory | |
581 @vindex w3-personal-annotation-directory | |
582 The directory where Emacs-W3 looks for personal annotations. This is a | |
583 directory that should hold the personal annotations stored in a | |
584 Mosaic/X-compatible format. | |
585 @item url-pgp/pem-entity | |
586 @findex user-real-login-name | |
587 @findex system-name | |
588 The name by which the user is known to PGP and/or PEM entities. If this | |
589 is not set when Emacs-W3 is loaded, it defaults to | |
590 @code{user-mail-address} if it is set, otherwise @code{(user-real-login-name)}@@@code{(system-name)}. | |
591 @item url-personal-mail-address | |
592 @vindex url-personal-mail-address | |
593 @vindex url-pgp/pem-entity | |
594 User's full email address. This is what is sent to HTTP/1.0 servers as | |
595 the FROM header. If this is not set when Emacs-W3 is loaded, then it | |
596 defaults to the value of @code{url-pgp/pem-entity}. | |
597 | |
598 @item w3-right-border | |
599 @vindex w3-right-border | |
600 @findex window-width | |
601 Amount of space to leave on right margin of WWW buffers. This amount is | |
602 subtracted from the width of the window for each new WWW buffer and used | |
603 as the new @code{fill-column}. | |
604 | |
605 @item w3-track-mouse | |
606 @vindex w3-track-mouse | |
607 Controls whether to track the mouse and message the url under the mouse. | |
608 If this is non-@code{nil}, then a description of the hypertext area | |
609 under the mouse is shown in the minibuffer. This shows what type of | |
610 link (inlined image, form entry area, delayed image, delayed MPEG, or | |
611 hypertext reference) is under the cursor, and the destination. | |
612 @item w3-echo-link | |
613 @vindex w3-echo-link | |
614 Controls how a URL is shown when a link is reached with @key{f}, | |
615 @key{b}, or the mouse moves over it. Possible values are: | |
616 @table @b | |
617 @item url | |
618 Displays the URL (ie: @samp{http://www.cs.indiana.edu/}). | |
619 @item text | |
620 Displays the text of the link (ie: @samp{A link to Indiana University}). | |
621 @item nil | |
622 Show nothing. | |
623 @end table | |
624 @item w3-use-forms-index | |
625 @vindex w3-use-forms-index | |
626 @cindex ISINDEX handling | |
627 @cindex Forms based searching | |
628 @cindex Searching with forms | |
629 Non-@code{nil} means translate <ISINDEX> tags into a hypertext form. A | |
630 single text entry box is shown where the ISINDEX tag appears. | |
631 @item url-use-hypertext-gopher | |
632 @vindex url-use-hypertext-gopher | |
633 @cindex Gopher+ | |
634 Controls how gopher documents are retrieved. If non-@code{nil}, the | |
635 gopher pages are converted into HTML and parsed just like any other | |
636 page. If @code{nil}, the requests are passed off to the | |
637 @file{gopher.el} package by Scott Snyder. Using the @file{gopher.el} | |
638 package loses the gopher+ support, and inlined searching. | |
639 @item url-xterm-command | |
640 @vindex url-xterm-command | |
641 Command used to start a windowed shell, similar to an xterm. This | |
642 string is passed through @code{format}, and should expect four strings: | |
643 the title of the window, the program name to execute, and the server and | |
644 port number. The default is for xterm, which is very UNIX and | |
645 XWindows-centric. | |
646 @end table | |
647 @node Firewalls, Proxy Gateways, Basic Setup, Setting Up | |
648 @comment node-name, next, previous, up | |
649 @section Firewalls | |
650 @cindex Gateways | |
651 There are several different reasons why the gateway support might be | |
652 required. | |
653 @enumerate | |
654 @cindex Firewalls | |
655 @item | |
656 Stuck behind a firewall. This is usually the case at large corporations | |
657 with paranoid system-administrators. | |
658 | |
659 @cindex TERM | |
660 @item | |
661 Using TERM @footnote{TERM is a user-level protocol for emulating IP over | |
662 a serial line. More information is available at | |
663 ftp://sunsite.unc.edu/pub/Linux/apps/comm/term} for slip-like access to | |
664 the internet. | |
665 | |
666 | |
667 NOTE: Emacs 19.22 has patches to enable native TERM networking. To | |
668 enable it, #define TERM in the appropriate s/*.h file for the operating | |
669 system, then change the SYSTEM_LIBS define to include the @file{termnet} | |
670 library that comes with the latest versions of TERM. | |
671 | |
672 @item | |
673 @cindex Faulty hostname resolvers | |
674 @cindex Broken SUN libc | |
675 @cindex Can't resolve hostnames | |
676 Emacs cannot resolve hostnames. This happens quite often on Sun | |
677 workstations and some ULTRIX machines. Some C libraries do not include | |
678 the hostname resolver routines in their static libraries. If Emacs was | |
679 linked statically, this means it won't be able to get to any machines | |
680 off the local network. This is characterized by being able to reach | |
681 someplace with a raw ip number, but not its hostname | |
682 (http://129.79.254.191/ works, but http://www.cs.indiana.edu/ doesn't). | |
683 | |
684 | |
685 If for some reason it is not feasible to recompile Emacs with the | |
686 @file{-lresolv} library or dynamic linking, it is just like being behind | |
687 a firewall. Another alternative is to set the variable | |
688 @code{url-broken-resolution} - this will use the support in ange-ftp or | |
689 EFS to use @file{nslookup} in a subprocess to do all hostname resolving. | |
690 See the variables @code{efs-nslookup-program}, | |
691 @code{efs-nslookup-on-connect}, and @code{efs-nslookup-threshold} if are | |
692 using EFS, or @code{ange-ftp-nslookup-program} if using Ange-FTP. | |
693 | |
694 @cindex Connections hanging with XEmacs & solaris | |
695 @cindex Solaris networking problems | |
696 @cindex XEmacs & Solaris network problems | |
697 @item | |
698 Running XEmacs 19.x and Solaris 2.x (SunOS 5.x). For some reason, | |
699 network processes under Solaris and XEmacs never get a status of | |
700 @code{exit} or @code{closed}. This causes retrieval of HTTP and gopher | |
701 pages to hang indefinitely, with Emacs chewing up large amounts of CPU | |
702 time. | |
703 | |
704 @end enumerate | |
705 | |
706 @vindex url-gateway-local-host-regexp | |
707 Emacs-W3 has support for using the gateway mechanism for certain | |
708 domains, and directly connecting to others. To use this, change the | |
709 value of @code{url-gateway-local-host-regexp}. This should be a regular | |
710 expression @footnote{Please see the full Emacs distribution for a | |
711 description of regular expressions} that matches local hosts that do not | |
712 require the use of a gateway. If @code{nil}, then all connections are | |
713 made through the gateway. | |
714 | |
715 | |
716 @vindex url-gateway-method | |
717 Emacs-W3 supports several methods of getting around gateways. The variable | |
718 @code{url-gateway-method} controls which of these methods is used. This | |
719 variable can have several values (use these as symbol names, not | |
720 strings): | |
721 @table @dfn | |
722 @item program | |
723 Run a program in a subprocess to connect to remote hosts (examples are | |
724 @i{itelnet}@footnote{Itelnet is a standard name for a telnet executable | |
725 that is capable of escaping the firewall. Check with system | |
726 administrators to see if anything similar is available}, an | |
727 @i{expect}@footnote{Expect is a scripting language that allows control | |
728 of interactive programs (like telnet) very easily. It is available from | |
729 gatekeeper.dec.com:/pub/GNU/expect-3.24.0.tar.gz} script, etc.). | |
730 | |
731 @item host | |
732 Log into another local computer that has access to the internet, and run | |
733 a telnet-like program from there. | |
734 @item tcp | |
735 Masanobu UMEDA (@i{umerin@@mse.kyutech.ac.jp}) has written a very nice | |
736 replacement for the standard networking in Emacs. This does basically | |
737 the same thing that a method of @code{program} does, but is slightly | |
738 more transparent to the user. | |
739 @item native | |
740 This means that Emacs-W3 should use the builtin networking code of Emacs. | |
741 This should be used only if there is no firewall, or the Emacs source | |
742 has already been hacked to get around the firewall. | |
743 @end table | |
744 Two of these need a bit more explanation than that: | |
745 @vindex url-gateway-telnet-ready-regexp | |
746 @vindex url-gateway-telnet-program | |
747 When running a program in a subprocess to emulate a network connection, | |
748 a few extra variables need to be set. The variable | |
749 @code{url-gateway-telnet-program} should point to an executable that | |
750 accepts a hostname and port # as its arguments, and passes standard | |
751 input to the remote host. This can be either the full path to the | |
752 executable or just the basename. The variable | |
753 @code{url-gateway-telnet-ready-regexp} controls how long Emacs-W3 should | |
754 wait after spawning the subprocess to start sending to its standard | |
755 input. This gets around a bug where telnet would miss the beginning of | |
756 requests becausse it did not buffer its input before opening a | |
757 connection. This should be a regular expression to watch for that | |
758 signifies the end of the setup of @code{url-gateway-telnet-program}. | |
759 The default should work fine for telnet. | |
760 | |
761 | |
762 @cindex Host-based gateways | |
763 @cindex Hair-pulling gateway-headaches | |
764 @vindex url-gateway-host | |
765 When using the @code{host}-based gatway method, things get a bit more | |
766 complicated. This is basically my attempt to do some of the basic stuff | |
767 of @i{expect} within elisp. First off, set the variable | |
768 @code{url-gateway-host} to be the name of the gateway machine. | |
769 | |
770 | |
771 @vindex url-gateway-connect-program | |
772 The variable @code{url-gateway-connect-program} controls how the host is | |
773 reached. The easiest way is to have a program that does not require a | |
774 username and password to login. The most common of these is the | |
775 @dfn{rsh} command. | |
776 | |
777 | |
778 @vindex url-gateway-program-interactive | |
779 @vindex url-gateway-handholding-password-regexp | |
780 @vindex url-gateway-handholding-login-regexp | |
781 @vindex url-gateway-host-username | |
782 @vindex url-gateway-host-password | |
783 If @i{rsh} is not available, then things get very ugly. First, set the | |
784 variable @code{url-gateway-program-interactive} to non-@code{nil}. Then | |
785 set the variables @code{url-gateway-host-username} and | |
786 @code{url-gateway-host-password} to be the username and password | |
787 necessary to log into the gateway machine. The regular expressions in | |
788 the variables @code{url-gateway-handholding-login-regexp} and | |
789 @code{url-gateway-handholding-password-regexp} should match the login | |
790 and password prompts on the gateway system respectively. For example: | |
791 | |
792 | |
793 @example | |
794 (setq url-gateway-connect-program "telnet" | |
795 url-gateway-host-program "telnet" | |
796 url-gateway-program-interactive t | |
797 url-gateway-host-username "wmperry" | |
798 url-gateway-host-password "yeahrightkeepdreaming" | |
799 url-gateway-host "moose.cs.indiana.edu" | |
800 url-gateway-host-program-ready-regexp "Escape character is .*" | |
801 url-gateway-handholding-login-regexp "ogin:" | |
802 url-gateway-handholding-password-regexp "ord:") | |
803 @end example | |
804 | |
805 @vindex url-gateway-host-prompt-pattern | |
806 This should take care of logging in to the remote system. The variable | |
807 @code{url-gateway-host-prompt-pattern} should contain a regular | |
808 expression that matches the shell prompt on the remote machine. This | |
809 should appear @b{no where} in the login banner/setup, or things could | |
810 get very confused. | |
811 | |
812 | |
813 @vindex url-gateway-host-program-ready-regexp | |
814 @vindex url-gateway-host-program | |
815 The variable @code{url-gateway-host-program-ready-regexp} should contain | |
816 a regular expression that matches the end of the setup of | |
817 @code{url-gateway-host-program} when it tries to make a connection to an | |
818 off-firewall machine. (Basically the same as | |
819 @code{url-gateway-telnet-ready-regexp}. | |
820 | |
821 | |
822 Emacs-W3 should now be able to get outside the local network. If none | |
823 of this makes sense, its probably my fault. Please check with the | |
824 network administrators to see if they have a program that does most of | |
825 this already, since somebody somewhere at the company has probably been | |
826 through something similar to this before, and would be much more | |
827 helpful/knowledgeable about the local setup than I would be. But feel | |
828 free to mail me as a last resort. | |
829 | |
830 | |
831 @node Proxy Gateways, Basic Usage, Firewalls, Setting Up | |
832 @comment node-name, next, previous, up | |
833 @section Proxy Gateways | |
834 In late January 1993, Kevin Altis and Lou Montulli proposed and implemented a | |
835 new proxy service. This service requires the use of environment | |
836 variables to specify a gateway server/port # to send protocol requests | |
837 to. Each protocol (HTTP, WAIS, gopher, FTP, etc.@:) can have a | |
838 different gateway server. The environment variables are | |
839 @var{PROTOCOL}_proxy, where @var{PROTOCOL} is one of gopher, file, HTTP, | |
840 FTP, or WAIS. | |
841 | |
842 :: WORK :: | |
843 | |
844 @node Basic Usage, , Proxy Gateways, Top | |
845 @comment node-name, next, previous, up | |
846 @chapter Basic Usage | |
847 Emacs-W3 is similar to the Info package all Emacs users hold near and dear to | |
848 their hearts (@xref{Top,,Info,info, The Info Manual}, for a description | |
849 of Info). Basically, @kbd{space} and @kbd{backspace} control scrolling, | |
850 and @kbd{return} or @kbd{mouse2} follows a hypertext link. The @kbd{f} | |
851 and @kbd{b} keys maneuver around the various links on the page. | |
852 | |
853 @b{NOTE:} To enter data into a form entry area, select it using | |
854 @kbd{return} or the middle mouse button, just like a hypertext link. | |
855 | |
856 | |
857 On non-graphic terminals (VT100, DOS, etc.), hypertext links are | |
858 surrounded by '[[' and ']]' by default. On a graphics terminal, the | |
859 links are in bold print. @xref{Controlling Formatting} for information | |
860 on how to change this, or for help on getting the highlighting to work | |
861 on graphics terminals. | |
862 | |
863 There are approximately 50 keys bound to special Emacs-W3 functions. | |
864 The basic rule of thumb regarding keybindings in Emacs-W3 is that a | |
865 lowercase key takes an action on the @b{current document}, and an | |
866 uppercase key takes an action on the document pointed to by the | |
867 hypertext link @b{under the cursor}. | |
868 | |
869 There are several areas that the keybindings fall into: movement, | |
870 information, action, and miscellaneous. | |
871 | |
872 @ifinfo | |
873 @menu | |
874 * Movement:: Moving around in a Emacs-W3 buffer | |
875 * Information:: Getting information about the Emacs-W3 document being | |
876 viewed, and/or links within that document. | |
877 * Action:: Taking actions in a Emacs-W3 buffer (following links, | |
878 printing, etc.) | |
879 * Miscellaneous:: Miscellaneous keybindings | |
880 @end menu | |
881 @end ifinfo | |
882 @node Movement, Information, Basic Usage, Basic Usage | |
883 @section Movement | |
884 :: WORK :: Document the 'h' and 'a' keymaps | |
885 @table @kbd | |
886 @findex scroll-up | |
887 @kindex SPC | |
888 @item SPC | |
889 Scroll downward in the buffer. With prefix arg, scroll down that many | |
890 screenfuls. | |
891 @kindex DEL | |
892 @findex scroll-down | |
893 @item DEL | |
894 Scroll upward in the buffer. With prefix arg, scroll up that many | |
895 screenfuls. | |
896 @kindex < | |
897 @findex w3-start-of-document | |
898 @item < | |
899 Goes to the start of document | |
900 @kindex > | |
901 @findex w3-end-of-document | |
902 @item > | |
903 Goes to the end of document | |
904 @kindex b | |
905 @kindex Shift-TAB | |
906 @findex w3-back-link | |
907 @item Shift-TAB, b | |
908 Attempts to move backward one link area in the current document. | |
909 Signals an error if no previous links are found. | |
910 @kindex hl | |
911 @findex w3-show-hotlist | |
912 @item hl | |
913 Displays a complete listing of the items in the hotlist. | |
914 @kindex hu | |
915 @findex w3-use-hotlist | |
916 @item hu | |
917 Go to a link in the hotlist. | |
918 @kindex m | |
919 @findex w3-complete-link | |
920 @item m | |
921 Choose a link from the current buffer and follow it. A completing-read | |
922 is done on all the links, so @kbd{space} and @kbd{TAB} can be used for | |
923 completion. | |
924 @kindex f | |
925 @kindex TAB | |
926 @kindex n | |
927 @findex w3-forward-link | |
928 @item TAB, f, n | |
929 Attempts to move forward one link area in the current document. Signals | |
930 an error if no more links are found. | |
931 @end table | |
932 @node Information, Action, Movement, Basic Usage | |
933 @section Information | |
934 These functions relate information about one or more links on the | |
935 current document. | |
936 @table @kbd | |
937 @kindex v | |
938 @findex url-view-url | |
939 @item v | |
940 This shows the URL of the current document in the minibuffer. | |
941 @kindex V | |
942 @findex w3-view-this-url | |
943 @item V | |
944 This shows the URL of the hypertext link under point in the minibuffer. | |
945 If there is not a hypertext link under point, then it shows the type of | |
946 form entry area under point. If there is no form entry area under | |
947 point, then it shows the inlined image's URL that is under point, if | |
948 any. | |
949 @kindex i | |
950 @findex w3-document-information | |
951 @item i | |
952 Shows miscellaneous information about the currently displayed document. | |
953 This includes the URL, the last modified date, MIME headers, the HTTP | |
954 response code, and any relationships to other documents. Any security | |
955 information is also displayed. | |
956 @kindex I | |
957 @findex w3-document-information-this-url | |
958 @item I | |
959 Shows information about the URL at point. | |
960 @kindex s | |
961 @findex w3-source-document | |
962 @item s | |
963 This shows the HTML source of the current document in a separate buffer. | |
964 The buffer's name is based on the document's URL. | |
965 @kindex S | |
966 @findex w3-source-document-at-point | |
967 @item S | |
968 Shows the HTML source of the hypertext link under point in a separate | |
969 buffer. The buffer's name is based on the document's URL. | |
970 @kindex k | |
971 @findex w3-save-url | |
972 @item k | |
973 This stores the current document's URL in the kill ring, and also in the | |
974 current window-system's clipboard, if possible. | |
975 @kindex K | |
976 @findex w3-save-this-url | |
977 @item K | |
978 Stores the URL of the document under point in the kill ring, and also in | |
979 the current window-system's clipboard, if possible. | |
980 @end table | |
981 @node Action, Miscellaneous, Information, Basic Usage | |
982 @section Action | |
983 First, here are the keys and functions that bring up a new hypertext | |
984 page, usually creating a new buffer. | |
985 @table @kbd | |
986 @kindex return | |
987 @findex w3-follow-link | |
988 @item return | |
989 Pressing return when over a hyperlink attempts to follow the link | |
990 under the cursor. With a prefix argument (@kbd{C-u}), this forces the | |
991 file to be saved to disk instead of being passed off to other viewers | |
992 or being parsed as HTML. | |
993 | |
994 Pressing return when over a form input field will prompt in the | |
995 minibuffer for the data to insert into the input field. Type checking | |
996 is done, and the data is only entered into the form when data of the | |
997 correct type is entered (ie: cannot enter 44 for 'date' field, etc). | |
998 | |
999 @kindex Middle Mouse Button | |
1000 @findex w3-follow-mouse | |
1001 @item Middle Mouse Button | |
1002 Attempt to follow a hypertext link under the mouse cursor. Clicking on | |
1003 a form input field will prompt in the minibuffer for the data to insert | |
1004 into the input field. Type checking is done, and the data is only | |
1005 entered into the form when data of the correct type is entered (ie: | |
1006 cannot enter 44 for 'date' field, etc). | |
1007 | |
1008 @kindex Control Middle Mouse Button | |
1009 @kindex Meta return | |
1010 @findex w3-follow-inlined-image | |
1011 @item Control Middle Mouse Button, Meta return | |
1012 Tries to retrieve the inlined image that is under point. It ignores any | |
1013 form entry areas or hyperlinks, and blindly follows any inlined image. | |
1014 Useful for seeing images that are meant to be used as hyperlinks when | |
1015 not on a terminal capable of displaying graphics. | |
1016 | |
1017 @kindex p | |
1018 @findex w3-print-this-url | |
1019 @item p | |
1020 Prints out the current buffer in a variety of formats, including | |
1021 PostScript, HTML source, or formatted text. | |
1022 @kindex P | |
1023 @findex w3-print-url-under-point | |
1024 @item P | |
1025 Prints out the URL under point in a variety of formats, including | |
1026 PostScript, HTML source, or formatted text. | |
1027 @kindex m | |
1028 @findex w3-complete-link | |
1029 @item m | |
1030 Selects a destination from a list of all the hyperlinks in the current | |
1031 buffer. Use @kbd{space} and @kbd{tab} to complete on the links. | |
1032 | |
1033 @kindex r | |
1034 @kindex g | |
1035 @findex w3-reload-document | |
1036 @item r, g | |
1037 Reloads the current document. The position within the buffer remains | |
1038 the same (unless the document has changed since it was last retrieved, | |
1039 in which case it should be relatively close). This causes an | |
1040 unconditional reload from the remote server - the locally cached copy is | |
1041 not consulted. | |
1042 @kindex C-o | |
1043 @findex w3-fetch | |
1044 @item C-o | |
1045 Prompts for a URL in the minibuffer, and attempts to fetch | |
1046 it. If there are any errors, or Emacs-W3 cannot understand the type of link | |
1047 requested, the errors are displayed in a hypertext buffer. | |
1048 @kindex o | |
1049 @findex w3-open-local | |
1050 @vindex url-use-hypertext-dired | |
1051 @item o | |
1052 Opens a local file, interactively. This prompts for a local file name | |
1053 to open. The file must exist, and may be a directory. If the requested | |
1054 file is a directory and @code{url-use-hypertext-dired} is @code{nil}, | |
1055 then a dired-mode buffer is displayed. If non@code{nil}, then Emacs-W3 | |
1056 automatically generates a hypertext listing of the directory. The | |
1057 hypertext mode is the default, so that all the keys and functions remain | |
1058 the same. | |
1059 | |
1060 @kindex M-s | |
1061 @findex w3-search | |
1062 @item M-s | |
1063 Perform a search, if this is a searchable index. Searching requires a | |
1064 server - Emacs-W3 can not do local file searching, as there are too many | |
1065 possible types of searches people could want to do. Generally, the only | |
1066 URL types that allow searching are HTTP, gopher, and X-EXEC. | |
1067 @kindex Hv | |
1068 @findex w3-show-history-list | |
1069 @vindex w3-keep-history | |
1070 @item Hv | |
1071 If @code{url-keep-history} is non-@code{nil}, then Emacs-W3 keeps track | |
1072 of all the URLs visited in an Emacs session. This function takes all | |
1073 the links that are in that internal list, and formats them as hypertext | |
1074 links in a list. | |
1075 @end table | |
1076 | |
1077 @cindex Buffer movement | |
1078 And here are the commands to move around between Emacs-W3 buffers: | |
1079 | |
1080 @table @kbd | |
1081 @kindex l | |
1082 @findex w3-goto-last-buffer | |
1083 @item l | |
1084 Goes to the last WWW buffer seen. | |
1085 @kindex q | |
1086 @findex w3-quit | |
1087 @item q | |
1088 Quits WWW mode. This kills the current buffer and goes to the most | |
1089 recently visited buffer. | |
1090 @kindex Q | |
1091 @findex w3-leave-buffer | |
1092 @item u | |
1093 This is similar to w3-quit, but the buffer is not killed, it is moved to | |
1094 the bottom of the buffer list (so it is the least likely to show up as | |
1095 the default with switch-to-buffer). This is different from | |
1096 @code{w3-goto-last-buffer} in that it does not return to the last WWW | |
1097 page visited - it is the same as using @code{switch-to-buffer} - the | |
1098 buffer left in the window is fairly random. | |
1099 @kindex HB | |
1100 @kindex B | |
1101 @findex w3-backward-in-history | |
1102 @item HB, B | |
1103 Takes one step back along the path in the current history. Has no | |
1104 effect if at the beginning of the session history. | |
1105 @kindex HF | |
1106 @kindex F | |
1107 @findex w3-forward-in-history | |
1108 @item HF, F | |
1109 Takes one step forward along the path in the current history. Has no | |
1110 effect if at the end of the session history. | |
1111 @end table | |
1112 | |
1113 @node Miscellaneous, , Action, Basic Usage | |
1114 @section Miscellaneous | |
1115 @table @kbd | |
1116 @kindex M-m | |
1117 @findex w3-mail-current-document | |
1118 @item M-m | |
1119 Mails the current document to someone. Choose from several different | |
1120 formats to mail: formatted text, HTML source, PostScript, or LaTeX source. | |
1121 When the HTML source is mailed, then an appropriate <base> tag is inserted | |
1122 at the beginning of the document so that relative links may be followed | |
1123 correctly by whoever receives the mail. | |
1124 @kindex M-M | |
1125 @findex w3-mail-document-under-point | |
1126 @item M-M | |
1127 Mails the document pointed to by the hypertext link under point to someone. | |
1128 Choose from several different formats to mail: formatted text, HTML source, | |
1129 PostScript, or LaTeX source. When the HTML source is mailed, then an | |
1130 appropriate <base> tag is inserted at the beginning of the document so that | |
1131 relative links may be followed correctly by whoever receives the | |
1132 mail. | |
1133 @kindex p | |
1134 @findex w3-print-this-url | |
1135 @item p | |
1136 Prints the current document. Choose from several different formats to | |
1137 print: formatted text, HTML source, PostScript (with ps-print), or by using | |
1138 LaTeX and dvips). | |
1139 | |
1140 @findex lpr-buffer | |
1141 @vindex lpr-command | |
1142 @vindex lpr-switches | |
1143 When the formatted text is printed, the normal @code{lpr-buffer} function | |
1144 is called, and the variables @code{lpr-command} and @code{lpr-switches} | |
1145 control how the document is printed. | |
1146 | |
1147 When the HTML source is printed, then an appropriate <base> tag is | |
1148 inserted at the beginning of the document. | |
1149 @vindex w3-use-html2latex | |
1150 @vindex w3-html2latex-prog | |
1151 @vindex w3-html2latex-args | |
1152 @vindex w3-print-commnad | |
1153 @vindex w3-latex-docstyle | |
1154 When postscript is printed, then the HTML source of the document is | |
1155 converted into LaTeX source. If the variable @code{w3-use-html2latex} | |
1156 is non-@code{nil}, then the program specified by | |
1157 @code{w3-html2latex-prog} is run in a subprocess with the arguments in | |
1158 @code{w3-html2latex-args}. The @code{w3-html2latex-prog} must accept | |
1159 HTML source on its standard input and send the LaTeX output to standard | |
1160 output. If @code{w3-use-html2latex} is @code{nil}, then an Emacs Lisp | |
1161 function uses regular expressions to replace the HTML code with LaTeX | |
1162 markup. The variable @code{w3-latex-docstyle} controls how the document | |
1163 is laid out in this case, and postscript figures are printed as | |
1164 well. | |
1165 @kindex P | |
1166 @findex w3-print-url-under-point | |
1167 @item P | |
1168 Prints the document pointed to by the hypertext link under point. | |
1169 Please see the previous item for more information. | |
1170 @kindex M-x w3-insert-formatted-url | |
1171 @findex w3-insert-formatted-url | |
1172 @item M-x w3-insert-formatted-url | |
1173 Insert a fully formatted HTML link into another buffer. This gets the | |
1174 name and URL of either the current buffer, or, with a prefix arg, of the | |
1175 link under point, and construct the appropriate <a...>...</a> markup and | |
1176 insert it into the desired buffer. | |
1177 @kindex M-tab | |
1178 @findex w3-insert-this-url | |
1179 @item M-tab | |
1180 Inserts the URL of the current document into another buffer. Buffer is | |
1181 prompted for in the minibuffer. With prefix arg, uses the URL of the | |
1182 link under point. | |
1183 @kindex U | |
1184 @findex w3-use-links | |
1185 @item U | |
1186 Selects one of the <LINK> tags from this document and fetch it. Links | |
1187 are attributes of a specific document, and can tell such things as who | |
1188 made the document, where a table of contents is located, etc. | |
1189 | |
1190 Link tags specify relationships between documents in two ways. Normal | |
1191 (forward) relationships (where the link has a REL="xxx" attribute), and | |
1192 reverse relationships (where the link has a REV="xxx" attribute). This | |
1193 first asks what type of link to follow (Normal or Reverse), then does | |
1194 a @code{completing-read} on only the links that have that type of | |
1195 relationship. | |
1196 @end table | |
1197 | |
1198 @node Compatibility, , , Top | |
1199 @comment node-name, next, previous, up | |
1200 @chapter Compatibility with other Browsers | |
1201 Due to the popularity of several other browsers, Emacs-W3 offers an easy | |
1202 transition to its much better way of life. This ranges from being able | |
1203 to share the same preferences files and disk cache to actually emulating | |
1204 the keybindings used in other browsers. | |
1205 | |
1206 @ifinfo | |
1207 @menu | |
1208 * Emulation:: Emacs-W3 can emulate the keybindings and | |
1209 other behaviours of other browsers. | |
1210 * Hotlist Handling:: A hotlist is an easy way to keep track of | |
1211 interesting Web pages without having to | |
1212 remember the exact path to get there. | |
1213 * Session History:: Keeping a history of documents visited | |
1214 in one Emacs sessions allows the use of | |
1215 'forward' and 'back' buttons easily. | |
1216 * Global History:: Keeping a history of all the places ever | |
1217 visited on the web. | |
1218 * Annotations:: Annotations allow comments on other | |
1219 people's Web documents without needing | |
1220 to change the document. | |
1221 @end menu | |
1222 @end ifinfo | |
1223 @node Emulation, Hotlist Handling, Compatibility, Compatibility | |
1224 @section Emulation | |
1225 :: WORK :: Document lynx emulation | |
1226 :: WORK :: Document netscape emulation | |
1227 @cindex Browser emulation | |
1228 @cindex Emulation of other browsers | |
1229 @cindex Netscape emulation | |
1230 @cindex Lynx emulation | |
1231 @findex turn-on-netscape-emulation | |
1232 @findex turn-on-lynx-emulation | |
1233 @findex w3-netscape-emulation-minor-mode | |
1234 @findex w3-lynx-emulation-minor-mode | |
1235 @vindex w3-mode-hook | |
1236 | |
1237 @node Hotlist Handling, Session History, Emulation, Compatibility | |
1238 @section Hotlist Handling | |
1239 :: WORK :: Document that it supports different types of hotlist formats | |
1240 :: WORK :: Make sure everything hotlist related can be accessed via 'h' | |
1241 In order to avoid having to traverse many documents to get to the same | |
1242 document over and over, Emacs-W3 supports a ``hotlist'' like Mosaic. This is | |
1243 a file that contains URLs and aliases. Hotlists allow quick access to any | |
1244 document in the Web, providing it has been visited and added to the hotlist. | |
1245 The variable @code{w3-hotlist-file} determines where this information | |
1246 is saved. The structure of the file is compatible with Mosaic's | |
1247 hotlist file, so this defaults to @file{~/.mosaic-hotlist-default}. | |
1248 | |
1249 Hotlist commands are: | |
1250 @table @kbd | |
1251 @kindex hi | |
1252 @findex w3-hotlist-add-document | |
1253 @vindex w3-hotlist-file | |
1254 @item a | |
1255 Adds the current document to the hotlist, with the buffer name as its | |
1256 identifier. Modifies the file specified by @code{w3-hotlist-file}. If | |
1257 this is given a @var{prefix-argument} (via @kbd{C-u}), the title is | |
1258 prompted for instead of automatically defaulting to the | |
1259 document title. | |
1260 | |
1261 @findex w3-hotlist-refresh | |
1262 @vindex w3-hotlist-file | |
1263 @kindex hR | |
1264 @item hR | |
1265 This rereads the default hostlist file specified by | |
1266 @code{w3-hotlist-file}. | |
1267 @findex w3-hotlist-delete | |
1268 @vindex w3-hotlist-file | |
1269 @kindex hd | |
1270 @item d | |
1271 Prompts for the alias of the entry to kill. Pressing the spacebar or | |
1272 tab will list out partial completions. The internal representation of | |
1273 the hotlist and the file specified by @code{w3-hotlist-file} are | |
1274 updated. | |
1275 @item hr | |
1276 @kindex hr | |
1277 @findex w3-hotlist-rename-entry | |
1278 @vindex w3-hotlist-file | |
1279 Some hotlist item names can be very unwieldy (`Mosaic for X level 2 fill | |
1280 out form support'), or uninformative (`Index of /'). Prompts for the | |
1281 item to rename in the minibuffer---use the spacebar or tab key for | |
1282 completion. After having chosen an item to rename, prompts for a new | |
1283 title until a unique title is entered. Modifies the file specified by | |
1284 @code{w3-hotlist-file}. | |
1285 | |
1286 @item hu | |
1287 @kindex hu | |
1288 @findex w3-use-hotlist | |
1289 Prompts for the alias to jump to. Pressing the @key{spacebar} or | |
1290 @key{tab} key shows partial completions. | |
1291 | |
1292 @item hv | |
1293 @kindex hv | |
1294 @findex w3-show-hotlist | |
1295 Converts the hotlist into HTML and displays it. | |
1296 @item ha | |
1297 @kindex ha | |
1298 @findex w3-hotlist-apropos | |
1299 Shows the hotlist entries matching a regular expression. | |
1300 @item hA | |
1301 @kindex hA | |
1302 @findex w3-hotlist-append | |
1303 Appends another hotlist file to the one currently in memory. | |
1304 @end table | |
1305 @node Session History, Global History, Hotlist Handling, Compatibility | |
1306 @section History | |
1307 @cindex History Lists | |
1308 Almost all web browsers keep track of the URLs followed from a page, so | |
1309 that it can provide @b{forward} and @b{back} buttons to keep a @i{path} | |
1310 of URLs that can be traversed easily. | |
1311 @vindex url-keep-history | |
1312 If the variable @code{url-keep-history} is @code{t}, then Emacs-W3 | |
1313 keeps a list of all the URLs visited in a session. | |
1314 @findex w3-show-history | |
1315 To view a listing of the history for this session of Emacs-W3, use | |
1316 @code{M-x w3-show-history} from any buffer, and Emacs-W3 generates an | |
1317 HTML document showing every URL visited since Emacs started (or | |
1318 cleared the history list), and then format it. Any of the links can | |
1319 be chosen and followed to the original document. To clear the history | |
1320 list, choose 'Clear History' from the 'Options' menu. | |
1321 | |
1322 @findex w3-forward-in-history | |
1323 @findex w3-backward-in-history | |
1324 @findex w3-fetch | |
1325 Another twist on the history list mechanism is the fact that all | |
1326 Emacs-W3 buffers remember what URL, buffer, and buffer position of the | |
1327 last document, and also keeps track of the next location jumped @b{to} | |
1328 from that buffer. This means that the user can go forwards and | |
1329 backwards very easily along the path taken to reach a particular | |
1330 document. To go forward, use the function @code{w3-forward-in-history}, | |
1331 to go backward, use the function @code{w3-backward-in-history}. | |
1332 | |
1333 @node Global History, Annotations, Session History, Compatibility | |
1334 @section Global History | |
1335 :: WORK :: Document that the global history can have diff. formats | |
1336 Most web browsers also support the idea of a ``history'' of URLs the | |
1337 user has visited, and it displays them in a different style than normal | |
1338 URLs. | |
1339 | |
1340 @vindex url-keep-history | |
1341 @vindex url-global-history-file | |
1342 If the variable @code{url-keep-history} is @code{t}, then Emacs-W3 | |
1343 keeps a list of all the URLs visited in a session. The file is | |
1344 automatically written to disk when exiting emacs. The list is added to | |
1345 those already in the file specified by @code{url-global-history-file}, | |
1346 which defaults to @file{~/.mosaic-global-history}. | |
1347 | |
1348 If any URL in the list is found in the file, it is not saved, but new | |
1349 ones are added at the end of the file. | |
1350 | |
1351 The function that saves the global history list is smart enough to | |
1352 notice what style of history list is being used (Netscape, Emacs-W3, or | |
1353 XMosaic), and writes out the new additions appropriately. | |
1354 | |
1355 @cindex Completion of URLs | |
1356 @cindex Usefulness of global history | |
1357 One of the nice things about keeping a global history files is that Emacs-W3 | |
1358 can use it as a completion table. When doing @kbd{M-x w3-fetch}, pressing | |
1359 the @kbd{tab} or @kbd{space} key will show all completions for a | |
1360 partial URL. This is very useful, especially for very long URLs that | |
1361 are not in a hotlist, or for seeing all the pages from a particular web | |
1362 site before choosing which to retrieve. | |
1363 | |
1364 @node Annotations, Group Annotations, Global History, Compatibility | |
1365 @section Annotations | |
1366 @cindex Annotations | |
1367 Mosaic can @i{annotate} documents. Annotations are comments about the | |
1368 current document, and these annotations appear as a link to the comments | |
1369 at the end of the document. The original file is not changed. | |
1370 | |
1371 @ifinfo | |
1372 @menu | |
1373 * Group Annotations:: Annotations accessible by everyone | |
1374 * Personal Annotations:: Private annotations only accessible | |
1375 to the user who created them | |
1376 @end menu | |
1377 @end ifinfo | |
1378 @node Group Annotations, Personal Annotations, Annotations, Annotations | |
1379 @subsection Group Annotations | |
1380 @cindex Group Annotations | |
1381 @b{@i{NOTE}}: The group annotation experiment has been terminated. It | |
1382 will be replaced with support on the server side for adding <LINK> tags | |
1383 to documents. | |
1384 | |
1385 @node Personal Annotations, , Group Annotations, Annotations | |
1386 @subsection Personal Annotations | |
1387 @cindex Personal Annotations | |
1388 @vindex w3-personal-annotation-directory | |
1389 Emacs-W3 looks in the directory specified by | |
1390 @code{w3-personal-annotation-directory} (defaults to | |
1391 @file{~/.mosaic-personal-annotations}). Any personal annotations for a | |
1392 document are automatically appended when it is retrieved. | |
1393 | |
1394 :: WORK :: Document the new 'a' prefix keymap | |
1395 :: WORK :: Tell where the annotations are stored | |
1396 | |
1397 @findex w3-add-personal-annotation | |
1398 @vindex w3-annotation-mode | |
1399 To add a new personal annotation, type @kbd{M-x | |
1400 w3-add-personal-annotation}. This creates a new buffer, in the mode | |
1401 specified by @code{w3-annotation-mode}. This defaults to | |
1402 @code{html-mode}. If this variable is @code{nil}, or it points to an | |
1403 undefined function, then @code{default-major-mode} is consulted. | |
1404 | |
1405 A minor mode redefines @kbd{C-c C-c} to complete the annotation and | |
1406 store it on the local disk. | |
1407 | |
1408 @findex w3-delete-personal-annotation | |
1409 To delete a personal annotation, it must be the current page. Once | |
1410 reading the annotation, @kbd{M-x w3-delete-personal-annotation} will | |
1411 remove it. This deletes the file containing the annotation, and any | |
1412 references to it in the annotation log file. | |
1413 | |
1414 Editing personal annotations is not yet supported. | |
1415 | |
1416 @node Controlling Formatting, General Formatting, Top, Top | |
1417 @comment node-name, next, previous, up | |
1418 @chapter Controlling Formatting | |
1419 @cindex Customizing formatting | |
1420 @cindex Specifying Fonts | |
1421 @cindex Fonts | |
1422 @cindex Colors | |
1423 How Emacs-W3 formats a document is very customizable. How a document is | |
1424 displayed depends on whether the user is on a terminal | |
1425 capable of graphics and a few variables. | |
1426 | |
1427 The following sections describe in more detail how to change the | |
1428 formatting of a document. | |
1429 | |
1430 @ifinfo | |
1431 @menu | |
1432 * General Formatting:: Changing general things about a | |
1433 document. | |
1434 * Character based terminals:: Changing how a document is | |
1435 displayed on a non-graphics | |
1436 terminal (vt100, etc.@:) or if | |
1437 @code{w3-delimit-emphasis} is @code{t}. | |
1438 * Graphics workstations:: Changing how a document is | |
1439 displayed on a graphics terminal | |
1440 (Xwindows, Windows, NeXTstep, | |
1441 OS/2, etc.) | |
1442 * Inlined images:: How to specify how Emacs-W3 | |
1443 handles inlined images/mpegs. | |
1444 @end menu | |
1445 @end ifinfo | |
1446 @node General Formatting, Character based terminals, Controlling Formatting, Controlling Formatting | |
1447 @section General formatting conventions | |
1448 @iftex | |
1449 @heading Setting the fill column | |
1450 @end iftex | |
1451 @ifinfo | |
1452 @center -------------------- | |
1453 @center Setting the fill column | |
1454 @center -------------------- | |
1455 @end ifinfo | |
1456 @vindex fill-column | |
1457 @vindex w3-right-border | |
1458 Each time a document is parsed, the @code{fill-column} is recalculated | |
1459 using @code{window-width} and @code{w3-right-border}. | |
1460 @code{w3-right-border} is an integer specifying how much room at the | |
1461 right edge of the screen to leave blank. The @code{fill-column} is set | |
1462 to @code{(- (window-width) @code{w3-right-border})}. | |
1463 @iftex | |
1464 @heading Formatting of hypertext links | |
1465 @end iftex | |
1466 @ifinfo | |
1467 @center -------------------- | |
1468 @center Formatting of hypertext links | |
1469 @center -------------------- | |
1470 @end ifinfo | |
1471 @vindex w3-delimit-links | |
1472 @vindex w3-link-start-delimiter | |
1473 @vindex w3-link-end-delimiter | |
1474 If the variable @code{w3-delimit-links} is non-@code{nil} (the default | |
1475 for text-terminals), then hypertext links are surrounded by text | |
1476 specified by the user. The variables @code{w3-link-start-delimiter} and | |
1477 @code{w3-link-end-delimiter} control what text is at the start and end | |
1478 of a hypertext link. These variables are cons-pairs of two | |
1479 strings. | |
1480 | |
1481 If a link has never been visited before (it is not in the @i{global | |
1482 history}), then the @code{car} of these variables is inserted at the | |
1483 start and end of the link. If the link has been visited before, then | |
1484 the @code{cdr} is inserted. So, links look like: | |
1485 | |
1486 @example | |
1487 [[This is a hypertext link]] that has never been visited. | |
1488 @{@{This one, however@}@} has been seen before at some point in time. | |
1489 @end example | |
1490 | |
1491 @iftex | |
1492 @heading Formatting of lists | |
1493 @end iftex | |
1494 @ifinfo | |
1495 @center -------------------- | |
1496 @center Formatting of lists | |
1497 @center -------------------- | |
1498 @end ifinfo | |
1499 @cindex Indentation | |
1500 @vindex w3-indent-level | |
1501 There are several different ways to control the formatting of lists. | |
1502 The most obvious is how deeply they are indented relative to the rest of | |
1503 the paragraphs in the document. To control this, set the | |
1504 variable @code{w3-indent-level}. This is the number of spaces to | |
1505 indent lists and other items requiring special margins. | |
1506 | |
1507 @vindex w3-list-chars-assoc | |
1508 Another thing that is easy to change about lists is the bullet character | |
1509 put at the front of each list item. This is controlled by the variable | |
1510 @code{w3-list-chars-assoc}, which is an assoc list. This is a list of | |
1511 lists, each sublist describing what to put at the start of each | |
1512 particular list type. The @code{car} of this list should be a symbol | |
1513 (@b{not} a string) representing the type of list (e.g., @samp{ul}). | |
1514 The rest of the list should consist of strings to insert at certain | |
1515 levels of lists. The @code{n}th element of this list is used when the | |
1516 list is nested @code{n + 1} levels. If the list is not long enough to | |
1517 define a string for a certain nesting level, then it defaults to either | |
1518 a '*' or a '.'. | |
1519 @iftex | |
1520 @heading Formatting of directory listings | |
1521 @end iftex | |
1522 @ifinfo | |
1523 @center -------------------- | |
1524 @center Formatting of directory listings | |
1525 @center -------------------- | |
1526 @end ifinfo | |
1527 @vindex url-use-hypertext-dired | |
1528 When Emacs-W3 encounters a link to a directory (whether by local file access | |
1529 or via FTP), it can either create an HTML document on the fly, or use | |
1530 @code{dired-mode} to peruse the listing. The variable | |
1531 @code{url-use-hypertext-dired} controls this behavior. | |
1532 | |
1533 If the value is @code{t}, Emacs-W3 uses @code{directory-files} to list them | |
1534 out and transform the directory into a hypertext document, then pass it | |
1535 through the parser like any other document. | |
1536 | |
1537 If the value is @code{nil}, just pass the directory off to dired using | |
1538 @code{find-file}. Using this option loses all the hypertext abilities | |
1539 of Emacs-W3, and the users is unable to load documents in the directory | |
1540 directly into Emacs-W3 by clicking with the mouse, etc. | |
1541 | |
1542 @ignore | |
1543 @cindex Downloading multiple files | |
1544 @cindex FTP'ing multiple files | |
1545 @vindex url-forms-based-ftp | |
1546 A new option in the 2.2 series is @code{url-forms-based-ftp} - this is | |
1547 still in the experimental stages, but can be useful. If | |
1548 @code{url-forms-based-ftp} is @code{t}, then all automatically generated | |
1549 directory listings will have a form mixed in with the file listing. | |
1550 Each file will have a checkbox next to it, and a row of buttons at the | |
1551 bottom of the screen. Selecting one of the buttons at the bottom of the | |
1552 screen will take the designated action on all the marked files. | |
1553 Currently, only deleting and copying marked files is supported. | |
1554 @end ignore | |
1555 @iftex | |
1556 @heading Formatting of gopher directories | |
1557 @end iftex | |
1558 @ifinfo | |
1559 @center -------------------- | |
1560 @center Formatting of gopher directories | |
1561 @center -------------------- | |
1562 @end ifinfo | |
1563 @vindex w3-use-hypertext-gopher | |
1564 @cindex Gopher+ | |
1565 @cindex ASK blocks | |
1566 There are two different ways of viewing gopher links. The built-in | |
1567 support that converts gopher directories into HTML, or the | |
1568 @file{gopher.el} package by Scott Snyder (@i{snyder@@fnald0.fnal.gov}). | |
1569 The variable that controls this is @code{w3-use-hypertext-gopher}. If | |
1570 set to @code{nil}, then @file{gopher.el} is used. Any other value | |
1571 causes Emacs-W3 to use its internal gopher support. If using | |
1572 @file{gopher.el}, all the hypertext capabilities of Emacs-W3 are lost. | |
1573 All the functionality of @file{gopher.el} is now available in the | |
1574 hypertext version, and the hypertext version supports Gopher+ and ASK | |
1575 blocks. | |
1576 | |
1577 @vindex w3-gopher-labels | |
1578 The main way to control the display of gopher directories is by the | |
1579 variable @code{w3-gopher-labels}. This variable controls the text that | |
1580 is inserted at the front of each item. This is an assoc list of gopher | |
1581 types (as one character strings), and a string to insert just after the | |
1582 list item. All the normal gopher types are defined. Entries should be | |
1583 similar to: @samp{("0" . "(TXT)")}. I have tried to keep all the tags | |
1584 to three characters plus two parentheses. | |
1585 @iftex | |
1586 @heading Creating a horizontal rule | |
1587 @end iftex | |
1588 @ifinfo | |
1589 @center -------------------- | |
1590 @center Creating a horizontal rule | |
1591 @center -------------------- | |
1592 @end ifinfo | |
1593 @vindex w3-horizontal-rule-char | |
1594 Horizontal rules (@b{<HR>} tags in HTML[+]) are used to separate chunks | |
1595 of a document, and is meant to be rendered as a solid line across the | |
1596 page. Some terminals display characters differently, so the variable | |
1597 @code{w3-horizontal-rule-char} controls which character is used to draw a | |
1598 horizontal bar. This variable must be the ASCII value of the character, | |
1599 @b{not a string}. The variable is passed through make-string whenever a | |
1600 horizontal rule of a certain width is necessary. | |
1601 | |
1602 @node Character based terminals, Graphics workstations, General Formatting, Controlling Formatting | |
1603 @section On character based terminals | |
1604 @vindex w3-delimit-emphasis | |
1605 On character based terminals, there is no easy way to show that a | |
1606 certain range of text is in bold or italics. If the variable | |
1607 @code{w3-delimit-emphasis} is non-@code{nil}, then Emacs-W3 can insert | |
1608 characters before and after character formatting commands in HTML | |
1609 documents. The defaul value of @code{w3-delimit-emphasis} is | |
1610 automatically set based on the type of window system and version of | |
1611 Emacs being used. | |
1612 | |
1613 @vindex w3-header-chars-assoc | |
1614 :: WORK :: | |
1615 | |
1616 @findex w3-upcase-region | |
1617 @code{w3-header-chars-assoc} is an assoc list of header tags and a list | |
1618 of formatting instructions. The @code{car} of the list is the level of | |
1619 the header (1--6). The rest of the list should contain three items. | |
1620 The first item is text to insert before the header. The second item is | |
1621 text to insert after the header. Both should have reserved characters | |
1622 converted to their HTML[+] entity definitions. The third item is a | |
1623 function to call on the area the header is in. This function is called | |
1624 with arguments specifying the start and ending character positions of | |
1625 the header. The starting point is always first. To convert a region to | |
1626 upper case, please use @code{w3-upcase-region} instead of | |
1627 @code{upcase-region}, so that entities are converted properly. | |
1628 | |
1629 @node Graphics workstations, Inlined images, Character based terminals, Controlling Formatting | |
1630 @section With graphics workstations | |
1631 Starting with the first public release of version 2.3.0, all formatting | |
1632 is controlled by the use of stylesheets. | |
1633 | |
1634 :: WORK :: Graphic workstation stuff - redo for stylesheets | |
1635 | |
1636 @node Inlined images, , Graphics workstations, Controlling Formatting | |
1637 @cindex Inlined images | |
1638 @cindex Images | |
1639 @cindex Movies | |
1640 @cindex Inlined MPEGs | |
1641 @cindex MPEGs | |
1642 When running in Lucid Emacs 19.10 or XEmacs 19.11 and higher, Emacs-W3 can | |
1643 display inlined images and MPEG movies. There are several variables that | |
1644 control how and when the images are displayed. | |
1645 | |
1646 @cindex Netpbm | |
1647 @cindex Pbmplus | |
1648 @vindex w3-graphic-converter-alist | |
1649 Since Lucid/XEmacs only natively understands XPixmaps and XBitmaps, GIFs | |
1650 and other image types must first be converted to one of these formats. | |
1651 To do this, the @b{netpbm utilities}@footnote{Available via anonymous | |
1652 ftp from ftp.x.org:/R5contrib/netpbm-1mar1994.tar.gz, and most large ftp | |
1653 sites.} programs are normally used. This is a suite of freeware image | |
1654 conversion tools. The variable @code{w3-graphic-converter-alist} | |
1655 controls how each image type is converted. This is an assoc list, keyed | |
1656 on the MIME content-type. The @code{car} is the content-type, and the | |
1657 @code{cdr} is a string suitable to pass to @code{format}. A %s in this | |
1658 string will be replaced with a converter from the ppm image format to an | |
1659 XPixmap (or XBitmap, if being run on a monochrome display). By default, | |
1660 the Emacs-W3 browser has converters for: | |
1661 | |
1662 @enumerate | |
1663 @item | |
1664 image/x-xbitmap | |
1665 @item | |
1666 image/xbitmap | |
1667 @item | |
1668 image/xbm | |
1669 @item | |
1670 image/gif | |
1671 @item | |
1672 image/jpeg | |
1673 @item | |
1674 image/x-fax | |
1675 @item | |
1676 image/x-raster | |
1677 @item | |
1678 image/windowdump | |
1679 @item | |
1680 image/x-icon | |
1681 @item | |
1682 image/portable-graymap | |
1683 @item | |
1684 image/portable-pixmap | |
1685 @item | |
1686 image/x-pixmap | |
1687 @item | |
1688 image/x-xpixmap | |
1689 @item | |
1690 image/pict | |
1691 @item | |
1692 image/x-macpaint | |
1693 @item | |
1694 image/x-targa | |
1695 @item | |
1696 image/tiff | |
1697 @end enumerate | |
1698 | |
1699 @vindex w3-color-max-blue | |
1700 @vindex w3-color-max-green | |
1701 @vindex w3-color-max-red | |
1702 @vindex w3-color-use-reducing | |
1703 @vindex w3-color-filter | |
1704 Since most displays are (sadly) not 24-bit, Emacs-W3 can automatically | |
1705 dither an image, so that it does not fill up the application' colormap too | |
1706 quickly. If @code{w3-color-use-reducing} is non-@code{nil}, then the | |
1707 images will use reduced colors. If @code{w3-color-filter} is @code{eq} to | |
1708 @code{'ppmquant}, then the ppmquant program will be used. If @code{eq} to | |
1709 @code{'ppmdither}, then the ppmdither program will be used. The ppmdither | |
1710 program tends to give better results. The values of | |
1711 @code{w3-color-max-red}, @code{w3-color-max-blue}, and | |
1712 @code{w3-color-max-green} control how many colors the inlined images can | |
1713 use. If using ppmquant, then the product of these three variables is used | |
1714 as the maximum number of colors per image. If using ppmdither, then only | |
1715 the set number of color cells can be allocated per image. See the man | |
1716 pages for ppmdither and ppmquant for more information on how the dithering | |
1717 is actually done. @code{w3-color-filter} may also be a string, specifying | |
1718 exactly what external filter to use. An example is: @samp{ppmquant -fs | |
1719 -map ~/pixmaps/colormap.ppm}. | |
1720 | |
1721 @cindex MPEGs | |
1722 @cindex Inlined animations | |
1723 When running in XEmacs 19.11 or XEmacs 19.12, Emacs-W3 can insert an | |
1724 MPEG movie in the middle of a buffer. | |
1725 | |
1726 :: WORK :: Need a pointer to the new EMBED Internet Draft :: | |
1727 | |
1728 The basic syntax is: | |
1729 @example | |
1730 <embed href="somevideo.mpg" type="video/mpeg"> | |
1731 @end example | |
1732 | |
1733 @vindex w3-mpeg-args | |
1734 @vindex w3-mpeg-program | |
1735 This requires a special version of the standard @file{mpeg_play} mpeg | |
1736 player. Patches against the 2.0 version are available at | |
1737 ftp://ftp.cs.indiana.edu/pub/elisp/w3/mpeg_patch. The variable | |
1738 @code{w3-mpeg-program} should point to this executable, and | |
1739 @code{w3-mpeg-args} should be a list of any additional arguments to be | |
1740 passed to the player. By default, this includes @var{-loop}, so the | |
1741 mpeg plays continuously. | |
1742 | |
1743 @cindex Delaying inlined images | |
1744 @cindex Delaying inlined animations | |
1745 @vindex w3-delay-image-loads | |
1746 @vindex w3-delay-mpeg-loads | |
1747 Because images and movies can take up an incredible amount of bandwidth, | |
1748 it is useful to be able to control whether they are loaded or not. By | |
1749 default, images and movies are loaded automatically, but the variables | |
1750 @code{w3-delay-image-loads} and @code{w3-delay-mpeg-loads} control this. | |
1751 If set to non-@code{nil}, then the images or movies are not | |
1752 loaded until explicitly requested by the user. | |
1753 | |
1754 @cindex Loading delayed images | |
1755 @cindex Loading delayed movies | |
1756 @findex w3-load-delayed-images | |
1757 @findex w3-load-delayed-mpegs | |
1758 To load any delayed images, use the function | |
1759 @code{w3-load-delayed-images}. Its counterpart for delayed movies is | |
1760 @code{w3-load-delayed-mpegs} | |
1761 | |
1762 @node MIME Support, Adding MIME types based on file extensions, , Top | |
1763 @chapter MIME Support | |
1764 MIME is an emerging standard for multimedia mail. It offers a very | |
1765 flexible typing mechanism. The type of a file or message is specified | |
1766 in two parts, separated by a '/'. The first part is the general | |
1767 category of the data (text, application, image, etc.). The second part | |
1768 is the specific type of data (postscript, gif, jpeg, etc.). So | |
1769 @samp{text/html} specifies an HTML document, whereas | |
1770 @samp{image/x-xwindowdump} specifies an image of an Xwindow taken with | |
1771 the @file{xwd} program. | |
1772 | |
1773 | |
1774 This typing allows much more flexibility in naming files. HTTP/1.0 | |
1775 servers can now send back content-type headers in response to a request, | |
1776 and not have the client second-guess it based on file extensions. HTML | |
1777 files can now be named @file{something.gif} (not a great idea, but | |
1778 possible). | |
1779 | |
1780 @ifinfo | |
1781 @menu | |
1782 * Adding MIME types based on file extensions:: How to map file | |
1783 extensions onto MIME | |
1784 types (e.g., @samp{.gif -> | |
1785 image/gif)}. | |
1786 * Specifying Viewers:: How to specify external and internal viewers | |
1787 for files that Emacs-W3 cannot handle natively. | |
1788 @end menu | |
1789 @end ifinfo | |
1790 | |
1791 @node Adding MIME types based on file extensions, Specifying Viewers, MIME Support, MIME Support | |
1792 @section Adding MIME types based on file extensions | |
1793 @vindex mm-mime-extensions | |
1794 For some protocols however, it is still necessary to guess the content | |
1795 of a file based on the file extension. This type of guess-work should | |
1796 only be needed when accessing files via FTP, local file access, or old | |
1797 HTTP/0.9 servers. | |
1798 | |
1799 Instead of specifying how to view things twice, once based on | |
1800 content-type and once based on the file extension, it is easier to map | |
1801 file extensions to MIME content-types. The variable that controls this | |
1802 is @code{mm-mime-extensions}. | |
1803 | |
1804 This variable is an assoc list of file extensions and the corresponding | |
1805 MIME content-type. A sample entry looks like: @samp{(".movie" | |
1806 . "video/x-sgi-movie")} This makes all files that end in @file{.movie} | |
1807 (@file{foo.movie} and @file{bar.movie}) be interpreted as SGI animation | |
1808 files. If a content-type is defined for the document, then this is | |
1809 over-ridden. Regular expressions can @b{NOT} be used. | |
1810 | |
1811 @cindex mime-types file | |
1812 @findex mm-parse-mimetypes | |
1813 Both Mosaic and the NCSA HTTP daemon rely on a separate file for mapping | |
1814 file extensions to MIME types. Instead of having the users of Emacs-W3 | |
1815 duplicate this in lisp, this file can be parsed using the | |
1816 @code{url-parse-mimetypes} function. This function is called each time | |
1817 w3 is loaded. It tries to locate mimetype files in several places. If | |
1818 the environment variable @code{MIMETYPES} is nonempty, then this is | |
1819 assumed to specify a UNIX-like path of mimetype files (this is a colon | |
1820 separated string of pathnames). If the @code{MIMETYPES} environment | |
1821 variable is empty, then Emacs-W3 looks for these files: | |
1822 | |
1823 @enumerate | |
1824 @item | |
1825 @file{~/.mime-types} | |
1826 @item | |
1827 @file{/etc/mime-types} | |
1828 @item | |
1829 @file{/usr/etc/mime-types} | |
1830 @item | |
1831 @file{/usr/local/etc/mime-types} | |
1832 @item | |
1833 @file{/usr/local/www/conf/mime-types} | |
1834 @end enumerate | |
1835 | |
1836 Each line contains information for one http type. These types resemble | |
1837 MIME types. To add new ones, use subtypes beginning with x-, such as | |
1838 application/x-myprogram. Lines beginning with # are comment lines, and | |
1839 suitably ignored. Each line consists of: | |
1840 | |
1841 type/subtype ext1 ext2 ... ext@var{n} | |
1842 | |
1843 type/subtype is the MIME-like type of the document. ext* is any number | |
1844 of space-separated filename extensions which correspond to the MIME | |
1845 type. | |
1846 | |
1847 @node Specifying Viewers, ,Adding MIME types based on file extensions, MIME Support | |
1848 @section Specifying Viewers | |
1849 Not all files look as they should when parsed as an HTML document | |
1850 (whitespace is stripped, paragraphs are reformatted, and lots of little | |
1851 changes that make the document look unrecognizable). Files may be | |
1852 passed to external programs or Emacs Lisp functions to be viewed. | |
1853 | |
1854 Not all files can be viewed accurately from within an Emacs session (GIF | |
1855 files for example, or audio files). For this reason, the user can | |
1856 specify file "viewers" based on MIME content-types. This is done with | |
1857 a standard mailcap file. @xref{Mailcap Files} | |
1858 | |
1859 @findex mm-add-mailcap-entry | |
1860 As an alternative, the function @code{mm-add-mailcap-entry} can also be | |
1861 used from an appropriate hook.@xref{Hooks} This functions takes three | |
1862 arguments, the major type ("@i{image}"), the minor type ("@i{gif}"), and | |
1863 an assoc list of information about the viewer. Please see the URL | |
1864 documentation for more specific information on what this assoc list | |
1865 should look like. | |
1866 | |
1867 @node Security, Non-Unix Operating Systems, , Top | |
1868 @chapter Security | |
1869 @cindex Security | |
1870 @cindex Paranoia | |
1871 There are an increasing number of ways to authenticate a user to a web | |
1872 service. Emacs-W3 tries to support as many as possible. Emacs-W3 | |
1873 currently supports: | |
1874 | |
1875 @table @b | |
1876 @item Basic Authentication | |
1877 @cindex Security, Basic | |
1878 @cindex HTTP/1.0 Authentication | |
1879 @cindex Authentication, Basic | |
1880 The weakest authentication available, not recommended if serious | |
1881 security is necessary. This is simply a string that looks like | |
1882 @samp{user:password} that has been Base64 encoded, as defined in RFC | |
1883 1421. | |
1884 @item Digest Authentication | |
1885 @cindex Security, Digest | |
1886 @cindex HTTP/1.0 Authentication | |
1887 @cindex Authentication, Digest | |
1888 Jeffery L. Hostetler, John Franks, Philip Hallam-Baker, Ari Luotonen, | |
1889 Eric W. Sink, and Lawrence C. Stewart have an internet draft for a new | |
1890 authentication mechanism. For the complete specification, please see | |
1891 draft-ietf-http-digest-aa-01.txt in the nearest internet drafts | |
1892 archive@footnote{One is ftp://ds.internic.net/internet-drafts}. | |
1893 @item SSL Encryption | |
1894 @cindex HTTP/1.0 Authentication | |
1895 @cindex Secure Sockets Layer | |
1896 @cindex SSL | |
1897 @cindex Gag Puke Retch | |
1898 @cindex Exportability | |
1899 @cindex Export Restrictions | |
1900 SSL is the @code{Secure Sockets Layer} interface developed by Netscape | |
1901 Communications @footnote{http://www.netscape.com/}. Emacs-W3 supports | |
1902 HTTP transfers over an SSL encrypted channel, if the appropriate files | |
1903 have been installed.@xref{Installing SSL} | |
1904 @item PGP/PEM | |
1905 @cindex HTTP/1.0 Authentication | |
1906 @cindex Public Key Cryptography | |
1907 @cindex Authentication, PGP | |
1908 @cindex Authentication, PEM | |
1909 @cindex RIPEM | |
1910 @cindex Public Key Cryptography | |
1911 @cindex PGP | |
1912 @cindex Pretty Good Privacy | |
1913 @cindex Encryption | |
1914 @cindex Security | |
1915 @cindex ITAR must die | |
1916 @cindex Stupid export restrictions | |
1917 @cindex Support your local crypto-anarchist | |
1918 @cindex NSA freaks | |
1919 A few servers still support this method of authentication, but it has | |
1920 been superseded by SSL and Secure-HTTP.@xref{Using PGP/PEM} | |
1921 @end table | |
1922 | |
1923 @node Non-Unix Operating Systems, VMS, Security, Top | |
1924 @chapter Non-Unix Operating Systems | |
1925 @cindex Non-Unix Operating Systems | |
1926 @ifinfo | |
1927 @menu | |
1928 * VMS:: The wonderful world of VAX|AXP-VMS! | |
1929 * OS/2:: The next-best thing to Unix. | |
1930 * MS-DOS:: The wonderful world of MS-DOG! | |
1931 * 16-Bit Windows:: Windows 3.1, 3.11, and WFW 3.11. | |
1932 * 32-Bit Windows:: Windows NT, Chicago/Windows 95. | |
1933 * Amiga:: The Amiga, for those who still love them. | |
1934 @end menu | |
1935 @end ifinfo | |
1936 | |
1937 @node VMS, OS/2, Non-Unix Operating Systems, Non-Unix Operating Systems | |
1938 @section VMS | |
1939 @cindex VAX-VMS | |
1940 @cindex AXP-VMS | |
1941 @cindex Digital VMS | |
1942 @cindex VMS | |
1943 :: WORK :: VMS Specific instriuctions | |
1944 | |
1945 @node OS/2, MS-DOS, VMS, Non-Unix Operating Systems | |
1946 @section OS/2 | |
1947 @cindex OS/2 | |
1948 @cindex Warp | |
1949 :: WORK :: OS/2 Specific instructions | |
1950 | |
1951 @node MS-DOS, 16-Bit Windows, OS/2, Non-Unix Operating Systems | |
1952 @section MS-DOS | |
1953 @cindex MS-DOS | |
1954 @cindex Microsloth | |
1955 @cindex DOS | |
1956 @cindex MS-DOG | |
1957 :: WORK :: DOS Specific instructions | |
1958 | |
1959 @node 16-Bit Windows, 32-Bit Windows, MS-DOS, Non-Unix Operating Systems | |
1960 @section 16-Bit Windows | |
1961 @cindex 16-Bit Windows | |
1962 @cindex Microsloth | |
1963 @cindex Windows (16-Bit) | |
1964 @cindex Windows For Workgroups | |
1965 :: WORK :: 16bit Windows Specific instructions | |
1966 | |
1967 @node 32-Bit Windows, Amiga, 16-Bit Windows, Non-Unix Operating Systems | |
1968 @section 32-Bit Windows | |
1969 @cindex Chicago | |
1970 @cindex Windows (32-Bit) | |
1971 @cindex 32-Bit Windows | |
1972 @cindex Microsloth | |
1973 @cindex Windows '95 | |
1974 :: WORK :: 32bit Windows Specific instructions | |
1975 | |
1976 @node Amiga, Advanced Features, 32-Bit Windows, Non-Unix Operating Systems | |
1977 @section Amiga | |
1978 @cindex Amiga | |
1979 @cindex Commodore | |
1980 :: WORK :: Amiga specific instructions | |
1981 | |
1982 @node Advanced Features, Style Sheets, Amiga, Top | |
1983 @comment node-name, next, previous, up | |
1984 @chapter Advanced Features | |
1985 | |
1986 @ifinfo | |
1987 @menu | |
1988 * Style Sheets:: Formatting control, the right way | |
1989 * Disk Caching:: Improving performance by using a local disk cache | |
1990 * Interfacing to Mail/News:: How to make VM understand hypertext links | |
1991 * Debugging HTML:: How to make Emacs-W3 display warnings about invalid | |
1992 HTML/HTML+ constructs. | |
1993 * Native WAIS Support:: How to make Emacs-W3 understand WAIS links without | |
1994 using a gateway. | |
1995 * Rating Links:: How to make Emacs-W3 put an 'interestingness' value | |
1996 next to each link. | |
1997 * Gopher Plus Support:: How Emacs-W3 makes use of the Gopher+ protocol. | |
1998 * Hooks:: Various hooks to use throughout Emacs-W3 | |
1999 * Other Variables:: Miscellaneous variables that control the real | |
2000 guts of Emacs-W3. | |
2001 @end menu | |
2002 @end ifinfo | |
2003 | |
2004 @node Style Sheets, Disk Caching, Advanced Features, Advanced Features | |
2005 @section Style Sheets | |
2006 @cindex Formatting control | |
2007 @cindex Style sheets | |
2008 @cindex Look and Feel | |
2009 @cindex Layout control | |
2010 @cindex Experimental style sheet mechanism | |
2011 Emacs-W3 currently supports the experimental style sheet mechanism | |
2012 proposed by H&kon W. Lie of the W3 Consortium. This allows for the | |
2013 author to specify what a document should look like, and yet allow the | |
2014 end user to override any of the stylistic changes. This allows for | |
2015 people with special needs (most notably the visually impaired) to | |
2016 override style bindings that could make a document totally | |
2017 unreadable. | |
2018 | |
2019 @example | |
2020 <style notation="css"> | |
2021 /* This is a comment | |
2022 ** These will be ignored, up to the terminating end-of-line | |
2023 # | |
2024 h1 @{ align: center, | |
2025 color: yellow, | |
2026 background: red, | |
2027 font-size: 24pt | |
2028 @} | |
2029 h2 @{ align: right, | |
2030 font-family: palatino, | |
2031 font-size: 18pt | |
2032 @} | |
2033 </style> | |
2034 @end example | |
2035 | |
2036 :: WORK :: Much more information on stylesheets | |
2037 | |
2038 @cindex <style> | |
2039 To include a stylesheet into a document, simply use the <style> tag. | |
2040 Use the @b{notation} attribute to specify what language the stylesheet | |
2041 is specified in. The default is @b{css}. The data between the <style> | |
2042 and </style> tags is the stylsheet proper - no HTML parsing is done to | |
2043 this data - it is treated similar to an <XMP> section of text. To | |
2044 reference an external stylesheet, use the <link> tag. | |
2045 @example | |
2046 <link rel="stylesheet" href="/bill.style"> | |
2047 @end example | |
2048 If these two mechanisms are mixed, then the URL is resolved first, and | |
2049 the contents of the <style> tag take precedence if there are any | |
2050 conflicting directives. | |
2051 | |
2052 @cindex DSSSL | |
2053 @cindex DSSSL-lite | |
2054 In the future, DSSSL and DSSSL-lite will be supported as valid | |
2055 stylesheet languages, but not in this release. For more information on | |
2056 DSSSL-lite see http://www.falch.no/~pepper/DSSSL-Lite/ - for more | |
2057 information on full DSSSL, see | |
2058 ftp://ftp.jclark.com/pub/dsssl/dsssl.ps.gz | |
2059 | |
2060 @node Disk Caching, Interfacing to Mail/News, Style Sheets, Advanced Features | |
2061 @section Disk Caching | |
2062 @cindex Caching | |
2063 @cindex Persistent Cache | |
2064 @cindex Disk Cache | |
2065 A cache stores the information on a page on the local machine. When | |
2066 requesting a page that is in the cache, Emacs-W3 can retrieve the page | |
2067 from the cache more quickly than retrieving the page again from its | |
2068 location out on the network. With a well-populated cache, browsing the | |
2069 web is dramatically faster. | |
2070 | |
2071 The first time a page is requested, Emacs-W3 retrieves the page from the | |
2072 network. When requesting a page that is in the cache, Emacs-W3 checks | |
2073 to see if the page has changed since it was last retrieved from the | |
2074 remote machine. If it has not changed, the local copy is used, saving | |
2075 the transmission of the file over the network. | |
2076 | |
2077 @vindex url-automatic-caching | |
2078 @cindex Turning on caching | |
2079 @cindex Cleaning the cache | |
2080 @cindex Clearing the cache | |
2081 @cindex Cache cleaning | |
2082 @cindex Limiting the size of the cache | |
2083 To turn on disk caching, set the variable @code{url-automatic-caching} | |
2084 to non-@code{nil}, or choose the 'Caching' menu item (under `Options'). | |
2085 That is all there is to it. Running the @code{clean-cache} shell script | |
2086 fist is recommended, to allow for future cleaning of the cache. This | |
2087 shell script will remove all files that have not been accessed since it | |
2088 was last run. To keep the cache pared down, it is recommended that this | |
2089 script be run from @i{at} or @i{cron} (see the manual pages for | |
2090 crontab(5) or at(1) for more information) | |
2091 | |
2092 | |
2093 @cindex Relying on cache | |
2094 @cindex Cache only mode | |
2095 @cindex Standalone mode | |
2096 @cindex Browsing with no network connection | |
2097 @cindex Netless browsing | |
2098 @vindex url-standalone-mode | |
2099 With a large cache of documents on the local disk, it can be very handy | |
2100 when traveling, or any other time the network connection is not active | |
2101 (a laptop with a dial-on-demand PPP connection, etc). Emacs-W3 can rely | |
2102 solely on its cache, and avoid checking to see if the page has changed | |
2103 on the remote server. In the case of a dial-on-demand PPP connection, | |
2104 this will keep the phone line free as long as possible, only bringing up | |
2105 the PPP connection when asking for a page that is not located in the | |
2106 cache. This is very useful for demonstrations as well. To turn this | |
2107 feature on, set the variable @code{url-standalone-mode} to | |
2108 non-@code{nil}, or choose the `Use Cache Only' menu item (under | |
2109 `Options') | |
2110 | |
2111 @cindex Caching options | |
2112 @cindex Alternate caching method | |
2113 Emacs-W3 caches files under the temporary directory specified by | |
2114 @code{url-temporary-directory}, in a user-specific subdirectory | |
2115 (determined by the @code{user-real-login-name} function). The cache | |
2116 files are stored under their original names, so a URL like: | |
2117 http://www.spry.com/foo/bar/baz.html would be stored in a cache file | |
2118 named: /tmp/wmperry/com/spry/www/foo/bar/baz.html. Sometimes, espcially | |
2119 with gopher links, there will be name conflicts, and an error will be | |
2120 signalled. This cannot be avoided, and still have reasonable | |
2121 performance at startup time (reading in an index file of all the cached | |
2122 pages can take a long time on slow machines, or even fast machines with | |
2123 large caches). When running XEmacs 19.12 or later, a different naming | |
2124 scheme can be used. This avoids name conflicts, but loses the human | |
2125 readability of the cache file names. The cache files will look like: | |
2126 /tmp/wmperry/acbd18db4cc2f85cedef654fccc4a4d8, which is certainly | |
2127 unique, but not very user-friendly. To turn this on, add this to the | |
2128 @file{.emacs} file: | |
2129 | |
2130 | |
2131 @example | |
2132 (add-hook 'w3-load-hooks '(lambda () | |
2133 (fset 'url-create-cached-filename | |
2134 'url-create-cached-filename-using-md5))) | |
2135 @end example | |
2136 | |
2137 If other versions of emacs will not be sharing the cache, I highly | |
2138 recommend this method of creating the cache filename. | |
2139 | |
2140 | |
2141 @node Interfacing to Mail/News, Debugging HTML, Disk Caching, Advanced Features | |
2142 @section Interfacing to Mail/News | |
2143 @cindex Interfacing to Mail/News | |
2144 @cindex VM | |
2145 @cindex Using Emacs-W3 with VM | |
2146 @cindex GNUS | |
2147 @cindex Using Emacs-W3 with GNUS | |
2148 @cindex RMAIL | |
2149 @cindex Using Emacs-W3 with RMAIL | |
2150 More and more people are including URLs in their signatures, and within | |
2151 the body of mail messages. It can get quite tedious to type these into | |
2152 the minibuffer to follow one. | |
2153 | |
2154 With the latest versions of VM (the 5.9x series of betas), URLs are | |
2155 highlighted, and can be followed with the mouse or the return | |
2156 key. | |
2157 | |
2158 To access URLs from within RMAIL, the following hook should do the | |
2159 trick. | |
2160 @example | |
2161 (add-hook 'rmail-mode-hook | |
2162 (function | |
2163 (lambda () | |
2164 (define-key rmail-mode-map [mouse-2] 'w3-maybe-follow-link-mouse) | |
2165 (define-key rmail-mode-map "\r" 'w3-maybe-follow-link)))) | |
2166 @end example | |
2167 | |
2168 To access URLs from within GNUS, the following hook should do the | |
2169 trick. | |
2170 @example | |
2171 (add-hook 'gnus-article-mode-hook | |
2172 (function | |
2173 (lambda () | |
2174 (define-key gnus-article-mode-map [mouse-2] | |
2175 'w3-maybe-follow-link-mouse) | |
2176 (define-key gnus-article-mode-map "\r" | |
2177 'w3-maybe-follow-link)))) | |
2178 @end example | |
2179 | |
2180 @node Debugging HTML, Native WAIS Support, Interfacing to Mail/News, Advanced Features | |
2181 @section Debugging HTML | |
2182 @cindex Debugging | |
2183 @cindex Invalid HTML | |
2184 @cindex Bad HTML | |
2185 @vindex w3-debug-buffer | |
2186 @vindex w3-debug-html | |
2187 For those people that are adventurous, or are just as anal as I am about | |
2188 people writing valid HTML, set the variable @code{w3-debug-html} to | |
2189 @code{t} and see what happens. | |
2190 | |
2191 | |
2192 If a Emacs-W3 thinks it has encountered invalid HTML, then a debugging | |
2193 message is displayed. | |
2194 | |
2195 :: WORK :: Need to list the different values w3-debug-html can have, and | |
2196 :: WORK :: what they do :: | |
2197 | |
2198 @node Native WAIS Support, Rating Links, Debugging HTML, Advanced Features | |
2199 @section Native WAIS Support | |
2200 This version of Emacs-W3 supports native WAIS querying (earlier | |
2201 versions required the use of a gateway program). In order to use the | |
2202 native WAIS support, a working @dfn{waisq} binary is required. I | |
2203 recommend the distribution from think.com - | |
2204 ftp://think.com/wais/wais-8-b6.1.tar.Z is a good place to start. | |
2205 | |
2206 @vindex url-waisq-prog | |
2207 @vindex url-wais-gateway-server | |
2208 @vindex url-wais-gateway-port | |
2209 The variable @code{url-waisq-prog} must point to this executable, and | |
2210 one of @code{url-wais-gateway-server} or @code{url-wais-gateway-port} | |
2211 should be @code{nil}. | |
2212 | |
2213 When a WAIS URL is encountered, a form will be automatically generated | |
2214 and displayed. After typing in the search term, the query will be sent | |
2215 to the server by running the @code{url-waisq-prog} in a subprocess. The | |
2216 results will be converted into HTML and displayed. | |
2217 | |
2218 @node Rating Links, Gopher Plus Support, Native WAIS Support, Advanced Features | |
2219 @section Rating Links | |
2220 The @code{w3-link-info-display-function} variable can be used to 'rate' a URL | |
2221 when it shows up in an HTML page. If non-@code{nil}, then this should | |
2222 be a list specifying (or a symbol specifying the name) of a function. | |
2223 This function should expect one argument, a fully specified URL, and | |
2224 should return a string. This string is inserted after the link | |
2225 text. | |
2226 | |
2227 If a user has decided that all links served from blort.com are too laden | |
2228 with images, and wants to be warned that a link points at this host, | |
2229 they could do something like this: | |
2230 | |
2231 @example | |
2232 (defun check-url (url) | |
2233 (if (string-match "://[^/]blort.com" url) | |
2234 "[SLOW!]" "")) | |
2235 | |
2236 (setq w3-link-info-display-function 'check-url) | |
2237 @end example | |
2238 | |
2239 So that all links pointing to any site at blort.com shows up as "Some | |
2240 link[SLOW!]" instead of just "Some link". | |
2241 | |
2242 @node Gopher Plus Support, Hooks, Rating Links, Advanced Features | |
2243 @section Gopher+ Support | |
2244 @cindex Gopher+ | |
2245 The gopher+ support in Emacs-W3 is limited to the conversion of ASK | |
2246 blocks into HTML 3.0 forms, and the usage of the content-length given by | |
2247 the gopher+ server to give a nice status bar on the bottom of the | |
2248 screen. | |
2249 | |
2250 This will hopefully be extended to include the Gopher+ method of | |
2251 content-type negotiation, but this may be a while. | |
2252 | |
2253 @node Hooks, Other Variables, Gopher Plus Support, Advanced Features | |
2254 @section Hooks | |
2255 @cindex Hooks | |
2256 These are the various hooks that can be used to customize some of | |
2257 Emacs-W3's behavior. They are arranged in the order in which they would | |
2258 happen when retrieving a document. All of these are functions (or lists | |
2259 of functions) that are called consecutively. | |
2260 | |
2261 @table @code | |
2262 @vindex w3-load-hooks | |
2263 @item w3-load-hooks | |
2264 These hooks are run by @code{w3-do-setup} the first time a URL is | |
2265 fetched. All the w3 variables are initialized before this hook is | |
2266 run. | |
2267 @item w3-file-done-hooks | |
2268 These hooks are run by @code{w3-prepare-buffer} after all parsing on a | |
2269 document has been done. All @code{url-current-}@var{*} and | |
2270 @code{w3-current-}@var{*} variables are initialized when this hook is run. | |
2271 This is run before the buffer is shown, and before any inlined images | |
2272 are downloaded and converted. | |
2273 @item w3-file-prepare-hooks | |
2274 These hooks are run by @code{w3-prepare-buffer} before any parsing is | |
2275 done on the HTML file. The HTTP/1.0 headers specified by | |
2276 @code{w3-show-headers} have been inserted, the syntax table has been set | |
2277 to @code{w3-parse-args-syntax-table}, and any personal annotations have | |
2278 been inserted by the time this hook is run. | |
2279 @item w3-mode-hooks | |
2280 These hooks are run after a buffer has been parsed and displayed, but | |
2281 before any inlined images are downloaded and converted. | |
2282 @item w3-source-file-hooks | |
2283 These hooks are run after displaying a document's source | |
2284 @end table | |
2285 | |
2286 @node Other Variables, , Hooks, Advanced Features | |
2287 @section Miscellaneous variables | |
2288 There are lots of variables that control the real nitty-gritty of Emacs-W3 | |
2289 that the beginning user probably shouldn't mess with. Here they are. | |
2290 | |
2291 @table @code | |
2292 @item url-bad-port-list | |
2293 @vindex url-bad-port-list | |
2294 List of ports to warn the user about connecting to. Defaults to just | |
2295 the mail and NNTP ports so a malicious HTML author cannot spoof mail or | |
2296 news to other people. | |
2297 @item url-confirmation-func | |
2298 @vindex url-confirmation-func | |
2299 What function to use for asking yes or no functions. Possible values | |
2300 are @code{'yes-or-no-p} or @code{'y-or-n-p}, or any function that takes | |
2301 a single argument (the prompt), and returns @code{t} only if a positive | |
2302 answer is gotten. Defaults to @code{'yes-or-no-p}. | |
2303 @item w3-delimit-links | |
2304 @vindex w3-delimit-links | |
2305 :: WORK :: This is going away, and should be specified with stylesheets instead | |
2306 @item w3-delimit-emphasis | |
2307 @vindex w3-delimit-emphasis | |
2308 :: WORK :: This is going away, and should be specified with stylesheets instead | |
2309 @item w3-default-action | |
2310 @vindex w3-default-action | |
2311 A lisp symbol specifying what action to take for files with extensions | |
2312 that are not in the @code{mm-mime-extensions} assoc list. This is | |
2313 useful in case Emacs-W3 ever run across files with weird extensions | |
2314 (.foo, .README, .READMEFIRST, etc.). In most circumstances, this should | |
2315 not be required anymore. | |
2316 | |
2317 Possible values: any lisp symbol. Should be a function that takes no | |
2318 arguments. The return value does not matter, it is ignored. Some examples | |
2319 are @code{'w3-prepare-buffer} or @code{'indented-text-mode}. | |
2320 @ignore | |
2321 @item w3-icon-directory-list | |
2322 @vindex w3-icon-directory-list | |
2323 A list of directorys to look in for the w3 standard icons... must end | |
2324 in a /! If the directory @code{data-directory}/w3 exists, then this is | |
2325 automatically added to the default value of | |
2326 http://cs.indiana.edu/elisp/w3/icons/. | |
2327 @end ignore | |
2328 @item w3-keep-old-buffers | |
2329 @vindex w3-keep-old-buffers | |
2330 Whether to keep old buffers around when following links. To avoid lots | |
2331 of buffers in one Emacs session, set this variable to @code{nil}. I | |
2332 recommend setting it to @code{t}, so that backtracking from one link to | |
2333 another is faster. | |
2334 | |
2335 @item url-passwd-entry-func | |
2336 @vindex url-passwd-entry-func | |
2337 This is a symbol indicating which function to call to read in a | |
2338 password. If this variable is @code{nil} at startup, it is initialized | |
2339 depending on whether @dfn{EFS} or @dfn{ange-ftp} is being used. This | |
2340 function should accept the prompt string as its first argument, and the | |
2341 default value as its second argument. | |
2342 | |
2343 @item w3-reuse-buffers | |
2344 @vindex w3-reuse-buffers | |
2345 Determines what happens when @code{w3-fetch} is called on a document | |
2346 that has already been loaded into another buffer. Possible values are: | |
2347 @code{nil}, @code{yes}, and @code{no}. @code{nil} will ask the user if | |
2348 Emacs-W3 should reuse the buffer (this is the default value). A value of | |
2349 @code{yes} means assume the user wants to always reuse the buffer. A | |
2350 value of @code{no} means assume the user always wants to re-fetch the | |
2351 document. | |
2352 @item w3-show-headers | |
2353 @vindex w3-show-headers | |
2354 This is a list of HTTP/1.0 headers to show at the end of a buffer. All | |
2355 the headers should be in lowercase. They are inserted at the end of the | |
2356 buffer in a <UL> list. Alternatively, if this is simply @code{t}, then | |
2357 all the HTTP/1.0 headers are shown. The default value is | |
2358 @code{nil}. | |
2359 @item w3-show-status, url-show-status | |
2360 @vindex url-show-status | |
2361 @vindex w3-show-status | |
2362 Whether to show progress messages in the minibuffer. | |
2363 @code{w3-show-status} controls if messages about the parsing are | |
2364 displayed, and @code{url-show-status} controls if a running total of the | |
2365 number of bytes transferred is displayed. These Can cause a large | |
2366 performance hit if using a remote X display over a slow link, or a | |
2367 terminal with a slow modem. | |
2368 @item mm-content-transfer-encodings | |
2369 @vindex mm-content-transfer-encodings | |
2370 An assoc list of @var{Content-Transfer-Encodings} or | |
2371 @var{Content-Encodings} and the appropriate decoding algorithms for each. | |
2372 If the @code{cdr} of a node is a list, then this specifies the decoder is | |
2373 an external program, with the program as the first item in the list, and | |
2374 the rest of the list specifying arguments to be passed on the command line. | |
2375 If using an external decoder, it must accept its input from @code{stdin} | |
2376 and send its output to @code{stdout}. | |
2377 | |
2378 If the @code{cdr} of a node is a symbol whose function definition is | |
2379 non-@code{nil}, then that encoding can be handled internally. The function | |
2380 is called with 2 arguments, buffer positions bounding the region to be | |
2381 decoded. The function should completely replace that region with the | |
2382 unencoded information. | |
2383 | |
2384 Currently supported transfer encodings are: base64, x-gzip, 7bit, 8bit, | |
2385 binary, x-compress, x-hqx, and quoted-printable. | |
2386 @item url-uncompressor-alist | |
2387 @vindex url-uncompressor-alist | |
2388 An assoc list of file extensions and the appropriate uncompression | |
2389 programs for each. This is used to build the Accept-encoding header for | |
2390 HTTP/1.0 requests. | |
2391 @item url-waisq-prog | |
2392 @vindex url-waisq-prog | |
2393 Name of the waisq executable on this system. This should be the | |
2394 @file{waisq} program from think.com's wais8-b5.1 distribution. | |
2395 @end table | |
2396 | |
2397 @node More Help, Future Directions, , Top | |
2398 @chapter More Help | |
2399 @cindex Relevant Newsgroups | |
2400 @cindex Newsgroups | |
2401 @cindex Support | |
2402 For more help on Emacs-W3, please send me mail | |
2403 (@i{wmperry@@cs.indiana.edu}). Several discussion lists have also been | |
2404 created for Emacs-W3. To subscribe, send mail to | |
2405 @i{majordomo@@indiana.edu}, with the body of the message 'subscribe | |
2406 @var{listname} @var{<email addres>}'. All other mail should go to | |
2407 @i{<listname>@@indiana.edu}. | |
2408 | |
2409 | |
2410 @itemize @bullet | |
2411 @item | |
2412 w3-announce -- this list is for anyone interested in Emacs-W3, and | |
2413 should in general only be used by me. The gnu.emacs.sources newsgroup | |
2414 and a few other mailing lists are included on this. Please only use | |
2415 this list for major package releases related to Emacs-W3. | |
2416 (@i{www-announce@@w3.org} is included on this list). | |
2417 @item | |
2418 w3-beta -- this list is for beta testers of Emacs-W3. These brave souls test | |
2419 out not-quite stable code. | |
2420 @item | |
2421 w3-dev -- a list consisting of myself and a few other people who are | |
2422 interested in the internals of Emacs-W3, and doing active development work. | |
2423 Pretty dead right now, but I hope it will grow. | |
2424 @end itemize | |
2425 | |
2426 For more help on the World Wide Web in general, please refer to the | |
2427 comp.infosystems.www.* newsgroups. There are also several discussion | |
2428 lists concerning the Web. Send mail to @i{<listname>-request@@w3.org} | |
2429 with a subject line of 'subscribe <listname>'. All mail should go to | |
2430 @i{<listname>@@w3.org}. Administrative mail should go to | |
2431 @i{www-admin@@w3.org}. The lists are: | |
2432 | |
2433 | |
2434 @itemize @bullet | |
2435 @item | |
2436 www-talk -- for general discussion of the World Wide Web, where its | |
2437 going, new features, etc. All the major developers are subscribed to | |
2438 this list. | |
2439 @item | |
2440 www-announce -- for announcements concerning the World Wide Web. Server | |
2441 changes, new servers, new software, etc. | |
2442 @end itemize | |
2443 | |
2444 As a last resort, mail me. I'll try to answer as quickly as I can. | |
2445 | |
2446 @node Future Directions, Programming Interface, More Help, Top | |
2447 @chapter Future Directions | |
2448 Changes are constantly being made to the Emacs browser (hopefully all | |
2449 for the better). This is a list of the things that are being worked on | |
2450 right now. | |
2451 | |
2452 :: WORK :: Revamp the todo list | |
2453 @node Programming Interface, Generalized ZONES, Future Directions, Top | |
2454 @comment node-name, next, previous, up | |
2455 @chapter Internals of Emacs-W3 | |
2456 @cindex Internals of Emacs-W3 | |
2457 @cindex Using Emacs-W3 from other programs | |
2458 This chapter attempts to explain some of the internal workings of | |
2459 Emacs-W3 and various data structures that are used. It also details | |
2460 some functions that are useful for using some of the Emacs-W3 | |
2461 functionality from within other programs, or extending the current | |
2462 capabilities of Emacs-W3. | |
2463 | |
2464 @ifinfo | |
2465 @menu | |
2466 * Generalized ZONES:: A generic interface to 'zones' of text | |
2467 that can contain information. | |
2468 * Global Variables:: Global variables used throughout Emacs-W3 | |
2469 * Data Structures:: The various data structures used in Emacs-W3 | |
2470 * Miscellaneous Functions:: Miscellaneous functions to interface | |
2471 with w3 and access its data structures | |
2472 * MIME functions:: MIME functions---parsing messages, | |
2473 mailcap files, and more. | |
2474 @end menu | |
2475 @end ifinfo | |
2476 @node Generalized ZONES, Global Variables,Programming Interface, Programming Interface, Programming Interface | |
2477 @comment node-name, next, previous, up | |
2478 @section Generalized ZONES | |
2479 Due to the many different @i{flavors} of Emacs in existence, the | |
2480 addition of data and font information to arbitrary regions of text has | |
2481 been generalized. The following functions are defined for | |
2482 using/manipulating these @dfn{zones} of data. | |
2483 | |
2484 @table @code | |
2485 @findex w3-add-zone | |
2486 @item w3-add-zone (start end style data &optional highlight) | |
2487 Creates a zone between buffer positions start and end, with font | |
2488 information specified by style, and a data segment of data. If the | |
2489 optional argument highlight is non-@code{nil}, then the region | |
2490 highlights when the mouse moves over it. | |
2491 | |
2492 | |
2493 @findex w3-zone-at | |
2494 @item w3-zone-at (point) | |
2495 Returns the zone at @var{point}. Preference is given to hypertext | |
2496 links, then to form entry areas, then to inlined images. So if an | |
2497 inlined image was part of a hypertext link, this would always return the | |
2498 hypertext link. | |
2499 | |
2500 @findex w3-zone-data | |
2501 @item w3-zone-data (zone) | |
2502 Returns the zone's data segment. The data structures used in Emacs-W3 are | |
2503 relatively simple. They are just list structures that follow a certain | |
2504 format. The two main data types are @dfn{form objects}, @dfn{link | |
2505 objects},and @dfn{inlined images}. All the information for these types | |
2506 of links are stored as lists. | |
2507 | |
2508 @findex w3-zone-hidden-p | |
2509 @item w3-zone-hidden-p (zone) | |
2510 Returns @code{t} if and only if a zone is currently invisible. | |
2511 @findex w3-hide-zone | |
2512 @item w3-hide-zone (start end) | |
2513 Makes a region of text from @code{start} to @code{end} invisible. | |
2514 @findex w3-unhide-zone | |
2515 @item w3-unhide-zone (start end) | |
2516 Makes a region of text from @code{start} to @code{end} visible | |
2517 again. | |
2518 @findex w3-zone-start | |
2519 @item w3-zone-start (zone) | |
2520 Returns an integer that is the start of zone, as a buffer position. In | |
2521 Emacs 18.xx, this returns a marker instead of an integer, but it can be | |
2522 used just like an integer. | |
2523 @findex w3-zone-end | |
2524 @item w3-zone-end (zone) | |
2525 Returns an integer that is the end of zone, as a buffer position. In | |
2526 Emacs 18.xx, this returns a marker instead of an integer, but it can be | |
2527 used just like an integer. | |
2528 @findex w3-zone-eq | |
2529 @item w3-zone-eq (zone1 zone2) | |
2530 Returns @code{t} if and only if zone1 and zone2 represent the same | |
2531 region of text in the same buffer, with the same properties and | |
2532 data. | |
2533 @findex w3-delete-zone | |
2534 @item w3-delete-zone (zone) | |
2535 Removes zone from its buffer (or current buffer). The return value is | |
2536 irrelevant, and varies for each version of Emacs. | |
2537 @findex w3-all-zones | |
2538 @item w3-all-zones () | |
2539 Returns a list of all the zones contained in the current buffer. Useful | |
2540 for extracting information about hypertext links or form entry | |
2541 areas. Programs should not rely on this list being sorted, as the order | |
2542 varies with each version of Emacs. | |
2543 @item w3-zone-at (pt) | |
2544 Returns the zone at character position PT in the current buffer that is | |
2545 either a link or a forms entry area. Returns @code{nil} if no link at | |
2546 point. | |
2547 | |
2548 @end table | |
2549 @findex w3-zone-data | |
2550 These data structures are what is generally returned by | |
2551 @code{w3-zone-data}. | |
2552 | |
2553 @node Global Variables, Data Structures , Generalized ZONES, Programming Interface | |
2554 @comment node-name, next, previous, up | |
2555 @section Global variables | |
2556 There are also some variables that may be useful when writing a program | |
2557 or function that interacts with Emacs-W3. All of the | |
2558 @code{w3-current-*} variables are local to each buffer. | |
2559 | |
2560 | |
2561 @table @code | |
2562 @vindex url-current-mime-headers | |
2563 @item url-current-mime-headers | |
2564 An assoc list of all the MIME headers for the current document. Keyed | |
2565 on the lowercase MIME header (e.g., @samp{content-type} or | |
2566 @samp{content-encoding}. | |
2567 @vindex url-current-server | |
2568 @item url-current-server | |
2569 Server that the current document was retrieved from. | |
2570 @vindex url-current-file | |
2571 @item url-current-file | |
2572 Filename of the current document | |
2573 @vindex url-current-type | |
2574 @item url-current-type | |
2575 A string representing what network protocol was used to retrieve the | |
2576 current buffer's document. Can be one of http, gopher, file, ftp, news, | |
2577 or mailto. | |
2578 @vindex url-current-port | |
2579 @item url-current-port | |
2580 Port # of the current document. | |
2581 @vindex w3-current-last-buffer | |
2582 @item w3-current-last-buffer | |
2583 The last buffer seen before this one. | |
2584 @vindex w3-running-FSF19 | |
2585 @item w3-running-FSF19 | |
2586 This is @code{t} if and only if we are running in FSF Emacs 19. | |
2587 @vindex w3-running-xemacs | |
2588 @item w3-running-xemacs | |
2589 This is @code{t} if and only if we are running in Lucid Emacs, WinEmacs, or | |
2590 XEmacs. | |
2591 @end table | |
2592 | |
2593 @node Data Structures, Miscellaneous Functions, Global Variables, Programming Interface | |
2594 @comment node-name, next, previous, up | |
2595 @section Data Structures | |
2596 Form objects are used to store information about a FORM data entry area. | |
2597 @enumerate | |
2598 @item | |
2599 @code{'w3form} | |
2600 @item | |
2601 A cons pair of (METHOD . URL), where METHOD specifies what method to use | |
2602 to retrieve the form when it is submitted (e.g., @samp{GET}) and URL is a | |
2603 fully specified URL pointing at where to submit the FORM data to. | |
2604 @item | |
2605 The type of input area this is. (e.g., @samp{CHECKBOX} or | |
2606 @samp{RADIO}) | |
2607 @item | |
2608 The name of the input tag. This is used when sending the form to the | |
2609 server, so that the server can tell what data is what. | |
2610 @item | |
2611 The default value of the input area. Gotten from the INPUT tag at | |
2612 creation time. | |
2613 @item | |
2614 The current value of the input area. | |
2615 @item | |
2616 Whether the item is checked or not. Only used for RADIO or CHECKBOX | |
2617 items. | |
2618 @item | |
2619 The size (in characters) of the input area. Not used for CHECKBOX, | |
2620 RADIO, or TEXTAREA input areas. | |
2621 @item | |
2622 The maximum length of the input. Only used for TEXT or PASSWORD input | |
2623 areas. | |
2624 @item | |
2625 The form that this input area belongs to. Each form in the same buffer | |
2626 has a unique identifier assigned when the document is parsed. It is | |
2627 used when the form is submitted to get only the data for the correct | |
2628 form. | |
2629 @item | |
2630 A list of strings that represent the choices for this input area. Only | |
2631 used for SELECT tags. | |
2632 @item | |
2633 A string or @code{nil}, specifying the ID attribute on this input | |
2634 tag. | |
2635 @end enumerate | |
2636 | |
2637 A new development in the World Wide Web is the concept of collapsible | |
2638 areas of text. If a zone controls one of these regions, it is marked | |
2639 with the @b{w3expandlist} property. The format of this structure | |
2640 is: | |
2641 | |
2642 @enumerate | |
2643 @item | |
2644 @code{'w3expandlist} | |
2645 @item | |
2646 A marker representing the start of the hidden text as a buffer position. | |
2647 @item | |
2648 A marker representing the end of the hidden text as a buffer position. | |
2649 @end enumerate | |
2650 | |
2651 A zone with the @b{w3graphic} property is a link to an inlined image's | |
2652 source file. | |
2653 @enumerate | |
2654 @item | |
2655 @code{'w3graphic} | |
2656 @item | |
2657 @findex w3-follow-inlined-image | |
2658 The full URL of the inlined image. This is only ever returned if the | |
2659 inlined image is the only extent under point, or | |
2660 @code{w3-follow-inlined-image} is invoked. | |
2661 @end enumerate | |
2662 | |
2663 A zone with the @b{w3} property is a full-fledged hypertext link to | |
2664 another document. | |
2665 @enumerate | |
2666 @item | |
2667 @code{'w3} | |
2668 @item | |
2669 The ID attribute of this link. Used for resolving references to | |
2670 specific points within a document (e.g., @samp{file.html#sectionA}. | |
2671 @item | |
2672 The HREF attribute of this link. This is a fully specified URL pointing | |
2673 at a network resource. All relative directory references should have | |
2674 been removed before being stored in this structure. | |
2675 @item | |
2676 The text between the <A> and </A> tags. This is used to build menus or | |
2677 to get the text of a link without doing a buffer-substring. | |
2678 @item | |
2679 The URN attribute of this link. Currently not used for anything, | |
2680 waiting for the URN specification to be hammered out. | |
2681 @item | |
2682 The REL attribute of this link. Specifies the links relevance to the | |
2683 current document. | |
2684 @item | |
2685 The REV attribute of this link. Specifies the current documents | |
2686 relevance to the link. | |
2687 @item | |
2688 The METHODS attribute, which tells what methods can be used on this | |
2689 link. (e.g., @samp{GET, HEAD, PUT}. | |
2690 @end enumerate | |
2691 @node Miscellaneous Functions, MIME functions, Data Structures, Programming Interface | |
2692 @comment node-name, next, previous, up | |
2693 @section Miscellaneous Functions | |
2694 I have done quite a bit of work trying to make a clean interface to the | |
2695 internals of Emacs-W3. | |
2696 | |
2697 @table @code | |
2698 @findex url-clear-tmp-buffer | |
2699 @vindex url-working-buffer | |
2700 @item url-clear-tmp-buffer | |
2701 Sets the current buffer to be @code{url-working-buffer}, creating it if | |
2702 necessary, and erase it. This should usually be called before | |
2703 retrieving URLs. | |
2704 | |
2705 @findex w3-convert-html-to-latex | |
2706 @item w3-convert-html-to-latex | |
2707 Takes a buffer of HTML markup (which should be in | |
2708 @code{w3-working-buffer}), and convert it into LaTeX. This is an | |
2709 adaptation of the simple sed scripts from Cern. Does as good a job as | |
2710 the html2latex program, and I usually prefer its formatting over | |
2711 html2latex's. | |
2712 | |
2713 @findex w3-fetch | |
2714 @item w3-fetch | |
2715 Takes a URL as its only argument. It then attempts to retrieve the URL. | |
2716 For example: @samp{(w3-fetch "http://cs.indiana.edu/")} would retrieve | |
2717 the Indiana University CS home page and parse it as HTML. | |
2718 | |
2719 | |
2720 @findex url-generate-new-buffer-name | |
2721 @item url-generate-new-buffer-name | |
2722 Takes a string, and returns the first unique buffer name using that | |
2723 string as a base. For example @samp{(url-generate-new-buffer-name | |
2724 "new-buff")} would return @samp{"new-buff<1>"} if buffer @code{new-buff} | |
2725 already existed. | |
2726 | |
2727 | |
2728 @findex url-generate-unique-filename | |
2729 @item url-generate-unique-filename | |
2730 Returns a string that represents a unique filename in the /tmp | |
2731 directory. For example, @samp{(url-generate-unique-filename)} would | |
2732 return @samp{"/tmp/url-tmp129440"}. The filename is arrived at by using | |
2733 a unique prefix (url-tmp), the uid of the current user (12944 in my | |
2734 case), and a number that is incremented if a file already exists. | |
2735 | |
2736 | |
2737 @findex url-buffer-visiting | |
2738 @item url-buffer-visiting (url) | |
2739 Returns the name of a buffer (if any) that is visiting URL. | |
2740 | |
2741 @findex url-create-mime-request | |
2742 @vindex url-request-extra-headers | |
2743 @vindex url-request-data | |
2744 @vindex url-request-method | |
2745 @vindex url-mime-accept-string | |
2746 @vindex url-current-server | |
2747 @cindex Creating an HTTP request | |
2748 @item url-create-mime-request (fname ref-url) | |
2749 Creates a MIME request for the file fname. The Referer: field of the | |
2750 HTTP/1.0 request is set to the value of ref-url if necessary. Returns a | |
2751 string that can be sent to an HTTP server. The request uses several | |
2752 variables that control how the request looks. | |
2753 | |
2754 | |
2755 If the value of @code{url-request-extra-headers} is non-@code{nil}, then | |
2756 it is used as extra MIME headers when an HTTP/1.0 request is | |
2757 created. | |
2758 | |
2759 @findex url-get-url-at-point | |
2760 @item url-get-url-at-point | |
2761 Returns the url at a point specified by an optional argument. If no | |
2762 argument is given to the function, the current buffer position is used. | |
2763 Tries to find the URL closest to that point, but does not change the | |
2764 users position in the buffer. Has a preference for looking backward | |
2765 when not directly on a URL. | |
2766 | |
2767 | |
2768 @findex url-hexify-string | |
2769 @item url-hexify-string | |
2770 Takes a string and replaces any characters that are not acceptable in a | |
2771 URL with the "escaped" encoding that is standard for URLs (replaces the | |
2772 character with a % followed by the hexadecimal representation of the | |
2773 ASCII value of the character). For example, @samp{(url-hexify-string | |
2774 "this is a test")} would return @samp{"this%20is%20a%20test"}. | |
2775 | |
2776 | |
2777 @findex url-open-stream | |
2778 @item url-open-stream | |
2779 Takes the same parameters as @code{open-network-stream}, and functions | |
2780 similarly. It takes a process name, a buffer name, a host name, and a | |
2781 port number or server name. It attempts to open a network connection to | |
2782 the remote host on the specified port/service name, with output going to | |
2783 the buffer. It returns the process object that is the network | |
2784 connection. | |
2785 | |
2786 | |
2787 @findex url-retrieve | |
2788 @item url-retrieve | |
2789 :: WORK :: Need to describe the url-request-* variables and the no-cache and | |
2790 expected-md5 arguments to url-retrieve :: | |
2791 | |
2792 | |
2793 @findex url-unhex-string | |
2794 @item url-unhex-string | |
2795 This is the opposite of @code{url-hexify-string}. It removes any %XXX | |
2796 encoded characters in a string. For example @samp{(url-unhex-string | |
2797 "this%20is%20a%20test")} would return @samp{"this is a test"}. | |
2798 | |
2799 @findex w3-view-this-url | |
2800 @item w3-view-this-url | |
2801 Returns the URL of the hyperlink under point (if no hyperlink is under | |
2802 point, then it returns @code{nil}). If the optional argument is | |
2803 @code{nil}, then the URL is also displayed in the minibuffer. | |
2804 | |
2805 | |
2806 @findex url-view-url | |
2807 @item url-view-url | |
2808 Returns the URL of current document. If the optional argument is | |
2809 @code{nil}, then the URL is also displayed in the minibuffer. | |
2810 | |
2811 @end table | |
2812 | |
2813 @node MIME functions, Reporting Bugs, Miscellaneous Functions, Programming Interface | |
2814 @section MIME Functions | |
2815 @table @code | |
2816 @item mm-compose-type(TYPE) | |
2817 Composes a body section of MIME-type TYPE. This uses the compose field | |
2818 of a mailcap entry to generate the data, and returns a string that | |
2819 contains the data, with a correct content-type header. | |
2820 | |
2821 @item mm-extension-to-mime(EXTN) | |
2822 Returns the MIME content-type of the file extension EXTN. | |
2823 @item mm-mime-info(ST ND REQUEST) | |
2824 Returns the mime viewer command for a specific MIME type. If ST is a | |
2825 number, then the MIME type is the @code{buffer-substring} between ST and | |
2826 ND, otherwise ST should be a string specifying the MIME type and | |
2827 associated data. Returns @code{nil} if the specified type is not found. | |
2828 | |
2829 | |
2830 Expects a complete content-type header line as its argument. This can | |
2831 be simple like text/html, or complex like text/plain; charset=blah; foo=bar | |
2832 | |
2833 | |
2834 Third argument REQUEST specifies what information to return. If it is | |
2835 @code{nil} or the empty string, the viewer (second field of the mailcap | |
2836 entry) is returned. If it is a string, then the mailcap field | |
2837 corresponding to that string is returned (print, description, whatever). | |
2838 If a number, then all the information for this specific viewer is | |
2839 returned. | |
2840 @item mm-parse-mailcap(FILE) | |
2841 Parses the mailcap file specified by FILE. | |
2842 @item mm-parse-mailcaps(PATH) | |
2843 Parses the default mailcap files. Optional argument PATH specifies a | |
2844 UNIX-style path of where to find the mailcap files. This function must | |
2845 be run before the rest of the mm-* functions. | |
2846 @item mm-parse-mimetype-file(FILE) | |
2847 Parses out a mime-types file specified by FILE. | |
2848 @item mm-parse-mimetypes(PATH) | |
2849 Parses the default mimetypes files. Optional argument PATH specifies a | |
2850 UNIX-style path of where to find the mimetypes files. | |
2851 @end table | |
2852 | |
2853 @node Reporting Bugs, Installing SSL, MIME functions, Top | |
2854 @appendix Reporting Bugs | |
2855 @cindex Reporting Bugs | |
2856 @cindex Bugs | |
2857 @cindex Contacting the author | |
2858 | |
2859 :: WORK :: Reporting bugs needs work. | |
2860 | |
2861 @node Installing SSL, Using PGP/PEM, Reporting Bugs, Top | |
2862 @appendix Installing SSL | |
2863 @cindex HTTP/1.0 Authentication | |
2864 @cindex Secure Sockets Layer | |
2865 @cindex SSL | |
2866 @cindex Gag Puke Retch | |
2867 @cindex Exportability | |
2868 @cindex Export Restrictions | |
2869 In order to use SSL in Emacs-W3, an implementation of SSL is necessary. | |
2870 These are the implementations that I am aware of: | |
2871 | |
2872 @table @code | |
2873 @item SSLRef 2.0 | |
2874 Available from Netscape Communications @footnote{http://www.netscape.com/newsref/std/sslref.html}. This requires the | |
2875 RSARef library, which is not exportable. The RSARef library is | |
2876 available from ftp://ftp.rsa.com/rsaref/ | |
2877 @item SSLeay 0.4 | |
2878 An implementation by Eric Young (eay@@mincom.oz.au) that is free for | |
2879 commerial or noncommercial use, and was developed completely outside the | |
2880 US by a non-US citizen. More information can be found at | |
2881 ftp://ftp.psy.uq.oz.au/pub/Crypto/SSL/ | |
2882 @end table | |
2883 | |
2884 @vindex ssl-program-name | |
2885 Whichever reference implementation is used (I recommend the SSLeay | |
2886 distribution, just to thumb a nose at the NSA :), there is a program | |
2887 that can be run in a subprocess that takes a hostname and port number on | |
2888 the command line, and reads/writes to standard input/output (the | |
2889 Netscape implementation comes with one of these by default). Set the | |
2890 variable @code{ssl-program-name} to point to this program. | |
2891 | |
2892 | |
2893 This should be all the configuration necessary. In the future, I will | |
2894 be distributing a set of patches to Emacs 19.xx and XEmacs 19.xx to | |
2895 SSL-enable them, for the sake of speed. | |
2896 | |
2897 @node Using PGP/PEM, Mailcap Files, Installing SSL, Top | |
2898 @appendix Using PGP/PEM | |
2899 @cindex HTTP/1.0 Authentication | |
2900 @cindex Public Key Cryptography | |
2901 @cindex Authentication, PGP | |
2902 @cindex Authentication, PEM | |
2903 @cindex RIPEM | |
2904 @cindex Public Key Cryptography | |
2905 @cindex PGP | |
2906 @cindex Pretty Good Privacy | |
2907 @cindex Encryption | |
2908 @cindex Security | |
2909 @cindex ITAR must die | |
2910 @cindex Stupid export restrictions | |
2911 @cindex Support your local crypto-anarchist | |
2912 @cindex NSA freaks | |
2913 Most of this chapter has been reproduced from the original documentation | |
2914 written by Rob McCool (@i{robm@@netscape.com})@footnote{See | |
2915 http://hoohoo.ncsa.uiuc.edu/docs/PEMPGP.html for the original}. | |
2916 | |
2917 RIPEM is 'Riordan's Internet Privacy Enhanced Mail', and is currently on | |
2918 version 1.2b3. US citizens can ftp it from | |
2919 ftp://ripem.msu.edu/pub/crypt/ripem. | |
2920 | |
2921 PGP is 'Pretty Good Privacy', and is currently on version 2.6. The | |
2922 legal controversies that plagued earlier versions have been resolved, so | |
2923 this is a competely legal program now. There is also a legal version | |
2924 for european users, called 2.6ui (the Unofficial International | |
2925 version). | |
2926 | |
2927 PGP and PEM are programs that allow two parties to communicate in a way | |
2928 which does not allow third parties to read them, and which certify that | |
2929 the person who sent the message is really who they claim they are. | |
2930 | |
2931 | |
2932 PGP and PEM both use RSA encryption. The U.S. government has strict | |
2933 export controls over foreign use of this technology, so people outside | |
2934 the U.S. may have a difficult time finding programs which perform the | |
2935 encryption. | |
2936 | |
2937 A working copy of either Pretty Good Privacy or RIPEM is required. You | |
2938 should be familiar with the program and have generated a public/private | |
2939 key pair. | |
2940 | |
2941 | |
2942 Currently, the protocol has been implemented with PEM and PGP using | |
2943 local key files on the server side, and on the client side with PEM | |
2944 using finger to retrieve the server's public key. | |
2945 | |
2946 Parties who wish to use Emacs-W3 with PEM or PGP encryption will need to | |
2947 communicate beforehand and find a tamper-proof way to exchange their | |
2948 public keys. | |
2949 | |
2950 Pioneers get shot full of arrows. This work is currently in the | |
2951 experimental stages and thus may have some problems that I have | |
2952 overlooked. The only known problem that I know about is that the | |
2953 messages are currently not timestamped. This means that a malicious | |
2954 user could record the encrypted message with a packet sniffer and repeat | |
2955 it back to the server ad nauseum. Although they would not be able to | |
2956 read the reply, if the request was for something being charged for, this | |
2957 could be very inconvenient. | |
2958 | |
2959 This protocol is almost word-for-word a copy of Tony Sander's RIPEM | |
2960 based scheme, generalized a little. Below, wherever PEM is used, | |
2961 replace it with PGP, and the behaviour should remain the same. | |
2962 | |
2963 @example | |
2964 *Client:* | |
2965 | |
2966 GET /docs/protected.html HTTP/1.0 | |
2967 UserAgent: Emacs-W3/2.1.x | |
2968 | |
2969 *Server:* | |
2970 | |
2971 HTTP/1.0 401 Unauthorized | |
2972 WWW-Authenticate: PEM entity="webmaster@@hoohoo.ncsa.uiuc.edu" | |
2973 Server: NCSA/1.1 | |
2974 | |
2975 *Client:* | |
2976 | |
2977 GET / HTTP/1.0 | |
2978 Authorization: PEM entity="robm@@ncsa.uiuc.edu" | |
2979 Content-type: application/x-www-pem-request | |
2980 | |
2981 --- BEGIN PRIVACY-ENHANCED MESSAGE --- | |
2982 this is the real request, encrypted | |
2983 --- END PRIVACY-ENHANCED MESSAGE --- | |
2984 | |
2985 *Server:* | |
2986 | |
2987 HTTP/1.0 200 OK | |
2988 Content-type: application/x-www-pem-reply | |
2989 | |
2990 --- BEGIN PRIVACY-ENHANCED MESSAGE --- | |
2991 this is the real reply, encrypted | |
2992 --- END PRIVACY-ENHANCED MESSAGE --- | |
2993 That's it. | |
2994 @end example | |
2995 | |
2996 @cindex Mailcrypt | |
2997 Emacs-W3 uses the excellent @i{mailcrypt}@footnote{Available from | |
2998 http://www.cs.indiana.edu/LCD/cover.html?mailcrypt} package written by | |
2999 Jin S Choi (@i{jsc@@mit.edu}). This package takes care of calling ripem | |
3000 and/or pgp with the correct arguments. Please see the documentation at | |
3001 the top of mailcrypt.el for instructions on using mailcrypt. All bug | |
3002 reports about mailcrypt should go to Jin S Choi, but bugs about how I | |
3003 use it in Emacs-W3 should of course be directed to me. | |
3004 | |
3005 @node Mailcap Files, General Index, Using PGP/PEM, Top | |
3006 @appendix Mailcap Files | |
3007 NCSA Mosaic and almost all other WWW browsers rely on a separate file | |
3008 for mapping MIME types to external viewing programs. This takes some of | |
3009 the burden off of browser developers, so each browser does not have to | |
3010 support all image formats, or postscript, etc. Instead of having the | |
3011 users of Emacs-W3 duplicate this in lisp, this file can be parsed using | |
3012 the @code{mm-parse-mailcaps} function. This function is called each | |
3013 time Emacs-W3 is loaded. It tries to locate mimetype files in several | |
3014 places. If the environment variable @code{MAILCAPS} is nonempty, then | |
3015 this is assumed to specify a UNIX-like path of mimetype files (this is a | |
3016 colon separated string of pathnames). If the @code{MAILCAPS} | |
3017 environment variable is empty, then Emacs-W3 looks for these | |
3018 files: | |
3019 | |
3020 @enumerate | |
3021 @item | |
3022 @file{~/.mailcap} | |
3023 @item | |
3024 @file{/etc/mailcap} | |
3025 @item | |
3026 @file{/usr/etc/mailcap} | |
3027 @item | |
3028 @file{/usr/local/etc/mailcap} | |
3029 @end enumerate | |
3030 | |
3031 This format of this file is specified in RFC 1343, but a brief synopsis | |
3032 follows (this is taken verbatim from sections of RFC 1343). | |
3033 | |
3034 Each mailcap file consists of a set of entries that describe the proper | |
3035 handling of one media type at the local site. For example, one line | |
3036 might tell how to display a message in Group III fax format. A mailcap | |
3037 file consists of a sequence of such individual entries, separated by | |
3038 newlines (according to the operating system's newline | |
3039 conventions). Blank lines and lines that start with the "#" character | |
3040 (ASCII 35) are considered comments, and are ignored. Long entries may | |
3041 be continued on multiple lines if each non-terminal line ends with a | |
3042 backslash character ('\', ASCII 92), in which case the multiple lines | |
3043 are to be treated as a single mailcap entry. Note that for such | |
3044 "continued" lines, the backslash must be the last character on the line | |
3045 to be continued. | |
3046 | |
3047 Each mailcap entry consists of a number of fields, separated by | |
3048 semi-colons. The first two fields are required, and must occur in the | |
3049 specified order. The remaining fields are optional, and may appear in | |
3050 any order. | |
3051 | |
3052 The first field is the content-type, which indicates the type of data | |
3053 this mailcap entry describes how to handle. It is to be matched against | |
3054 the type/subtype specification in the "Content-Type" header field of an | |
3055 Internet mail message. If the subtype is specified as "*", it is | |
3056 intended to match all subtypes of the named content-type. | |
3057 | |
3058 The second field, view-command, is a specification of how the message or | |
3059 body part can be viewed at the local site. Although the syntax of this | |
3060 field is fully specified, the semantics of program execution are | |
3061 necessarily somewhat operating system dependent. | |
3062 | |
3063 The optional fields, which may be given in any order, are as follows: | |
3064 @itemize @bullet | |
3065 @item | |
3066 The "compose" field may be used to specify a program that can be used to | |
3067 compose a new body or body part in the given format. Its intended use | |
3068 is to support mail composing agents that support the composition of | |
3069 multiple types of mail using external composing agents. As with the | |
3070 view- command, the semantics of program execution are operating system | |
3071 dependent. The result of the composing program may be data that is not | |
3072 yet suitable for mail transport---that is, a Content-Transfer-Encoding | |
3073 may need to be applied to the data. | |
3074 @item | |
3075 The "composetyped" field is similar to the "compose" field, but is to be | |
3076 used when the composing program needs to specify the Content-type header | |
3077 field to be applied to the composed data. The "compose" field is | |
3078 simpler, and is preferred for use with existing (non-mail-oriented) | |
3079 programs for composing data in a given format. The "composetyped" field | |
3080 is necessary when the Content-type information must include auxilliary | |
3081 parameters, and the composition program must then know enough about mail | |
3082 formats to produce output that includes the mail type | |
3083 information. | |
3084 @item | |
3085 The "edit" field may be used to specify a program that can be used to | |
3086 edit a body or body part in the given format. In many cases, it may be | |
3087 identical in content to the "compose" field, and shares the | |
3088 operating-system dependent semantics for program execution. | |
3089 @item | |
3090 The "print" field may be used to specify a program that can be used to | |
3091 print a message or body part in the given format. As with the | |
3092 view-command, the semantics of program execution are operating system | |
3093 dependent. | |
3094 @item | |
3095 The "test" field may be used to test some external condition (e.g. the | |
3096 machine architecture, or the window system in use) to determine whether | |
3097 or not the mailcap line applies. It specifies a program to be run to | |
3098 test some condition. The semantics of execution and of the value | |
3099 returned by the test program are operating system dependent. If the | |
3100 test fails, a subsequent mailcap entry should be sought. Multiple test | |
3101 fields are not permitted---since a test can call a program, it can | |
3102 already be arbitrarily complex. | |
3103 @item | |
3104 The "needsterminal" field indicates that the view-command must be run on | |
3105 an interactive terminal. This is needed to inform window-oriented user | |
3106 agents that an interactive terminal is needed. (The decision is not | |
3107 left exclusively to the view-command because in some circumstances it | |
3108 may not be possible for such programs to tell whether or not they are on | |
3109 interactive terminals.) The needsterminal command should be assumed to | |
3110 apply to the compose and edit commands, too, if they exist. Note that | |
3111 this is NOT a test---it is a requirement for the environment in which | |
3112 the program will be executed, and should typically cause the creation of | |
3113 a terminal window when not executed on either a real terminal or a | |
3114 terminal window. | |
3115 @item | |
3116 The "copiousoutput" field indicates that the output from the | |
3117 view-command will be an extended stream of output, and is to be | |
3118 interpreted as advice to the UA (User Agent mail- reading program) that | |
3119 the output should be either paged or made scrollable. Note that it is | |
3120 probably a mistake if needsterminal and copiousoutput are both | |
3121 specified. | |
3122 @item | |
3123 The "description" field simply provides a textual description, | |
3124 optionally quoted, that describes the type of data, to be used | |
3125 optionally by mail readers that wish to describe the data before | |
3126 offering to display it. | |
3127 @item | |
3128 The "x11-bitmap" field names a file, in X11 bitmap (xbm) format, which | |
3129 points to an appropriate icon to be used to visually denote the presence | |
3130 of this kind of data. | |
3131 @item | |
3132 Any other fields beginning with "x-" may be included for local or | |
3133 mailer-specific extensions of this format. Implementations should | |
3134 simply ignore all such unrecognized fields to permit such extensions, | |
3135 some of which might be standardized in a future version of this | |
3136 document. | |
3137 @end itemize | |
3138 | |
3139 @node General Index, Key Index, Mailcap Files, Top | |
3140 @appendix General Index | |
3141 @printindex fn | |
3142 @node Key Index, , General Index, Top | |
3143 @appendix Key Index | |
3144 @printindex ky | |
3145 @contents | |
3146 @bye |