comparison lisp/hm--html-menus/hm--html.el @ 70:131b0175ea99 r20-0b30

Import from CVS: tag r20-0b30
author cvs
date Mon, 13 Aug 2007 09:02:59 +0200
parents 6a22abad6937
children 0d2f883870bc
comparison
equal deleted inserted replaced
69:804d1389bcd6 70:131b0175ea99
1 ;;; $Id: hm--html.el,v 1.6 1997/03/26 22:42:39 steve Exp $ 1 ;;; $Id: hm--html.el,v 1.1.1.1 1996/12/18 22:43:20 steve Exp $
2 ;;; 2 ;;;
3 ;;; Copyright (C) 1993 - 1997 Heiko Muenkel 3 ;;; Copyright (C) 1993, 1994, 1995, 1996 Heiko Muenkel
4 ;;; email: muenkel@tnt.uni-hannover.de 4 ;;; email: muenkel@tnt.uni-hannover.de
5 ;;; 5 ;;;
6 ;;; This program is free software; you can redistribute it and/or modify 6 ;;; This program is free software; you can redistribute it and/or modify
7 ;;; it under the terms of the GNU General Public License as published by 7 ;;; it under the terms of the GNU General Public License as published by
8 ;;; the Free Software Foundation; either version 2, or (at your option) 8 ;;; the Free Software Foundation; either version 2, or (at your option)
25 ;;; Installation: 25 ;;; Installation:
26 ;;; 26 ;;;
27 ;;; Put this file in one of your load path directories. 27 ;;; Put this file in one of your load path directories.
28 ;;; 28 ;;;
29 29
30 (defun hm--html-set-marker-at-position (&optional position) 30 ;(require 'hm--date)
31 "Creates a new marker and set the marker at the POSITION. 31 ;(require 'adapt)
32 If POSITION is nil, then the marker is set at the current point. 32
33 The return value is the marker." 33
34 (let ((marker (make-marker))) 34 ;;; Indentation
35 (if position 35
36 (set-marker marker position) 36 (defun hm--html-indent-region (begin end)
37 (set-marker marker (point))))) 37 "Indents the region between BEGIN and END according to the major mode."
38 (when (< end begin)
39 (let ((a end))
40 (setq end start)
41 (setq start a)))
42 (save-excursion
43 (goto-char begin)
44 (let ((old-point))
45 (while (and (<= (point) end)
46 (not (eq (point) old-point)))
47 (setq old-point (point))
48 (indent-according-to-mode)
49 (forward-line)
50 ))))
51
38 52
39 ;;; Functions for adding html commands which consists of a start and a 53 ;;; Functions for adding html commands which consists of a start and a
40 ;;; end tag and some text between them. (Basicfunctions) 54 ;;; end tag and some text between them. (Basicfunctions)
41 55
42 (defun hm--html-add-tags (function-insert-start-tag 56 (defun hm--html-add-tags (function-insert-start-tag
52 The first parameter specifies the funtion which insert the start tag 66 The first parameter specifies the funtion which insert the start tag
53 and the third parameter specifies the function which insert the end tag. 67 and the third parameter specifies the function which insert the end tag.
54 The second parameter is the string for the start tag and the fourth parameter 68 The second parameter is the string for the start tag and the fourth parameter
55 is the string for the end tag. The third and fourth parameters are optional. 69 is the string for the end tag. The third and fourth parameters are optional.
56 The fifth parameter is optional. If it exists, it specifies a function which 70 The fifth parameter is optional. If it exists, it specifies a function which
57 inserts the sixth parameter (the middle-start-tag) between the start and the 71 inserts the sixth parameter (the middle-start-tag) between the start and the end
58 end tag." 72 tag."
73 ; (interactive "aFunction, which adds the HTML start tag: \n\
74 ;aFunction, which adds the HTML end tag: \n\
75 ;sThe HTML start tag: \n\
76 ;sThe HTML end tag: ")
59 (eval (list function-insert-start-tag start-tag)) 77 (eval (list function-insert-start-tag start-tag))
60 (if function-insert-middle-start-tag 78 (if function-insert-middle-start-tag
61 (eval (list function-insert-middle-start-tag middle-start-tag))) 79 (eval (list function-insert-middle-start-tag middle-start-tag)))
62 (let ((position (hm--html-set-marker-at-position (point)))) 80 (let ((position (point)))
63 (if function-insert-middle-end-tag 81 (if function-insert-middle-end-tag
64 (eval (list function-insert-middle-end-tag middle-end-tag))) 82 (eval (list function-insert-middle-end-tag middle-end-tag)))
65 (if function-insert-end-tag 83 (if function-insert-end-tag
66 (eval (list function-insert-end-tag end-tag))) 84 (eval (list function-insert-end-tag end-tag)))
67 (goto-char position))) 85 (goto-char position)))
69 87
70 (defun hm--html-add-tags-to-region (function-insert-start-tag 88 (defun hm--html-add-tags-to-region (function-insert-start-tag
71 start-tag 89 start-tag
72 function-insert-end-tag 90 function-insert-end-tag
73 end-tag 91 end-tag
74 &optional 92 &optional function-insert-middle-tag
75 function-insert-middle-tag 93 &optional middle-tag)
76 middle-tag)
77 "Adds the start and the end html tag to the active region. 94 "Adds the start and the end html tag to the active region.
78 The first parameter specifies the funtion which insert the start tag 95 The first parameter specifies the funtion which insert the start tag
79 and the third parameter specifies the function which insert the end tag. 96 and the third parameter specifies the function which insert the end tag.
80 The second parameter is the string for the start tag and the fourth parameter 97 The second parameter is the string for the start tag and the fourth parameter
81 is the string for the end tag. 98 is the string for the end tag.
82 The fifth parameter is optional. If it exists, it specifies a function which 99 The fifth parameter is optional. If it exists, it specifies a function which
83 inserts the sixth parameter (the middle-tag) between the start and the end 100 inserts the sixth parameter (the middle-tag) between the start and the end
84 tag." 101 tag."
102 ; (interactive "aFunction, which adds the html start tag: \n\
103 ;aFunction, which adds the html end tag: \n\
104 ;sThe HTML start tag: \n\
105 ;sThe HTML end tag: ")
85 (save-window-excursion 106 (save-window-excursion
86 (let ((start (hm--html-set-marker-at-position (region-beginning))) 107 (let ((start (region-beginning))
87 (end (region-end))) 108 (end (region-end)))
88 (goto-char end) 109 (goto-char end)
89 (eval (list function-insert-end-tag end-tag)) 110 (eval (list function-insert-end-tag end-tag))
90 (goto-char start) 111 (goto-char start)
91 (eval (list function-insert-start-tag start-tag)) 112 (eval (list function-insert-start-tag start-tag))
98 "Inserts the HTML start tag 'tag' without a Newline. 119 "Inserts the HTML start tag 'tag' without a Newline.
99 The parameter must be a string (i.e. \"<B>\")" 120 The parameter must be a string (i.e. \"<B>\")"
100 (let ((start (point))) 121 (let ((start (point)))
101 (insert tag) 122 (insert tag)
102 (hm--html-indent-region start (point)))) 123 (hm--html-indent-region start (point))))
124 ; (html-maybe-deemphasize-region start (- (point) 1))))
103 125
104 126
105 (defun hm--html-insert-end-tag (tag) 127 (defun hm--html-insert-end-tag (tag)
106 "Inserts the HTML end tag 'tag' without a Newline. 128 "Inserts the HTML end tag 'tag' without a Newline.
107 The parameter must be a string (i.e. \"</B>\")" 129 The parameter must be a string (i.e. \"</B>\")"
108 (let ((start (point))) 130 (let ((start (point)))
109 (insert tag) 131 (insert tag)
110 (hm--html-indent-region start (point)))) 132 (hm--html-indent-region start (point))))
133 ; (html-maybe-deemphasize-region start (- (point) 1))))
111 134
112 135
113 (defun hm--html-insert-start-tag-with-newline (tag) 136 (defun hm--html-insert-start-tag-with-newline (tag)
114 "Inserts the HTML start tag 'tag' with a Newline. 137 "Inserts the HTML start tag 'tag' with a Newline.
115 The parameter must be a string (i.e. \"<PRE>\")" 138 The parameter must be a string (i.e. \"<PRE>\")"
116 (let ((start (point))) 139 (let ((start (point)))
117 (insert tag) 140 (insert tag)
118 (hm--html-indent-region start (point)) 141 (hm--html-indent-region start (point))
119 ) 142 )
143 ; (html-maybe-deemphasize-region start (- (point) 1)))
120 (insert "\n")) 144 (insert "\n"))
121 145
122 146
123 (defun hm--html-insert-end-tag-with-newline (tag) 147 (defun hm--html-insert-end-tag-with-newline (tag)
124 "Inserts the HTML end tag 'tag' with a Newline. 148 "Inserts the HTML end tag 'tag' with a Newline.
125 The parameter must be a string (i.e. \"</PRE>\")" 149 The parameter must be a string (i.e. \"</PRE>\")"
126 (insert "\n") 150 (insert "\n")
127 (let ((start (point))) 151 (let ((start (point)))
128 (insert tag) 152 (insert tag)
129 (hm--html-indent-region start (point)))) 153 (hm--html-indent-region start (point))))
154 ; (html-maybe-deemphasize-region start (- (point) 1))))
130 155
131 156
132 157
133 ;;; Functions which add simple tags of the form <tag> 158 ;;; Functions which add simple tags of the form <tag>
134 159
146 (defun hm--html-add-list-or-menu-item-to-region () 171 (defun hm--html-add-list-or-menu-item-to-region ()
147 "Adds the tags for a menu item to the region in the current buffer." 172 "Adds the tags for a menu item to the region in the current buffer."
148 (interactive) 173 (interactive)
149 (hm--html-add-tags-to-region 'hm--html-insert-start-tag "<LI> " 174 (hm--html-add-tags-to-region 'hm--html-insert-start-tag "<LI> "
150 'hm--html-insert-end-tag " </LI>")) 175 'hm--html-insert-end-tag " </LI>"))
151
152 (defun hm--html-add-basefont (size)
153 "Adds the HTML tag for a basefont."
154 (interactive (list (hm--html-read-font-size t)))
155 (hm--html-add-tags 'hm--html-insert-start-tag
156 (concat "<BASEFONT SIZE=" size ">")))
157 176
158 (defun hm--html-add-line-break () 177 (defun hm--html-add-line-break ()
159 "Adds the HTML tag for a line break." 178 "Adds the HTML tag for a line break."
160 (interactive) 179 (interactive)
161 (hm--html-add-tags 'hm--html-insert-start-tag "<BR>")) 180 (hm--html-add-tags 'hm--html-insert-start-tag "<BR>"))
188 (defun hm--html-add-paragraph-separator () 207 (defun hm--html-add-paragraph-separator ()
189 "Adds the tag for a paragraph seperator." 208 "Adds the tag for a paragraph seperator."
190 (interactive) 209 (interactive)
191 (hm--html-add-tags 'hm--html-insert-start-tag "<P>")) 210 (hm--html-add-tags 'hm--html-insert-start-tag "<P>"))
192 211
193 (defun hm--html-add-doctype ()
194 "Adds the tag with the doctype."
195 (interactive)
196 (goto-char (point-min))
197 (hm--html-add-tags 'hm--html-insert-start-tag
198 (concat "<!DOCTYPE HTML PUBLIC \""
199 hm--html-html-doctype-version
200 "\">"))
201 (newline))
202
203 (defun hm--html-search-place-for-element-in-head (end-point)
204 "Searches the point for inserting an element between the head tags."
205 (let ((point (point)))
206 (if (and end-point (< (point) end-point))
207 (point)
208 (goto-char (point-min))
209 (if (re-search-forward
210 (concat ;"\\(<title\\)\\|\\(<head\\)\\|\\(<html\\)\\|"
211 "\\(<title\\)\\|"
212 "\\(<isindex\\)\\|\\(<base\\)\\|\\(<link\\)\\|"
213 "\\(<meta\\)")
214 end-point
215 t)
216 (beginning-of-line)
217 end-point))))
218
219 (defun hm--html-add-isindex (prompt)
220 "Inserts the isindex tag. PROMPT is the value of the prompt attribute."
221 (interactive "sPrompt: ")
222 (save-excursion
223 (let ((point (point))
224 (case-fold-search t)
225 (head-end-point))
226 (goto-char (point-min))
227 (setq head-end-point (when (re-search-forward
228 "\\(</head\\)\\|\\(<body\\)\\|\\(</html\\)")
229 (beginning-of-line)
230 (point)))
231 (goto-char (point-min))
232 (cond ((re-search-forward "<isindex[^>]*>" head-end-point t)
233 (delete-region (match-beginning 0) (match-end 0)))
234 (t (goto-char point)
235 (hm--html-search-place-for-element-in-head head-end-point)))
236 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
237 (concat "<ISINDEX "
238 (if (and prompt
239 (not (string= prompt "")))
240 (concat " PROMPT=\"" prompt "\">")
241 ">"))))))
242
243 (defun hm--html-add-base (href)
244 "Inserts the base tag. HREF is the value of the href attribute."
245 (interactive (list (hm--html-read-url "URL of this document: "
246 nil
247 nil
248 t
249 nil)))
250 (save-excursion
251 (let ((point (point))
252 (case-fold-search t)
253 (head-end-point))
254 (goto-char (point-min))
255 (setq head-end-point (when (re-search-forward
256 "\\(</head\\)\\|\\(<body\\)\\|\\(</html\\)")
257 (beginning-of-line)
258 (point)))
259 (goto-char (point-min))
260 (cond ((re-search-forward "<base[^>]*>" head-end-point t)
261 (delete-region (match-beginning 0) (match-end 0)))
262 (t (goto-char point)
263 (hm--html-search-place-for-element-in-head head-end-point)))
264 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
265 (concat "<BASE "
266 (if (and href
267 (not (string= href "")))
268 (concat " HREF=\"" href "\">")
269 ">"))))))
270
271 (defun hm--html-add-meta (name content &optional name-instead-of-http-equiv)
272 "Inserts the meta tag."
273 (interactive (list (completing-read "Name: " hm--html-meta-name-alist)
274 (read-string "Content: ")))
275 (save-excursion
276 (let ((point (point))
277 (case-fold-search t)
278 (head-end-point))
279 (goto-char (point-min))
280 (setq head-end-point (when (re-search-forward
281 "\\(</head\\)\\|\\(<body\\)\\|\\(</html\\)")
282 (beginning-of-line)
283 (point)))
284 (goto-char point)
285 (hm--html-search-place-for-element-in-head head-end-point)
286 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
287 (concat "<META "
288 (if name-instead-of-http-equiv
289 "NAME=\""
290 "HTTP-EQUIV=\"")
291 name
292 "\" CONTENT=\""
293 content
294 "\">")))))
295 212
296 213
297 ;;; Functions which include something in HTML- documents 214 ;;; Functions which include something in HTML- documents
298 215
299 (defvar hm--html-url-history-list nil 216 (defvar hm--html-url-history-list nil
344 "Function reads the value for the \"ALT\"- attribute in IMG tags. 261 "Function reads the value for the \"ALT\"- attribute in IMG tags.
345 URL will be used as the default URL for the external viewer." 262 URL will be used as the default URL for the external viewer."
346 (let ((alttype 263 (let ((alttype
347 (string-to-int 264 (string-to-int
348 (completing-read 265 (completing-read
266 ; "0: No ALT atribute, 1: ALT=\"\", 2: ALT=Text, 3: ALT=External Viewer: "
349 "0: No ALT atribute, 1: ALT=\"\", 2: ALT=Text: " 267 "0: No ALT atribute, 1: ALT=\"\", 2: ALT=Text: "
268 ; '(("0") ("1") ("2") ("3"))
350 '(("0") ("1") ("2")) 269 '(("0") ("1") ("2"))
351 nil 270 nil
352 t 271 t
353 "2")))) 272 "2"))))
354 (cond ((= alttype 0) nil) 273 (cond ((= alttype 0) nil)
358 (substring (file-name-nondirectory url) 277 (substring (file-name-nondirectory url)
359 0 278 0
360 (string-match 279 (string-match
361 "\\." 280 "\\."
362 (file-name-nondirectory url))))) 281 (file-name-nondirectory url)))))
282 ; ((= alttype 3) (concat "<A HREF=\""
283 ; url
284 ; "\">"
285 ; (file-name-nondirectory url)
286 ; "</A>"))
363 ))) 287 )))
364 288
365 (defun hm--html-read-alignment (prompt)
366 "Read the value for the align attribute."
367 (upcase (completing-read prompt
368 '(("left") ("right") ("top") ("bottom") ("middle"))
369 nil
370 t
371 "left")))
372
373 (defvar hm--html-shape-history nil
374 "History variable for reading the shape of an image map.")
375
376 (defun hm--html-read-shape ()
377 "Reads the shap for an area element."
378 (upcase(completing-read "The shape of the area: "
379 '(("rect") ("circle") ("poly"))
380 nil
381 t
382 (or (car hm--html-shape-history) "rect")
383 'hm--html-shape-history)))
384
385 (defun hm--html-read-rect-coords ()
386 "Reads rectangle coordinates for the area element."
387 (concat (read-string "Left x position of the rectangle: ") ", "
388 (read-string "Top y position of the rectangle: ") ", "
389 (read-string "Right x position of the rectangle: ") ", "
390 (read-string "Bottom y position of the rectangle: ")))
391
392 (defun hm--html-read-circle-coords ()
393 "Reads circle coordinates for the area element."
394 (concat (read-string "x position of the center of the circle: ") ", "
395 (read-string "y position of the center of the circle: ") ", "
396 (read-string "Radius: ")))
397
398 (defun hm--html-read-one-poly-coordinate (&optional empty-string-prompt)
399 "Reads one poly coordinate pair."
400 (let* ((x (read-string (concat "x coordinate"
401 (or empty-string-prompt "")
402 ": ")))
403 (y (unless (string= "" x)
404 (read-string "y coordinate: "))))
405 (if (string= "" x)
406 ""
407 (concat x ", " y))))
408
409 (defun hm--html-read-more-poly-coordinates ()
410 "Reads poly coordinates until an empty string is given."
411 (let ((coord (hm--html-read-one-poly-coordinate
412 " (Empty string for no further coords!)")))
413 (cond ((string= "" coord) "")
414 (t (concat ", " coord (hm--html-read-more-poly-coordinates))))))
415
416 (defun hm--html-read-poly-coords ()
417 "Reads poly coordinates for the area element."
418 (concat (hm--html-read-one-poly-coordinate) ", "
419 (hm--html-read-one-poly-coordinate) ", "
420 (hm--html-read-one-poly-coordinate)
421 (hm--html-read-more-poly-coordinates)))
422
423 (defun hm--html-add-area (href alt shape coords)
424 "Adds the tags for an area at the current point."
425 (interactive (let* ((href (hm--html-read-url "Url for the image area: "))
426 (alt (hm--html-read-altenate href))
427 (shape (hm--html-read-shape))
428 (coords (cond ((string= shape "RECT")
429 (hm--html-read-rect-coords))
430 ((string= shape "CIRCLE")
431 (hm--html-read-circle-coords))
432 ((string= shape "POLY")
433 (hm--html-read-poly-coords))
434 (t (error "No function to read \""
435 shape
436 "\" coordinates!")))))
437 (list href alt shape coords)))
438 (hm--html-add-tags 'hm--html-insert-end-tag-with-newline
439 (concat "<AREA"
440 " HREF=\"" href "\""
441 (if alt
442 (concat "\nALT=\"" alt "\"")
443 "")
444 "\nSHAPE=" shape
445 "\nCOORDS=\"" coords "\""
446 ">")))
447
448
449 (when (adapt-emacs19p)
450 (defvar :ask ':ask))
451
452 (defvar hm--html-use-image-as-map ':ask
453 "Internal variable of `hm--html-add-image'.
454 nil => insert the image element without an usemap attribute.
455 t => insert the image element with an usemap attribute.
456 :ask => ask, if the image element should have an usemap attribute.")
457
458 (defun hm--html-add-image (href alt alignment mapname)
459 "Add an image."
460 (interactive (let* ((href (hm--html-read-url "Image URL: "))
461 (alt (hm--html-read-altenate href))
462 (alignment (hm--html-read-alignment
463 "Alignment of the image: "))
464 (use-as-map (if (eq hm--html-use-image-as-map ':ask)
465 (y-or-n-p
466 "Use the image as a map with links? ")
467 hm--html-use-image-as-map))
468 (mapname (and use-as-map (hm--html-read-mapname))))
469 (list href alt alignment mapname)))
470 (hm--html-add-tags
471 'hm--html-insert-start-tag
472 (concat "<IMG ALIGN=" alignment
473 "\nHREF=\"" href "\""
474 (if alt
475 (concat "\nALT=\"" alt "\"")
476 "")
477 (if mapname
478 (concat "\nUSEMAP=\"#" mapname "\"")
479 "")
480 ">")))
481
482 289
483 (defun hm--html-add-image-bottom (href alt) 290 (defun hm--html-add-image-bottom (href alt)
484 "Add an image, bottom aligned." 291 "Add an image, bottom aligned."
485 (interactive (let ((url (hm--html-read-url "Image URL: "))) 292 (interactive (let ((url (hm--html-read-url "Image URL: ")))
486 (list url (hm--html-read-altenate url)))) 293 (list url (hm--html-read-altenate url))))
554 "\" VALUE=\"" 361 "\" VALUE=\""
555 value 362 value
556 "\">"))) 363 "\">")))
557 364
558 365
366 (defun hm--html-add-server-side-include-file (file)
367 "This function adds a server side include file directive in the buffer.
368 The directive is only supported by the NCSA http daemon."
369 (interactive "FInclude File: ")
370 (let ((start (point)))
371 (if (string= file "")
372 (error "ERROR: No filename specified !")
373 (insert "<INC SRV \"" file "\">"))))
374 ; (html-maybe-deemphasize-region (1+ start) (1- (point))))))
375
376
377 (defun hm--html-add-server-side-include-command-with-isindex-parameter
378 (command)
379 "This function adds a server side include command directive in the buffer.
380 The include command uses the \"isindex\"- parameter for the specified command."
381 (interactive (list
382 (completing-read "Include Command: "
383 hm--html-server-side-include-command-alist)))
384 (hm--html-add-server-side-include-command command t))
385
386
387 (defun hm--html-add-server-side-include-command (command &optional srvurl)
388 "This function adds a server side include command directive in the buffer.
389 The directive is only supported by the NCSA http daemon.
390 If SRVURL is t, then the attribute srvurl instead of srv is used for the
391 include command. With srvurl, the include command uses the \"isindex\"-
392 parameter for the specified command."
393 (interactive (list
394 (completing-read "Include Command: "
395 hm--html-server-side-include-command-alist)))
396 (let ((start (point))
397 (attribute (if srvurl "SRVURL" "SRV")))
398 (if (string= command "")
399 (error "ERROR: No command specified !")
400 (if (= ?| (string-to-char command))
401 (insert "<INC " attribute" \"" command "\">")
402 (insert "<INC " attribute " \"|" command "\">")))))
403 ; (html-maybe-deemphasize-region (1+ start) (1- (point)))))))
404
405
406 ;(defun hm--html-add-server-side-include-command-with-parameter (command
407 ; parameter)
408 ; "This function adds a server side include command directive in the buffer.
409 ;The directive is only supported by the NCSA http daemon."
410 ; (interactive (list
411 ; (completing-read
412 ; "Include Command: "
413 ; hm--html-server-side-include-command-with-parameter-alist)
414 ; (read-string "Parameterlist sepearted by '?': ")))
415 ; (let ((start (point)))
416 ; (if (string= command "")
417 ; (error "ERROR: No command specified !")
418 ; (if (string= parameter "")
419 ; (error "ERROR: No parameter specified !")
420 ; (if (= ?| (string-to-char command))
421 ; (if (= ?? (string-to-char parameter))
422 ; (insert "<INC SRVURL \"" command parameter "\">")
423 ; (insert "<INC SRVURL \"" command "?" parameter "\">"))
424 ; (if (= ?? (string-to-char parameter))
425 ; (insert "<INC SRVURL \"|" command parameter "\">")
426 ; (insert "<INC SRVURL \"|" command "?" parameter "\">")))
427 ; (html-maybe-deemphasize-region (1+ start) (1- (point)))))))
428
429
559 430
560 ;;; Functions, which adds tags of the form <starttag> ... </endtag> 431 ;;; Functions, which adds tags of the form <starttag> ... </endtag>
561 432
562 (defun hm--html-add-big () 433 (defun hm--html-add-big ()
563 "Adds the HTML tags for Big at the point in the current buffer." 434 "Adds the HTML tags for Big at the point in the current buffer."
824 "<!-- " 695 "<!-- "
825 'hm--html-insert-end-tag 696 'hm--html-insert-end-tag
826 " -->")) 697 " -->"))
827 698
828 699
829 (defun hm--html-add-document-division (alignment)
830 "Adds the HTML tags for document division at the current point."
831 (interactive (list (hm--html-read-alignment "Alignment of the division: ")))
832 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
833 (concat "<DIV ALIGN=\"" alignment "\">")
834 'hm--html-insert-end-tag-with-newline
835 "</DIV>"))
836
837
838 (defun hm--html-add-document-division-to-region (alignment)
839 "Adds the HTML tags for document division to the region."
840 (interactive (list (hm--html-read-alignment "Alignment of the division: ")))
841 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
842 (concat "<DIV ALIGN=\"" alignment "\">")
843 'hm--html-insert-end-tag-with-newline
844 "</DIV>"))
845
846 700
847 (defun hm--html-add-preformated () 701 (defun hm--html-add-preformated ()
848 "Adds the HTML tags for preformated text at the point in the current buffer." 702 "Adds the HTML tags for preformated text at the point in the current buffer."
849 (interactive) 703 (interactive)
850 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 704 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
860 "<PRE>" 714 "<PRE>"
861 'hm--html-insert-end-tag-with-newline 715 'hm--html-insert-end-tag-with-newline
862 "</PRE>")) 716 "</PRE>"))
863 717
864 718
719 (defun hm--html-add-plaintext ()
720 "Adds the HTML tags for plaintext."
721 (interactive)
722 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
723 "<XMP>"
724 'hm--html-insert-end-tag-with-newline
725 "</XMP>"))
726
727
728 (defun hm--html-add-plaintext-to-region ()
729 "Adds the HTML tags for plaintext to the region."
730 (interactive)
731 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
732 "<XMP>"
733 'hm--html-insert-end-tag-with-newline
734 "</XMP>"))
735
736
865 (defun hm--html-add-blockquote () 737 (defun hm--html-add-blockquote ()
866 "Adds the HTML tags for blockquote." 738 "Adds the HTML tags for blockquote."
867 (interactive) 739 (interactive)
868 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 740 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
869 "<BLOCKQUOTE>" 741 "<BLOCKQUOTE>"
877 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 749 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
878 "<BLOCKQUOTE>" 750 "<BLOCKQUOTE>"
879 'hm--html-insert-end-tag-with-newline 751 'hm--html-insert-end-tag-with-newline
880 "</BLOCKQUOTE>")) 752 "</BLOCKQUOTE>"))
881 753
882 (defun hm--html-add-script () 754 (defun hm--html-add-abstract ()
883 "Adds the HTML tags for script." 755 "Adds the HTML tags for abstract text at the point in the current buffer."
884 (interactive) 756 (interactive)
885 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 757 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
886 "<SCRIPT>" 758 "<ABSTRACT>"
887 'hm--html-insert-end-tag-with-newline 759 'hm--html-insert-end-tag-with-newline
888 "</SCRIPT>")) 760 "</ABSTRACT>"))
889 761
890 762
891 (defun hm--html-add-script-to-region () 763 (defun hm--html-add-abstract-to-region ()
892 "Adds the HTML tags for script to the region." 764 "Adds the HTML tags for abstract text to the region."
893 (interactive) 765 (interactive)
894 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 766 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
895 "<SCRIPT>" 767 "<ABSTRACT>"
896 'hm--html-insert-end-tag-with-newline 768 'hm--html-insert-end-tag-with-newline
897 "</SCRIPT>")) 769 "</ABSTRACT>"))
898 770
899 (defun hm--html-add-style () 771
900 "Adds the HTML tags for style."
901 (interactive)
902 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
903 "<STYLE>"
904 'hm--html-insert-end-tag-with-newline
905 "</STYLE>"))
906
907
908 (defun hm--html-add-style-to-region ()
909 "Adds the HTML tags for style to the region."
910 (interactive)
911 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
912 "<STYLE>"
913 'hm--html-insert-end-tag-with-newline
914 "</STYLE>"))
915 772
916 (defun hm--html-add-strikethru () 773 (defun hm--html-add-strikethru ()
917 "Adds the HTML tags for Strikethru at the point in the current buffer." 774 "Adds the HTML tags for Strikethru at the point in the current buffer."
918 (interactive) 775 (interactive)
919 (hm--html-add-tags 'hm--html-insert-start-tag 776 (hm--html-add-tags 'hm--html-insert-start-tag
920 "<STRIKE>" 777 "<S>"
921 'hm--html-insert-end-tag 778 'hm--html-insert-end-tag
922 "</STRIKE>")) 779 "</S>"))
923 780
924 781
925 (defun hm--html-add-strikethru-to-region () 782 (defun hm--html-add-strikethru-to-region ()
926 "Adds the HTML tags for Strikethru to the region." 783 "Adds the HTML tags for Strikethru to the region."
927 (interactive) 784 (interactive)
928 (hm--html-add-tags-to-region 'hm--html-insert-start-tag 785 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
929 "<STRIKE>" 786 "<S>"
930 'hm--html-insert-end-tag 787 'hm--html-insert-end-tag
931 "</STRIKE>")) 788 "</S>"))
932 789
933 790
934 (defun hm--html-add-superscript () 791 (defun hm--html-add-superscript ()
935 "Adds the HTML tags for Superscript at the point in the current buffer." 792 "Adds the HTML tags for Superscript at the point in the current buffer."
936 (interactive) 793 (interactive)
965 "<SUB>" 822 "<SUB>"
966 'hm--html-insert-end-tag 823 'hm--html-insert-end-tag
967 "</SUB>")) 824 "</SUB>"))
968 825
969 826
827 (defun hm--html-add-quote ()
828 "Adds the HTML tags for Quote at the point in the current buffer."
829 (interactive)
830 (hm--html-add-tags 'hm--html-insert-start-tag
831 "<Q>"
832 'hm--html-insert-end-tag
833 "</Q>"))
834
835
836 (defun hm--html-add-quote-to-region ()
837 "Adds the HTML tags for Quote to the region."
838 (interactive)
839 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
840 "<Q>"
841 'hm--html-insert-end-tag
842 "</Q>"))
843
844
845 (defun hm--html-add-person ()
846 "Adds the HTML tags for Person at the point in the current buffer."
847 (interactive)
848 (hm--html-add-tags 'hm--html-insert-start-tag
849 "<PERSON>"
850 'hm--html-insert-end-tag
851 "</PERSON>"))
852
853
854 (defun hm--html-add-person-to-region ()
855 "Adds the HTML tags for Person to the region."
856 (interactive)
857 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
858 "<PERSON>"
859 'hm--html-insert-end-tag
860 "</PERSON>"))
861
862
863 (defun hm--html-add-instance ()
864 "Adds the HTML tags for Instance at the point in the current buffer."
865 (interactive)
866 (hm--html-add-tags 'hm--html-insert-start-tag
867 "<INS>"
868 'hm--html-insert-end-tag
869 "</INS>"))
870
871
872 (defun hm--html-add-instance-to-region ()
873 "Adds the HTML tags for Instance to the region."
874 (interactive)
875 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
876 "<INS>"
877 'hm--html-insert-end-tag
878 "</INS>"))
879
880
970 (defun hm--html-add-option () 881 (defun hm--html-add-option ()
971 "Adds the HTML tags for Option at the point in the current buffer." 882 "Adds the HTML tags for Option at the point in the current buffer."
972 (interactive) 883 (interactive)
973 (hm--html-add-tags 'hm--html-insert-start-tag 884 (hm--html-add-tags 'hm--html-insert-start-tag
974 "<OPT>" 885 "<OPT>"
983 "<OPT>" 894 "<OPT>"
984 'hm--html-insert-end-tag 895 'hm--html-insert-end-tag
985 "</OPT>")) 896 "</OPT>"))
986 897
987 898
988 (defun hm--html-read-font-size (&optional only-absolute-size) 899 (defun hm--html-add-publication ()
989 "Reads the size for the FONT element. 900 "Adds the HTML tags for Publication at the point in the current buffer."
990 It returns nil, if the size should not be changed." 901 (interactive)
991 (let ((size 902 (hm--html-add-tags 'hm--html-insert-start-tag
992 (if only-absolute-size 903 "<PUB>"
993 (completing-read "The absolute font size (1 .. 7): " 904 'hm--html-insert-end-tag
994 '(("7") ("6") ("5") ("4") ("3") ("2") ("1")) 905 "</PUB>"))
995 nil 906
996 t 907
997 "4") 908 (defun hm--html-add-publication-to-region ()
998 (completing-read "The relative (+/-) or absolute font size: " 909 "Adds the HTML tags for Publication to the region."
999 '(("-7") ("-6") ("-5") ("-4") ("-3") ("-2") ("-1") 910 (interactive)
1000 ("+7") ("+6") ("+5") ("+4") ("+3") ("+2") ("+1") 911 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1001 ("7") ("6") ("5") ("4") ("3") ("2") ("1") 912 "<PUB>"
1002 ("use-basefont")) 913 'hm--html-insert-end-tag
1003 nil 914 "</PUB>"))
1004 t 915
1005 "use-basefont-size")))) 916
1006 (if (string= size "use-basefont-size") 917 (defun hm--html-add-author ()
1007 nil 918 "Adds the HTML tags for Author at the point in the current buffer."
1008 size))) 919 (interactive)
1009 920 (hm--html-add-tags 'hm--html-insert-start-tag
1010 (defun hm--html-read-font-color () 921 "<AUTHOR>"
1011 "Reads the size for the FONT element. 922 'hm--html-insert-end-tag
1012 It returns nil, if the color should not be changed." 923 "</AUTHOR>"))
1013 (let ((color 924
1014 (completing-read "The font color: " 925
1015 '(("Black") ("Silver") ("Gray") ("White") ("Maroon") 926 (defun hm--html-add-author-to-region ()
1016 ("Green") ("Lime") ("Olive") ("Yellow") ("Navy") 927 "Adds the HTML tags for Author to the region."
1017 ("Red") ("Purple") ("Fuchsia") ("Blue") ("Teal") 928 (interactive)
1018 ("Aqua") ("dont-set-color")) 929 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1019 nil 930 "<AUTHOR>"
1020 nil 931 'hm--html-insert-end-tag
1021 "dont-set-color"))) 932 "</AUTHOR>"))
1022 (if (string= color "dont-set-color") 933
1023 nil 934
1024 color))) 935 (defun hm--html-add-editor ()
1025 936 "Adds the HTML tags for Editor at the point in the current buffer."
1026 937 (interactive)
1027 (defun hm--html-add-font (size color) 938 (hm--html-add-tags 'hm--html-insert-start-tag
1028 "Adds the HTML tags for Font at the point in the current buffer." 939 "<EDITOR>"
1029 (interactive (list (hm--html-read-font-size) 940 'hm--html-insert-end-tag
1030 (hm--html-read-font-color))) 941 "</EDITOR>"))
942
943
944 (defun hm--html-add-editor-to-region ()
945 "Adds the HTML tags for Editor to the region."
946 (interactive)
947 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
948 "<EDITOR>"
949 'hm--html-insert-end-tag
950 "</EDITOR>"))
951
952
953 (defun hm--html-add-credits ()
954 "Adds the HTML tags for Credits at the point in the current buffer."
955 (interactive)
956 (hm--html-add-tags 'hm--html-insert-start-tag
957 "<CREDITS>"
958 'hm--html-insert-end-tag
959 "</CREDITS>"))
960
961
962 (defun hm--html-add-credits-to-region ()
963 "Adds the HTML tags for Credits to the region."
964 (interactive)
965 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
966 "<CREDITS>"
967 'hm--html-insert-end-tag
968 "</CREDITS>"))
969
970
971 (defun hm--html-add-copyright ()
972 "Adds the HTML tags for Copyright at the point in the current buffer."
973 (interactive)
974 (hm--html-add-tags 'hm--html-insert-start-tag
975 "<COPYRIGHT>"
976 'hm--html-insert-end-tag
977 "</COPYRIGHT>"))
978
979
980 (defun hm--html-add-copyright-to-region ()
981 "Adds the HTML tags for Copyright to the region."
982 (interactive)
983 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
984 "<COPYRIGHT>"
985 'hm--html-insert-end-tag
986 "</COPYRIGHT>"))
987
988
989 (defun hm--html-add-isbn ()
990 "Adds the HTML tags for ISBN at the point in the current buffer."
991 (interactive)
992 (hm--html-add-tags 'hm--html-insert-start-tag
993 "<ISBN>"
994 'hm--html-insert-end-tag
995 "</ISBN>"))
996
997
998 (defun hm--html-add-isbn-to-region ()
999 "Adds the HTML tags for ISBN to the region."
1000 (interactive)
1001 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1002 "<ISBN>"
1003 'hm--html-insert-end-tag
1004 "</ISBN>"))
1005
1006
1007 (defun hm--html-add-acronym ()
1008 "Adds the HTML tags for Acronym at the point in the current buffer."
1009 (interactive)
1010 (hm--html-add-tags 'hm--html-insert-start-tag
1011 "<ACRONYM>"
1012 'hm--html-insert-end-tag
1013 "</ACRONYM>"))
1014
1015
1016 (defun hm--html-add-acronym-to-region ()
1017 "Adds the HTML tags for Acronym to the region."
1018 (interactive)
1019 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1020 "<ACRONYM>"
1021 'hm--html-insert-end-tag
1022 "</ACRONYM>"))
1023
1024
1025 (defun hm--html-add-abbrevation ()
1026 "Adds the HTML tags for Abbrevation at the point in the current buffer."
1027 (interactive)
1028 (hm--html-add-tags 'hm--html-insert-start-tag
1029 "<ABBREV>"
1030 'hm--html-insert-end-tag
1031 "</ABBREV>"))
1032
1033
1034 (defun hm--html-add-abbrev-to-region ()
1035 "Adds the HTML tags for Abbrev to the region."
1036 (interactive)
1037 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1038 "<ABBREV>"
1039 'hm--html-insert-end-tag
1040 "</ABBREV>"))
1041
1042
1043 (defun hm--html-add-command ()
1044 "Adds the HTML tags for Command at the point in the current buffer."
1045 (interactive)
1046 (hm--html-add-tags 'hm--html-insert-start-tag
1047 "<CMD>"
1048 'hm--html-insert-end-tag
1049 "</CMD>"))
1050
1051
1052 (defun hm--html-add-command-to-region ()
1053 "Adds the HTML tags for Command to the region."
1054 (interactive)
1055 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1056 "<CMD>"
1057 'hm--html-insert-end-tag
1058 "</CMD>"))
1059
1060
1061 (defun hm--html-add-argument ()
1062 "Adds the HTML tags for Argument at the point in the current buffer."
1063 (interactive)
1064 (hm--html-add-tags 'hm--html-insert-start-tag
1065 "<ARG>"
1066 'hm--html-insert-end-tag
1067 "</ARG>"))
1068
1069
1070 (defun hm--html-add-argument-to-region ()
1071 "Adds the HTML tags for Argument to the region."
1072 (interactive)
1073 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1074 "<ARG>"
1075 'hm--html-insert-end-tag
1076 "</ARG>"))
1077
1078
1079 (defun hm--html-add-literature ()
1080 "Adds the HTML tags for Literature at the point in the current buffer."
1081 (interactive)
1082 (hm--html-add-tags 'hm--html-insert-start-tag
1083 "<LIT>"
1084 'hm--html-insert-end-tag
1085 "</LIT>"))
1086
1087
1088 (defun hm--html-add-literature-to-region ()
1089 "Adds the HTML tags for Literature to the region."
1090 (interactive)
1091 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1092 "<LIT>"
1093 'hm--html-insert-end-tag
1094 "</LIT>"))
1095
1096
1097 (defun hm--html-add-footnote ()
1098 "Adds the HTML tags for Footnote at the point in the current buffer."
1099 (interactive)
1100 (hm--html-add-tags 'hm--html-insert-start-tag
1101 "<FOOTNOTE>"
1102 'hm--html-insert-end-tag
1103 "</FOOTNOTE>"))
1104
1105
1106 (defun hm--html-add-footnote-to-region ()
1107 "Adds the HTML tags for Footnote to the region."
1108 (interactive)
1109 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1110 "<FOOTNOTE>"
1111 'hm--html-insert-end-tag
1112 "</FOOTNOTE>"))
1113
1114
1115 (defun hm--html-add-margin ()
1116 "Adds the HTML tags for Margin at the point in the current buffer."
1117 (interactive)
1118 (hm--html-add-tags 'hm--html-insert-start-tag
1119 "<MARGIN>"
1120 'hm--html-insert-end-tag
1121 "</MARGIN>"))
1122
1123
1124 (defun hm--html-add-margin-to-region ()
1125 "Adds the HTML tags for Margin to the region."
1126 (interactive)
1127 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
1128 "<MARGIN>"
1129 'hm--html-insert-end-tag
1130 "</MARGIN>"))
1131
1132
1133
1134
1135
1136 ;;; Lists
1137
1138
1139 (defun hm--html-add-listing ()
1140 "Adds the HTML tags for listing."
1141 (interactive)
1031 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1142 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1032 (concat "<FONT" 1143 "<LISTING>"
1033 (if size
1034 (concat " SIZE=" size)
1035 "")
1036 (if color
1037 (concat " COLOR=" color)
1038 "")
1039 ">")
1040 'hm--html-insert-end-tag-with-newline 1144 'hm--html-insert-end-tag-with-newline
1041 "</FONT>")) 1145 "</LISTING>"))
1042 1146
1043 1147
1044 (defun hm--html-add-font-to-region (size color) 1148 (defun hm--html-add-listing-to-region ()
1045 "Adds the HTML tags for Font to the region." 1149 "Adds the HTML tags for listing to the region."
1046 (interactive (list (hm--html-read-font-size) 1150 (interactive)
1047 (hm--html-read-font-color)))
1048 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 1151 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1049 (concat "<FONT" 1152 "<LISTING>"
1050 (if size
1051 (concat " SIZE=" size)
1052 "")
1053 (if color
1054 (concat " COLOR=" color)
1055 "")
1056 ">")
1057 'hm--html-insert-end-tag-with-newline 1153 'hm--html-insert-end-tag-with-newline
1058 "</FONT>")) 1154 "</LISTING>"))
1059
1060
1061 ;;; Lists
1062
1063 1155
1064 (defun hm--html-add-center () 1156 (defun hm--html-add-center ()
1065 "Adds the HTML tags for center at the current point." 1157 "Adds the HTML tags for center at the current point."
1066 (interactive) 1158 (interactive)
1067 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1159 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1074 (interactive) 1166 (interactive)
1075 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 1167 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1076 "<CENTER>" 1168 "<CENTER>"
1077 'hm--html-insert-end-tag-with-newline 1169 'hm--html-insert-end-tag-with-newline
1078 "</CENTER>")) 1170 "</CENTER>"))
1079
1080
1081 (defvar hm--html-mapname-history nil
1082 "The history variable for the function `hm--html-read-mapname'.")
1083
1084 (defun hm--html-read-mapname ()
1085 "Reads the name of an image map."
1086 (let ((name (read-string "The name of the image map: "
1087 (or (car hm--html-mapname-history)
1088 "map")
1089 'hm--html-mapname-history)))
1090 name))
1091
1092 (defun hm--html-add-image-map ()
1093 "Adds an image and a map element."
1094 (interactive)
1095 (let* ((href (hm--html-read-url "Image URL: "))
1096 (alt (hm--html-read-altenate href))
1097 (alignment (hm--html-read-alignment
1098 "Alignment of the image: "))
1099 (mapname (hm--html-read-mapname)))
1100 (hm--html-add-image href alt alignment mapname)
1101 (newline)
1102 (hm--html-add-map mapname)
1103 (call-interactively 'hm--html-add-area)))
1104
1105 (defun hm--html-add-map (name)
1106 "Adds the HTML tags for map at the current point."
1107 (interactive (list (hm--html-read-mapname)))
1108 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1109 (concat "<MAP NAME=\"" name "\">")
1110 'hm--html-insert-end-tag
1111 "</MAP>")
1112 (end-of-line 0))
1113
1114 (defun hm--html-add-map-to-region (name)
1115 "Adds the HTML tags for map to the region."
1116 (interactive (list (hm--html-read-mapname)))
1117 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1118 (concat "<MAP NAME=\"" name "\">")
1119 'hm--html-insert-end-tag-with-newline
1120 "</MAP>"))
1121
1122 1171
1123 (defun hm--html-add-numberlist () 1172 (defun hm--html-add-numberlist ()
1124 "Adds the HTML tags for a numbered list at the point in the current buffer." 1173 "Adds the HTML tags for a numbered list at the point in the current buffer."
1125 (interactive) 1174 (interactive)
1126 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1175 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1127 "<OL>" 1176 "<OL>"
1128 'hm--html-insert-end-tag-with-newline 1177 'hm--html-insert-end-tag-with-newline
1129 "</OL>" 1178 "</OL>"
1130 'hm--html-insert-start-tag 1179 'hm--html-insert-start-tag
1131 "<LI> " 1180 "<LI> "))
1132 'hm--html-insert-end-tag
1133 " </LI>"))
1134 1181
1135 (defun hm--html-add-numberlist-to-region () 1182 (defun hm--html-add-numberlist-to-region ()
1136 "Adds the HTML tags for a numbered list to the region." 1183 "Adds the HTML tags for a numbered list to the region."
1137 (interactive) 1184 (interactive)
1138 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 1185 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1139 "<OL>" 1186 "<OL>"
1140 'hm--html-insert-end-tag-with-newline 1187 'hm--html-insert-end-tag-with-newline
1141 "</OL>")) 1188 "</OL>"
1189 'hm--html-insert-start-tag
1190 "<LI> "))
1142 1191
1143 1192
1144 (defun hm--html-add-directory-list () 1193 (defun hm--html-add-directory-list ()
1145 "Adds the HTML tags for a directory list at the point in the current buffer." 1194 "Adds the HTML tags for a directory list at the point in the current buffer."
1146 (interactive) 1195 (interactive)
1147 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1196 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1148 "<DIR>" 1197 "<DIR>"
1149 'hm--html-insert-end-tag-with-newline 1198 'hm--html-insert-end-tag-with-newline
1150 "</DIR>" 1199 "</DIR>"
1151 'hm--html-insert-start-tag 1200 'hm--html-insert-start-tag
1152 "<LI> " 1201 "<LI> "))
1153 'hm--html-insert-end-tag
1154 " </LI>"))
1155 1202
1156 (defun hm--html-add-directorylist-to-region () 1203 (defun hm--html-add-directorylist-to-region ()
1157 "Adds the HTML tags for a directory list to the region." 1204 "Adds the HTML tags for a directory list to the region."
1158 (interactive) 1205 (interactive)
1159 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 1206 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1160 "<DIR>" 1207 "<DIR>"
1161 'hm--html-insert-end-tag-with-newline 1208 'hm--html-insert-end-tag-with-newline
1162 "</DIR>")) 1209 "</DIR>"
1210 'hm--html-insert-start-tag
1211 "<LI> "))
1163 1212
1164 1213
1165 (defun hm--html-add-list () 1214 (defun hm--html-add-list ()
1166 "Adds the HTML tags for a (unnumbered) list to the region." 1215 "Adds the HTML tags for a (unnumbered) list to the region."
1167 (interactive) 1216 (interactive)
1168 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1217 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1169 "<UL>" 1218 "<UL>"
1170 'hm--html-insert-end-tag-with-newline 1219 'hm--html-insert-end-tag-with-newline
1171 "</UL>" 1220 "</UL>"
1172 'hm--html-insert-start-tag 1221 'hm--html-insert-start-tag
1173 "<LI> " 1222 "<LI> "))
1174 'hm--html-insert-end-tag
1175 " </LI>"))
1176 1223
1177 1224
1178 (defun hm--html-add-list-to-region () 1225 (defun hm--html-add-list-to-region ()
1179 "Adds the HTML tags for a (unnumbered) list to the region." 1226 "Adds the HTML tags for a (unnumbered) list to the region."
1180 (interactive) 1227 (interactive)
1181 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 1228 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1182 "<UL>" 1229 "<UL>"
1183 'hm--html-insert-end-tag-with-newline 1230 'hm--html-insert-end-tag-with-newline
1184 "</UL>")) 1231 "</UL>"
1232 'hm--html-insert-start-tag
1233 "<LI> "))
1234
1235
1236 (defun hm--html-add-menu ()
1237 "Adds the HTML tags for a menu."
1238 (interactive)
1239 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1240 "<MENU>"
1241 'hm--html-insert-end-tag-with-newline
1242 "</MENU>"
1243 'hm--html-insert-start-tag
1244 "<LI> "))
1185 1245
1186 1246
1187 (defun hm--html-add-menu () 1247 (defun hm--html-add-menu ()
1188 "Adds the HTML tags for a menu." 1248 "Adds the HTML tags for a menu."
1189 (interactive) 1249 (interactive)
1203 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 1263 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1204 "<MENU>" 1264 "<MENU>"
1205 'hm--html-insert-end-tag-with-newline 1265 'hm--html-insert-end-tag-with-newline
1206 "</MENU>")) 1266 "</MENU>"))
1207 1267
1268 ; 'hm--html-insert-start-tag
1269 ; "<LI> "))
1270
1208 1271
1209 (defun hm--html-add-description-title-and-entry () 1272 (defun hm--html-add-description-title-and-entry ()
1210 "Adds a definition title and entry. 1273 "Adds a definition title and entry.
1211 Assumes we're at the end of a previous entry." 1274 Assumes we're at the end of a previous entry."
1212 (interactive) 1275 (interactive)
1213 (hm--html-add-description-title) 1276 (hm--html-add-description-title)
1214 (let ((position (point)) 1277 (let ((position (point)))
1215 (case-fold-search t)) 1278 (search-forward "</DT>")
1216 (search-forward "</dt>") 1279 (hm--html-add-only-description-entry)
1217 (hm--html-add-description-entry)
1218 (goto-char position))) 1280 (goto-char position)))
1219 1281
1220 1282
1221 (defun hm--html-add-description-list () 1283 (defun hm--html-add-description-list ()
1222 "Adds the HTML tags for a description list. 1284 "Adds the HTML tags for a description list.
1238 (interactive) 1300 (interactive)
1239 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline 1301 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline
1240 "<DL>" 1302 "<DL>"
1241 'hm--html-insert-end-tag-with-newline 1303 'hm--html-insert-end-tag-with-newline
1242 "</DL>")) 1304 "</DL>"))
1305
1306 ; 'hm--html-insert-start-tag
1307 ; "<DT> "))
1243 1308
1244 1309
1245 (defun hm--html-add-description-title () 1310 (defun hm--html-add-description-title ()
1246 "Adds the HTML tags for a description title at current point in the buffer." 1311 "Adds the HTML tags for a description title at current point in the buffer."
1247 (interactive) 1312 (interactive)
1300 1365
1301 1366
1302 (defun hm--html-make-signature-link-string (signature-file-name) 1367 (defun hm--html-make-signature-link-string (signature-file-name)
1303 "Returns a string which is a link to a signature file." 1368 "Returns a string which is a link to a signature file."
1304 (concat 1369 (concat
1305 "<A NAME=\"" 1370 "<A Name="
1306 hm--html-signature-reference-name 1371 hm--html-signature-reference-name
1307 "\"\nHREF=\"" 1372 " HREF=\""
1308 signature-file-name 1373 signature-file-name
1309 "\">")) 1374 "\">"))
1310 1375
1311 1376
1312 (defun hm--html-delete-old-signature () 1377 (defun hm--html-delete-old-signature ()
1313 "Searches for the old signature and deletes it, if the user want it" 1378 "Searches for the old signature and deletes it, if the user want it"
1314 (save-excursion 1379 (save-excursion
1315 (goto-char (point-min)) 1380 (goto-char (point-min))
1316 (let ((case-fold-search t)) 1381 (if (search-forward (concat "<address> "
1317 (if (re-search-forward (concat "<address>[ \t\n]*" 1382 "<a name="
1318 "<a[ \t\n]+name=[ \t\n]*\"?" 1383 hm--html-signature-reference-name
1319 hm--html-signature-reference-name 1384 " href=\"")
1320 "\"?[ \t\n]+href=[ \t\n]*\"") 1385 nil
1321 nil 1386 t)
1322 t) 1387 (let ((signature-start (match-beginning 0))
1323 (let ((signature-start (match-beginning 0)) 1388 (signature-end (progn
1324 (signature-end (progn 1389 (search-forward "</address>" nil t)
1325 (re-search-forward "</address>[ \t]*[\n]?" 1390 (point))))
1326 nil 1391 (if (yes-or-no-p "Delete the old signature (yes or no) ?")
1327 t) 1392 (delete-region signature-start signature-end))))))
1328 (point))))
1329 (when (yes-or-no-p "Delete the old signature (yes or no) ?")
1330 (delete-region signature-start signature-end)
1331 (hm--html-indent-line)))))))
1332 1393
1333 1394
1334 (defun hm--html-set-point-for-signature () 1395 (defun hm--html-set-point-for-signature ()
1335 "Searches and sets the point for inserting the signature. 1396 "Searches and sets the point for inserting the signature.
1336 It searches from the end to the beginning of the file. At first it 1397 It searches from the end to the beginning of the file. At first it
1337 tries to use the point before the </body> tag then the point before 1398 tries to use the point before the </body> tag then the point before
1338 the </html> tag and the the end of the file." 1399 the </html> tag and the the end of the file."
1339 (goto-char (point-max)) 1400 (goto-char (point-max))
1340 (let ((case-fold-search t)) 1401 (cond ((search-backward "</body>" nil t)
1341 (cond ((search-backward "</body>" nil t) 1402 (end-of-line 0)
1342 (end-of-line 0) 1403 (if (> (current-column) 0)
1343 (if (> (current-column) 0) 1404 (newline 2)))
1344 (newline 1))) 1405 ((search-backward "</html>" nil t)
1345 ((search-backward "</html>" nil t) 1406 (end-of-line 0)
1346 (end-of-line 0) 1407 (if (> (current-column) 0)
1347 (if (> (current-column) 0) 1408 (newline 2)))
1348 (newline 2))) 1409 ((> (current-column) 0)
1349 ((> (current-column) 0) 1410 (newline 2))
1350 (newline 2)) 1411 (t)))
1351 (t))))
1352 1412
1353 1413
1354 (defun hm--html-add-signature () 1414 (defun hm--html-add-signature ()
1355 "Adds the owner's signature at the end of the buffer." 1415 "Adds the owner's signature at the end of the buffer."
1356 (interactive) 1416 (interactive)
1359 (if (not hm--html-username) 1419 (if (not hm--html-username)
1360 (setq hm--html-username (user-full-name))) 1420 (setq hm--html-username (user-full-name)))
1361 (save-excursion 1421 (save-excursion
1362 (hm--html-delete-old-signature) 1422 (hm--html-delete-old-signature)
1363 (hm--html-set-point-for-signature) 1423 (hm--html-set-point-for-signature)
1364 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1424 (hm--html-add-tags 'hm--html-insert-start-tag
1365 "<ADDRESS>" 1425 "<ADDRESS> "
1366 'hm--html-insert-end-tag 1426 'hm--html-insert-end-tag
1367 "</A>\n</ADDRESS>" 1427 "</A></ADDRESS>"
1368 'hm--html-insert-start-tag 1428 'hm--html-insert-start-tag
1369 (hm--html-make-signature-link-string 1429 (hm--html-make-signature-link-string
1370 hm--html-signature-file) 1430 hm--html-signature-file)
1371 ) 1431 )
1372 (insert hm--html-username))) 1432 (insert hm--html-username)))
1405 position after the tag. If not, the function next searches for the 1465 position after the tag. If not, the function next searches for the
1406 tag <HEAD> and sets the point after the tag, if it exists, or searches for 1466 tag <HEAD> and sets the point after the tag, if it exists, or searches for
1407 the tag <HTML>. If this tag exists, the point is set to the position after 1467 the tag <HTML>. If this tag exists, the point is set to the position after
1408 this tag or the beginning of the file otherwise." 1468 this tag or the beginning of the file otherwise."
1409 (goto-char (point-min)) 1469 (goto-char (point-min))
1410 (let ((case-fold-search t)) 1470 (cond ((search-forward-regexp "<isindex>" nil t) (newline))
1411 (cond ((search-forward-regexp "<isindex[^>]*>" nil t) (newline)) 1471 ((search-forward-regexp "<head>" nil t) (newline))
1412 ((search-forward-regexp "<head[^>]*>" nil t) (newline)) 1472 ((search-forward-regexp "<html>" nil t) (newline))
1413 ((search-forward-regexp "<html[^>]*>" nil t) (newline)) 1473 (t)))
1414 (t))))
1415 1474
1416 1475
1417 (defun hm--html-add-title (title) 1476 (defun hm--html-add-title (title)
1418 "Adds the HTML tags for a title at the beginning of the buffer." 1477 "Adds the HTML tags for a title at the beginning of the buffer."
1419 (interactive "sTitle: ") 1478 (interactive "sTitle: ")
1420 (save-excursion 1479 (save-excursion
1421 (goto-char (point-min)) 1480 (goto-char (point-min))
1422 (let ((case-fold-search t)) 1481 (if (search-forward "<title>" nil t)
1423 (if (search-forward "<title>" nil t) 1482 (let ((point-after-start-tag (point)))
1424 (let ((point-after-start-tag (point))) 1483 (if (not (search-forward "</title>" nil t))
1425 (if (not (search-forward "</title>" nil t)) 1484 nil
1426 nil 1485 (goto-char (- (point) 8))
1427 (goto-char (- (point) 8)) 1486 (delete-backward-char (- (point) point-after-start-tag))
1428 (delete-backward-char (- (point) point-after-start-tag)) 1487 (let ((start (point)))
1429 (let ((start (point))) 1488 (insert title " (" (hm--date) ")")
1430 (insert title " (" (hm--date) ")") 1489 (goto-char start))))
1431 (goto-char start)))) 1490 ;; Noch kein <TITLE> im Buffer vorhanden
1432 ;; Noch kein <TITLE> im Buffer vorhanden 1491 (hm--html-set-point-for-title)
1433 (hm--html-set-point-for-title) 1492 (hm--html-add-tags 'hm--html-insert-start-tag
1434 (hm--html-add-tags 'hm--html-insert-start-tag 1493 "<TITLE>"
1435 "<TITLE>" 1494 'hm--html-insert-end-tag
1436 'hm--html-insert-end-tag 1495 "</TITLE>"
1437 "</TITLE>" 1496 'insert
1438 'insert 1497 (concat title " (" (hm--date) ")"))
1439 (concat title " (" (hm--date) ")")) 1498 (forward-char 8)
1440 (forward-char 8) 1499 (newline 1)
1441 (newline 1) 1500 )))
1442 ))))
1443 1501
1444 1502
1445 (defun hm--html-add-title-to-region () 1503 (defun hm--html-add-title-to-region ()
1446 "Adds the HTML tags for a title to the region." 1504 "Adds the HTML tags for a title to the region."
1447 (interactive) 1505 (interactive)
1448 (let ((title (buffer-substring (region-beginning) (region-end))) 1506 (let ((title (buffer-substring (region-beginning) (region-end))))
1449 (case-fold-search t))
1450 (save-excursion 1507 (save-excursion
1451 (goto-char (point-min)) 1508 (goto-char (point-min))
1452 (if (search-forward "<title>" nil t) 1509 (if (search-forward "<title>" nil t)
1453 (let ((point-after-start-tag (point))) 1510 (let ((point-after-start-tag (point)))
1454 (if (not (search-forward "</title>" nil t)) 1511 (if (not (search-forward "</title>" nil t))
1469 )))) 1526 ))))
1470 1527
1471 1528
1472 (defun hm--html-add-html () 1529 (defun hm--html-add-html ()
1473 "Adds the HTML tags <HTML> and </HTML> in the buffer. 1530 "Adds the HTML tags <HTML> and </HTML> in the buffer.
1474 The tag <HTML> will be inserted at the beginning (after the 1531 The tag <HTML> will be inserted at the beginning and </HTML> at the
1475 <!DOCTYPE ...>, if it is already there.) and </HTML> at the
1476 end of the file." 1532 end of the file."
1477 (interactive) 1533 (interactive)
1478 (let ((new-cursor-position nil) 1534 (let ((new-cursor-position nil))
1479 (case-fold-search t))
1480 (save-excursion 1535 (save-excursion
1481 (goto-char (point-min)) 1536 (goto-char (point-min))
1482 (if (search-forward "<html>" nil t) 1537 (if (search-forward "<html>" nil t)
1483 (error "There is an old tag <HTML> in the current buffer !") 1538 (error "There is an old tag <HTML> in the current buffer !")
1484 (re-search-forward "<!DOCTYPE[^>]*>[ \t\n]*" nil t)
1485 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<HTML>") 1539 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<HTML>")
1486 ; (newline 1) 1540 ; (newline 1)
1487 ) 1541 )
1488 (setq new-cursor-position (point)) 1542 (setq new-cursor-position (point))
1489 (goto-char (point-max)) 1543 (goto-char (point-max))
1494 (goto-char new-cursor-position))) 1548 (goto-char new-cursor-position)))
1495 1549
1496 1550
1497 (defun hm--html-add-head () 1551 (defun hm--html-add-head ()
1498 "Adds the HTML tags <HEAD> and </HEAD> in the buffer. 1552 "Adds the HTML tags <HEAD> and </HEAD> in the buffer.
1499 The tags will be inserted after <HTML> or at the beginning 1553 The tags will be inserted after <HTML> or at the beginning of the file.
1500 of the file after <DOCTYPE...> (if it is already there).
1501 The function also looks for the tags <BODY> and </TITLE>." 1554 The function also looks for the tags <BODY> and </TITLE>."
1502 (interactive) 1555 (interactive)
1503 (let ((case-fold-search t))
1504 (goto-char (point-min)) 1556 (goto-char (point-min))
1505 (re-search-forward "<!DOCTYPE[^>]*>[ \t\n]*" nil t)
1506 (if (search-forward "<html>" nil t) 1557 (if (search-forward "<html>" nil t)
1507 (if (search-forward "<head>" nil t) 1558 (if (search-forward "<head>" nil t)
1508 (error "There is an old tag <HEAD> in the current buffer !") 1559 (error "There is an old tag <HEAD> in the current buffer !")
1509 (if (search-forward "</head>" nil t) 1560 (if (search-forward "</head>" nil t)
1510 (error "There is an old tag </HEAD> in the current buffer !") 1561 (error "There is an old tag </HEAD> in the current buffer !")
1533 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1584 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1534 "<HEAD>")) 1585 "<HEAD>"))
1535 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1586 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1536 "<HEAD>" 1587 "<HEAD>"
1537 'hm--html-insert-end-tag-with-newline 1588 'hm--html-insert-end-tag-with-newline
1538 "</HEAD>")))))) 1589 "</HEAD>")))))
1539 1590
1540 1591
1541 (defun hm--html-add-head-to-region () 1592 (defun hm--html-add-head-to-region ()
1542 "Adds the HTML tags <HEAD> and </HEAD> to the region." 1593 "Adds the HTML tags <HEAD> and </HEAD> to the region."
1543 (interactive) 1594 (interactive)
1549 1600
1550 (defun hm--html-add-body () 1601 (defun hm--html-add-body ()
1551 "Adds the HTML tags <BODY> and </BODY> in the buffer. 1602 "Adds the HTML tags <BODY> and </BODY> in the buffer.
1552 The tags will be inserted before </HTML> or at the end of the file." 1603 The tags will be inserted before </HTML> or at the end of the file."
1553 (interactive) 1604 (interactive)
1554 (let ((case-fold-search t))
1555 (goto-char (point-max)) 1605 (goto-char (point-max))
1556 (if (search-backward "</html>" nil t) 1606 (if (search-backward "</html>" nil t)
1557 (progn 1607 (progn
1558 (if (search-backward "</body>" nil t) 1608 (if (search-backward "</body>" nil t)
1559 (error "There is an old tag </BODY> in the current buffer !") 1609 (error "There is an old tag </BODY> in the current buffer !")
1560 (if (search-backward "<body>" nil t) 1610 (if (search-backward "<body>" nil t)
1561 (error "There is an old tag <BODY> in the current buffer !"))) 1611 (error "There is an old tag <BODY> in the current buffer !")))
1562 (forward-char -1))) 1612 (forward-char -1)))
1563 (let ((end-tag-position (set-marker (make-marker) (point)))) 1613 (let ((end-tag-position (point)))
1564 (if (search-backward "</head>" nil t) 1614 (if (search-backward "</head>" nil t)
1565 (progn 1615 (progn
1566 (forward-char 7) 1616 (forward-char 7)
1567 (newline 1) 1617 (newline 1)
1568 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline 1618 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline
1569 "<BODY>") 1619 "<BODY>")
1570 (let ((cursor-position (point))) 1620 (let ((cursor-position (point)))
1571 (goto-char end-tag-position) 1621 (goto-char (+ end-tag-position 8))
1572 (hm--html-add-tags 'hm--html-insert-end-tag-with-newline 1622 (hm--html-add-tags 'hm--html-insert-end-tag-with-newline
1573 "</BODY>") 1623 "</BODY>")
1574 (goto-char cursor-position) 1624 (goto-char cursor-position)
1575 )) 1625 ))
1576 (if (not (= (current-column) 0)) 1626 (if (not (= (current-column) 0))
1577 (newline)) 1627 (newline))
1578 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<BODY>" 1628 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<BODY>"
1579 'hm--html-insert-end-tag-with-newline "</BODY>"))))) 1629 'hm--html-insert-end-tag-with-newline "</BODY>"))))
1580 1630
1581 1631
1582 (defun hm--html-add-body-to-region () 1632 (defun hm--html-add-body-to-region ()
1583 "Adds the HTML tags <BODY> and </BODY> to the region." 1633 "Adds the HTML tags <BODY> and </BODY> to the region."
1584 (interactive) 1634 (interactive)
1588 "</BODY>")) 1638 "</BODY>"))
1589 1639
1590 1640
1591 (defun hm--html-add-title-and-header (title) 1641 (defun hm--html-add-title-and-header (title)
1592 "Adds the HTML tags for a title and a header in the current buffer." 1642 "Adds the HTML tags for a title and a header in the current buffer."
1643 ; (interactive "sTitle and Header String: \nnHeader Size (1 .. 6): ")
1644 ; (if (> size 6)
1645 ; (message "The size must be a number from 1 to 6 !")
1593 (interactive "sTitle and Header String: ") 1646 (interactive "sTitle and Header String: ")
1594 (let ((case-fold-search t)) 1647 (hm--html-add-title title)
1595 (hm--html-add-title title) 1648 (save-excursion
1596 (save-excursion 1649 (goto-char (point-min))
1597 (goto-char (point-min)) 1650 (search-forward "</title>" nil t)
1598 (search-forward "</title>" nil t) 1651 (if (search-forward "</head>" nil t)
1599 (if (search-forward "</head>" nil t) 1652 (progn
1600 (progn 1653 (search-forward "<body>" nil t)
1601 (search-forward "<body>" nil t) 1654 (newline 1))
1602 (newline 1)) 1655 (if (search-forward "<body>" nil t)
1603 (if (search-forward "<body>" nil t) 1656 (newline 1)
1604 (newline 1) 1657 (if (string= (what-line) "Line 1")
1605 (if (string= (what-line) "Line 1") 1658 (progn
1606 (progn 1659 (end-of-line)
1607 (end-of-line) 1660 (newline 1)))))
1608 (newline 1))))) 1661 (hm--html-add-header 1 title)))
1609 (hm--html-add-header 1 title))))
1610 1662
1611 1663
1612 (defun hm--html-add-title-and-header-to-region () 1664 (defun hm--html-add-title-and-header-to-region ()
1613 "Adds the HTML tags for a title and a header to the region." 1665 "Adds the HTML tags for a title and a header to the region."
1666 ;The parameter 'size' spezifies the size of the header.";"
1667 ; (interactive "nSize (1 .. 6): ")
1668 ; (if (> size 6)
1669 ; (message "The size must be a number from 1 to 6 !")
1614 (interactive) 1670 (interactive)
1615 (let ((title (buffer-substring (region-beginning) (region-end)))) 1671 (let ((title (buffer-substring (region-beginning) (region-end))))
1616 (hm--html-add-header-to-region 1) 1672 (hm--html-add-header-to-region 1)
1617 (hm--html-add-title title))) 1673 (hm--html-add-title title)))
1618 1674
1621 "Adds a full HTML frame to the current buffer. 1677 "Adds a full HTML frame to the current buffer.
1622 The frame consists of the elements html, head, body, title, 1678 The frame consists of the elements html, head, body, title,
1623 header and the signature. The parameter TITLE specifies the 1679 header and the signature. The parameter TITLE specifies the
1624 title and the header of the document." 1680 title and the header of the document."
1625 (interactive "sTitle and Header String: ") 1681 (interactive "sTitle and Header String: ")
1626 (let ((case-fold-search t)) 1682 (hm--html-add-html)
1627 (hm--html-add-doctype) 1683 (hm--html-add-head)
1628 (hm--html-add-html) 1684 (hm--html-add-body)
1629 (hm--html-add-head) 1685 (hm--html-add-title-and-header title)
1630 (hm--html-add-body) 1686 (if hm--html-signature-file
1631 (hm--html-add-title-and-header title) 1687 (hm--html-add-signature))
1632 (if hm--html-signature-file 1688 (goto-char (point-min))
1633 (hm--html-add-signature)) 1689 (search-forward "</h1>" nil t)
1634 (goto-char (point-min)) 1690 (forward-line 1)
1635 (search-forward "</h1>" nil t) 1691 (if hm--html-automatic-created-comment
1636 (forward-line 1) 1692 (hm--html-insert-created-comment)))
1637 (if hm--html-automatic-created-comment
1638 (hm--html-insert-created-comment))))
1639 1693
1640 1694
1641 (defun hm--html-add-full-html-frame-with-region () 1695 (defun hm--html-add-full-html-frame-with-region ()
1642 "Adds a full HTML frame to the current buffer with the use of a region. 1696 "Adds a full HTML frame to the current buffer with the use of a region.
1643 The frame consists of the elements html, head, body, title, 1697 The frame consists of the elements html, head, body, title,
1644 header and the signature. The function uses the region as 1698 header and the signature. The function uses the region as
1645 the string for the title and the header of the document." 1699 the string for the title and the header of the document."
1646 (interactive) 1700 (interactive)
1647 (hm--html-add-title-and-header-to-region) 1701 (hm--html-add-title-and-header-to-region)
1648 (hm--html-add-doctype)
1649 (hm--html-add-html) 1702 (hm--html-add-html)
1650 (hm--html-add-head) 1703 (hm--html-add-head)
1651 (hm--html-add-body) 1704 (hm--html-add-body)
1652 (hm--html-add-signature) 1705 (hm--html-add-signature)
1653 (if hm--html-automatic-created-comment 1706 (if hm--html-automatic-created-comment
1662 'hm--html-insert-end-tag 1715 'hm--html-insert-end-tag
1663 "</A>")) 1716 "</A>"))
1664 1717
1665 (defun hm--html-add-link-target (name) 1718 (defun hm--html-add-link-target (name)
1666 "Adds the HTML tags for a link target at point in the current buffer." 1719 "Adds the HTML tags for a link target at point in the current buffer."
1720 ; (interactive "sName (or RET for numeric): ")
1667 (interactive "sName: ") 1721 (interactive "sName: ")
1722 ; (and (string= name "")
1723 ; (progn
1724 ; (setq html-link-counter (1+ html-link-counter))
1725 ; (setq name (format "%d" html-link-counter))))
1668 (hm--html-add-tags 'hm--html-insert-start-tag 1726 (hm--html-add-tags 'hm--html-insert-start-tag
1669 (concat "<A NAME=\"" name "\">") 1727 (concat "<A NAME=\"" name "\">")
1670 'hm--html-insert-end-tag 1728 'hm--html-insert-end-tag
1671 "</A>")) 1729 "</A>"))
1672 1730
1674 ;;; Functions which add links 1732 ;;; Functions which add links
1675 1733
1676 (defun hm--html-mark-example (parameter-list) 1734 (defun hm--html-mark-example (parameter-list)
1677 "Marks the example of the parameterlist in the current buffer. 1735 "Marks the example of the parameterlist in the current buffer.
1678 It returns the example extent." 1736 It returns the example extent."
1679 (let ((case-fold-search t)) 1737 (if (hm--html-get-example-from-parameter-list parameter-list)
1680 (if (hm--html-get-example-from-parameter-list parameter-list) 1738 (progn
1681 (progn 1739 (search-forward (hm--html-get-example-from-parameter-list
1682 (search-forward (hm--html-get-example-from-parameter-list 1740 parameter-list))
1683 parameter-list)) 1741 (let ((extent (make-extent (match-beginning 0)
1684 (let ((extent (make-extent (match-beginning 0) 1742 (match-end 0))))
1685 (match-end 0)))) 1743 (set-extent-face extent 'hm--html-help-face)
1686 (set-extent-face extent 'hm--html-help-face) 1744 extent))))
1687 extent)))))
1688 1745
1689 1746
1690 (defun hm--html-unmark-example (extent) 1747 (defun hm--html-unmark-example (extent)
1691 "Unmarks the example for the current question." 1748 "Unmarks the example for the current question."
1692 (if extent 1749 (if extent
1693 (delete-extent extent))) 1750 (delete-extent extent)))
1751
1752 ; )
1753 ; ;; For the Emacs 19
1754 ; (defun hm--html-mark-example (parameter-list)
1755 ; "Marks the example of the parameterlist in the current buffer.
1756 ;It returns the example extent."
1757 ; (if (hm--html-get-example-from-parameter-list parameter-list)
1758 ; (progn
1759 ; (search-forward (hm--html-get-example-from-parameter-list
1760 ; parameter-list))
1761 ; (put-text-property (match-beginning 0)
1762 ; (match-end 0)
1763 ; 'face
1764 ; 'hm--html-help-face))))
1765 ;
1766 ;
1767 ; (defun hm--html-unmark-example (extent)
1768 ; "Unmarks the example for the current question."
1769 ; t))
1694 1770
1695 1771
1696 (defun hm--html-write-alist-in-buffer (alist) 1772 (defun hm--html-write-alist-in-buffer (alist)
1697 "The function writes the contents of the ALIST in the currentbuffer." 1773 "The function writes the contents of the ALIST in the currentbuffer."
1698 (cond ((car alist) 1774 (cond ((car alist)
1794 "" 1870 ""
1795 require-match 1871 require-match
1796 nil))) 1872 nil)))
1797 (hm--html-unmark-example marked-object) 1873 (hm--html-unmark-example marked-object)
1798 (hm--html-delete-wrong-path-prefix filename)) 1874 (hm--html-delete-wrong-path-prefix filename))
1875 ; (if (not hm--html-delete-wrong-path-prefix)
1876 ; filename
1877 ; (if (string-match hm--html-delete-wrong-path-prefix filename)
1878 ; (substring filename (match-end 0))
1879 ; filename)))
1799 "")) 1880 ""))
1800 1881
1801 1882
1802 (defun hm--html-completing-read (parameter-list) 1883 (defun hm--html-completing-read (parameter-list)
1803 "Reads a string with completing-read, if alist is non nil. 1884 "Reads a string with completing-read, if alist is non nil.
1827 1908
1828 1909
1829 (defun hm--html-generate-help-buffer-faces () 1910 (defun hm--html-generate-help-buffer-faces ()
1830 "Generates faces for the add-link-help-buffer." 1911 "Generates faces for the add-link-help-buffer."
1831 (if (not (facep 'hm--html-help-face)) 1912 (if (not (facep 'hm--html-help-face))
1913 ; (if (not hm--html-faces-exist)
1832 (progn 1914 (progn
1833 (setq hm--html-faces-exist t) 1915 (setq hm--html-faces-exist t)
1834 (make-face 'hm--html-help-face) 1916 (make-face 'hm--html-help-face)
1835 (if hm--html-help-foreground 1917 (if hm--html-help-foreground
1836 (set-face-foreground 'hm--html-help-face hm--html-help-foreground)) 1918 (set-face-foreground 'hm--html-help-face hm--html-help-foreground))
1943 SERVERNAME:PORT-PARAMETER-LIST, PATH+FILE-PARAMETER-LIST and 2025 SERVERNAME:PORT-PARAMETER-LIST, PATH+FILE-PARAMETER-LIST and
1944 ANCHOR-PARAMETER-LIST are lists with a prompt string, an alist, a default 2026 ANCHOR-PARAMETER-LIST are lists with a prompt string, an alist, a default
1945 value and an example string. The ANCHOR-PARAMETER-LIST has as an additional 2027 value and an example string. The ANCHOR-PARAMETER-LIST has as an additional
1946 element an anchor seperator string. All these elements are used to read and 2028 element an anchor seperator string. All these elements are used to read and
1947 construct the link." 2029 construct the link."
1948 ; (let ((point nil)) 2030 (let ((point nil))
1949 (save-window-excursion 2031 (save-window-excursion
1950 (let ((html-buffer (current-buffer)) 2032 (let ((html-buffer (current-buffer))
1951 (html-help-buffer (hm--html-generate-add-link-help-buffer 2033 (html-help-buffer (hm--html-generate-add-link-help-buffer
1952 scheme-parameter-list 2034 scheme-parameter-list
1953 host-name:port-parameter-list 2035 host-name:port-parameter-list
1954 servername:port-parameter-list 2036 servername:port-parameter-list
1955 path+file-parameter-list 2037 path+file-parameter-list
1956 anchor-parameter-list)) 2038 anchor-parameter-list))
1957 (scheme (hm--html-completing-read scheme-parameter-list)) 2039 (scheme (hm--html-completing-read scheme-parameter-list))
1958 (hostname:port (hm--html-completing-read 2040 (hostname:port (hm--html-completing-read
1959 host-name:port-parameter-list)) 2041 host-name:port-parameter-list))
1960 (servername:port (hm--html-completing-read 2042 (servername:port (hm--html-completing-read
1961 servername:port-parameter-list)) 2043 servername:port-parameter-list))
1962 (path+file (hm--html-read-filename path+file-parameter-list)) 2044 (path+file (hm--html-read-filename path+file-parameter-list))
1963 (anchor (hm--html-completing-read anchor-parameter-list)) 2045 (anchor (hm--html-completing-read anchor-parameter-list))
1964 ; (hrefname (setq html-link-counter (1+ html-link-counter))) 2046 ; (hrefname (setq html-link-counter (1+ html-link-counter)))
1965 (anchor-seperator 2047 (anchor-seperator
1966 (hm--html-get-anchor-seperator-from-parameter-list 2048 (hm--html-get-anchor-seperator-from-parameter-list
1967 anchor-parameter-list))) 2049 anchor-parameter-list)))
1968 (if (not (string= scheme "")) 2050 (if (not (string= scheme ""))
1969 (if (string= hostname:port "") 2051 (if (string= hostname:port "")
1970 (setq scheme (concat scheme ":")) 2052 (setq scheme (concat scheme ":"))
1971 (setq scheme (concat scheme "://")))) 2053 (setq scheme (concat scheme "://"))))
1972 (if (and (not (string= hostname:port "")) 2054 (if (and (not (string= hostname:port ""))
1973 (not (string= servername:port "")) 2055 (not (string= servername:port ""))
1974 (not (string= (substring servername:port 0 1) "/"))) 2056 (not (string= (substring servername:port 0 1) "/")))
1975 (setq servername:port (concat "/" servername:port))) 2057 (setq servername:port (concat "/" servername:port)))
1976 (if (and (not (string= path+file "")) 2058 (if (and (not (string= path+file ""))
1977 (not (string= "/" (substring path+file 0 1)))) 2059 (not (string= "/" (substring path+file 0 1))))
1978 (setq path+file (concat "/" path+file))) 2060 (setq path+file (concat "/" path+file)))
1979 (if (not (string= anchor "")) 2061 (if (not (string= anchor ""))
1980 (setq anchor (concat anchor-seperator anchor))) 2062 (setq anchor (concat anchor-seperator anchor)))
1981 (kill-buffer html-help-buffer) 2063 (kill-buffer html-help-buffer)
1982 (pop-to-buffer html-buffer) 2064 (pop-to-buffer html-buffer)
1983 (eval (list function-add-tags 2065 (eval (list function-add-tags
1984 ''hm--html-insert-start-tag 2066 ''hm--html-insert-start-tag
1985 (concat "<A" 2067 (concat "<A"
1986 ; "<A Name=" 2068 ; "<A Name="
1987 ; hrefname 2069 ; hrefname
1988 " HREF=\"" 2070 " HREF=\""
1989 scheme 2071 scheme
1990 hostname:port 2072 hostname:port
1991 servername:port 2073 servername:port
1992 path+file 2074 path+file
1993 anchor 2075 anchor
1994 "\">") 2076 "\">")
1995 ''hm--html-insert-end-tag 2077 ''hm--html-insert-end-tag
1996 "</A>"))) 2078 "</A>")))
1997 ; (setq point (point)))) 2079 (setq point (point))))
1998 ; (goto-char (point))) 2080 (goto-char (point)))
1999 )) 2081
2000 2082
2001 (defun hm--html-add-info-link-1 (function-add-tags) 2083 (defun hm--html-add-info-link-1 (function-add-tags)
2002 "Internal function. Adds the HTML tags for a link on a GNU Info file." 2084 "Internal function. Adds the HTML tags for a link on a GNU Info file."
2003 (hm--html-add-link function-add-tags 2085 (hm--html-add-link function-add-tags
2004 (list ; scheme 2086 (list ; scheme
2336 "Makes a proggate-alist from the PROGGATE-ALLOWED-FILE." 2418 "Makes a proggate-alist from the PROGGATE-ALLOWED-FILE."
2337 (if (and (stringp proggate-allowed-file) 2419 (if (and (stringp proggate-allowed-file)
2338 (file-exists-p proggate-allowed-file)) 2420 (file-exists-p proggate-allowed-file))
2339 (save-window-excursion 2421 (save-window-excursion
2340 (let ((alist nil) 2422 (let ((alist nil)
2341 (buffername (find-file-noselect proggate-allowed-file)) 2423 (buffername (find-file-noselect proggate-allowed-file)))
2342 (case-fold-search t))
2343 (set-buffer buffername) 2424 (set-buffer buffername)
2344 (toggle-read-only) 2425 (toggle-read-only)
2345 (goto-char (point-min)) 2426 (goto-char (point-min))
2346 (while (search-forward-regexp "[^ \t\n]+" nil t) 2427 (while (search-forward-regexp "[^ \t\n]+" nil t)
2347 (setq alist (append (list (list (buffer-substring 2428 (setq alist (append (list (list (buffer-substring
2471 2552
2472 2553
2473 (defun hm--html-make-newsgroup-alist () 2554 (defun hm--html-make-newsgroup-alist ()
2474 "Makes a hm--html-make-newsgroup-alist from a .newsrc.el file. 2555 "Makes a hm--html-make-newsgroup-alist from a .newsrc.el file.
2475 The function looks at the environment variable NNTPSERVER. 2556 The function looks at the environment variable NNTPSERVER.
2476 If this variable exists, it tries to open the file with the Name 2557 If this variable exists, it trys to open the file with the Name
2477 ~/$NNTPSERVER.el. If this file exists, the alist of the file is 2558 ~/$NNTPSERVER.el. If this file exists, the alist of the file is
2478 returned as the newsgroup-alist. If the file doesn't exist, it 2559 returned as the newsgroup-alist. If the file doesn't exist, it
2479 tries to use the file ~/$NNTPSERVER to make the alist. The function 2560 tries to use the file ~/$NNTPSERVER to make the alist. The function
2480 returns '((\"\"))" 2561 returns '((\"\"))"
2481 (if hm--html-newsgroup-alist 2562 (if hm--html-newsgroup-alist
2492 (setq hm--html-newsgroup-alist gnus-newsrc-assoc)) 2573 (setq hm--html-newsgroup-alist gnus-newsrc-assoc))
2493 (if (not (file-exists-p newsrc-file)) 2574 (if (not (file-exists-p newsrc-file))
2494 '(("")) 2575 '((""))
2495 (save-window-excursion 2576 (save-window-excursion
2496 (let ((alist nil) 2577 (let ((alist nil)
2497 (buffername (find-file-noselect newsrc-file)) 2578 (buffername (find-file-noselect newsrc-file)))
2498 (case-fold-search t))
2499 (set-buffer buffername) 2579 (set-buffer buffername)
2500 (toggle-read-only) 2580 (toggle-read-only)
2501 (goto-char (point-min)) 2581 (goto-char (point-min))
2502 (while (search-forward-regexp "[^:!]+" nil t) 2582 (while (search-forward-regexp "[^:!]+" nil t)
2503 (setq alist (append (list (list (buffer-substring 2583 (setq alist (append (list (list (buffer-substring
2591 2671
2592 2672
2593 (defun hm--html-add-mail-box-link () 2673 (defun hm--html-add-mail-box-link ()
2594 "Adds the HTML tags for a link to a mail box." 2674 "Adds the HTML tags for a link to a mail box."
2595 (interactive) 2675 (interactive)
2596 (hm--html-add-mail-box-link-1 'hm--html-add-tags)) 2676 (hm--html-add-mail-link-1 'hm--html-add-tags))
2597 2677
2598 2678
2599 (defun hm--html-add-mail-box-link-to-region () 2679 (defun hm--html-add-mail-box-link-to-region ()
2600 "Adds the HTML tags for a link to a mail box to the region." 2680 "Adds the HTML tags for a link to a mail box to the region."
2601 (interactive) 2681 (interactive)
2602 (hm--html-add-mail-box-link-1 'hm--html-add-tags-to-region)) 2682 (hm--html-add-mail-link-1 'hm--html-add-tags-to-region))
2603 2683
2604 2684
2605 (defun hm--html-add-mailto-link-1 (function-add-tags) 2685 (defun hm--html-add-mailto-link-1 (function-add-tags)
2606 "Internal function. Adds the HTML tags for a mailto link." 2686 "Internal function. Adds the HTML tags for a mailto link."
2607 (let ((mailto-alist (if (and (boundp 'user-mail-address) 2687 (let ((mailto-alist (if (and (boundp 'user-mail-address)
2648 (interactive) 2728 (interactive)
2649 (hm--html-add-mailto-link-1 'hm--html-add-tags-to-region)) 2729 (hm--html-add-mailto-link-1 'hm--html-add-tags-to-region))
2650 2730
2651 (defun hm--html-add-relative-link (relative-file-path) 2731 (defun hm--html-add-relative-link (relative-file-path)
2652 "Adds the HTML tags for a relative link at the current point." 2732 "Adds the HTML tags for a relative link at the current point."
2653 (interactive (list (file-relative-name 2733 (interactive (list (read-file-name "Relative Filename: "
2654 (read-file-name "Relative Filename: " 2734 nil
2655 nil 2735 nil
2656 nil 2736 nil
2657 nil 2737 "")))
2658 "")
2659 default-directory)
2660 ))
2661 (hm--html-add-tags 'hm--html-insert-start-tag 2738 (hm--html-add-tags 'hm--html-insert-start-tag
2662 (concat "<A HREF=\"" 2739 (concat "<A HREF=\""
2663 relative-file-path 2740 relative-file-path
2664 "\">") 2741 "\">")
2665 'hm--html-insert-end-tag 2742 'hm--html-insert-end-tag
2666 "</A>")) 2743 "</A>"))
2667 2744
2668 (defun hm--html-add-relative-link-to-region (relative-file-path) 2745 (defun hm--html-add-relative-link-to-region (relative-file-path)
2669 "Adds the HTML tags for a relative link to the region." 2746 "Adds the HTML tags for a relative link to the region."
2670 (interactive (list (file-relative-name 2747 (interactive (list (read-file-name "Relative Filename: "
2671 (read-file-name "Relative Filename: " 2748 nil
2672 nil 2749 nil
2673 nil 2750 nil
2674 nil 2751 "")))
2675 ""))))
2676 (hm--html-add-tags-to-region 'hm--html-insert-start-tag 2752 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
2677 (concat "<A HREF=\"" 2753 (concat "<A HREF=\""
2678 relative-file-path 2754 relative-file-path
2679 "\">") 2755 "\">")
2680 'hm--html-insert-end-tag 2756 'hm--html-insert-end-tag
2697 Single argument LINK-OBJECT is value of HREF in the new anchor. 2773 Single argument LINK-OBJECT is value of HREF in the new anchor.
2698 Mark is set after anchor." 2774 Mark is set after anchor."
2699 (interactive "sNode Link to: ") 2775 (interactive "sNode Link to: ")
2700 (hm--html-add-tags-to-region 'hm--html-insert-start-tag 2776 (hm--html-add-tags-to-region 'hm--html-insert-start-tag
2701 (concat "<A HREF=\"" 2777 (concat "<A HREF=\""
2778 ; (read-string "Link to: ")
2702 link-object 2779 link-object
2703 "\">") 2780 "\">")
2704 'hm--html-insert-end-tag 2781 'hm--html-insert-end-tag
2705 "</A>")) 2782 "</A>"))
2706 2783
2739 (point-max))))) 2816 (point-max)))))
2740 (goto-char (point-min)) 2817 (goto-char (point-min))
2741 (if (re-search-forward 2818 (if (re-search-forward
2742 (concat 2819 (concat
2743 "\\((\\)" 2820 "\\((\\)"
2744 "\\([ \t]*[0-3]?[0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9][0-9]" 2821 "\\([ \t]*[0-3]?[0-9]-[A-Z][a-z][a-z]-[0-9][0-9][0-9][0-9][ \t]*\\)"
2745 "[ \t]*\\)"
2746 "\\()[ \t\n]*</title>\\)") 2822 "\\()[ \t\n]*</title>\\)")
2747 end-of-head 2823 end-of-head
2748 t) 2824 t)
2749 (progn 2825 (progn
2750 (delete-region (match-beginning 2) (match-end 2)) 2826 (delete-region (match-beginning 2) (match-end 2))
2769 (point-max))))) 2845 (point-max)))))
2770 (goto-char (point-min)) 2846 (goto-char (point-min))
2771 (if (not (search-forward "</title>" end-of-head t)) 2847 (if (not (search-forward "</title>" end-of-head t))
2772 (if (not noerror) 2848 (if (not noerror)
2773 (error "ERROR: Please insert a title in the document !")) 2849 (error "ERROR: Please insert a title in the document !"))
2774 ; (let ((end-of-title-position (point))) 2850 (let ((end-of-title-position (point)))
2775 (if (search-forward "<!-- Created by: " end-of-head t) 2851 (if (search-forward "<!-- Created by: " end-of-head t)
2776 (if (yes-or-no-p 2852 (if (yes-or-no-p
2777 "Replace the old comment \"<!-- Created by: \" ") 2853 "Replace the old comment \"<!-- Created by: \" ")
2778 (progn 2854 (progn
2779 (goto-char (match-beginning 0)) 2855 (goto-char (match-beginning 0))
2780 (kill-line) 2856 (kill-line)
2781 (hm--html-add-comment) 2857 (hm--html-add-comment)
2782 (insert "Created by: " 2858 (insert "Created by: "
2783 (or hm--html-username (user-full-name)) 2859 (or hm--html-username (user-full-name))
2784 ", " 2860 ", "
2785 (hm--date)))) 2861 (hm--date))))
2786 (newline) 2862 (newline)
2787 (hm--html-add-comment) 2863 (hm--html-add-comment)
2788 (insert "Created by: " 2864 (insert "Created by: "
2789 (or hm--html-username (user-full-name)) 2865 (or hm--html-username (user-full-name))
2790 ", " 2866 ", "
2791 (hm--date) 2867 (hm--date)
2792 )))))) 2868 )))))))
2793 2869
2794 2870
2795 (defun hm--html-insert-changed-comment-1 (newline username) 2871 (defun hm--html-insert-changed-comment-1 (newline username)
2796 "Internal function of 'hm--html-insert-changed-comment'. 2872 "Internal function of 'hm--html-insert-changed-comment'.
2797 Inserts a newline if NEWLINE is t, before the comment is inserted. 2873 Inserts a newline if NEWLINE is t, before the comment is inserted.
2798 USERNAME is the name to be inserted in the comment." 2874 USERNAME is the name to be inserted in the comment."
2799 (if newline 2875 (if newline
2800 (progn 2876 (progn
2877 ; (end-of-line)
2801 (newline))) 2878 (newline)))
2802 (hm--html-add-comment) 2879 (hm--html-add-comment)
2803 (insert "Changed by: " username ", " (hm--date))) 2880 (insert "Changed by: " username ", " (hm--date)))
2804 2881
2805 (defun hm--html-insert-changed-comment (&optional noerror) 2882 (defun hm--html-insert-changed-comment (&optional noerror)
2861 2938
2862 2939
2863 ;;; Functions to insert templates 2940 ;;; Functions to insert templates
2864 2941
2865 (defvar hm--html-template-file-history nil 2942 (defvar hm--html-template-file-history nil
2866 "Historyvariable for the template files in the `hm--html-mode'.") 2943 "Historvariable for the template files.")
2867 2944
2868 (defun hm--html-insert-template (filename) 2945 (defun hm--html-insert-template (filename)
2869 "Inserts a templatefile. 2946 "Inserts a templatefile."
2870 It uses `tmpl-insert-template-file' to insert 2947 (interactive (list
2871 the templates. The variables `tmpl-template-dir-list', 2948 (let ((file-name-history hm--html-template-file-history))
2872 `tmpl-automatic-expand' and `tmpl-history-variable-name' are 2949 (read-file-name "Templatefile: "
2873 overwritten by `hm--html-template-dir', 2950 hm--html-template-dir
2874 `hm--html-automatic-expand-templates' and `hm--html-template-file-history'." 2951 nil
2875 (interactive (list nil)) 2952 t
2876 (let ((tmpl-template-dir-list (if (listp hm--html-template-dir) 2953 nil))))
2877 hm--html-template-dir 2954 ; 'hm--html-template-file-history)))
2878 (list hm--html-template-dir))) 2955 (insert-file (expand-file-name filename))
2879 (tmpl-automatic-expand hm--html-automatic-expand-templates) 2956 (if hm--html-automatic-expand-templates
2880 (tmpl-history-variable-name 'hm--html-template-file-history)) 2957 (tmpl-expand-templates-in-buffer))
2881 (if filename 2958 (if hm--html-automatic-created-comment
2882 (tmpl-insert-template-file filename) 2959 (hm--html-insert-created-comment t)))
2883 (call-interactively 'tmpl-insert-template-file)) 2960
2884 )) 2961
2885 2962
2886 (defun hm--html-insert-template-from-fixed-dirs (filename) 2963 ;;; Functions for highlighting
2887 "Inserts a templatefile. 2964
2888 It uses `tmpl-insert-template-file-from-fixed-dirs' to insert 2965 ;(defun hm--html-toggle-use-highlighting ()
2889 the templates. The variables `tmpl-template-dir-list', 2966 ; "Toggles the variable html-use-highlighting."
2890 `tmpl-automatic-expand', `tmpl-filter-regexp' and 2967 ; (interactive)
2891 `tmpl-history-variable-name' are overwritten by 2968 ; (if html-use-highlighting
2892 `hm--html-template-dir', `hm--html-automatic-expand-templates', 2969 ; (setq html-use-highlighting nil)
2893 `hm--html-template-filter-regexp' and `hm--html-template-file-history'." 2970 ; (setq html-use-highlighting t)))
2894 (interactive (list nil))
2895 (let ((tmpl-template-dir-list (if (listp hm--html-template-dir)
2896 hm--html-template-dir
2897 (list hm--html-template-dir)))
2898 (tmpl-automatic-expand hm--html-automatic-expand-templates)
2899 (tmpl-filter-regexp hm--html-template-filter-regexp)
2900 (tmpl-history-variable-name 'hm--html-template-file-history))
2901 (if filename
2902 (tmpl-insert-template-file-from-fixed-dirs filename)
2903 (call-interactively 'tmpl-insert-template-file-from-fixed-dirs))
2904 ))
2905 2971
2906 2972
2907 ;;; Functions for font lock mode 2973 ;;; Functions for font lock mode
2908 2974
2909 (if (adapt-emacs19p) 2975 (if (adapt-emacs19p)
2918 (or (face-differs-from-default-p 'font-lock-string-face) 2984 (or (face-differs-from-default-p 'font-lock-string-face)
2919 (progn 2985 (progn
2920 (copy-face 'font-lock-doc-string-face 'font-lock-string-face) 2986 (copy-face 'font-lock-doc-string-face 'font-lock-string-face)
2921 (set-face-underline-p 'font-lock-string-face t))) 2987 (set-face-underline-p 'font-lock-string-face t)))
2922 (setq font-lock-comment-face 'font-lock-comment-face) 2988 (setq font-lock-comment-face 'font-lock-comment-face)
2989 ;; (setq font-lock-doc-string-face 'font-lock-doc-string-face)
2923 (setq font-lock-string-face 'font-lock-string-face))) 2990 (setq font-lock-string-face 'font-lock-string-face)))
2991
2992
2993 ;(defun hm--html-set-font-lock-color ()
2994 ; "Sets the color for the font lock mode in HTML mode.
2995 ;This color is used to highlight HTML expressions."
2996 ; (interactive)
2997 ; (setq hm--html-font-lock-color
2998 ; (completing-read "Color: "
2999 ; '(("grey80")
3000 ; ("black")
3001 ; ("red")
3002 ; ("yellow")
3003 ; ("blue"))
3004 ; nil
3005 ; nil
3006 ; "black"))
3007 ; (set-face-foreground 'font-lock-comment-face hm--html-font-lock-color)
3008 ; (set-face-foreground 'font-lock-string-face hm--html-font-lock-color))
3009
3010
3011 ;;; Functions which determine if an active region exists
3012
3013 ;(defvar hm--region-active nil
3014 ; "t : Region is active.
3015 ;nil: Region is inactive.")
3016 ;
3017 ;
3018 ;(defun hm--set-hm--region-active ()
3019 ; (setq hm--region-active t))
3020 ;
3021 ;
3022 ;(defun hm--unset-hm--region-active ()
3023 ; (setq hm--region-active nil))
3024
2924 3025
2925 3026
2926 ;;; Functions to insert forms 3027 ;;; Functions to insert forms
2927 3028
2928 (defun hm--html-form-read-method () 3029 (defun hm--html-form-read-method ()
3374 (interactive "NNo of cells in a row: ") 3475 (interactive "NNo of cells in a row: ")
3375 (if (< no-of-cells 1) 3476 (if (< no-of-cells 1)
3376 (error "ERROR: There must be at least one cell in a row!")) 3477 (error "ERROR: There must be at least one cell in a row!"))
3377 (hm--html-add-tags 3478 (hm--html-add-tags
3378 'hm--html-insert-end-tag-with-newline 3479 'hm--html-insert-end-tag-with-newline
3379 (concat "<TR>" 3480 (concat
3380 (mapconcat '(lambda (entry) 3481 (mapconcat '(lambda (entry)
3381 (concat "<TH" entry)) 3482 (concat "<TH" entry))
3382 (hm--html-table-read-cell-entries-and-alignments 3483 (hm--html-table-read-cell-entries-and-alignments 1 no-of-cells)
3383 1 3484 " ")
3384 no-of-cells) 3485 " <TR>")))
3385 " </TH>")
3386 " </TH></TR>")))
3387 3486
3388 3487
3389 (defun hm--html-add-first-table-row (no-of-cells) 3488 (defun hm--html-add-first-table-row (no-of-cells)
3390 "Adds the HTML tags for a table row. 3489 "Adds the HTML tags for a table row.
3391 It asks for the number of cells and the allignment of the cells. 3490 It asks for the number of cells and the allignment of the cells.
3393 (interactive "NNo of cells in a row: ") 3492 (interactive "NNo of cells in a row: ")
3394 (if (< no-of-cells 1) 3493 (if (< no-of-cells 1)
3395 (error "ERROR: There must be at least one cell in a row!")) 3494 (error "ERROR: There must be at least one cell in a row!"))
3396 (hm--html-add-tags 3495 (hm--html-add-tags
3397 'hm--html-insert-end-tag-with-newline 3496 'hm--html-insert-end-tag-with-newline
3398 (concat "<TR><TD" 3497 (concat "<TD" (car (hm--html-table-read-cell-entries-and-alignments 1 1))
3399 (car (hm--html-table-read-cell-entries-and-alignments 1 1)) 3498 " "
3400 " </TD>"
3401 (if (<= no-of-cells 1) 3499 (if (<= no-of-cells 1)
3402 "</TR>" 3500 "<TR>"
3403 (concat 3501 (concat
3404 (mapconcat '(lambda (entry) 3502 (mapconcat '(lambda (entry)
3405 (concat "<TD" entry)) 3503 (concat "<TD" entry))
3406 (hm--html-table-read-cell-entries-and-alignments 3504 (hm--html-table-read-cell-entries-and-alignments
3407 2 no-of-cells) 3505 2 no-of-cells)
3408 " </TD>") 3506 " ")
3409 " </TD></TR>"))))) 3507 " <TR>")))))
3410 3508
3411 3509
3412 (defun hm--html-table-get-previous-alignments () 3510 (defun hm--html-table-get-previous-alignments ()
3413 "Returns a list with the alignments of the previous table row. 3511 "Returns a list with the alignments of the previous table row.
3414 The row must be a data row and not a header row! 3512 The row must be a data row and not a header row!
3415 An example for the return list: '(\"left\" \"default\" \"center\" \"right\")" 3513 An example for the return list: '(\"left\" \"default\" \"center\" \"right\")"
3416 (save-excursion 3514 (save-excursion
3417 (let* ((point-of-view (point)) 3515 (let* ((point-of-view (point))
3418 (case-fold-search t) 3516 (end-of-last-row (search-backward "<tr>" nil t))
3419 (end-of-last-row (search-backward "</tr>" (point-min) t)) 3517 (begin-of-last-row (progn (search-backward "<tr" nil t)
3420 (begin-of-last-row (progn (search-backward "<tr" (point-min) t) 3518 (search-forward "<td" nil t)
3421 (re-search-forward "<t[dh]"
3422 point-of-view t)
3423 (match-beginning 0))) 3519 (match-beginning 0)))
3424 (alignment-list nil)) 3520 (alignment-list nil))
3425 (goto-char begin-of-last-row) 3521 (if (not (search-forward "<td" end-of-last-row t))
3426 (if (not (re-search-forward "<t[dh]" end-of-last-row t))
3427 (error "Error: No previous data row found!") 3522 (error "Error: No previous data row found!")
3428 (goto-char end-of-last-row) 3523 (goto-char end-of-last-row)
3429 (while (> (point) begin-of-last-row) 3524 (while (> (point) begin-of-last-row)
3430 (let ((cell-start 3525 (let ((cell-start
3431 (search-backward-regexp "\\(<td[^>]*>\\)\\|\\(<th[^>]*>\\)" 3526 (search-backward-regexp "\\(<td[^>]*>\\)\\|\\(<th[^>]*>\\)"
3453 (interactive) 3548 (interactive)
3454 (let* ((old-alignment-list (hm--html-table-get-previous-alignments)) 3549 (let* ((old-alignment-list (hm--html-table-get-previous-alignments))
3455 (no-of-cells (length old-alignment-list))) 3550 (no-of-cells (length old-alignment-list)))
3456 (hm--html-add-tags 3551 (hm--html-add-tags
3457 'hm--html-insert-end-tag-with-newline 3552 'hm--html-insert-end-tag-with-newline
3458 (concat "<TR><TD" (car (hm--html-table-read-cell-entries-and-alignments 3553 (concat "<TD" (car (hm--html-table-read-cell-entries-and-alignments
3459 1 3554 1
3460 1 3555 1
3461 old-alignment-list)) 3556 old-alignment-list))
3462 " </TD>" 3557 " "
3463 (if (<= no-of-cells 1) 3558 (if (<= no-of-cells 1)
3464 "</TR>" 3559 "<TR>"
3465 (concat 3560 (concat
3466 (mapconcat '(lambda (entry) 3561 (mapconcat '(lambda (entry)
3467 (concat "<TD" entry)) 3562 (concat "<TD" entry))
3468 (hm--html-table-read-cell-entries-and-alignments 3563 (hm--html-table-read-cell-entries-and-alignments
3469 2 3564 2
3470 no-of-cells 3565 no-of-cells
3471 (cdr old-alignment-list)) 3566 (cdr old-alignment-list))
3472 " </TD>") 3567 " ")
3473 " </TD></TR>")))))) 3568 " <TR>"))))))
3474 3569
3475 3570
3476 (defun hm--html-add-row-entry (alignment) 3571 (defun hm--html-add-row-entry (alignment)
3477 "Adds the HTML tag for a table row entry at the current point." 3572 "Adds the HTML tag for a table row entry at the current point."
3478 (interactive (list (completing-read "Alignment of the cell: " 3573 (interactive (list (completing-read "Alignment of the cell: "
3535 3630
3536 (defun hm--html-table-add-colspan-attribute (columns) 3631 (defun hm--html-table-add-colspan-attribute (columns)
3537 "Adds a colspawn attribute to a table cell. 3632 "Adds a colspawn attribute to a table cell.
3538 A prefix arg is used as no of COLUMNS." 3633 A prefix arg is used as no of COLUMNS."
3539 (interactive "NNo of columns, spaned by this cell: ") 3634 (interactive "NNo of columns, spaned by this cell: ")
3540 (let ((case-fold-search t)) 3635 (save-excursion
3541 (save-excursion 3636 (if (and (search-backward "<" nil t)
3542 (if (and (search-backward "<" nil t) 3637 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t))
3543 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t)) 3638 (if (search-forward-regexp "\\([ \t\n]+colspan=\\)\\([^ \t\n>]*\\)"
3544 (if (search-forward-regexp "\\([ \t\n]+colspan=\\)\\([^ \t\n>]*\\)" 3639 nil
3545 nil 3640 t)
3546 t) 3641 (progn
3547 (progn 3642 (delete-region (match-beginning 2) (match-end 2))
3548 (delete-region (match-beginning 2) (match-end 2)) 3643 (insert (format "\"%d\"" columns)))
3549 (insert (format "\"%d\"" columns))) 3644 (insert (format " colspan=\"%d\"" columns)))
3550 (insert (format " colspan=\"%d\"" columns))) 3645 (error "ERROR: Point not in a table cell!"))))
3551 (error "ERROR: Point not in a table cell!")))))
3552 3646
3553 3647
3554 (defun hm--html-table-add-rowspan-attribute (rows) 3648 (defun hm--html-table-add-rowspan-attribute (rows)
3555 "Adds a rowspan attribute to a table cell. 3649 "Adds a rowspan attribute to a table cell.
3556 A prefix arg is used as no of ROWS." 3650 A prefix arg is used as no of ROWS."
3557 (interactive "NNo of rows, spaned by this cell: ") 3651 (interactive "NNo of rows, spaned by this cell: ")
3558 (let ((case-fold-search t)) 3652 (save-excursion
3559 (save-excursion 3653 (if (and (search-backward "<" nil t)
3560 (if (and (search-backward "<" nil t) 3654 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t))
3561 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t)) 3655 (if (search-forward-regexp "\\([ \t\n]+rowspan=\\)\\([^ \t\n>]*\\)"
3562 (if (search-forward-regexp "\\([ \t\n]+rowspan=\\)\\([^ \t\n>]*\\)" 3656 nil
3563 nil 3657 t)
3564 t) 3658 (progn
3565 (progn 3659 (delete-region (match-beginning 2) (match-end 2))
3566 (delete-region (match-beginning 2) (match-end 2)) 3660 (insert (format "\"%d\"" rows)))
3567 (insert (format "\"%d\"" rows))) 3661 (insert (format " rowspan=\"%d\"" rows)))
3568 (insert (format " rowspan=\"%d\"" rows))) 3662 (error "ERROR: Point not in a table cell!"))))
3569 (error "ERROR: Point not in a table cell!")))))
3570 3663
3571 3664
3572 ;;; ISO-Characters for Emacs HTML-mode (Berthold Crysmann) 3665 ;;; ISO-Characters for Emacs HTML-mode (Berthold Crysmann)
3573 ;(setq buffer-invisibility-spec '(hm--html-iso-entity-invisible-flag)) 3666 ;(setq buffer-invisibility-spec '(hm--html-iso-entity-invisible-flag))
3574 3667
4022 4115
4023 ;;This should be extended in the future to use also other viewers. 4116 ;;This should be extended in the future to use also other viewers.
4024 (defun hm--html-view-www-package-docu () 4117 (defun hm--html-view-www-package-docu ()
4025 "View the WWW documentation of the package." 4118 "View the WWW documentation of the package."
4026 (interactive) 4119 (interactive)
4027 (w3-fetch (concat "http://www.tnt.uni-hannover.de" 4120 (w3-fetch "http://www.tnt.uni-hannover.de:80/data/info/www/tnt/soft/info/www/html-editors/hm--html-menus/overview.html"))
4028 "/~muenkel/software/own/hm--html-menus/overview.html")))
4029
4030 4121
4031 ;;; 4122 ;;;
4032 ; Bug reporting 4123 ; Bug reporting
4033 ; 4124 ;
4034 4125
4078 'hm--html-server-side-include-command-with-parameter-alist 4169 'hm--html-server-side-include-command-with-parameter-alist
4079 'hm--html-signature-file 4170 'hm--html-signature-file
4080 'hm--html-template-dir 4171 'hm--html-template-dir
4081 'hm--html-url-alist 4172 'hm--html-url-alist
4082 'hm--html-user-config-file 4173 'hm--html-user-config-file
4083 'hm--html-site-config-file
4084 'hm--html-username 4174 'hm--html-username
4085 'hm--html-wais-hostname:port-alist 4175 'hm--html-wais-hostname:port-alist
4086 'hm--html-wais-hostname:port-default 4176 'hm--html-wais-hostname:port-default
4087 'hm--html-wais-path-alist 4177 'hm--html-wais-path-alist
4088 'hm--html-wais-servername:port-alist 4178 'hm--html-wais-servername:port-alist
4089 'hm--html-wais-servername:port-default 4179 'hm--html-wais-servername:port-default
4180 ; 'html-deemphasize-color
4090 'html-document-previewer 4181 'html-document-previewer
4182 ; 'html-document-previewer-args
4183 ; 'html-emphasize-color
4184 ; 'html-quotify-hrefs-on-find
4091 'hm--html-region-mode 4185 'hm--html-region-mode
4092 'html-sigusr1-signal-value 4186 'html-sigusr1-signal-value
4187 ; 'html-use-font-lock
4188 ; 'html-use-highlighting
4093 ) 4189 )
4094 nil 4190 nil
4095 nil 4191 nil
4096 "Decribe your Bug: " 4192 "Decribe your Bug: "
4097 ))) 4193 )))
4104 (if (adapt-xemacsp) 4200 (if (adapt-xemacsp)
4105 (progn 4201 (progn
4106 4202
4107 (add-hook 'zmacs-activate-region-hook 4203 (add-hook 'zmacs-activate-region-hook
4108 'hm--html-switch-region-modes-on) 4204 'hm--html-switch-region-modes-on)
4205 ; (function (lambda () (hm--html-region-mode 1))))
4109 4206
4110 (add-hook 'zmacs-deactivate-region-hook 4207 (add-hook 'zmacs-deactivate-region-hook
4111 'hm--html-switch-region-modes-off) 4208 'hm--html-switch-region-modes-off)
4209 ; (function (lambda () (hm--html-region-mode -1))))
4112 4210
4113 ) 4211 )
4114 4212
4115 (transient-mark-mode t) 4213 (transient-mark-mode t)
4116 4214
4117 (add-hook 'activate-mark-hook 4215 (add-hook 'activate-mark-hook
4118 'hm--html-switch-region-modes-on) 4216 'hm--html-switch-region-modes-on)
4217 ; (function (lambda () (hm--html-region-mode t))))
4119 4218
4120 (add-hook 'deactivate-mark-hook 4219 (add-hook 'deactivate-mark-hook
4121 'hm--html-switch-region-modes-off) 4220 'hm--html-switch-region-modes-off)
4221 ; (function (lambda () (hm--html-region-mode nil))))
4122 4222
4123 ) 4223 )
4224
4225
4226 ;(add-hook 'hm--html-mode-hook
4227 ; (function
4228 ; (lambda ()
4229 ; (make-variable-buffer-local 'write-file-hooks)
4230 ; (add-hook 'write-file-hooks
4231 ; 'hm--html-maybe-new-date-and-changed-comment))))
4232
4233 ;(add-hook 'zmacs-activate-region-hook 'hm--set-hm--region-active)
4234 ;
4235 ;(add-hook 'zmacs-deactivate-region-hook 'hm--unset-hm--region-active)
4236
4124 4237
4125 4238
4126 ;;; 4239 ;;;
4127 ; Environment loading 4240 ; Environment loading
4128 ; 4241 ;
4129 4242
4130 (defun hm--html-load-config-files () 4243 (defun hm--html-load-config-files ()
4131 "Load the html configuration files. 4244 "Load the html configuration files.
4132 First, the system config file (detemined by the environment variable 4245 First, the system config file (detemined by the environment variable
4133 HTML_CONFIG_FILE; normaly hm--html-configuration.el(c)) is loaded. 4246 HTML_CONFIG_FILE; normaly hm--html-configuration.el(c)) is loaded and
4134 At second a site config file is loaded, if the environment variable 4247 after that the user config file (determined by the environment variable
4135 HTML_SITE_CONFIG_FILE or the lisp variable `hm--html-site-config-file'
4136 is set to such a file.
4137 At least the user config file (determined by the environment variable
4138 HTML_USER_CONFIG_FILE; normaly the file ~/.hm--html-configuration.el(c)). 4248 HTML_USER_CONFIG_FILE; normaly the file ~/.hm--html-configuration.el(c)).
4139 If no HTML_CONFIG_FILE exists, then the file hm--html-configuration.el(c) 4249 If no HTML_CONFIG_FILE exists, then the file hm--html-configuration.el(c)
4140 is searched in one of the lisp load path directories. 4250 is searched in one of the lisp load path directories.
4141 If no HTML_USER_CONFIG_FILE exists, then the variable 4251 If no HTML_USER_CONFIG_FILE exists, then the variable
4142 `hm--html-user-config-file' is checked. If this variable is nil or the file 4252 `hm--html-user-config-file' is checked. If this variable is nil or the file
4147 (file-exists-p 4257 (file-exists-p
4148 (expand-file-name 4258 (expand-file-name
4149 (getenv "HTML_CONFIG_FILE")))) 4259 (getenv "HTML_CONFIG_FILE"))))
4150 (load-library (expand-file-name (getenv "HTML_CONFIG_FILE"))) 4260 (load-library (expand-file-name (getenv "HTML_CONFIG_FILE")))
4151 (load-library "hm--html-configuration")) 4261 (load-library "hm--html-configuration"))
4152
4153 ;; at second the site config file
4154 (if (and (stringp (getenv "HTML_SITE_CONFIG_FILE"))
4155 (file-exists-p
4156 (expand-file-name
4157 (getenv "HTML_SITE_CONFIG_FILE"))))
4158 (load-file (expand-file-name (getenv "HTML_SITE_CONFIG_FILE")))
4159 (when (and (boundp 'hm--html-site-config-file)
4160 (stringp hm--html-site-config-file)
4161 (file-exists-p (expand-file-name hm--html-site-config-file)))
4162 (load-file (expand-file-name hm--html-site-config-file))))
4163 4262
4164 ;; and now the user config file 4263 ;; and now the user config file
4165 (cond ((and (stringp (getenv "HTML_USER_CONFIG_FILE")) 4264 (cond ((and (stringp (getenv "HTML_USER_CONFIG_FILE"))
4166 (file-exists-p 4265 (file-exists-p
4167 (expand-file-name 4266 (expand-file-name
4180 "Look at hm--html-load-config-files !"))) 4279 "Look at hm--html-load-config-files !")))
4181 ) 4280 )
4182 ) 4281 )
4183 4282
4184 4283
4284
4285 ;(hm--html-load-config-files)
4286
4287 ;;; Definition of the minor mode html-region-mode
4288
4289 ;(defvar html-region-mode nil
4290 ; "*t, if the minor mode html-region-mode is on and nil otherwise.")
4291
4292 ;(make-variable-buffer-local 'html-region-mode)
4293
4294 ;(defvar html-region-mode-map nil "")
4295
4296 ;(hm--html-load-config-files)
4297
4298 ;(if hm--html-use-old-keymap
4299 ; (progn
4300
4301 ;;(setq minor-mode-alist (cons '(html-region-mode " Region") minor-mode-alist))
4302 ;(or (assq 'html-region-mode minor-mode-alist)
4303 ; (setq minor-mode-alist
4304 ; (purecopy
4305 ; (append minor-mode-alist
4306 ; '((html-region-mode " Region"))))))
4307
4308 ;(defun html-region-mode (on)
4309 ; "Turns the minor mode html-region-mode on or off.
4310 ;The function turns the html-region-mode on, if ON is t and off otherwise."
4311 ; (if (string= mode-name "HTML")
4312 ; (if on
4313 ; ;; html-region-mode on
4314 ; (progn
4315 ; (setq html-region-mode t)
4316 ; (use-local-map html-region-mode-map))
4317 ; ;; html-region-mode off
4318 ; (setq html-region-mode nil)
4319 ; (use-local-map html-mode-map))))
4320
4321 ;))
4322
4323
4324
4325
4326
4327 ;;;
4328 ; Set font lock color
4329 ; (hm--html-font-lock-color should be defined in hm--html-configuration.el
4330 ; oder .hm--html-configuration.el)
4331 ;
4332 ;(require 'font-lock)
4333 ;(load-library "font-lock")
4334 ;(set-face-foreground 'font-lock-comment-face hm--html-font-lock-color)
4335
4336
4337 ;(hm--html-generate-help-buffer-faces)
4338
4339
4340
4341
4342 ;;;;;;;;
4343 ;(setq hm--html-hostname-search-string
4344 ; "[-a-zA-Z0-9]*\\.[-a-zA-Z0-9]*\\.[-a-zA-Z0-9.]*")
4345 ;
4346 ;(defun hm--html-get-next-hostname ()
4347 ; (interactive)
4348 ; (search-forward-regexp hm--html-hostname-search-string)
4349 ; (buffer-substring (match-beginning 0) (match-end 0)))
4350 ;
4351
4352 ;;; Announce the feature hm--html-configuration
4353
4185 ;;; quotify href 4354 ;;; quotify href
4186 4355
4187 (defvar hm--html-quotify-href-regexp 4356 (defvar hm--html-quotify-href-regexp
4188 "<[aA][ \t\n]+\\([nN][aA][mM][eE]=[a-zA-Z0-9]+[ \t\n]+\\)?[hH][rR][eE][fF]=" 4357 "<[aA][ \t\n]+\\([nN][aA][mM][eE]=[a-zA-Z0-9]+[ \t\n]+\\)?[hH][rR][eE][fF]="
4189 "Regular expression used for searching hrefs.") 4358 "Regular expression used for searching hrefs.")