0
|
1 This is the READ ME file for psgml.el version 1a9. -*- text -*-
|
|
2
|
|
3 PSGML is a major mode for editing SGML documents. It works with
|
|
4 GNU Emacs 19.19 and later or with Lucid Emacs 19.9.
|
|
5
|
|
6 This distribution should contain the following source files:
|
|
7 psgml.el
|
|
8 psgml.texi
|
|
9 psgml-other.el
|
|
10 psgml-lucid.el
|
|
11 psgml-edit.el
|
|
12 psgml-parse.el
|
|
13 psgml-dtd.el
|
|
14 psgml-info.el
|
|
15 psgml-charent.el
|
|
16 psgml-debug.el -- some functions used in development
|
|
17 psgml-api.texi -- internals documentation
|
|
18 psgml-api.el -- Extra functions for the API
|
|
19 fs.el -- Example use of psgml to format a SGML file
|
|
20 style.el -- example style file for fs.el
|
|
21 catalog.sgml -- example SGML-file for fs.el and style.el
|
|
22 iso88591.map
|
|
23
|
|
24 In addition the distribution contains the formatted versions of the
|
|
25 documentation files (psgml.info, ...). But the compiled elisp code is
|
|
26 no longer supplied. You will have to byte compile the files before
|
|
27 PSGML will achive usable speed.
|
|
28
|
|
29 If you are not using Lucid Emacs or XEmacs you should compile:
|
|
30 psgml.el
|
|
31 psgml-other.el
|
|
32 psgml-edit.el
|
|
33 psgml-parse.el
|
|
34 psgml-dtd.el
|
|
35 psgml-info.el
|
|
36 psgml-charent.el
|
|
37
|
|
38 If you on the other hand are using Lucid Emacs or XEmacs you should
|
|
39 compile
|
|
40 psgml.el
|
|
41 psgml-lucid.el
|
|
42 psgml-edit.el
|
|
43 psgml-parse.el
|
|
44 psgml-dtd.el
|
|
45 psgml-info.el
|
|
46 psgml-charent.el
|
|
47
|
|
48 Additionally the following can be compiled, they are not normaly used
|
|
49 by PSGML:
|
|
50 psgml-api.el -- Extra functions for the API
|
|
51 fs.el -- Example use of psgml to format a SGML file
|
|
52 psgml-debug.el -- some functions used in development
|
|
53
|
|
54 Send bug reports, comments and suggestions to lenst@lysator.liu.se.
|
|
55
|
|
56 New in version 1.0a9
|
|
57
|
|
58 * XEmacs may have problem if sgml-set-face is t
|
|
59
|
|
60 I tried with the latest version on a sun4 Solaris 2 machine and PSGML
|
|
61 would always parse to the end of the buffer even if I typed something.
|
|
62 There seem to be a problem with the input-pending-p function. I don't
|
|
63 know if this is specific fo Solaris. Emacs on Solaris has problems
|
|
64 with signal handling.
|
|
65
|
|
66
|
|
67 * New options for insert-element
|
|
68 ** sgml-insert-missing-element-comment
|
|
69 ** sgml-insert-end-tag-on-new-line
|
|
70
|
|
71 * psgml-api:
|
|
72 ** sgml-map-content: new optional argument. If the argument ENTITY-FUN
|
|
73 is specified it should be a function with one argument. The function
|
|
74 will be called for data entity references instead of the entity text
|
|
75 beeing passed to the DATA-FUN. The argument is the entity referenced.
|
|
76 Use `sgml-entity-name', `sgml-entity-type' etc.
|
|
77
|
|
78
|
|
79 Version 1.0a8 has only bugfixes.
|
|
80
|
|
81
|
|
82 New in version 1.0a7
|
|
83
|
|
84 * Better CATALOG parsing
|
|
85
|
|
86 ** Will handle SGMLDECL, etc..
|
|
87
|
|
88 ** New option: sgml-system-identifiers-are-preferred
|
|
89 If nil PSGML will look up external entities by searching the catalogs
|
|
90 in `sgml-local-catalogs' and `sgml-catalog-files' and only if the entity
|
|
91 is not found in will a given system identifer be used. If the variable
|
|
92 is non-nil and a system identifer is given, the system identifier will
|
|
93 be used for the entity. If no system identifier is given the catalogs
|
|
94 will searched.
|
|
95
|
|
96 * File names for external entities (e.g system identifiers) are
|
|
97 relative to the directory containing the file declaring of the entity.
|
|
98
|
|
99 * Changes to how the DTD is found
|
|
100
|
|
101 ** If the variable sgml-doctype is set, it should be the name of a file
|
|
102 containing the DOCTYPE declaration to use.
|
|
103
|
|
104 ** The variable sgml-parent-document is used when the current file
|
|
105 is part of a bigger document, and the variable describes how the
|
|
106 current files content fits into the element hierarchy. The variable
|
|
107 should have the form
|
|
108
|
|
109 (parent-file context-element* top-element (has-seen-element*)?)
|
|
110
|
|
111 *** parent-file (string) is the name of the file contatining the
|
|
112 document entity.
|
|
113
|
|
114 *** context-element (string) is used to set up exceptions and short
|
|
115 reference map. Good candidates for these elements are the elements
|
|
116 open when the entity pointing to the current file is used.
|
|
117
|
|
118 *** top-element (string) is the top level element in the current file.
|
|
119 The file should contain one instance of this element, unless the last
|
|
120 (lisp) element of sgml-parent-document is a list. If it is a list, the
|
|
121 top level of the file should follow the content model of top-element.
|
|
122
|
|
123 *** has-seen-element (string) element satisfied in the content model
|
|
124 of top-element.
|
|
125
|
|
126
|
|
127 * sgml-validate
|
|
128 The variable sgml-validate-command can now be a list of strings. The
|
|
129 strings can contain %-sequences that will be expanded:
|
|
130 %b to buffer file name,
|
|
131 %s to SGML Declaration file, either the value of sgml-declaration
|
|
132 variable or SGML Declaration file for parent document or DOCTYPE file or
|
|
133 SGMLDECL from catalog.
|
|
134 %d value of sgml-doctype.
|
|
135
|
|
136
|
|
137 * Hooks
|
|
138
|
|
139 ** sgml-new-attribute-list-function
|
|
140 This hook is run when a new element is inserted to construct the
|
|
141 attribute specification list. The default function prompts for the
|
|
142 required attributes.
|
|
143
|
|
144
|
|
145 * API
|
|
146
|
|
147 ** New file psgml-api.el
|
|
148
|
|
149 This file contain API-functions that are not used by other parts of
|
|
150 psgml. Use (require 'psgml-api) to use the API functions (psgml-api
|
|
151 includes the rest of the psgml files).
|
|
152
|
|
153 The new functions in psgml-api is two functions to travers the element
|
|
154 structure.
|
|
155
|
|
156 *** (sgml-map-content element element-function data-function pi-function)
|
|
157
|
|
158 Call element-function with every child of element.
|
|
159 Call data-function with all the data in element.
|
|
160 Don't modify the buffer in these functions.
|
|
161
|
|
162 *** (sgml-map-element-modify function element)
|
|
163
|
|
164 Call function on every sub element of element, allows the function to
|
|
165 modify the buffer (e.g. add/modify attributes of the elements).
|
|
166
|
|
167 ** Example of API use: fs.el -- a simple style sheet driven formatter.
|
|
168
|
|
169 Try fs.el with the catalog.sgml file. The style.el is the style sheet
|
|
170 for catalog.sgml. The command to format current buffer is
|
|
171 `M-x style-format'.
|
|
172
|
|
173
|
|
174 New in version 1.0 a6
|
|
175
|
|
176 * Entity manager
|
|
177
|
|
178 ** Use system id as file name, if there is no %S in sgml-public-map.
|
|
179
|
|
180 ** Finds PUBLIC entries before DOCTYPE and ENTITY in catalog files.
|
|
181
|
|
182 * Better error recovery for out of context data and tags
|
|
183
|
|
184 * New command: sgml-general-dtd-info
|
|
185
|
|
186 * Disables auto-fill in the prolog
|
|
187
|
|
188 * Insert element leaves point at the end of the element,
|
|
189 it used to leave point at the beginning of the element.
|
|
190
|
|
191 * sgml-hide-tags/attributes is better at handling minimized tags
|
|
192
|
|
193 * New options
|
|
194 ** sgml-validate-files and slight change of sgml-validate-command.
|
|
195 ** sgml-recompile-out-of-date-cdtd
|
|
196
|
|
197 * Now saving attribute specification list in parse tree
|
|
198 Faster sgml-element-attval, but more memory used.
|
|
199
|
|
200 * Long menus that are split into submenus now show the range of
|
|
201 choices in the different submenus.
|
|
202
|
|
203 The option `sgml-range-indicator-max-length' determines how many
|
|
204 characters from the first and the last choice to show.
|
|
205
|
|
206 * Private abbrev table
|
|
207
|
|
208
|
|
209 New in version 1.0 a5
|
|
210
|
|
211 * New menu structure
|
|
212 Perhaps there is to many top-level menus now. Any suggestions how to
|
|
213 organize the menus?
|
|
214
|
|
215 * Some new functions
|
|
216
|
|
217 ** Information from the DTD (used to be nefarious.el)
|
|
218
|
|
219 *** sgml-describe-element-type
|
|
220
|
|
221 *** sgml-describe-entity
|
|
222
|
|
223 *** sgml-list-elements
|
|
224 Will list all elements and the attributes declared for the element.
|
|
225
|
|
226 *** sgml-list-attributes
|
|
227 Will list all attributes declared and the elements that use them.
|
|
228
|
|
229 *** sgml-list-terminals
|
|
230 Will list all elements that can contain data.
|
|
231
|
|
232 *** sgml-list-occur-in-elements
|
|
233 Will list all element types and where it can occur.
|
|
234
|
|
235 *** sgml-list-content-elements
|
|
236 Will list all element types and the element types that can occur
|
|
237 in its content.
|
|
238
|
|
239
|
|
240 ** Translating between characters and entity references
|
|
241
|
|
242 Set the variable `sgml-display-char-list-filename' to a file file that
|
|
243 contains mappings between all characters present in the presentation
|
|
244 character set, and their "standard replacement text" names, e.g. "å"
|
|
245 -> "[aring ]", e.t.c.
|
|
246
|
|
247 The default value for this variable is `iso88591.map'.
|
|
248
|
|
249 The use the functions (also in the Modify menu)
|
|
250
|
|
251 sgml-charent-to-display-char
|
|
252 sgml-display-char-to-charent
|
|
253
|
|
254 to translate between entities and characters.
|
|
255
|
|
256
|
|
257
|
|
258 * Two major bugs fixed
|
|
259 ** DTD using undeclared elements was improperly saved
|
|
260 ** Bug in using a precompiled DTD and local element, attlist or usemap
|
|
261 declaration.
|
|
262
|
|
263
|
|
264
|
|
265 New in version 1.0 a4
|
|
266
|
|
267 * If the document prolog does not contain a document type declaration,
|
|
268 PSGML will try to supply one on the form `<!DOCTYPE DocTypeName
|
|
269 SYSTEM>' If the variable `sgml-default-doctype-name' is defined this
|
|
270 will be used for the document type name, otherwise the GI of the first
|
|
271 start tag will be used. I.e., if the document starts with `<book>', a
|
|
272 document type declaration `<!DOCTYPE book SYSTEM>' will be assumed.
|
|
273
|
|
274
|
|
275 * Compiled DTDs are now associated with external `Document Type
|
|
276 Declaration Subset' entitys. You will have to create a catalog with
|
|
277 entries for all the DTDs that should be compiled. This should make
|
|
278 it, in most cases, unnecessary to make saved dtds or to set the
|
|
279 `sgml-default-dtd-file', at the expense of having to maintain the
|
|
280 catalog file.
|
|
281
|
|
282 ** Options
|
|
283
|
|
284 `sgml-ecat-files' List of compiled dtd catalog files.
|
|
285 Default: ("ECAT" "~/sgml/ECAT" "/usr/local/lib/sgml/ECAT")
|
|
286
|
|
287 `sgml-local-ecat-files' This can be set as a buffer local variable to
|
|
288 a list of catalogs to be searched before `sgml-ecat-files'.
|
|
289
|
|
290 ** Catalog format
|
|
291
|
|
292 The catalog is similar to the catalog used to resolve public
|
|
293 identifiers. There are two types of entries:
|
|
294
|
|
295 PUBLIC pubid pents? cfile
|
|
296 and
|
|
297 FILE file pents? cfile
|
|
298
|
|
299 where pubid is a public identifier (as a minimum literal), pents is a
|
|
300 optional list of parameter entities and values, file is the file name
|
|
301 of a DTD file and cfile is the name of the complied DTD. The syntax
|
|
302 for pents is
|
|
303
|
|
304 `[' (name literal)* `]'
|
|
305
|
|
306 Example:
|
|
307
|
|
308 PUBLIC "-//lenst//dtd My DTD//en" cdtd/bar
|
|
309 FILE "bar.dtd" cdtd/bar
|
|
310
|
|
311 To better handle DTDs with options, like TEI and HTML 2.0/+ it is
|
|
312 possible to have several entries for the same DTD with different
|
|
313 parameter entity settings. The parameters are listed between `[' and
|
|
314 `]' before the file name of the compiled dtd.
|
|
315
|
|
316 FILE "~/sgml/htmlplus.dtd"
|
|
317 [ HTML.emph "INCLUDE" ] "~/sgml/htmlplus.ced"
|
|
318
|
|
319 PUBLIC "-//Text Encoding Initiative//DTD
|
|
320 P3 3.6.1: Main TEI document type declaration//EN"
|
|
321 [ TEI.prose 'INCLUDE' TEI.analysis 'INCLUDE' ] "tei2an.cdtd"
|
|
322
|
|
323 PUBLIC "-//Text Encoding Initiative//DTD
|
|
324 P3 3.6.1: Main TEI document type declaration//EN"
|
|
325 [ TEI.prose 'INCLUDE' TEI.verse 'INCLUDE' ] "tei2verse.cdtd"
|
|
326
|
|
327 The entries will be searched in order and the first matching will be
|
|
328 used. Put more specific entries before less specific. Matching is
|
|
329 done by matching pubid or file and checking that all the listed
|
|
330 parameters are defined with the listed values.
|
|
331
|
|
332
|
|
333
|
|
334 ** Example: setting up for editing HTML
|
|
335
|
|
336 If you have the files for the html.dtd in ~/sgml.
|
|
337 Put in ~/sgml/CATALOG:
|
|
338 PUBLIC "-//IETF//DTD HTML//EN" html.dtd
|
|
339 PUBLIC "-//IETF//DTD HTML//EN//2.0" html.dtd
|
|
340 PUBLIC "-//IETF//DTD HTML Level 1//EN//2.0" html-1.dtd
|
|
341 PUBLIC "-//IETF//ENTITIES Added Latin 1 for HTML//EN" ISOlat1.sgml
|
|
342 DOCTYPE HTML html.dtd
|
|
343
|
|
344 Put in ~/sgml/ECAT:
|
|
345 FILE html.dtd [ HTML.Recommended "INCLUDE" ] cdtd/html-r
|
|
346 FILE html.dtd cdtd/html
|
|
347
|
|
348 Put ~/sgml/CATALOG in sgml-catalog-files and ~/sgml/ECAT in
|
|
349 sgml-ecat-files.
|
|
350
|
|
351 Now it should be possible to edit html files if you put them in
|
|
352 sgml-mode. The file must either start with a proper DOCTYPE or with a
|
|
353 <html> tag. To be abel to start with empty files and to edit files
|
|
354 not starting with <html> you can create a html-mode that sets the
|
|
355 default document type name:
|
|
356
|
|
357 (defun html-mode ()
|
|
358 (interactive)
|
|
359 (sgml-mode)
|
|
360 (make-local-variable 'sgml-declaration)
|
|
361 (make-local-variable 'sgml-default-doctype-name)
|
|
362 (setq sgml-declaration "~/sgml/html.decl"
|
|
363 sgml-default-doctype-name "html"
|
|
364 sgml-always-quote-attributes t
|
|
365 sgml-indent-step 2
|
|
366 sgml-indent-data t
|
|
367 sgml-minimize-attributes nil
|
|
368 sgml-omittag t
|
|
369 sgml-shortag t ))
|
|
370
|
|
371
|
|
372 * Handling of tags for undefined elements
|
|
373
|
|
374 ** Start-tags for undefined elements will either be ignored, if
|
|
375 `sgml-ignore-undefined-elements' is t, or assumed to be acceptabled in
|
|
376 the current element and defined with `O O ANY'.
|
|
377
|
|
378 ** An end-tag for an element that is not currently open will be ignored.
|
|
379
|
|
380
|
|
381 * I have (as an experiment) turned off all warnings. Warnings are only
|
|
382 given if the sgml-next-trouble-spot is used or while parsing the DTD.
|
|
383
|
|
384
|
|
385 * Entity manager
|
|
386
|
|
387 ** sgml-system-path is no longer used for entity lookup
|
|
388
|
|
389 ** PSGML will recognize that a catalog file has been changed
|
|
390
|
|
391
|
|
392 News in version 1.0 a3
|
|
393
|
|
394 * Change in user options
|
|
395
|
|
396 ** sgml-live-element-indicator no longer buffer local
|
|
397
|
|
398 ** sgml-save-options only saves:
|
|
399 (sgml-parent-document sgml-omittag sgml-shorttag
|
|
400 sgml-minimize-attributes sgml-always-quote-attributes sgml-indent-step
|
|
401 sgml-indent-data sgml-default-dtd-file sgml-exposed-tags)
|
|
402 and saves all of them, even if they have no buffer local value
|
|
403
|
|
404 ** Options menu split in to two menus
|
|
405
|
|
406 * Cleaned up Markup menu
|
|
407 The removed entries can be added with sgml-custom-markup:
|
|
408
|
|
409 (setq sgml-custom-markup
|
|
410 '(
|
|
411 ("<!entity ... >" "<!entity \r>\n")
|
|
412 ("<!attlist ... >" "<!attlist \r>\n")
|
|
413 ("<!element ... >" "<!element \r>\n")
|
|
414 ("<!doctype ...>" "<!doctype \r -- public or system --\n[\n]>\n")
|
|
415 ("Local variables comment" "<!--\nLocal variables:\n\rEnd:\n-->\n")
|
|
416 ("Comment" "<!-- \r -->\n")
|
|
417 ))
|
|
418
|
|
419
|
|
420 * Some bug fixes
|
|
421 Including new default for sgml-catalog-files is
|
|
422 "CATALOG" and "/usr/local/lib/sgml/CATALOG".
|
|
423
|
|
424 * Some tuning
|
|
425
|
|
426
|
|
427 News in version 1.0 a2
|
|
428
|
|
429 * Support for short references
|
|
430
|
|
431 ** Command: sgml-expand-all-shortrefs
|
|
432 Expand all short references in the buffer. Short references to text
|
|
433 entities are expanded to the replacement text of the entity, other
|
|
434 short references are expanded into general entity references. If
|
|
435 argument, TO-ENTITY, is non-nil, or if called interactive with numeric
|
|
436 prefix argument, all short references are replaced by generaly entity
|
|
437 references.
|
|
438
|
|
439 ** sgml-normalize: expand short references also
|
|
440 Normalize buffer by filling in omitted tags and expanding empty tags.
|
|
441 Argument TO-ENTITY controls how short references are expanded as with
|
|
442 `sgml-expand-all-shortrefs'.
|
|
443
|
|
444
|
|
445 * Variable: sgml-auto-activate-dtd
|
|
446
|
|
447 PSGML was behaving inconsistent when a new file was loaded. If the
|
|
448 variable `sgml-set-face' was true the DTD would automatically be
|
|
449 activated (loaded or parsed), but only if psgml-parse already loaded.
|
|
450
|
|
451 Rather than let `sgml-set-face' decide if the DTD is activated, there
|
|
452 is now a distinct option for this. This option works even the first
|
|
453 time.
|
|
454
|
|
455 If non-nil, loading a sgml-file will automatically try to activate its DTD.
|
|
456 Activation means either to parse the document type declaration or to
|
|
457 load a previously saved parsed DTD. The name of the activated DTD
|
|
458 will be shown in the mode line.
|
|
459
|
|
460
|
|
461 * face setting
|
|
462 If `sgml-set-face' is true and the DTD has been activated, PSGML will
|
|
463 automatically set the face of markup in the buffer. This is done by
|
|
464 parsing, with error messages turned off, as much as possible after
|
|
465 every command. The parsing is interrupted by input and is almost
|
|
466 transparent.
|
|
467
|
|
468 * Local catalog files
|
|
469 Variabel `sgml-local-catalogs'
|
|
470 A list of SGML entity catalogs to be searched first when parsing the buffer.
|
|
471 This is used in addtion to `sgml-catalog-files', and `sgml-public-map'.
|
|
472 This variable is automatically local to the buffer.
|
|
473
|
|
474 * New commands
|
|
475 Thanks to David Megginson the custom menus are now reacable from the
|
|
476 keyboard:
|
|
477 ** C-c C-u C-d (sgml-custom-dtd)
|
|
478 ** C-c C-u C-m (sgml-custom-markup)
|
|
479
|
|
480 * New command: sgml-expand-entity-reference
|
|
481 Insert the text of the entity referenced at point.
|
|
482
|
|
483 * sgml-validate-command is now a format string
|
|
484
|
|
485
|
|
486 News in version 1.0 a1
|
|
487
|
|
488 * A lot of internal changes
|
|
489
|
|
490 * Support for general entities
|
|
491
|
|
492 * New entity manager
|
|
493
|
|
494 The new entity manager will handle an entity thus:
|
|
495
|
|
496 1. If the entity has a system identifier, the entity manager will
|
|
497 first try and call the functions on sgml-sysid-resolve-functions
|
|
498 with the system identifier as argument, and if any function returns
|
|
499 non-nil assume that the function has handled the entity.
|
|
500 2. Next the entity manager will try the catalogue, and
|
|
501 3. if not found there use the sgml-public-map.
|
|
502
|
|
503 The catalogue files searched is given by the variable
|
|
504 sgml-catalog-files (I suppose it would be confusing to call it
|
|
505 sgml-catalogue-files.) This variable is initialised from the
|
|
506 environment variable SGML_CATALOG_FILES (should be a colon separated
|
|
507 list of files).
|
|
508
|
|
509 The sgml-public-map is initialised from the environment variable
|
|
510 SGML_PATH.
|
|
511
|
|
512 sgml-system-path defaults to nil.
|
|
513
|
|
514 Supports most of sgmls substitutions for sgml-public-map.
|
|
515 Supported: %%, %N, %P, %S, %Y, %C, %L, %O, %T, %V
|
|
516 Unsupported: %D, %X, %A, %E, %I, %R, %U
|
|
517 Note: that %D is and alias for %C in PSGML (historical accident).
|
|
518
|
|
519
|
|
520 * Hooks
|
|
521
|
|
522 ** sgml-close-element-hook
|
|
523 The hook run by `sgml-close-element'.
|
|
524 These functions are invoked with `sgml-current-tree' bound to the
|
|
525 element just parsed.
|
|
526
|
|
527 ** sgml-doctype-parsed-hook
|
|
528 This hook is called after the doctype has been parsed.
|
|
529 It can be used to load any additional information into the DTD structure.
|
|
530
|
|
531 Example: add description to element types
|
|
532 (defun set-help-info ()
|
|
533 (let ((help '(("para" "A Paragraph")
|
|
534 ("q" "A Quotation")
|
|
535 ("date" "A Date")))
|
|
536 (dtd (sgml-pstate-dtd sgml-buffer-parse-state)))
|
|
537 (loop for h in help do
|
|
538 (setf (sgml-eltype-appdata (sgml-lookup-eltype (first h) dtd)
|
|
539 'help-string)
|
|
540 (second h)))))
|
|
541 (add-hook 'sgml-doctype-parsed-hook 'set-help-info)
|
|
542
|
|
543 (defun sgml-help-for-element ()
|
|
544 (interactive)
|
|
545 (let* ((el (sgml-find-element-of (point)))
|
|
546 (help (sgml-element-appdata el 'help-string)))
|
|
547 (and help
|
|
548 (message "%s" help))))
|
|
549
|
|
550
|
|
551 ** sgml-sysid-resolve-functions
|
|
552 This variable should contain a list of functions.
|
|
553 Each function should take one argument, the system identifier of an entity.
|
|
554 If the function can handle that identifier, it should insert the text
|
|
555 of the entity into the current buffer at point and return t. If the
|
|
556 system identifier is not handled the function should return nil.
|
|
557
|
|
558 Example use: Support URLs as system identifiers
|
|
559 (defun sgml-url-sysid (sysid)
|
|
560 (cond ((string-match "^\\([a-z]+\\):" sysid) ; looks like url
|
|
561 (require 'url)
|
|
562 (set-buffer (prog1 (current-buffer)
|
|
563 (url-retrieve sysid)))
|
|
564 (insert-buffer url-working-buffer)
|
|
565 t)))
|
|
566 (add-hook 'sgml-sysid-resolve-functions 'sgml-url-sysid)
|
|
567
|
|
568
|
|
569 * sgml-set-face Now automatically sets faces for all visible text,
|
|
570 with a delay of 1s.
|
|
571
|
|
572 * sgml-exposed-tags
|
|
573 The list of tag names that remain visible, despite M-x sgml-hide-tags.
|
|
574 Each name is a lowercase string, and start-tags and end-tags must be
|
|
575 listed individually.
|
|
576
|
|
577 `sgml-exposed-tags' is local to each buffer in which it has been set;
|
|
578 use `setq-default' to set it to a value that is shared among buffers.
|