comparison man/hm--html-mode.texi @ 116:9f59509498e1 r20-1b10

Import from CVS: tag r20-1b10
author cvs
date Mon, 13 Aug 2007 09:23:06 +0200
parents
children 25f70ba0133c
comparison
equal deleted inserted replaced
115:f109f7dabbe2 116:9f59509498e1
1 \input texinfo @c -*-texinfo-*-
2 @comment %**start of header (This is for running Texinfo on a region.)
3 @setfilename hm--html-mode.info
4 @settitle HM HTML Mode
5 @setchapternewpage odd
6 @comment %**end of header (This is for running Texinfo on a region.)
7 @comment $Id: hm--html-mode.texi,v 1.2 1997/03/28 02:29:28 steve Exp $
8 @ifinfo
9 This file documents the Elisp package @code{hm--html-menus}.
10
11 Copyright @copyright{} 1997 Heiko Münkel
12
13 Permission is granted to make and distribute verbatim copies of
14 this manual provided the copyright notice and this permission notice
15 are preserved on all copies.
16
17 @ignore
18 Permission is granted to process this file through TeX and print the
19 results, provided the printed document carries a copying permission
20 notice identical to this one except for the removal of this paragraph
21 (this paragraph not being relevant to the printed manual).
22
23 @end ignore
24 Permission is granted to copy and distribute modified versions of this
25 manual under the conditions for verbatim copying, provided also that the
26 sections entitled ``Distribution'' and ``General Public License'' are
27 included exactly as in the original, and provided that the entire
28 resulting derived work is distributed under the terms of a permission
29 notice identical to this one.
30
31 Permission is granted to copy and distribute translations of this manual
32 into another language, under the above conditions for modified versions,
33 except that the sections entitled ``Distribution'' and ``General Public
34 License'' may be included in a translation approved by the author instead
35 of in the original English.
36
37 @end ifinfo
38 @iftex
39 @input umlaute.texinfo
40 @end iftex
41 @titlepage
42 @sp 10
43 @center @titlefont{The Elisp Package hm---html-menus}
44
45 @sp 4
46 @center by Heiko Münkel
47 @sp 4
48 @center Version 5.6, March 1997
49 @page
50 @vskip 0pt plus 1filll
51 Copyright @copyright{} 1997 Heiko Münkel
52 @sp 4
53 Permission is granted to make and distribute verbatim copies of
54 this manual provided the copyright notice and this permission notice
55 are preserved on all copies.
56
57 @ignore
58 Permission is granted to process this file through TeX and print the
59 results, provided the printed document carries a copying permission
60 notice identical to this one except for the removal of this paragraph
61 (this paragraph not being relevant to the printed manual).
62
63 @end ignore
64 Permission is granted to copy and distribute modified versions of this
65 manual under the conditions for verbatim copying, provided also that the
66 sections entitled ``Distribution'' and ``General Public License'' are
67 included exactly as in the original, and provided that the entire
68 resulting derived work is distributed under the terms of a permission
69 notice identical to this one.
70
71 Permission is granted to copy and distribute translations of this manual
72 into another language, under the above conditions for modified versions,
73 except that the sections entitled ``Distribution'' and ``General Public
74 License'' may be included in a translation approved by the author instead
75 of in the original English.
76
77 @end titlepage
78
79 @comment The Top node contains the master menu for the Info file.
80 @comment This appears only in the Info file, not in the printed manual.
81
82 @node Top, License, (dir), (dir)
83 @comment node-name, next, previous, up
84
85
86
87 @menu
88 * License:: Your rights
89 * Overview:: Overview
90 * Distribution:: How to get the latest version
91 * Installation:: How to install the package
92 * Customization:: How to customize the package
93 * Add New Elements:: How to add new HTML elements
94 * Use With psgml-html:: Use this package as an add-on minor mode
95 * Internal Drag And Drop:: The HTML independent drag and drop package
96 * Template Minor Mode:: The HTML independent template package
97 * Bug Reports:: How and to whom you should send bug reports
98 * Concept Index:: Concept Index
99 * Function Index:: Function Index
100 * Variable Index:: Variable Index
101 @end menu
102
103
104 @node License, Overview, Top, Top
105 @comment node-name, next, previous, up
106 @chapter License
107 @cindex license to copy hm---html-menus
108 @cindex General Public License
109 Copyright (C) 1993 - 1997 Heiko Münkel, muenkel@@tnt.uni-hannover.de
110 @sp 2
111 This program is free software; you can redistribute it and/or modify
112 it under the terms of the GNU General Public License as published by
113 the Free Software Foundation; either version 2, or (at your option)
114 any later version.
115
116 This program is distributed in the hope that it will be useful,
117 but WITHOUT ANY WARRANTY; without even the implied warranty of
118 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
119 GNU General Public License for more details.
120
121 You should have received a copy of the GNU General Public License
122 along with this program; if not, write to the Free Software
123 Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
124
125
126 @node Overview, Distribution, License, Top
127 @comment node-name, next, previous, up
128 @chapter Overview
129 @cindex overview
130 @cindex version
131 @findex hm--html-mode
132 @findex hm--html-minor-mode
133
134 This document describes the Elisp package @emph{hm---html-menus 5.6}.
135
136 The version of the document is:@*
137 $Id: hm--html-mode.texi,v 1.2 1997/03/28 02:29:28 steve Exp $
138
139 The package provides commands and various popup and pulldown menus for
140 an HTML mode called @dfn{hm---html-mode}, a mode for writing HTML pages
141 for the World Wide Web (WWW). It also provides a minor mode
142 (@dfn{hm---html-minor-mode}), which can be used together with another
143 HTML major mode, like the psgml-html modes in XEmacs 19.14.
144
145 You can easily view the HTML documents by calling the browsers w3 (a
146 nice elisp package from William M. Perry), Netscape, or Mosaic directly
147 from the pulldown menu of the mode.
148
149 An integrated (emacs internal) drag and drop interface makes it
150 very easy to insert links or images, by just clicking on them.
151
152 When appropriate, identical commands work on selected
153 regions. You'll see the same menu items and can use the same
154 keystrokes, whether a region is active or not, but if it's
155 active, then the commands are operating on the region. Therefore, you
156 don't need to learn different menus or keys for similar functions!
157
158 One major design goal of the package was to make it easier to write a
159 HTML page, even if you don't know much about HTML. For that I've tried
160 to put more knowledge about HTML, URL's and so on in it than an SGML based
161 mode could find out from a DTD file. In most cases the user gets help to
162 construct a specific link by examples, or by a completion list with
163 possible input strings. And you can choose between an expert popup menu
164 and an novice popup menu interactively. The novice menu contains only
165 the basic HTML elements, so that you're not bothered by the quantity of
166 different HTML elements. And if you want to use more HTML elements, then
167 you can easily switch to the expert menus.
168
169 You can configure the html mode with a special configuration file for
170 your site and with another file specific to a user. Look at the
171 customization chapter for this, @xref{Customization, Customization}.
172
173
174 @node Distribution, Installation, Overview, Top
175 @comment node-name, next, previous, up
176 @chapter Distribution
177 The name of the distribution file is
178 @file{hm--html-menus-<version>.tar.gz}, where @var{<version>} is the
179 version number. The package is part of the XEmacs. You should always
180 find the latest version of the package on the following ftp server:
181 @display
182 @emph{ftp.tnt.uni-hannover.de} in @file{/pub/editors/xemacs/contrib}
183 @end display
184 You should also find the package in the USA on the ftp server
185 (which is mirrored on many other servers in the world):
186 @display
187 @emph{sunsite.unc.edu} in @file{/pub/Linux/apps/editors/emacs}
188 @end display
189 @menu
190 * Contents:: Contents of the distribution
191 @end menu
192
193 @node Contents, , Distribution, Distribution
194 @comment node-name, next, previous, up
195 @section Contents
196 @cindex contents
197 The package consists of the following files:
198
199 @table @file
200 @item README
201 Please, read this first.
202 @itemx README-EMACS-19
203 Some special hints only for GNU Emacs 19 users.
204 @itemx ANNOUNCEMENT
205 Text of the announcement of this package.
206 @itemx LSM
207 Entry for the Linux Software Map.
208 @itemx NEWS
209 The NEWS and Change log file.
210 @itemx adapt.el
211 Provides (emulates XEmacs) functions for the use of this package with
212 GNU Emacs 19.
213 @itemx hm--html.el
214 Provides functions to write html pages. It defines all commands which
215 insert html elements and entities.
216 @itemx hm--html-indentation.el
217 Provides the lisp code for the indentation.
218 @itemx hm--html-keys.el
219 Defines the key bindings.
220 @itemx hm--html-menu.el
221 Provides the menus.
222 @itemx hm--html-mode.el
223 Provides the functions for the definition of the hm--html-mode and the
224 hm--html-minor-mode. This is the main file of the package.
225 @itemx hm--html-not-standard.el
226 Provides functions to insert some non standard html elements. This file
227 is not evaluated by default and it may be a bad idea to use it.
228 @itemx hm--html-configuration.el
229 Configuration file for the html mode. All the user variables are defined
230 in this file.
231 @itemx hm--html-drag-and-drop.el
232 Defines the HTML-specific functions for the drag and drop interface.
233 @itemx hm--date.el
234 Defines the function hm--date, which returns the date in the format
235 "day-month-year" like "30-Jun-1993".
236 @itemx html-view.el
237 Ron Tapia's html-view.el to view html pages in Mosaic. It is
238 patched for use with XEmacs.
239 @itemx internal-drag-and-drop.el
240 Provides the general (html-mode independent) functions of the drag and
241 drop interface.
242 @itemx templates.doc
243 Describes the syntax of the templates provided in the file
244 @file{tmpl-minor-mode.el}
245 @itemx tmpl-minor-mode.el
246 Provides functions for the tmpl-minor-mode. With this mode you can
247 expand templates, which are described in the file
248 @file{templates-syntax.doc} (look at the files
249 @file{command-description.html.tmpl} and @file{frame.html.tmpl} for
250 examples). Templates can be expanded automatically, if you include a
251 file with templates via the html pulldown menu item "Templates ..." or
252 with the item "Templates (fixed dirs)...".
253 @itemx command-description.html.tmpl
254 Template file for the use with the tmpl-minor-mode.
255 @itemx frame.html.tmpl
256 Template file, provides a simple frame.
257 @itemx doc/hm--html-mode.texinfo
258 Package documentation in the Texinfo format.
259 @itemx doc/umlaute.texinfo
260 Texinfo include file for German vowel mutation (deutsche Umlaute).
261 @end table
262
263 @node Installation, Customization, Distribution, Top
264 @comment node-name, next, previous, up
265 @chapter Installation
266 @cindex installation
267
268
269 @enumerate
270 @item Put all the *.el files in one of your XEmacs (or emacs) lisp load
271 directories (e.g. site-lisp/hm--html-menus).
272
273 @item Put the following in your .emacs (or default.el or site-init.el):
274 @lisp
275 (autoload 'hm--html-mode "hm--html-mode" "HTML major mode." t)
276 (autoload 'hm--html-minor-mode "hm--html-mode" "HTML minor mode." t)
277 (or (assoc "\\.html$" auto-mode-alist)
278 (setq auto-mode-alist (cons '("\\.html$" . hm--html-mode)
279 auto-mode-alist)))
280
281 (autoload 'tmpl-expand-templates-in-buffer "tmpl-minor-mode"
282 "Expand all templates in the current buffer." t)
283
284 (autoload 'html-view-start-mosaic "html-view" "Start Xmosaic." t)
285 (autoload 'html-view-view-buffer
286 "html-view"
287 "View the current buffer in Xmosaic."
288 t)
289 (autoload 'html-view-view-file
290 "html-view"
291 "View a file in Xmosaic."
292 t)
293 (autoload 'html-view-goto-url
294 "html-view"
295 "Goto url in Xmosaic."
296 t)
297 (autoload 'html-view-get-display
298 "html-view"
299 "Get the display for Xmosaic (i.e. hostxy:0.0)."
300 t)
301 @end lisp
302
303 The above lines assume that you have not already installed another
304 html mode. If this isn't true, then you should use the following:
305 @lisp
306 (setq auto-mode-alist (cons '("\\.html$" . hm--html-mode)
307 auto-mode-alist))
308 @end lisp
309
310 instead of:
311 @lisp
312 (or (assoc "\\.html$" auto-mode-alist)
313 (setq auto-mode-alist (cons '("\\.html$" . hm--html-mode)
314 auto-mode-alist)))
315 @end lisp
316 If you want to use the hm--html-minor-mode together
317 with the psgml-html modes, then you should add the following
318 line (works only in XEmacs version >= 19.15 and != 20.0):
319 @lisp
320 (add-hook 'html-mode-hook 'hm--html-minor-mode)
321 @end lisp
322 @end enumerate
323
324 @node Customization, Add New Elements, Installation, Top
325 @comment node-name, next, previous, up
326 @chapter Customization
327 @cindex customization
328 @cindex configuration
329
330 You should be able to use the package after its installation without
331 any further customization. But it contains a lot of user variables to
332 adapt the package better to your special needs. How to do this is
333 described in this chapter.
334
335 @menu
336 * Customization (Configuration) Files::
337 * Customization Variables::
338 @end menu
339
340 @node Customization (Configuration) Files, Customization Variables, Customization, Customization
341 @comment node-name, next, previous, up
342 @section Customization (Configuration) Files
343 @cindex customization files
344 @cindex configuration files
345
346 This package uses 3 different files to customize the mode, but you need
347 not use all of them. Only one of them, the file
348 @file{hm--html-configuration.el} is delivered together with the package.
349 The reason for three different files is to provide the opportunity to
350 have different customization for the package, the site and the
351 user. There's also a pulldown menu item to reload all customization
352 files. The files are described in the following sections.
353
354 @menu
355 * Where Are All The Customization Variables Defined::
356 * Where To Put Site Specific Customization::
357 * Where To Put User Specific Customization::
358 @end menu
359
360 @node Where Are All The Customization Variables Defined, Where To Put Site Specific Customization, Customization (Configuration) Files, Customization (Configuration) Files
361 @comment node-name, next, previous, up
362 @subsection Where Are All The Customization Variables Defined
363 @cindex package specific customization
364 @cindex hm--configuration.el
365 @vindex HTML_CONFIG_FILE
366
367 All variables which can be used to customize the mode are defined in
368 the package configuration file @file{hm--configuration.el}. You should
369 take a look at this file if you don't find how to customize a feature
370 in this documentation (the documentation of a program is never as
371 complete as its program code :-).
372
373 This file is searched in one of your lisp load directories. You can
374 change this by setting the environment variable @code{HTML_CONFIG_FILE}
375 to another file. But I don't recommend this.
376
377 @emph{Note}: This file is loaded before the other customization files,
378 so that its definitions could be overwritten. All variables are set by
379 @code{defvar}, so that its values could also be overwritten with
380 @code{setq} in any standard emacs customization files (e.g. in
381 @file{.emacs}).
382
383
384 @node Where To Put Site Specific Customization, Where To Put User Specific Customization, Where Are All The Customization Variables Defined, Customization (Configuration) Files
385 @comment node-name, next, previous, up
386 @subsection Where To Put Site Specific Customization
387 @cindex site specific customization
388 @cindex hm--site-configuration-file.el
389 @vindex HTML_SITE_CONFIG_FILE
390 @vindex hm--html-site-config-file
391
392 In general all users at a site are writing their html pages for the same
393 WWW server. Therefore it is very likely that most of the customizations
394 are site specific, and only a few are user specific. However, you
395 don't have to use a site specific customization if you don't want one.
396
397 If you'd like to make a site specific customization of
398 @code{hm--html-mode}, it's possible to put it in a special file called
399 @file{hm--site-configuration-file.el}. If you do this, you have to set
400 either the lisp variable @code{hm--html-site-config-file} or the
401 environment variable @code{HTML_SITE_CONFIG_FILE} to the file and its
402 path. If you write the filename without its extension (.el), emacs
403 tries first to load a compiled version of the file.
404
405 The environment variables overwrite the lisp variables.
406
407 You can also put the site specific customization in any standard emacs
408 customization file like, @file{default.el}. But an advantage to
409 using @file{hm--site-configuration-file.el} is that it is very likely
410 you will be able to use this file with future versions of the
411 package. I'll try to make it as backward compatible as possible.
412
413 @emph{Note}: This file is loaded after the package customization file
414 and before the user customization file.
415
416 @node Where To Put User Specific Customization, , Where To Put Site Specific Customization, Customization (Configuration) Files
417 @comment node-name, next, previous, up
418 @subsection Where To Put User Specific Customization
419 @cindex user specific customization
420 @cindex ~/.hm--configuration-file.el
421 @vindex HTML_USER_CONFIG_FILE
422 @vindex hm--html-user-config-file
423
424 User specific customization can be put in the file
425 @file{.hm--configuration-file.el}, which is searched by default in the
426 home directory of the user. This can be overwritten by setting either
427 the environment variable @code{HTML_USER_CONFIG_FILE} or the lisp
428 variable @code{hm--html-user-config-file} to the name of the file and
429 its path. If you write the filename without its extension (.el), emacs
430 tries first to load a compiled version of the file.
431
432 You can also put the user specific customization in your
433 @file{.emacs}. It's up to you to decide which way is better.
434
435 @emph{Note}: This file is loaded after the package and the site specific
436 one. Therefore it overwrites all other customization files.
437
438
439 @node Customization Variables, , Customization (Configuration) Files, Customization
440 @comment node-name, next, previous, up
441 @section Customization Variables
442
443 In the following subsections the main customization variables are
444 described.
445
446 @menu
447 * User Name/Signature::
448 * Switching Between Expert And Novice Menus ::
449 * HTML Doctype::
450 * Defaults Used For Generating Links::
451 * Templates::
452 * Deleting Automounter Path Prefix::
453 * Automatic Insert Of Information::
454 * Latin 1 Characters::
455 * Drag And Drop::
456 * Font Lock Keywords::
457 * Prefix Keys::
458 * Pulldown Menu Names::
459 * Hook Variables::
460 * Previewing HTML Files::
461 * Meta Element::
462 * Indentation::
463 @end menu
464
465
466 @node User Name/Signature, Switching Between Expert And Novice Menus , Customization Variables, Customization Variables
467 @comment node-name, next, previous, up
468 @subsection User Name/Signature
469 @cindex user name
470 @cindex signature
471 @vindex hm--html-username
472 @vindex hm--html-signature-file
473
474 @itemize @bullet
475 @item
476 @code{hm--html-username}: Your real name. This is used as the name of
477 the signature links. You need only specify it if your name in the
478 file @file{/etc/passwd} isn't the one you'd like to see in the html
479 files. Otherwise this may be set to @code{nil}.
480 @item
481 @code{hm--html-signature-file}: The link used in your signature. In
482 general this should be a link to your home page.
483 @end itemize
484
485
486 @node Switching Between Expert And Novice Menus , HTML Doctype, User Name/Signature, Customization Variables
487 @comment node-name, next, previous, up
488 @subsection Switching Between Expert And Novice Menus
489 @cindex expert menus
490 @cindex novice menus
491 @vindex hm--html-expert
492
493 @itemize @bullet
494 @item
495 @code{hm--html-expert}: If you're a html novice and don't want to be
496 bothered with lots of possible html elements, then you should use the
497 novice popup menus. For that, set this variable to @code{nil},
498 which is the default. But if you are more familiar with html and would
499 like to use more html elements, then you should use the expert menus and
500 set this variable to @code{t}.
501 @end itemize
502
503
504 @node HTML Doctype, Defaults Used For Generating Links, Switching Between Expert And Novice Menus , Customization Variables
505 @comment node-name, next, previous, up
506 @subsection HTML Doctype
507 @vindex hm--html-html-doctype-version
508 @cindex HTML doctype
509
510 @itemize @bullet
511 @item
512 @code{hm--html-html-doctype-version}: The HTML version. This is used in
513 the doctype element. Change this if you use non HTML 3.2 elements. This
514 package (@xref{Overview, version}.) defines by default only HTML 3.2 elements.
515 @end itemize
516
517
518 @node Defaults Used For Generating Links, Templates, HTML Doctype, Customization Variables
519 @comment node-name, next, previous, up
520 @subsection Defaults Used For Generating Links
521 @cindex links
522
523 One of the main features of @code{hm--html-mode} is its easy ways to
524 insert special links to html pages, ftp servers, news servers and so
525 on. I think that most people will have their own (this may be site
526 specific. @xref{Where To Put Site Specific Customization, Where To Put
527 Site Specific Customization}.) favourite servers, directories and so
528 on. You may customize the default values and the alists with useful
529 alternatives, which are used from the mode in the inserting functions
530 for the links.
531
532 @menu
533 * Your Favourite HTTP Server::
534 * Links to WWW Servers::
535 * Links To Files::
536 * Links To FTP Servers::
537 * Links To Emacs Info Files::
538 * Links To Gopher Servers::
539 * Links To WAIS Gateways::
540 * Links To The Mail Gateway::
541 * Links For Sending Mail::
542 * Links To The Program Gateway::
543 * Links To The Local Program Gateway::
544 * URL For Forms And Image Tags::
545 * Marking Of Examples::
546 @end menu
547
548
549 @node Your Favourite HTTP Server, Links to WWW Servers, Defaults Used For Generating Links, Defaults Used For Generating Links
550 @comment node-name, next, previous, up
551 @subsubsection Your Favourite HTTP Server
552 @cindex favourite HTTP server
553 @vindex hm--html-favorite-http-server-host-name
554
555 @itemize @bullet
556 @item
557 @code{hm--html-favorite-http-server-host-name}: The name of your
558 favorite http server host. It must be specified! This variable is used
559 in many other variables.
560 @end itemize
561
562
563 @node Links to WWW Servers, Links To Files, Your Favourite HTTP Server, Defaults Used For Generating Links
564 @comment node-name, next, previous, up
565 @subsubsection Links to WWW Server
566 @cindex WWW server links
567 @cindex HTTP links
568 @vindex hm--html-html-hostname:port-default
569 @vindex hm--html-html-hostname:port-alist
570 @vindex hm--html-html-path-alist
571
572 @itemize @bullet
573 @item
574 @code{hm--html-html-hostname:port-default}: Default hostname with port
575 for http links to a HTML server.
576 @item
577 @code{hm--html-html-hostname:port-alist}: Alist with hostnames and ports
578 for http links to HTML servers. It contains useful alternatives.
579 @item
580 @code{hm--html-html-path-alist}: Alist with directories for the HTML
581 server. Each alist element must consist of a number and a directory
582 string. The number is used to select the directory during the query
583 about the directory for an http link.
584 @end itemize
585
586
587 @node Links To Files, Links To FTP Servers, Links to WWW Servers, Defaults Used For Generating Links
588 @comment node-name, next, previous, up
589 @subsubsection Links To Files
590 @cindex file gateway links
591 @vindex hm--html-file-path-alist
592
593 @itemize @bullet
594 @item
595 @code{hm--html-file-path-alist}: Alist with directories for the file
596 gateway. Each alist element must consist of a number and a directory
597 string. The number is used to select the directory during the query
598 about the directory for a file link.
599 @end itemize
600
601
602 @node Links To FTP Servers, Links To Emacs Info Files, Links To Files, Defaults Used For Generating Links
603 @comment node-name, next, previous, up
604 @subsubsection Links To FTP Servers
605 @cindex FTP links
606 @vindex hm--html-ftp-hostname:port-default
607 @vindex hm--html-ftp-hostname:port-alist
608 @vindex hm--html-ftp-path-alist
609
610 @itemize @bullet
611 @item
612 @code{hm--html-ftp-hostname:port-default}: Default hostname with port
613 for links to an ftp server. This is for the default FTP server. In general
614 you don't need to specify a port for this.
615 @item
616 @code{hm--html-ftp-hostname:port-alist}: Alist with hostnames and ports
617 for links to ftp servers. It contains useful alternatives. In general
618 you don't need to specify ports for the ftp servers.
619 @item
620 @code{hm--html-ftp-path-alist}: Alist with directories for the ftp
621 server links. It contains useful alternatives with /pub, /pub/gnu and
622 so on. Each alist element must consist of a number and a directory
623 string. The number is used to select the directory during the query
624 about the directory for an ftp link.
625 @end itemize
626
627
628 @node Links To Emacs Info Files, Links To Gopher Servers, Links To FTP Servers, Defaults Used For Generating Links
629 @comment node-name, next, previous, up
630 @subsubsection Links To Emacs Info Files
631 @cindex emacs info links
632 @vindex hm--html-info-hostname:port-alist
633 @vindex hm--html-info-hostname:port-default
634 @vindex hm--html-info-path-alist
635
636 @itemize @bullet
637 @item
638 @code{hm--html-info-hostname:port-default}: Default hostname with port
639 for the Info gateway.
640 @item
641 @code{hm--html-info-hostname:port-alist}: Alist with hostnames and ports
642 for Info gateways. It contains useful alternatives.
643 @item
644 @code{hm--html-info-path-alist}: Alist with directories for the Info
645 gateway. This may be a list with all of your emacs info directories.
646 @end itemize
647
648
649 @node Links To Gopher Servers, Links To WAIS Gateways, Links To Emacs Info Files, Defaults Used For Generating Links
650 @comment node-name, next, previous, up
651 @subsubsection Links To Gopher Servers
652 @cindex Gopher gateway links
653 @vindex hm--html-gopher-hostname:port-default
654 @vindex hm--html-gopher-hostname:port-alist
655 @vindex hm--html-gopher-doctype-default
656 @vindex hm--html-gopher-doctype-alist
657 @vindex hm--html-gopher-anchor-alist
658
659 There are a lot of useful gopher information servers on the Internet.
660 You can access them with a gopher browser or with a WWW browser. In the
661 latter case you have to use the gopher gateway.
662
663 @itemize @bullet
664 @item
665 @code{hm--html-gopher-hostname:port-default}: Default hostname with port
666 for links to the default gopher server.
667 @item
668 @code{hm--html-gopher-hostname:port-alist}: Alist with hostnames and
669 ports for links to gopher servers. It contains useful alternatives.
670 @item
671 @code{hm--html-gopher-doctype-default}: For gopher links you have to
672 specify the doctype. In most cases this should be the string \"/1\".
673 Therefore this is the default doctype, but you can change it to
674 another.
675 @item
676 @code{hm--html-gopher-doctype-alist}: Alist with doctype strings for links
677 to a gopher server. The strings \"/1\", \"/11\" and \"/00\" are the only
678 doctype strings that I know. Please let me know if there are other
679 strings.
680 @item
681 @code{hm--html-gopher-anchor-alist}: Alist with directories for links to
682 a gopher server. It contains useful alternatives for the main gopher
683 servers. Each alist element must consist of a number and a directory
684 string. The number is used to select the directory during the query
685 about the directory for a local program gateway link.
686 @end itemize
687
688
689 @node Links To WAIS Gateways, Links To The Mail Gateway, Links To Gopher Servers, Defaults Used For Generating Links
690 @comment node-name, next, previous, up
691 @subsubsection Links To WAIS Gateways
692 @cindex WAIS gateway links
693 @vindex hm--html-wais-hostname:port-alist
694 @vindex hm--html-wais-hostname:port-default
695 @vindex hm--html-wais-servername:port-alist
696 @vindex hm--html-wais-servername:port-default
697 @vindex hm--html-wais-path-alist
698
699 You can either make a link direct to a WAIS server (it may be that not
700 all WWW browsers support this) or an http link to a server (relay host)
701 which queries the WAIS server. The variables
702 @code{hm--html-wais-hostname:port-default} and
703 @code{hm--html-wais-hostname} refer to these relay hosts and the
704 variables @code{hm--html-wais-servername:port-default} and
705 @code{hm--html-wais-servername:port-alist} refer to the WAIS servers.
706
707 @itemize @bullet
708 @item
709 @code{hm--html-wais-hostname:port-default}: Default hostname of the
710 relay host with port for the WAIS gateway.
711 @item
712 @code{hm--html-wais-hostname:port-alist}: Alist with hostnames of
713 possible relay hosts and ports for the WAIS gateway. It contains
714 useful alternatives.
715 @item
716 @code{hm--html-wais-servername:port-default}: Default WAIS servername
717 with port for the WAIS gateway.
718 @item
719 @code{hm--html-wais-servername:port-alist}: Alist with WAIS servernames
720 and ports for the WAIS gateway. It contains useful alternatives.
721 @item
722 @code{hm--html-wais-path-alist}: Alist with directories for the wais gateway.
723 @end itemize
724
725
726 @node Links To The Mail Gateway, Links For Sending Mail, Links To WAIS Gateways, Defaults Used For Generating Links
727 @comment node-name, next, previous, up
728 @subsubsection Links To The Mail Gateway
729 @cindex Mail gateway links
730 @cindex Mail folder links
731 @vindex hm--html-mail-hostname:port-default
732 @vindex hm--html-mail-hostname:port-alist
733 @vindex hm--html-mail-path-alist
734
735 The following variables are for customizing the insertion of links to a mail
736 folder. You need a special server for this, which sends the email back
737 to the browser.
738
739 @itemize @bullet
740 @item
741 @code{hm--html-mail-hostname:port-default}: Default hostname with port
742 for the mail gateway.
743 @item
744 @code{hm--html-mail-hostname:port-alist}: Alist with hostnames and ports
745 for the mail gateway. It contains useful alternatives.
746 @item
747 @code{hm--html-mail-path-alist}: Alist with directories for the mail
748 gateway. In these directories you'll probably find mail folders. Each
749 alist element must consist of a number and a directory string. The
750 number is used to select the directory during the query about the
751 directory for a mail folder link.
752 @end itemize
753
754
755 @node Links For Sending Mail, Links To The Program Gateway, Links To The Mail Gateway, Defaults Used For Generating Links
756 @comment node-name, next, previous, up
757 @subsubsection Links For Sending Mail
758 @cindex mailto links
759 @vindex hm--html-mailto-alist
760
761 @itemize @bullet
762 @item
763 @code{hm--html-mailto-alist}: Alist with mail addresses for the mailto
764 alist. The value of `user-mail-address' will also be added by the
765 package to this alist.
766 @end itemize
767
768
769 @node Links To The Program Gateway, Links To The Local Program Gateway, Links For Sending Mail, Defaults Used For Generating Links
770 @comment node-name, next, previous, up
771 @subsubsection Links To The Program Gateway
772 @cindex program gateway links
773 @vindex hm--html-proggate-hostname:port-default
774 @vindex hm--html-proggate-hostname:port-alist
775 @vindex hm--html-proggate-allowed-file
776
777 The program gateway is a special TNT site specific gateway for starting
778 programs out of a html page. The programs are started by a special
779 server, which looks in an allowed file to determine if it is allowed to
780 start the program. This is necessary because the programs are running
781 under the user id of the server. We're only allowed to start simple
782 display programs like man, ls and so on.
783
784 @itemize @bullet
785 @item
786 @code{hm--html-proggate-hostname:port-default}: Default hostname with
787 port for the proggate server.
788 @item
789 @code{hm--html-proggate-hostname:port-alist}: Alist with hostnames and
790 ports for the proggate server. It contains useful alternatives.
791 @item
792 @code{hm--html-proggate-allowed-file}: The filename (with path) of the
793 proggate allowed file.
794 @end itemize
795
796
797 @node Links To The Local Program Gateway, URL For Forms And Image Tags, Links To The Program Gateway, Defaults Used For Generating Links
798 @comment node-name, next, previous, up
799 @subsubsection Links To The Local Program Gateway
800 @cindex local program gateway links
801 @vindex hm--html-local-proggate-path-alist
802
803 Another TNT site specific way to start programs from a html page. These
804 programs are started with the id of the user on the host where the
805 client (browser) is running. Therefore no restriction about the allowed
806 programs is made. With this you can start only programs and do only
807 things, which you can do also without the WWW browser.
808
809 @itemize @bullet
810 @item
811 @code{hm--html-local-proggate-path-alist}: Alist with directories for
812 the local program gateway. Contains directories, where you can find
813 programs.
814 @end itemize
815
816
817 @node URL For Forms And Image Tags, Marking Of Examples, Links To The Local Program Gateway, Defaults Used For Generating Links
818 @comment node-name, next, previous, up
819 @subsubsection URL For Forms And Image Tags
820 @cindex forms URL
821 @cindex image URL
822 @vindex hm--html-url-alist
823
824 @itemize @bullet
825 @item
826 @code{hm--html-url-alist}: Alist with URL's for FORMS and IMAGE tags.
827 The cdr of each list contains symbols, which specifies the use of the
828 URL.
829 @end itemize
830
831
832 @node Marking Of Examples, , URL For Forms And Image Tags, Defaults Used For Generating Links
833 @comment node-name, next, previous, up
834 @subsubsection Marking Of Examples
835 @cindex color of help text
836 @cindex font of help text
837 @vindex hm--html-help-foreground
838 @vindex hm--html-help-background
839 @vindex hm--html-help-font
840
841 The following variables are for marking the examples in the help
842 buffer.
843
844 @itemize @bullet
845 @item
846 @code{hm--html-help-foreground}: The foreground color for highlighting
847 examples.
848 @item
849 @code{hm--html-help-background}: The background color for highlighting
850 examples.
851 @item
852 @code{hm--html-help-font}: The font for highlighting examples.
853 @end itemize
854
855
856 @node Templates, Deleting Automounter Path Prefix, Defaults Used For Generating Links, Customization Variables
857 @comment node-name, next, previous, up
858 @subsection Templates
859 @cindex templates
860 @vindex hm--html-template-dir
861 @vindex hm--html-frame-template-file
862 @vindex hm--html-automatic-expand-templates
863
864 For inserting html template files you can customize where you keep your
865 templates.
866
867 @itemize @bullet
868 @item
869 @code{hm--html-template-dir}: A directory with template files. It is now
870 also possible to use it as a list of directories. Look at the variable
871 @code{tmpl-template-dir-list} for further descriptions. If this
872 variable is set to a non-existent directory, then it defaults to the
873 directory where the package is in XEmacs. This is done during
874 loading the file @file{hm--html-configuration.el} (@xref{Where Are All
875 The Customization Variables Defined, Where Are All The Customization
876 Variables Defined}.). This may only be useful in XEmacs >= 19.12.
877 @item
878 @code{hm--html-frame-template-file}: File which is used as template for
879 a html frame. An example is in the package
880 @emph{hm--html-menus}. @xref{Contents, Contents}.
881 @item
882 @code{hm--html-automatic-expand-templates}: Automatic expansion of
883 templates. This feature needs the file @file{tmpl-minor-mode.el} from Heiko
884 Münkel (@cite{muenkel@@tnt.uni-hannover.de}), which is distributed with the
885 package hm--html-menus.
886 @item
887 @code{hm--html-template-filter-regexp}: Regexp for filtering out non
888 (html) template files in a directory.
889 @end itemize
890
891
892 @node Deleting Automounter Path Prefix, Automatic Insert Of Information, Templates, Customization Variables
893 @comment node-name, next, previous, up
894 @subsection Deleting Automounter Path Prefix
895 @cindex automounter path
896 @vindex hm--html-delete-wrong-path-prefix
897
898 @itemize @bullet
899 @item
900 @code{hm--html-delete-wrong-path-prefix}: If non-nil, it specifies path-prefixes which should be deleted in paths.
901 The Sun automounter adds a temporary prefix to the automounted directories
902 (at our site the prefix is /tmp_mnt). But you can't select such a path
903 if the automounter has currently not mounted the directory, and so you
904 can't follow an html link which consists of such a path. To overcome
905 this behaviour, you can set this variable to the prefix
906 (e.g. "/tmp_mnt"). After that, the prefix should be stripped from the
907 paths during the creation of the links. ATTENTION: This variable is
908 used as a regular expression! It can be set to a string or to a list of
909 strings.
910 @end itemize
911
912 @node Automatic Insert Of Information, Latin 1 Characters, Deleting Automounter Path Prefix, Customization Variables
913 @comment node-name, next, previous, up
914 @subsection Automatic Insert Of Information
915 @cindex automatic insert
916 @cindex date
917 @cindex changed comment
918 @cindex created comment
919 @vindex hm--html-automatic-new-date
920 @vindex hm--html-automatic-changed-comment
921 @vindex hm--html-automatic-created-comment
922
923 The @code{hm--html-mode} automatically inserts some useful information in
924 html pages. This behaviour can be changed by the following variables.
925
926 @itemize @bullet
927 @item
928 @code{hm--html-automatic-new-date}: t => The date in the title line will
929 be updated before file saving. nil => No automatic update of the date.
930 @item
931 @code{hm--html-automatic-changed-comment}: t => A "changed comment"
932 line will be added before file saving. nil => No automatic insert
933 of a "changed comment" line.
934 @item
935 @code{hm--html-automatic-created-comment}: t => A "created comment"
936 line will be added. nil => No automatic insert of a "created
937 comment" line.
938 @end itemize
939
940
941 @node Latin 1 Characters, Drag And Drop, Automatic Insert Of Information, Customization Variables
942 @comment node-name, next, previous, up
943 @subsection Latin 1 Characters
944 @cindex latin 1 characters
945 @vindex hm--html-bind-latin-1-char-entities
946
947 @itemize @bullet
948 @item
949 @code{hm--html-bind-latin-1-char-entities}: Set this to nil, if you
950 don't want to use the ISO Latin 1 character entities. This is only
951 useful if `hm--html-use-old-keymap' is set to nil. It is only used
952 when loading the html package the first time.
953 @end itemize
954
955
956 @node Drag And Drop, Font Lock Keywords, Latin 1 Characters, Customization Variables
957 @comment node-name, next, previous, up
958 @subsection Drag And Drop
959 @cindex drag and drop
960 @vindex hm--html-idd-create-relative-links
961 @vindex hm--html-idd-actions
962
963 @itemize @bullet
964 @item
965 @code{hm--html-idd-create-relative-links}: If t, then the
966 @code{hm--html-idd-*} functions create relative links. Otherwise
967 absolute links are used. The idd functions are used for drag and drop.
968 @item
969 @code{hm--html-idd-actions}: The action list for the destination mode
970 @code{hm--html-mode}. Look at the description of the variable
971 idd-actions.
972 @end itemize
973
974
975 @node Font Lock Keywords, Prefix Keys, Drag And Drop, Customization Variables
976 @comment node-name, next, previous, up
977 @subsection Font Lock Keywords
978 @cindex font lock keywords
979 @vindex hm--html-font-lock-keywords-1
980 @vindex hm--html-font-lock-keywords-2
981 @vindex hm--html-font-lock-keywords
982
983 @itemize @bullet
984 @item
985 @code{hm--html-font-lock-keywords-1}: Subdued level highlighting for
986 @code{hm--html-mode}.
987 @item
988 @code{hm--html-font-lock-keywords-2}: Gaudy level highlighting for
989 @code{hm--html-mode}.
990 @item
991 @code{hm--html-font-lock-keywords}: Default expressions to highlight in
992 the @code{hm--html-mode}.
993 @end itemize
994
995
996 @node Prefix Keys, Pulldown Menu Names, Font Lock Keywords, Customization Variables
997 @comment node-name, next, previous, up
998 @subsection Prefix Keys
999 @cindex prefix keys
1000 @kindex prefix keys
1001 @vindex hm--html-minor-mode-prefix-key
1002 @vindex hm--html-mode-prefix-key
1003
1004 @itemize @bullet
1005 @item
1006 @code{hm--html-minor-mode-prefix-key}: The prefix key for the key tables
1007 in @code{hm--html-minor-mode}.
1008 @item
1009 @code{hm--html-mode-prefix-key}: The prefix key for the hm--html keys in
1010 @code{hm--html-mode}.
1011 @end itemize
1012
1013
1014 @node Pulldown Menu Names, Hook Variables, Prefix Keys, Customization Variables
1015 @comment node-name, next, previous, up
1016 @subsection Pulldown Menu Names
1017 @cindex pulldown menu names
1018 @vindex hm--html-minor-mode-pulldown-menu-name
1019 @vindex hm--html-mode-pulldown-menu-name
1020
1021 Perhaps you'd like to change the names to get the same menu
1022 names in the major and in the minor modes of the @code{hm--html-menus}
1023 package.
1024
1025 @itemize @bullet
1026 @item
1027 @code{hm--html-mode-pulldown-menu-name}: The name of the pulldown menu
1028 in the major html mode.
1029 @item
1030 @code{hm--html-minor-mode-pulldown-menu-name}: The name of the pulldown
1031 menu in the minor html mode.
1032 @end itemize
1033
1034
1035 @node Hook Variables, Previewing HTML Files, Pulldown Menu Names, Customization Variables
1036 @comment node-name, next, previous, up
1037 @subsection Hook Variables
1038 @vindex hm--html-mode-hook
1039
1040 You may use the following two variables, if you'd like to call special
1041 functions each time the major html mode is entered or the package is
1042 loaded.
1043
1044 @itemize @bullet
1045 @item
1046 @code{hm--html-mode-hook}: This hook will be called each time
1047 @code{hm--html-mode} is invoked.
1048 @item
1049 @code{hm--html-load-hook}: Hook variable to execute functions after
1050 loading the package.
1051 @end itemize
1052
1053
1054 @node Previewing HTML Files, Meta Element, Hook Variables, Customization Variables
1055 @comment node-name, next, previous, up
1056 @subsection Previewing HTML Files
1057 @cindex previewing HTML files
1058 @vindex html-view-mosaic-command
1059 @vindex html-sigusr1-signal-value
1060
1061 The following two variables are only used, if you preview html
1062 documents with @code{Mosaic}. There are also some other variables in
1063 @file{hmtl-view.el}. @xref{Contents, Contents}. Look at that file if
1064 you have trouble with the functions to preview the html document with
1065 @code{Mosaic}.
1066
1067 @itemize @bullet
1068 @item
1069 @code{html-view-mosaic-command}: The command that runs @code{Mosaic} on your
1070 system.
1071 @item
1072 @code{html-sigusr1-signal-value}: Value for the SIGUSR1 signal on your
1073 system. See, usually, @file{/usr/include/sys/signal.h}.
1074 @example
1075 SunOS 4.1.x : (setq html-sigusr1-signal-value 30)
1076 SunOS 5.x : (setq html-sigusr1-signal-value 16)
1077 Linux : (setq html-sigusr1-signal-value 10))
1078 @end example
1079 @end itemize
1080
1081
1082 @node Meta Element, Indentation, Previewing HTML Files, Customization Variables
1083 @comment node-name, next, previous, up
1084 @subsection Meta Element
1085 @cindex meta element
1086 @vindex hm--html-meta-name-alist
1087
1088 @itemize @bullet
1089 @item
1090 @code{hm--html-meta-name-alist}: Alist with possible names for the name
1091 or http-equiv attribute of meta. Currently I know of the names
1092 @code{Expires}, @code{Keys} and @code{Author}. Please send me
1093 (@emph{muenkel@@tnt.uni-hannover.de}) an email, if you know other
1094 standard html names for the meta element.
1095 @end itemize
1096
1097
1098 @node Indentation, , Meta Element, Customization Variables
1099 @comment node-name, next, previous, up
1100 @subsection Indentation
1101 @cindex indentation
1102 @vindex hm--html-disable-indentation
1103 @vindex hm--html-inter-tag-indent
1104 @vindex hm--html-comment-indent
1105 @vindex hm--html-intra-tag-indent
1106 @vindex hm--html-tag-name-alist
1107
1108 @itemize @bullet
1109 @item
1110 @code{hm--html-disable-indentation}: Set this to t if you want to
1111 disable indentation in @code{hm--html-mode}. And maybe send me
1112 (@emph{muenkel@@tnt.uni-hannover.de}) a note why you did this.
1113 @item
1114 @code{hm--html-inter-tag-indent}: The indentation after a start tag.
1115 @item
1116 @code{hm--html-comment-indent}: The indentation of a comment.
1117 @item
1118 @code{hm--html-intra-tag-indent}: The indentation after the start of a
1119 tag.
1120 @item
1121 @code{hm--html-tag-name-alist}: An alist with tag names known by
1122 @code{hm--html-mode}. It is used to determine if a tag is a one element
1123 tag or not. In the future it should also be used to get possible
1124 parameters of the tag. Use lower case characters in this list!!!! If
1125 you have problems with the indentation of
1126 @code{:hm--html-one-or-two-element-tag} elements, then you should set
1127 them to either @code{:hm--html-one-element-tag} or
1128 @code{:hm--html-two-element-tag}, depending on how you use these
1129 elements. In the future I'll try to implement a better indentation for
1130 these elements.
1131 @end itemize
1132
1133
1134 @node Add New Elements, Use With psgml-html, Customization, Top
1135 @comment node-name, next, previous, up
1136 @chapter Add New Elements
1137 @cindex add new html elements
1138 @cindex non standard html
1139 @vindex hm--html-tag-name-alist
1140
1141 If you'd like to add new HTML elements to this package, you should first take
1142 a look at the file @file{hm--html-not-standard.el}, which
1143 already contains some non-standard elements. If you find your tags
1144 there, you should uncomment the line @code{(require
1145 'hm--html-not-standard)} in the file @file{hm--html-mode.el}. There are
1146 also menu entries for these elements in the file
1147 @file{hm--html-menu.el}, which are commented out. Don't forget to
1148 recompile the changed lisp files after that!
1149
1150 If you don't find your new elements there, you should do the following
1151 steps to add them:
1152
1153 @enumerate
1154 @item
1155 Locate a tag which is similar to the one you want to add. "Similar"
1156 means that it is inserted in the way you want to insert the new
1157 tags. Now let's assume, that you chose @samp{<strong></strong>}.
1158 @item
1159 Look at the file @file{hm--html.el} and search the function(s) which
1160 inserts the similar tag(s). If the HTML element consists of only one
1161 tag, then there should be only one function for inserting the tag. If
1162 the element consists of a start and an end tag, there are at least two
1163 functions. Only in some special cases, if it is possible to insert
1164 elements with different attribute values, are there more than two
1165 functions. In the case of @samp{<strong></strong>}, there are the two
1166 functions @code{hm--html-add-strong} and
1167 @code{hm--html-add-strong-to-region}. The first one is used if no
1168 region is active, and the second if a region is active. The naming scheme
1169 of these functions is always @var{hm--html-add-<tagname>} and
1170 @var{hm--html-add-<tagname>-to-region}. @var{<tagname>} is not in all
1171 cases the tagname. Sometimes a more human readable name is used (e.g.
1172 bold instead of b).
1173 @item
1174 To get the right indentation for the new tags you should add an entry
1175 for them to the variable @code{hm--html-tag-name-alist}, which is defined
1176 in @file{hm--html-configuration.el}. Let's assume that the new tagname
1177 is @samp{foo}. The entry in @code{hm--html-tag-name-alist} should
1178 be
1179 @lisp
1180 ("foo" (:hm--html-one-element-tag t))
1181 @end lisp
1182 if the new element consists only of one tag (@samp{img} is such an
1183 element) or
1184 @lisp
1185 ("foo" (:hm--html-two-element-tag t))
1186 @end lisp
1187 if the new element consists of two tags (@samp{strong} is such an
1188 element) or
1189 @lisp
1190 ("foo" (:hm--html-one-or-two-element-tag t))
1191 @end lisp
1192 if the new element consists of two tags, but it is permissible to use the
1193 start tag without its end tag (@samp{p} is such an element).
1194 @end enumerate
1195
1196 Now you are ready and able to insert the new tags with
1197 @example
1198 M-x hm--html-add-foo
1199 @end example
1200 and
1201 @example
1202 M-x hm--html-add-foo-to-region
1203 @end example
1204
1205 If you want to add the new commands also to the popup menu,
1206 then you have to take a look at @file{hm--html-menu.el}, where all the
1207 menus are defined. Look at @code{hm--html-menu-noregion-expert} and
1208 @code{hm--html-menu-region-expert}. The first one is used if no region is
1209 active, and the second if a region is active (both are only available
1210 if the "expert menus" are used; this is an option in the pulldown
1211 menu). You should now add an entry like
1212 @lisp
1213 ["Foo" hm--html-add-foo t]
1214 @end lisp
1215 to the @code{hm--html-menu-noregion-expert} variable and an entry
1216 @lisp
1217 ["Foo" hm--html-add-foo-to-region t]
1218 @end lisp
1219 to the @code{hm--html-menu-region-expert} variable (only if
1220 @code{hm--html-add-foo-to-region} exists). You can do this by setting the
1221 whole variable to a new value or by using the function
1222 @code{add-menu-button}. I recommend the last method.
1223
1224 If you'd like to have a key sequence for inserting the new tag as well,
1225 take a look at @file{hm--html-keys.el}. There are
1226 different key tables defined for region and no region cases and for
1227 different sorts of elements, like anchors, frame elements (doesn't mean
1228 the Netscape element frame) and so on. These "groups" are the same as
1229 the submenu groups.
1230
1231
1232 @node Use With psgml-html, Internal Drag And Drop, Add New Elements, Top
1233 @comment node-name, next, previous, up
1234 @chapter Use With psgml-html
1235 @cindex use with other HTML modes
1236 @findex hm--html-minor-mode
1237
1238 The package provides a minor mode called @code{hm--html-minor-mode},
1239 which could be used to join the features of this package with another
1240 HTML package. Currently this is only tested with the psgml-html mode in
1241 XEmacs. Please let me know if it works or not with other packages
1242 or in Emacs 19.
1243
1244 If you'd like to use the minor mode in psgml-html mode,
1245 put the following line in your @file{.emacs}:
1246
1247 @lisp
1248 (add-hook 'html-mode-hook 'hm--html-minor-mode)
1249 @end lisp
1250
1251 Note: This should work only in XEmacs versions greater than 19.14 and not
1252 in 20.0. It doesn't work in other versions because the hook variable
1253 @code{html-mode-hook} doesn't exist in those versions. Therefore in those
1254 versions you must either call the minor mode by hand or change the
1255 lisp file of the psgml-html mode.
1256
1257
1258 @node Internal Drag And Drop, Template Minor Mode, Use With psgml-html, Top
1259 @comment node-name, next, previous, up
1260 @chapter Internal Drag And Drop
1261 @cindex drag and drop
1262 @cindex internal drag and drop
1263 @vindex idd-actions
1264 @vindex hm--html-idd-actions
1265
1266
1267 The file @file{internal-drag-and-drop.el}, which is shipped with
1268 @file{hm--html-menus}, provides a general package for internal drag and
1269 drop in emacs. "General" means that it can be used apart from
1270 @code{hm--html-mode} in any other mode.
1271
1272 You can start such an action by clicking with the mouse in the source
1273 buffer and then in the destination buffer. The action may depend on
1274 the points where you've clicked with the mouse, on the state of the
1275 region, the point, the mark and any other properties of the source and
1276 the destination buffers. The actions are defined by the variable
1277 @code{idd-actions}, which is a buffer local variable.
1278
1279
1280 @menu
1281 * Drag And Drop Customization::
1282 * The Drag And Drop Commands::
1283 @end menu
1284
1285 @node Drag And Drop Customization, The Drag And Drop Commands, Internal Drag And Drop, Internal Drag And Drop
1286 @comment node-name, next, previous, up
1287 @section Drag And Drop Customization
1288 @cindex customization
1289 @cindex configuration
1290
1291 The internal drag and drop functions may be used in all
1292 modes. Therefore their general customization isn't done in
1293 @file{hm--html-configuration.el}. Its variables are defined in the file
1294 @file{internal-drag-and-drop.el} instead. You can set them in your
1295 @file{.emacs} or in one of the other emacs init files (e.g.
1296 @file{default.el}). The following subsections describe the main
1297 customization variables.
1298
1299
1300 @menu
1301 * Defining The Drag And Drop Actions::
1302 * The Mouse Bindings::
1303 @end menu
1304
1305 @node Defining The Drag And Drop Actions, The Mouse Bindings, Drag And Drop Customization, Drag And Drop Customization
1306 @comment node-name, next, previous, up
1307 @subsection Defining The Drag And Drop Actions
1308 @cindex actions
1309 @cindex drag and drop actions
1310 @vindex idd-actions
1311
1312 The drag and drop actions are commands which are called after an
1313 internal drag and drop. They depend on the source and the destination
1314 of the drag and drop. Drag and drop actions are defined by the
1315 variable:
1316
1317 @itemize @bullet
1318 @item
1319 @code{idd-actions}: A list with actions, depending on the source and the
1320 destination of the drag and drop command.
1321 @end itemize
1322
1323 The list looks like:
1324 @lisp
1325 '((@var{<destination-specification-1>} (@var{<source-specification-1>} @var{<action-1-1>})
1326 (@var{<source-specification-2>} @var{<action-1-2>})
1327 :
1328 )
1329 (@var{<destination-specification-2>} (@var{<source-specification-1>} @var{<action-2-1>})
1330 (@var{<source-specification-2>} @var{<action-2-2>})
1331 :
1332 )
1333 :
1334 )
1335 @end lisp
1336 The @var{<source-specification>} looks like the following:
1337 @lisp
1338 '([(@var{<specification-type>} @var{<value>})])
1339 @end lisp
1340 with
1341 @lisp
1342 @table @var
1343 @item <specification-type> :==
1344 @w{@code{idd-if-minor-mode-p}} | @w{@code{idd-if-buffer-name-p}} |
1345 @w{@code{idd-if-region-active-p}} | @w{@code{idd-if-url-at-point-p}} |
1346 @w{@code{idd-if-major-mode-p}} | @w{@code{idd-if-variable-non-nil-p}} |
1347 @w{@code{idd-if-dired-file-on-line-p}} |
1348 @w{@code{idd-if-dired-no-file-on-line-p}} |
1349 @w{@code{idd-if-local-file-p}} | @w{@code{idd-if-buffer-name-p}} |
1350 @w{@code{idd-if-modifiers-p}} | ...
1351 @end table
1352 @end lisp
1353
1354 The @var{<specification-type>} - functions must have two arguments. The
1355 first one is the source or destination and the second is the
1356 @var{<value>}. It must return @code{nil}, if the test wasn't successful,
1357 and a number (in general 1), which specifies the weight of the test
1358 function. The weights of all single tests are added to a summary weight
1359 and assigned to the action. The action with the highest weight is called
1360 from the action handler. Look at the definition of
1361 @w{@code{idd-if-major-mode-p}}, @w{@code{idd-if-minor-mode-p}} and so on for
1362 examples. Look at the function
1363 @code{idd-get-source-or-destination-alist}, if you want to know the
1364 structure of the @code{source-or-destination} argument of these
1365 functions.
1366
1367 The @var{<destination-specification>} looks like
1368 @var{<source-specification>}, but in general it could be set to
1369 @code{nil} in mode specific idd-action lists.
1370
1371 If @var{<destination-specification-1>} or @var{<source-specification-1>}
1372 is set to @code{nil}, then every source or source
1373 matches. @code{idd-actions} is a buffer local variable, which should be
1374 at least mode depended. So if the @var{<destination-specification-1>} is
1375 set to @code{nil} it says, that the destination buffer must only have a
1376 specific mode. However, it's also possible to define a general
1377 @code{idd-actions} list, where the destination mode is specified by
1378 @code{idd-if-major-mode-p}.
1379
1380 @var{<action>} is a function which has two arguments. The first
1381 specifies the source and the second the destination. Look at the
1382 function definition of @code{idd-action-copy-region} and
1383 @code{idd-action-copy-replace-region}. They are examples for such
1384 actions.
1385
1386 The following is an example for @code{hm--html-mode}:
1387
1388 @lisp
1389 (defvar idd-actions
1390 '((nil (((idd-if-major-mode-p . dired-mode)
1391 (idd-if-dired-file-on-line-p . ".*\\.\\(gif\\)\\|\\(jpq\\)"))
1392 hm--html-idd-add-include-image-from-dired-line)
1393 (((idd-if-major-mode-p . dired-mode)
1394 (idd-if-dired-no-file-on-line-p . nil))
1395 hm--html-idd-add-file-link-to-file-on-dired-line)
1396 (((idd-if-major-mode-p . dired-mode)
1397 (idd-if-dired-no-file-on-line-p . t))
1398 hm--html-idd-add-file-link-to-directory-of-buffer)
1399 (((idd-if-major-mode-p . w3-mode)
1400 (idd-if-url-at-point-p . t))
1401 hm--html-idd-add-html-link-from-w3-buffer-point)
1402 (((idd-if-major-mode-p . w3-mode))
1403 hm--html-idd-add-html-link-to-w3-buffer)
1404 (((idd-if-local-file-p . t))
1405 hm--html-idd-add-file-link-to-buffer)))
1406 @end lisp
1407
1408
1409 @node The Mouse Bindings, , Defining The Drag And Drop Actions, Drag And Drop Customization
1410 @comment node-name, next, previous, up
1411 @subsection The Mouse Bindings
1412 @cindex mouse bindings
1413 @vindex idd-global-mouse-keys
1414 @vindex idd-global-help-mouse-keys
1415 @vindex idd-drag-and-drop-mouse-binding-type
1416 @findex idd-mouse-drag-and-drop
1417 @findex idd-help-mouse-drag-and-drop
1418
1419 The following three variables determine the mouse
1420 bindings and the mouse behaviour for the internal drag and drop package:
1421
1422 @itemize @bullet
1423 @item
1424 @code{idd-global-mouse-keys}: The mouse keys for the command
1425 @code{idd-mouse-drag-and-drop}. The command
1426 @code{idd-mouse-drag-and-drop} is bound during the loading of the
1427 package @file{internal-drag-and-drop} to these keys in the @b{global
1428 keymap}. The drag and drop action @b{must be bound global}, because the
1429 drag and drop action must be started by a click in the source
1430 buffer. Therefore no action will be performed if the mouse keys are not
1431 bound to @code{idd-mouse-drag-and-drop} in the destination buffer.
1432
1433 Set it to @code{nil}, if you don't want to bind this function during
1434 loading.
1435
1436 If the command is already bound in the global keymap during loading,
1437 then this key sequence will not be bound.
1438
1439 By default the mouse binding is @key{meta} @key{control} @key{button1}.
1440
1441 @item
1442 @code{idd-global-help-mouse-keys}: The mouse keys for the command
1443 @code{idd-help-mouse-drag-and-drop}. The command
1444 @code{idd-help-mouse-drag-and-drop} is bound during the loading of the
1445 package @file{internal-drag-and-drop} to these keys in the @b{global
1446 keymap}.
1447
1448 Set it to @code{nil} if you don't want to bind this function during
1449 loading.
1450
1451 If the command is already bound in the global keymap during loading,
1452 then this key sequence will not be bound.
1453
1454 By default the mouse binding is @key{meta} @key{control} @key{button3}.
1455
1456 @item
1457 @code{idd-drag-and-drop-mouse-binding-type}: The type of the drag and
1458 drop mouse binding. The value may be @code{click} or
1459 @code{press-button-during-move}. A value of @code{click} means that
1460 you have to click over the source, release the button and click it again
1461 over the destination. A value of @code{press-button-during-move} means
1462 that you have to press the button down over the source and hold it until
1463 the mouse pointer is over the destination.
1464
1465 The @emph{disadvantage} of the @code{press-button-during-move} type
1466 compared with the @code{click} type is that you can't select a destination
1467 region, and therefore a drag and drop action depending on a selected
1468 region can't be started with that type of mouse binding.
1469 @end itemize
1470
1471 @node The Drag And Drop Commands, , Drag And Drop Customization, Internal Drag And Drop
1472 @comment node-name, next, previous, up
1473 @section The Drag And Drop Commands
1474 @cindex drag and drop commands
1475
1476 There are 2 groups of commands. The first contains commands which
1477 perform the drag and drop action and the second displays help
1478 messages about a possible drag and drop action.
1479
1480
1481 @menu
1482 * Performing The Drag And Drop Action::
1483 * Displaying Help On Drag And Drop::
1484 @end menu
1485
1486 @node Performing The Drag And Drop Action, Displaying Help On Drag And Drop, The Drag And Drop Commands, The Drag And Drop Commands
1487 @comment node-name, next, previous, up
1488 @subsection Performing The Drag And Drop Action
1489 @cindex drag and drop commands
1490 @cindex performing drag and drop
1491 @findex idd-mouse-drag-and-drop
1492 @findex idd-start-mouse-drag-and-drop
1493 @findex idd-mouse-drag-and-drop-press-button-during-move
1494 @findex idd-mouse-drag-and-drop-click
1495 @findex idd-help-start-action
1496 @vindex idd-drag-and-drop-mouse-binding-type
1497
1498 The following five commands perform internal
1499 drag and drop actions:
1500
1501 @itemize @bullet
1502 @item
1503 @code{idd-mouse-drag-and-drop}: Performs a drag and drop action. It
1504 calls the command @code{idd-mouse-drag-and-drop-click} or
1505 @code{idd-mouse-drag-and-drop-press-button-during-move} depending on the
1506 value of @code{idd-drag-and-drop-mouse-binding-type}. However you've set
1507 this, you start a drag and drop action with this command by pressing
1508 down its mouse button over the source. This command is bound by default
1509 to a global mouse key sequence. @xref{The Mouse Bindings}.
1510
1511 @item
1512 @code{idd-start-mouse-drag-and-drop}: Starts a drag and drop command.
1513 This command could be used to start a drag and drop command without a
1514 button event. Therefore this should not be bound directly to a mouse
1515 button. This command can be used to start a drag and drop action with a
1516 click on a menu item or tool bar icon. After that you have to press a
1517 mouse button over the source. The rest depends on the value of
1518 @code{idd-drag-and-drop-mouse-binding-type}, as with the command
1519 @code{idd-mouse-drag-and-drop}.
1520
1521 @item
1522 @code{idd-help-start-action}: It is possible to display a help buffer
1523 with a message in it, which describes the action instead of performing
1524 it immediately (@pxref{Displaying Help On Drag And Drop}). In this case
1525 you can perform the action by clicking on a special extent in the help
1526 buffer, which runs this command.
1527
1528 @item
1529 @code{idd-mouse-drag-and-drop-press-button-during-move}: Performs a drag
1530 and drop action in a more traditional way than
1531 @code{idd-mouse-drag-and-drop-click}. First you press the button
1532 over the source and then move with the depressed button to the
1533 destination, where you release the button. This must be bound to a
1534 mouse button. The @code{SOURCE-EVENT} must be a
1535 @code{button-press-event}.
1536
1537 The disadvantage of this command compared with the command
1538 @code{idd-mouse-drag-and-drop-click} is, that you can't select a
1539 destination region.
1540
1541 You should bind the command @code{idd-mouse-drag-and-drop} instead of
1542 this one, because it's then possible to switch between both drag and
1543 drop behaviours by changing only one variable.
1544
1545 @item
1546 @code{idd-mouse-drag-and-drop-click}: Performs a drag and drop action in
1547 a more useful way than
1548 @code{idd-mouse-drag-and-drop-press-button-during-move}. First you
1549 click on the source and then on the destination. This must
1550 be bound to a mouse button. The @code{SOURCE-EVENT} must be a
1551 @code{button-press-event}.
1552
1553 You should bind the command @code{idd-mouse-drag-and-drop} instead of
1554 this one, because it's then possible to switch between both drag and
1555 drop behaviours by changing only one variable.
1556 @end itemize
1557
1558
1559 @node Displaying Help On Drag And Drop, , Performing The Drag And Drop Action, The Drag And Drop Commands
1560 @comment node-name, next, previous, up
1561 @subsection Displaying Help On Drag And Drop
1562 @cindex help on drag and drop
1563 @cindex displaying help on drag and drop
1564 @findex idd-help-mouse-drag-and-drop
1565 @findex idd-start-help-mouse-drag-and-drop
1566
1567 It's possible to display a buffer with a help message describing the
1568 action being considered before actually performing it. To perform the
1569 action, you then click on a special extent in the help buffer. To get
1570 the help buffer, you do the same things as you do to perform the action
1571 itself. Only the mouse key differs. There are two commands for this:
1572
1573 @itemize @bullet
1574 @item
1575 @code{idd-help-mouse-drag-and-drop}: Displays help about the drag and
1576 drop action. It works similarly to @code{idd-mouse-drag-and-drop}
1577 (@pxref{Performing The Drag And Drop Action}).
1578
1579 By default this command is globally bound to @key{meta} @key{control}
1580 @key{button3}. This may be changed with the variable
1581 @code{idd-global-help-mouse-keys} (@pxref{The Mouse Bindings}).
1582
1583 @item
1584 @code{idd-start-help-mouse-drag-and-drop}: Starts displaying help about
1585 the drag and drop action. It works similarly to
1586 @code{idd-start-mouse-drag-and-drop} (@pxref{Performing The Drag And
1587 Drop Action}) and can be used to start the help by clicking on a menu
1588 item or a tool bar icon.
1589 @end itemize
1590
1591
1592 @node Template Minor Mode, Bug Reports, Internal Drag And Drop, Top
1593 @comment node-name, next, previous, up
1594 @chapter Template Minor Mode
1595 @cindex templates
1596
1597 There's a file called @file{tmpl-minor-mode.el} in the distribution
1598 of the package @emph{hm---html-menus}. It provides functions to use
1599 templates for the @code{hm--html-mode} and also for other modes. It
1600 needs nothing from the rest of the package and therefore it can be used
1601 independently of @code{hm--html-mode}.
1602
1603
1604 @menu
1605 * What Are Templates::
1606 * Syntax Of Templates::
1607 * Template Customization::
1608 * Template Commands::
1609 @end menu
1610
1611 @node What Are Templates, Syntax Of Templates, Template Minor Mode, Template Minor Mode
1612 @comment node-name, next, previous, up
1613 @section What Are Templates
1614 @cindex templates
1615 @findex tmpl-insert-template-file
1616 @findex tmpl-expand-templates-in-buffer
1617 @findex tmpl-expand-templates-in-region
1618
1619 Templates are special pieces of text, which can be expanded by
1620 emacs. Expansion means that the template is replaced by something else,
1621 determined by evaluating lisp forms or emacs commands. The
1622 expansion can be done automatically after the insertion of templates
1623 with the command @code{tmpl-insert-template-file} in a buffer or by hand
1624 with the commands @code{tmpl-expand-templates-in-buffer} or
1625 @code{tmpl-expand-templates-in-region}.
1626
1627 Templates can be put together with normal text in a so called template
1628 file to provide prototype files. You should name these files with the
1629 following naming scheme:
1630
1631 @example
1632 @var{<file>}.@var{<type>}.tmpl
1633 @end example
1634
1635 where @var{<file>} is a string which describes for what the template
1636 could be used and @var{<type>} the normal file extension, e.g. @samp{c}
1637 for C- files or @samp{html} for HTML- files.
1638
1639
1640 @node Syntax Of Templates, Template Customization, What Are Templates, Template Minor Mode
1641 @comment node-name, next, previous, up
1642 @section Syntax Of Templates
1643 @cindex template syntax
1644 @vindex tmpl-sign
1645
1646 The templates are marked with the sign ^@@, which stands for the null
1647 character (\000). It can be inserted in a buffer with the keys @kbd{C-q
1648 C-SPC}. You can also use any other character or string of characters by
1649 changing the variable @code{tmpl-sign}.
1650
1651 At the moment, there are 3 major types of templates:
1652
1653 @enumerate
1654 @item
1655 @emph{Emacs Lisp function templates}: The expansion of such a template
1656 evals a lisp form. It is possible to use functions or variables as lisp
1657 forms. The following is a simple example:
1658
1659 @lisp
1660 ^@@LISP^@@ (insert-file "~/.emacs") ^@@END LISP^@@
1661 @end lisp
1662
1663 inserts the contents of the file @file{~/.emacs} in the current
1664 buffer during the expansion.
1665
1666 @item
1667 @emph{Emacs command templates}: The expansion of a command template
1668 evals a template in the same way as an interactive command, which is
1669 invoked with @kbd{M-x command}. For example:
1670
1671 @lisp
1672 ^@@COMMAND^@@ insert-file ^@@END COMMAND^@@
1673 @end lisp
1674
1675 runs the interactive command @code{insert-file} during the expansion.
1676
1677 @item
1678 @emph{Template comments} Nothing will be evaluated during the expansion
1679 of a template comment. It is only a comment. For example:
1680
1681 @lisp
1682 ^@@C^@@ This is a comment
1683 @end lisp
1684
1685 The end of the comment is the end of the line. Therefore it has the same
1686 syntax as a lisp or C++ comment.
1687 @end enumerate
1688
1689 By default, a template will be deleted after its expansion, but
1690 without the linefeed. Look at the following examples:
1691
1692 Before the expansion:
1693
1694 @example
1695 Line before the template
1696 ^@@C^@@ The Text of a comment template
1697 Line after the template
1698 @end example
1699
1700 After the expansion:
1701
1702 Line before the template
1703
1704 Line after the template
1705
1706
1707 Templates can start in any column, and only the template will be deleted
1708 after its expansion.
1709
1710
1711 It is also possible to put an attribute list in a template. The
1712 attributes of the list control the deletion of the template. It
1713 may be that this will be extended in the future with other attributes.
1714 The attribute list must be specified as an alist (assoc list) in the start
1715 tag of a template and after its type. Each element of the alist consists
1716 of the name of the attribute following its value.
1717 If no attribute list is specified or if an attribute is missing, then the
1718 default values are used. At the moment there are the following 2 attributes:
1719
1720 @enumerate
1721 @item @emph{don't delete attribute} (@code{DONT_DELETE}): If the value
1722 is t, then the template will not be deleted after its expansion. If the
1723 value is nil then the template will be deleted. The default is nil. For
1724 example:
1725
1726 Before the expansion:
1727
1728 @example
1729 Line before the template
1730 ^@@LISP ((DONT-DELETE t))^@@ (insert-file "~/.cshrc") ^@@END LISP^@@
1731 Line after the template
1732 @end example
1733
1734 After the expansion:
1735
1736 @example
1737 Line before the template
1738 ^@@LISP ((DONT-DELETE t))^@@ (insert-file "~/.cshrc") ^@@END LISP^@@
1739 Line after the template
1740 @end example
1741
1742 It was assumed, that the file @file{~/.cshrc} was empty !
1743
1744 @item @emph{delete line attribute} (@code{DELETE-LINE}): If the value is
1745 t, then the linefeed before or after the template will be deleted. If
1746 the value is nil then no linefeed will be deleted. The default is
1747 nil. For example:
1748
1749 Before the expansion:
1750
1751 @example
1752 Line before the template
1753 ^@@LISP ((DELETE-LINE t))^@@ (insert-file "~/.cshrc") ^@@END LISP^@@
1754 Line after the template
1755 @end example
1756
1757 After the expansion:
1758
1759 @example
1760 Line before the template
1761 Line after the template
1762 @end example
1763
1764 It was assumed, that the file @file{~/.cshrc} was empty !
1765 @end enumerate
1766
1767 These attributes can be combined. For example:
1768
1769 @example
1770 ^@@COMMAND ((DELETE-LINE t) (DONT-DELETE nil))^@@
1771 insert-file
1772 ^@@END COMMAND^@@
1773 @end example
1774
1775 The last examples show also that whitespace (blanks, tabs, linefeeds)
1776 is allowed at most positions in a template.
1777
1778 Look at the file @file{tmpl-minor-mode.el} for a description of the
1779 commands to expand templates.
1780
1781
1782 @node Template Customization, Template Commands, Syntax Of Templates, Template Minor Mode
1783 @comment node-name, next, previous, up
1784 @section Template Customization
1785 @cindex customization
1786 @cindex configuration
1787 @vindex tmpl-template-dir-list
1788 @vindex tmpl-automatic-expand
1789 @vindex tmpl-filter-regexp
1790 @vindex tmpl-sign
1791 @vindex tmpl-minor-mode-map
1792
1793 Templates may be used for all editing modes, not only for
1794 @code{hm--html-mode}. Therefore their general customization isn't done in
1795 @file{hm--html-configuration.el}. Template variables are defined in the file
1796 @file{tmpl-minor-mode.el} instead. You can set them in your
1797 @file{.emacs} or in one of the other emacs init files (e.g.
1798 @file{default.el}). The following are the main variables for
1799 customization.
1800
1801 @itemize @bullet
1802 @item
1803 @code{tmpl-template-dir-list}: A list of directories with template
1804 files. If it is nil, the default-directory will be used. If more than
1805 one directory is specified, then the template filenames should differ
1806 in all directories.
1807
1808 This variable is used in the commands for inserting templates. Look at
1809 @code{tmpl-insert-template-file-from-fixed-dirs} and at
1810 @code{tmpl-insert-template-file}. The command
1811 @code{tmpl-insert-template-file} uses only the car of the list (if it is
1812 a list.)
1813 @item
1814 @code{tmpl-filter-regexp}: This defines a regular expression used for
1815 filtering out non-template files in template directories. It is used in
1816 the command @code{tmpl-insert-template-file-from-fixed-dirs} to allow
1817 only the selection of files which match the regexp. If it is
1818 nil, then the Filter @code{".*\\.tmpl$"} is used. Set it to
1819 @code{\".*\"} if you want to disable the filter function or use the
1820 command @code{tmpl-insert-template-file}.
1821 @item
1822 @code{tmpl-automatic-expand}: If you insert a template file with
1823 @code{tmpl-insert-template-file-from-fixed-dirs} or with
1824 @code{tmpl-insert-template-file}, this variable is used. The templates
1825 in the buffer will be automatically expanded if the variable is set to
1826 t, which is the default.
1827 @item
1828 @code{tmpl-sign}: Thisdetermines the sign which marks the beginning and
1829 the end of template expressions. By default it is set to the null
1830 character (displayed in emacs as ^@@). You can also set this to a
1831 string. Be careful if you change it, so that the templates will not be
1832 mixed up with other non-template text! Note: The expansion function
1833 looks at the whole template, so that it is very unlikely that the
1834 function will make a mistake.
1835 @item
1836 @code{tmpl-minor-mode-map}: The keymap for the template minor mode.
1837 @end itemize
1838
1839
1840 @node Template Commands, , Template Customization, Template Minor Mode
1841 @comment node-name, next, previous, up
1842 @section Template Commands
1843 @cindex commands
1844
1845 In this section the commands of the template package are described.
1846
1847
1848 @menu
1849 * Insert Of Template Files::
1850 * Expansion Of Templates::
1851 * Escaping Of Template Signs::
1852 * The Template Minor Mode::
1853 @end menu
1854
1855 @node Insert Of Template Files, Expansion Of Templates, Template Commands, Template Commands
1856 @comment node-name, next, previous, up
1857 @subsection Insert Of Template Files
1858 @cindex template insert
1859 @cindex template files
1860 @findex tmpl-insert-template-file-from-fixed-dirs
1861 @findex tmpl-insert-template-file
1862
1863 The template package provides the following two commands for inserting
1864 template files in an emacs buffer.
1865
1866 @itemize @bullet
1867 @item
1868 @code{tmpl-insert-template-file}: This command can be used to insert a
1869 template file in the current buffer. It will expand the templates in the
1870 buffer if @code{tmpl-automatic-expand} is set to @code{t}. You can set
1871 a default directory for this command by setting the variable
1872 @code{tmpl-template-dir-list}. @xref{Template Customization}.
1873 @item
1874 @code{tmpl-insert-template-file-from-fixed-dirs}: The difference from
1875 the simpler command @code{tmpl-insert-template-file} is that this
1876 command will build a list for filename completion from a list of
1877 predefined directories (look at @code{tmpl-template-dir-list}). The
1878 filename completion list will also be filtered with the regular
1879 expression defined by @code{tmpl-filer-regexp}. @xref{Template
1880 Customization}. You can set the directory list and/or the filter
1881 differently in each mode where you use templates, so that you will get
1882 in the completion list only template files which could be used for the
1883 current mode.
1884
1885 If you want to insert a template file with this command, which is not in
1886 one of the directories from @code{tmpl-template-dir-list}, then you have
1887 to enter the string @emph{"Change the directory"} instead of a template
1888 file. This string is also in the completion list.
1889 @end itemize
1890
1891 Both commands can also be used as functions. In this case the template
1892 file with is directory path must be given to them as an parameter.
1893
1894 You can also use commands like @code{insert-file} to insert template
1895 files and expand them by hand (@pxref{Expansion Of Templates}).
1896
1897
1898 @node Expansion Of Templates, Escaping Of Template Signs, Insert Of Template Files, Template Commands
1899 @comment node-name, next, previous, up
1900 @subsection Expansion Of Templates
1901 @cindex template expansion
1902 @cindex expansion
1903 @findex tmpl-expand-templates-in-region
1904 @findex tmpl-expand-templates-in-buffer
1905
1906 You can expand templates by hand or automatically after their
1907 insertion. @xref{Insert Of Template Files}, for automatic
1908 expansion. Expansion by hand can be done with one of the
1909 following two functions:
1910
1911 @itemize @bullet
1912 @item
1913 @code{tmpl-expand-templates-in-region}: Expands the templates in the
1914 region. The region is established by the optional arguments @code{BEGIN}
1915 and @code{END}. If the arguments are @code{nil}, or if the function is called
1916 interactively, then the current region will be used.
1917 @item
1918 @code{tmpl-expand-templates-in-buffer}: Expands all templates in the
1919 current buffer.
1920 @end itemize
1921
1922 Both commands are bound to keys in the @code{tmpl-minor-mode}. @xref{The
1923 Template Minor Mode}.
1924
1925
1926 @node Escaping Of Template Signs, The Template Minor Mode, Expansion Of Templates, Template Commands
1927 @comment node-name, next, previous, up
1928 @subsection Escaping Of Template Signs
1929 @cindex template escaping
1930 @cindex escaping
1931 @findex tmpl-escape-tmpl-sign-in-region
1932 @findex tmpl-escape-tmpl-sign-in-buffer
1933
1934 It is possible to escape template signs in a buffer or in a
1935 region. Templates with escaped template signs are not expanded, but they
1936 are un-escaped by the expansion functions. Therefore it is possible to
1937 exclude single templates from the expansion by escaping them. Note:
1938 You can't escape a template twice. The commands which can be used for
1939 this are:
1940
1941 @itemize @bullet
1942 @item
1943 @code{tmpl-escape-tmpl-sign-in-region}: Escapes all @code{tmpl-sign}s
1944 (@pxref{Template Customization}) with a @code{tmpl-sign} in a
1945 region. The region is established by the optional arguments @code{BEGIN}
1946 and @code{END}. If the arguments are @code{nil}, or if the function is
1947 called interactively, then the current region will be used.
1948 @item
1949 @code{tmpl-escape-tmpl-sign-in-buffer}: Same as
1950 @code{tmpl-escape-tmpl-sign-in-region}, but escapes all templates in the
1951 whole buffer.
1952 @end itemize
1953
1954 Both commands are bound to keys in @code{tmpl-minor-mode}. @xref{The
1955 Template Minor Mode}.
1956
1957
1958 @node The Template Minor Mode, , Escaping Of Template Signs, Template Commands
1959 @comment node-name, next, previous, up
1960 @subsection The Template Minor Mode
1961 @cindex template minor mode
1962 @cindex minor mode
1963 @cindex key bindings
1964 @findex tmpl-minor-mode
1965
1966 The template minor mode can be toggled with the command
1967 @code{tmpl-minor-mode}. The purpose of this mode is only to provide
1968 key bindings for some of the commands of the package
1969 @file{tmpl-minor-mode}. If you don't want to use the key bindings, you
1970 don't need this minor mode.
1971
1972 Look at the key table @code{tmpl-minor-mode-map} (@pxref{Template
1973 Customization}) for the definition of the keys.
1974
1975 It may be that I'll also provide a pulldown or popup menu for the minor
1976 mode in a future release.
1977
1978
1979 @node Bug Reports, Concept Index, Template Minor Mode, Top
1980 @comment node-name, next, previous, up
1981 @chapter Bug Reports
1982 @cindex bug report
1983 @findex hm--html-submit-bug-report
1984
1985 There's no software out there without bugs. This package contains
1986 software, therefore it has bugs. I (Heiko Münkel
1987 <muenkel@@tnt.uni-hannover.de>) have inserted most of the bugs in this
1988 package by myself, but I've forgotten where. So please help me out of
1989 this disaster and send bug reports, if you've found one of these little
1990 animals. I'll try to do my very best to fix them and to insert new ones.
1991
1992 If it's possible, you should use the command
1993
1994 @lisp
1995 M-x hm--html-submit-bug-report
1996 @end lisp
1997
1998 There's also an entry in the pulldown menu for this.
1999
2000 In some cases a backtrace would also be appropriate.
2001
2002 If you can't send the report with this function, at
2003 least include the package version and your @code{Emacs}/@code{XEmacs}
2004 version.
2005
2006 In the best of all worlds you would also include a patch to fix the bug.
2007
2008 @emph{Note}: It's not true that I've inserted the bugs as a marketing trick,
2009 so that you must buy the next version to get some of them fixed. This is
2010 false, because this software is free.
2011
2012
2013 @node Concept Index, Function Index, Bug Reports, Top
2014 @comment node-name, next, previous, up
2015 @unnumbered Concept Index
2016
2017 @printindex cp
2018
2019 @node Function Index, Variable Index, Concept Index, Top
2020 @comment node-name, next, previous, up
2021 @unnumbered Function Index
2022
2023 @printindex fn
2024
2025 @node Variable Index, , Function Index, Top
2026 @comment node-name, next, previous, up
2027 @unnumbered Variable Index
2028
2029 @printindex vr
2030
2031 @summarycontents
2032 @contents
2033 @bye