Mercurial > hg > xemacs-beta
comparison lisp/hm--html-menus/hm--html.el @ 22:8fc7fe29b841 r19-15b94
Import from CVS: tag r19-15b94
author | cvs |
---|---|
date | Mon, 13 Aug 2007 08:50:29 +0200 |
parents | ac2d302a0011 |
children | 4103f0995bd7 |
comparison
equal
deleted
inserted
replaced
21:b88636d63495 | 22:8fc7fe29b841 |
---|---|
1 ;;; $Id: hm--html.el,v 1.1.1.2 1996/12/18 03:46:47 steve Exp $ | 1 ;;; $Id: hm--html.el,v 1.2 1997/02/16 01:29:10 steve Exp $ |
2 ;;; | 2 ;;; |
3 ;;; Copyright (C) 1993, 1994, 1995, 1996 Heiko Muenkel | 3 ;;; Copyright (C) 1993 - 1997 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) |
29 | 29 |
30 ;(require 'hm--date) | 30 ;(require 'hm--date) |
31 ;(require 'adapt) | 31 ;(require 'adapt) |
32 | 32 |
33 | 33 |
34 ;;; Indentation | 34 (defun hm--html-set-marker-at-position (&optional position) |
35 | 35 "Creates a new marker and set the marker at the POSITION. |
36 (defun hm--html-indent-region (begin end) | 36 If POSITION is nil, then the marker is set at the current point. |
37 "Indents the region between BEGIN and END according to the major mode." | 37 The return value is the marker." |
38 (when (< end begin) | 38 (let ((marker (make-marker))) |
39 (let ((a end)) | 39 (if position |
40 (setq end start) | 40 (set-marker marker position) |
41 (setq start a))) | 41 (set-marker marker (point))))) |
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 | |
52 | 42 |
53 ;;; Functions for adding html commands which consists of a start and a | 43 ;;; Functions for adding html commands which consists of a start and a |
54 ;;; end tag and some text between them. (Basicfunctions) | 44 ;;; end tag and some text between them. (Basicfunctions) |
55 | 45 |
56 (defun hm--html-add-tags (function-insert-start-tag | 46 (defun hm--html-add-tags (function-insert-start-tag |
66 The first parameter specifies the funtion which insert the start tag | 56 The first parameter specifies the funtion which insert the start tag |
67 and the third parameter specifies the function which insert the end tag. | 57 and the third parameter specifies the function which insert the end tag. |
68 The second parameter is the string for the start tag and the fourth parameter | 58 The second parameter is the string for the start tag and the fourth parameter |
69 is the string for the end tag. The third and fourth parameters are optional. | 59 is the string for the end tag. The third and fourth parameters are optional. |
70 The fifth parameter is optional. If it exists, it specifies a function which | 60 The fifth parameter is optional. If it exists, it specifies a function which |
71 inserts the sixth parameter (the middle-start-tag) between the start and the end | 61 inserts the sixth parameter (the middle-start-tag) between the start and the |
72 tag." | 62 end 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: ") | |
77 (eval (list function-insert-start-tag start-tag)) | 63 (eval (list function-insert-start-tag start-tag)) |
78 (if function-insert-middle-start-tag | 64 (if function-insert-middle-start-tag |
79 (eval (list function-insert-middle-start-tag middle-start-tag))) | 65 (eval (list function-insert-middle-start-tag middle-start-tag))) |
80 (let ((position (point))) | 66 (let ((position (hm--html-set-marker-at-position (point)))) |
81 (if function-insert-middle-end-tag | 67 (if function-insert-middle-end-tag |
82 (eval (list function-insert-middle-end-tag middle-end-tag))) | 68 (eval (list function-insert-middle-end-tag middle-end-tag))) |
83 (if function-insert-end-tag | 69 (if function-insert-end-tag |
84 (eval (list function-insert-end-tag end-tag))) | 70 (eval (list function-insert-end-tag end-tag))) |
85 (goto-char position))) | 71 (goto-char position))) |
87 | 73 |
88 (defun hm--html-add-tags-to-region (function-insert-start-tag | 74 (defun hm--html-add-tags-to-region (function-insert-start-tag |
89 start-tag | 75 start-tag |
90 function-insert-end-tag | 76 function-insert-end-tag |
91 end-tag | 77 end-tag |
92 &optional function-insert-middle-tag | 78 &optional |
93 &optional middle-tag) | 79 function-insert-middle-tag |
80 middle-tag) | |
94 "Adds the start and the end html tag to the active region. | 81 "Adds the start and the end html tag to the active region. |
95 The first parameter specifies the funtion which insert the start tag | 82 The first parameter specifies the funtion which insert the start tag |
96 and the third parameter specifies the function which insert the end tag. | 83 and the third parameter specifies the function which insert the end tag. |
97 The second parameter is the string for the start tag and the fourth parameter | 84 The second parameter is the string for the start tag and the fourth parameter |
98 is the string for the end tag. | 85 is the string for the end tag. |
99 The fifth parameter is optional. If it exists, it specifies a function which | 86 The fifth parameter is optional. If it exists, it specifies a function which |
100 inserts the sixth parameter (the middle-tag) between the start and the end | 87 inserts the sixth parameter (the middle-tag) between the start and the end |
101 tag." | 88 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: ") | |
106 (save-window-excursion | 89 (save-window-excursion |
107 (let ((start (region-beginning)) | 90 (let ((start (hm--html-set-marker-at-position (region-beginning))) |
108 (end (region-end))) | 91 (end (region-end))) |
109 (goto-char end) | 92 (goto-char end) |
110 (eval (list function-insert-end-tag end-tag)) | 93 (eval (list function-insert-end-tag end-tag)) |
111 (goto-char start) | 94 (goto-char start) |
95 ; (backward-char (+ (length end-tag) (- end start))) | |
112 (eval (list function-insert-start-tag start-tag)) | 96 (eval (list function-insert-start-tag start-tag)) |
113 (if function-insert-middle-tag | 97 (if function-insert-middle-tag |
114 (eval (list function-insert-middle-tag middle-tag))) | 98 (eval (list function-insert-middle-tag middle-tag))) |
115 ))) | 99 ))) |
116 | 100 |
138 The parameter must be a string (i.e. \"<PRE>\")" | 122 The parameter must be a string (i.e. \"<PRE>\")" |
139 (let ((start (point))) | 123 (let ((start (point))) |
140 (insert tag) | 124 (insert tag) |
141 (hm--html-indent-region start (point)) | 125 (hm--html-indent-region start (point)) |
142 ) | 126 ) |
143 ; (html-maybe-deemphasize-region start (- (point) 1))) | |
144 (insert "\n")) | 127 (insert "\n")) |
145 | 128 |
146 | 129 |
147 (defun hm--html-insert-end-tag-with-newline (tag) | 130 (defun hm--html-insert-end-tag-with-newline (tag) |
148 "Inserts the HTML end tag 'tag' with a Newline. | 131 "Inserts the HTML end tag 'tag' with a Newline. |
149 The parameter must be a string (i.e. \"</PRE>\")" | 132 The parameter must be a string (i.e. \"</PRE>\")" |
150 (insert "\n") | 133 (insert "\n") |
151 (let ((start (point))) | 134 (let ((start (point))) |
152 (insert tag) | 135 (insert tag) |
153 (hm--html-indent-region start (point)))) | 136 (hm--html-indent-region start (point)))) |
154 ; (html-maybe-deemphasize-region start (- (point) 1)))) | |
155 | 137 |
156 | 138 |
157 | 139 |
158 ;;; Functions which add simple tags of the form <tag> | 140 ;;; Functions which add simple tags of the form <tag> |
159 | 141 |
1175 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline | 1157 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline |
1176 "<OL>" | 1158 "<OL>" |
1177 'hm--html-insert-end-tag-with-newline | 1159 'hm--html-insert-end-tag-with-newline |
1178 "</OL>" | 1160 "</OL>" |
1179 'hm--html-insert-start-tag | 1161 'hm--html-insert-start-tag |
1180 "<LI> ")) | 1162 "<LI> " |
1163 'hm--html-insert-end-tag | |
1164 " </LI>")) | |
1181 | 1165 |
1182 (defun hm--html-add-numberlist-to-region () | 1166 (defun hm--html-add-numberlist-to-region () |
1183 "Adds the HTML tags for a numbered list to the region." | 1167 "Adds the HTML tags for a numbered list to the region." |
1184 (interactive) | 1168 (interactive) |
1185 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline | 1169 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline |
1186 "<OL>" | 1170 "<OL>" |
1187 'hm--html-insert-end-tag-with-newline | 1171 'hm--html-insert-end-tag-with-newline |
1188 "</OL>" | 1172 "</OL>")) |
1189 'hm--html-insert-start-tag | 1173 ; 'hm--html-insert-start-tag |
1190 "<LI> ")) | 1174 ; "<LI> ")) |
1191 | 1175 |
1192 | 1176 |
1193 (defun hm--html-add-directory-list () | 1177 (defun hm--html-add-directory-list () |
1194 "Adds the HTML tags for a directory list at the point in the current buffer." | 1178 "Adds the HTML tags for a directory list at the point in the current buffer." |
1195 (interactive) | 1179 (interactive) |
1196 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline | 1180 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline |
1197 "<DIR>" | 1181 "<DIR>" |
1198 'hm--html-insert-end-tag-with-newline | 1182 'hm--html-insert-end-tag-with-newline |
1199 "</DIR>" | 1183 "</DIR>" |
1200 'hm--html-insert-start-tag | 1184 'hm--html-insert-start-tag |
1201 "<LI> ")) | 1185 "<LI> " |
1186 'hm--html-insert-end-tag | |
1187 " </LI>")) | |
1202 | 1188 |
1203 (defun hm--html-add-directorylist-to-region () | 1189 (defun hm--html-add-directorylist-to-region () |
1204 "Adds the HTML tags for a directory list to the region." | 1190 "Adds the HTML tags for a directory list to the region." |
1205 (interactive) | 1191 (interactive) |
1206 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline | 1192 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline |
1207 "<DIR>" | 1193 "<DIR>" |
1208 'hm--html-insert-end-tag-with-newline | 1194 'hm--html-insert-end-tag-with-newline |
1209 "</DIR>" | 1195 "</DIR>")) |
1210 'hm--html-insert-start-tag | 1196 ; 'hm--html-insert-start-tag |
1211 "<LI> ")) | 1197 ; "<LI> ")) |
1212 | 1198 |
1213 | 1199 |
1214 (defun hm--html-add-list () | 1200 (defun hm--html-add-list () |
1215 "Adds the HTML tags for a (unnumbered) list to the region." | 1201 "Adds the HTML tags for a (unnumbered) list to the region." |
1216 (interactive) | 1202 (interactive) |
1217 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline | 1203 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline |
1218 "<UL>" | 1204 "<UL>" |
1219 'hm--html-insert-end-tag-with-newline | 1205 'hm--html-insert-end-tag-with-newline |
1220 "</UL>" | 1206 "</UL>" |
1221 'hm--html-insert-start-tag | 1207 'hm--html-insert-start-tag |
1222 "<LI> ")) | 1208 "<LI> " |
1209 'hm--html-insert-end-tag | |
1210 " </LI>")) | |
1223 | 1211 |
1224 | 1212 |
1225 (defun hm--html-add-list-to-region () | 1213 (defun hm--html-add-list-to-region () |
1226 "Adds the HTML tags for a (unnumbered) list to the region." | 1214 "Adds the HTML tags for a (unnumbered) list to the region." |
1227 (interactive) | 1215 (interactive) |
1228 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline | 1216 (hm--html-add-tags-to-region 'hm--html-insert-start-tag-with-newline |
1229 "<UL>" | 1217 "<UL>" |
1230 'hm--html-insert-end-tag-with-newline | 1218 'hm--html-insert-end-tag-with-newline |
1231 "</UL>" | 1219 "</UL>")) |
1232 'hm--html-insert-start-tag | 1220 ; 'hm--html-insert-start-tag |
1233 "<LI> ")) | 1221 ; "<LI> ")) |
1234 | 1222 |
1235 | 1223 |
1236 (defun hm--html-add-menu () | 1224 ;(defun hm--html-add-menu () |
1237 "Adds the HTML tags for a menu." | 1225 ; "Adds the HTML tags for a menu." |
1238 (interactive) | 1226 ; (interactive) |
1239 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline | 1227 ; (hm--html-add-tags 'hm--html-insert-start-tag-with-newline |
1240 "<MENU>" | 1228 ; "<MENU>" |
1241 'hm--html-insert-end-tag-with-newline | 1229 ; 'hm--html-insert-end-tag-with-newline |
1242 "</MENU>" | 1230 ; "</MENU>" |
1243 'hm--html-insert-start-tag | 1231 ; 'hm--html-insert-start-tag |
1244 "<LI> ")) | 1232 ; "<LI> ")) |
1245 | 1233 |
1246 | 1234 |
1247 (defun hm--html-add-menu () | 1235 (defun hm--html-add-menu () |
1248 "Adds the HTML tags for a menu." | 1236 "Adds the HTML tags for a menu." |
1249 (interactive) | 1237 (interactive) |
1272 (defun hm--html-add-description-title-and-entry () | 1260 (defun hm--html-add-description-title-and-entry () |
1273 "Adds a definition title and entry. | 1261 "Adds a definition title and entry. |
1274 Assumes we're at the end of a previous entry." | 1262 Assumes we're at the end of a previous entry." |
1275 (interactive) | 1263 (interactive) |
1276 (hm--html-add-description-title) | 1264 (hm--html-add-description-title) |
1277 (let ((position (point))) | 1265 (let ((position (point)) |
1278 (search-forward "</DT>") | 1266 (case-fold-search t)) |
1279 (hm--html-add-only-description-entry) | 1267 (search-forward "</dt>") |
1268 (hm--html-add-description-entry) | |
1280 (goto-char position))) | 1269 (goto-char position))) |
1281 | 1270 |
1282 | 1271 |
1283 (defun hm--html-add-description-list () | 1272 (defun hm--html-add-description-list () |
1284 "Adds the HTML tags for a description list. | 1273 "Adds the HTML tags for a description list. |
1376 | 1365 |
1377 (defun hm--html-delete-old-signature () | 1366 (defun hm--html-delete-old-signature () |
1378 "Searches for the old signature and deletes it, if the user want it" | 1367 "Searches for the old signature and deletes it, if the user want it" |
1379 (save-excursion | 1368 (save-excursion |
1380 (goto-char (point-min)) | 1369 (goto-char (point-min)) |
1381 (if (search-forward (concat "<address> " | 1370 (let ((case-fold-search t)) |
1382 "<a name=" | 1371 (if (search-forward (concat "<address> " |
1383 hm--html-signature-reference-name | 1372 "<a name=" |
1384 " href=\"") | 1373 hm--html-signature-reference-name |
1385 nil | 1374 " href=\"") |
1386 t) | 1375 nil |
1387 (let ((signature-start (match-beginning 0)) | 1376 t) |
1388 (signature-end (progn | 1377 (let ((signature-start (match-beginning 0)) |
1389 (search-forward "</address>" nil t) | 1378 (signature-end (progn |
1390 (point)))) | 1379 (search-forward "</address>" nil t) |
1391 (if (yes-or-no-p "Delete the old signature (yes or no) ?") | 1380 (point)))) |
1392 (delete-region signature-start signature-end)))))) | 1381 (if (yes-or-no-p "Delete the old signature (yes or no) ?") |
1382 (delete-region signature-start signature-end))))))) | |
1393 | 1383 |
1394 | 1384 |
1395 (defun hm--html-set-point-for-signature () | 1385 (defun hm--html-set-point-for-signature () |
1396 "Searches and sets the point for inserting the signature. | 1386 "Searches and sets the point for inserting the signature. |
1397 It searches from the end to the beginning of the file. At first it | 1387 It searches from the end to the beginning of the file. At first it |
1398 tries to use the point before the </body> tag then the point before | 1388 tries to use the point before the </body> tag then the point before |
1399 the </html> tag and the the end of the file." | 1389 the </html> tag and the the end of the file." |
1400 (goto-char (point-max)) | 1390 (goto-char (point-max)) |
1401 (cond ((search-backward "</body>" nil t) | 1391 (let ((case-fold-search t)) |
1402 (end-of-line 0) | 1392 (cond ((search-backward "</body>" nil t) |
1403 (if (> (current-column) 0) | 1393 (end-of-line 0) |
1404 (newline 2))) | 1394 (if (> (current-column) 0) |
1405 ((search-backward "</html>" nil t) | 1395 (newline 2))) |
1406 (end-of-line 0) | 1396 ((search-backward "</html>" nil t) |
1407 (if (> (current-column) 0) | 1397 (end-of-line 0) |
1408 (newline 2))) | 1398 (if (> (current-column) 0) |
1409 ((> (current-column) 0) | 1399 (newline 2))) |
1410 (newline 2)) | 1400 ((> (current-column) 0) |
1411 (t))) | 1401 (newline 2)) |
1402 (t)))) | |
1412 | 1403 |
1413 | 1404 |
1414 (defun hm--html-add-signature () | 1405 (defun hm--html-add-signature () |
1415 "Adds the owner's signature at the end of the buffer." | 1406 "Adds the owner's signature at the end of the buffer." |
1416 (interactive) | 1407 (interactive) |
1465 position after the tag. If not, the function next searches for the | 1456 position after the tag. If not, the function next searches for the |
1466 tag <HEAD> and sets the point after the tag, if it exists, or searches for | 1457 tag <HEAD> and sets the point after the tag, if it exists, or searches for |
1467 the tag <HTML>. If this tag exists, the point is set to the position after | 1458 the tag <HTML>. If this tag exists, the point is set to the position after |
1468 this tag or the beginning of the file otherwise." | 1459 this tag or the beginning of the file otherwise." |
1469 (goto-char (point-min)) | 1460 (goto-char (point-min)) |
1470 (cond ((search-forward-regexp "<isindex>" nil t) (newline)) | 1461 (let ((case-fold-search t)) |
1471 ((search-forward-regexp "<head>" nil t) (newline)) | 1462 (cond ((search-forward-regexp "<isindex>" nil t) (newline)) |
1472 ((search-forward-regexp "<html>" nil t) (newline)) | 1463 ((search-forward-regexp "<head>" nil t) (newline)) |
1473 (t))) | 1464 ((search-forward-regexp "<html>" nil t) (newline)) |
1465 (t)))) | |
1474 | 1466 |
1475 | 1467 |
1476 (defun hm--html-add-title (title) | 1468 (defun hm--html-add-title (title) |
1477 "Adds the HTML tags for a title at the beginning of the buffer." | 1469 "Adds the HTML tags for a title at the beginning of the buffer." |
1478 (interactive "sTitle: ") | 1470 (interactive "sTitle: ") |
1479 (save-excursion | 1471 (save-excursion |
1480 (goto-char (point-min)) | 1472 (goto-char (point-min)) |
1481 (if (search-forward "<title>" nil t) | 1473 (let ((case-fold-search t)) |
1482 (let ((point-after-start-tag (point))) | 1474 (if (search-forward "<title>" nil t) |
1483 (if (not (search-forward "</title>" nil t)) | 1475 (let ((point-after-start-tag (point))) |
1484 nil | 1476 (if (not (search-forward "</title>" nil t)) |
1485 (goto-char (- (point) 8)) | 1477 nil |
1486 (delete-backward-char (- (point) point-after-start-tag)) | 1478 (goto-char (- (point) 8)) |
1487 (let ((start (point))) | 1479 (delete-backward-char (- (point) point-after-start-tag)) |
1488 (insert title " (" (hm--date) ")") | 1480 (let ((start (point))) |
1489 (goto-char start)))) | 1481 (insert title " (" (hm--date) ")") |
1490 ;; Noch kein <TITLE> im Buffer vorhanden | 1482 (goto-char start)))) |
1491 (hm--html-set-point-for-title) | 1483 ;; Noch kein <TITLE> im Buffer vorhanden |
1492 (hm--html-add-tags 'hm--html-insert-start-tag | 1484 (hm--html-set-point-for-title) |
1493 "<TITLE>" | 1485 (hm--html-add-tags 'hm--html-insert-start-tag |
1494 'hm--html-insert-end-tag | 1486 "<TITLE>" |
1495 "</TITLE>" | 1487 'hm--html-insert-end-tag |
1496 'insert | 1488 "</TITLE>" |
1497 (concat title " (" (hm--date) ")")) | 1489 'insert |
1498 (forward-char 8) | 1490 (concat title " (" (hm--date) ")")) |
1499 (newline 1) | 1491 (forward-char 8) |
1500 ))) | 1492 (newline 1) |
1493 )))) | |
1501 | 1494 |
1502 | 1495 |
1503 (defun hm--html-add-title-to-region () | 1496 (defun hm--html-add-title-to-region () |
1504 "Adds the HTML tags for a title to the region." | 1497 "Adds the HTML tags for a title to the region." |
1505 (interactive) | 1498 (interactive) |
1506 (let ((title (buffer-substring (region-beginning) (region-end)))) | 1499 (let ((title (buffer-substring (region-beginning) (region-end))) |
1500 (case-fold-search t)) | |
1507 (save-excursion | 1501 (save-excursion |
1508 (goto-char (point-min)) | 1502 (goto-char (point-min)) |
1509 (if (search-forward "<title>" nil t) | 1503 (if (search-forward "<title>" nil t) |
1510 (let ((point-after-start-tag (point))) | 1504 (let ((point-after-start-tag (point))) |
1511 (if (not (search-forward "</title>" nil t)) | 1505 (if (not (search-forward "</title>" nil t)) |
1529 (defun hm--html-add-html () | 1523 (defun hm--html-add-html () |
1530 "Adds the HTML tags <HTML> and </HTML> in the buffer. | 1524 "Adds the HTML tags <HTML> and </HTML> in the buffer. |
1531 The tag <HTML> will be inserted at the beginning and </HTML> at the | 1525 The tag <HTML> will be inserted at the beginning and </HTML> at the |
1532 end of the file." | 1526 end of the file." |
1533 (interactive) | 1527 (interactive) |
1534 (let ((new-cursor-position nil)) | 1528 (let ((new-cursor-position nil) |
1529 (case-fold-search t)) | |
1535 (save-excursion | 1530 (save-excursion |
1536 (goto-char (point-min)) | 1531 (goto-char (point-min)) |
1537 (if (search-forward "<html>" nil t) | 1532 (if (search-forward "<html>" nil t) |
1538 (error "There is an old tag <HTML> in the current buffer !") | 1533 (error "There is an old tag <HTML> in the current buffer !") |
1539 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<HTML>") | 1534 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<HTML>") |
1551 (defun hm--html-add-head () | 1546 (defun hm--html-add-head () |
1552 "Adds the HTML tags <HEAD> and </HEAD> in the buffer. | 1547 "Adds the HTML tags <HEAD> and </HEAD> in the buffer. |
1553 The tags will be inserted after <HTML> or at the beginning of the file. | 1548 The tags will be inserted after <HTML> or at the beginning of the file. |
1554 The function also looks for the tags <BODY> and </TITLE>." | 1549 The function also looks for the tags <BODY> and </TITLE>." |
1555 (interactive) | 1550 (interactive) |
1551 (let ((case-fold-search t)) | |
1556 (goto-char (point-min)) | 1552 (goto-char (point-min)) |
1557 (if (search-forward "<html>" nil t) | 1553 (if (search-forward "<html>" nil t) |
1558 (if (search-forward "<head>" nil t) | 1554 (if (search-forward "<head>" nil t) |
1559 (error "There is an old tag <HEAD> in the current buffer !") | 1555 (error "There is an old tag <HEAD> in the current buffer !") |
1560 (if (search-forward "</head>" nil t) | 1556 (if (search-forward "</head>" nil t) |
1584 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline | 1580 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline |
1585 "<HEAD>")) | 1581 "<HEAD>")) |
1586 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline | 1582 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline |
1587 "<HEAD>" | 1583 "<HEAD>" |
1588 'hm--html-insert-end-tag-with-newline | 1584 'hm--html-insert-end-tag-with-newline |
1589 "</HEAD>"))))) | 1585 "</HEAD>")))))) |
1590 | 1586 |
1591 | 1587 |
1592 (defun hm--html-add-head-to-region () | 1588 (defun hm--html-add-head-to-region () |
1593 "Adds the HTML tags <HEAD> and </HEAD> to the region." | 1589 "Adds the HTML tags <HEAD> and </HEAD> to the region." |
1594 (interactive) | 1590 (interactive) |
1600 | 1596 |
1601 (defun hm--html-add-body () | 1597 (defun hm--html-add-body () |
1602 "Adds the HTML tags <BODY> and </BODY> in the buffer. | 1598 "Adds the HTML tags <BODY> and </BODY> in the buffer. |
1603 The tags will be inserted before </HTML> or at the end of the file." | 1599 The tags will be inserted before </HTML> or at the end of the file." |
1604 (interactive) | 1600 (interactive) |
1601 (let ((case-fold-search t)) | |
1605 (goto-char (point-max)) | 1602 (goto-char (point-max)) |
1606 (if (search-backward "</html>" nil t) | 1603 (if (search-backward "</html>" nil t) |
1607 (progn | 1604 (progn |
1608 (if (search-backward "</body>" nil t) | 1605 (if (search-backward "</body>" nil t) |
1609 (error "There is an old tag </BODY> in the current buffer !") | 1606 (error "There is an old tag </BODY> in the current buffer !") |
1624 (goto-char cursor-position) | 1621 (goto-char cursor-position) |
1625 )) | 1622 )) |
1626 (if (not (= (current-column) 0)) | 1623 (if (not (= (current-column) 0)) |
1627 (newline)) | 1624 (newline)) |
1628 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<BODY>" | 1625 (hm--html-add-tags 'hm--html-insert-start-tag-with-newline "<BODY>" |
1629 'hm--html-insert-end-tag-with-newline "</BODY>")))) | 1626 'hm--html-insert-end-tag-with-newline "</BODY>"))))) |
1630 | 1627 |
1631 | 1628 |
1632 (defun hm--html-add-body-to-region () | 1629 (defun hm--html-add-body-to-region () |
1633 "Adds the HTML tags <BODY> and </BODY> to the region." | 1630 "Adds the HTML tags <BODY> and </BODY> to the region." |
1634 (interactive) | 1631 (interactive) |
1642 "Adds the HTML tags for a title and a header in the current buffer." | 1639 "Adds the HTML tags for a title and a header in the current buffer." |
1643 ; (interactive "sTitle and Header String: \nnHeader Size (1 .. 6): ") | 1640 ; (interactive "sTitle and Header String: \nnHeader Size (1 .. 6): ") |
1644 ; (if (> size 6) | 1641 ; (if (> size 6) |
1645 ; (message "The size must be a number from 1 to 6 !") | 1642 ; (message "The size must be a number from 1 to 6 !") |
1646 (interactive "sTitle and Header String: ") | 1643 (interactive "sTitle and Header String: ") |
1647 (hm--html-add-title title) | 1644 (let ((case-fold-search t)) |
1648 (save-excursion | 1645 (hm--html-add-title title) |
1649 (goto-char (point-min)) | 1646 (save-excursion |
1650 (search-forward "</title>" nil t) | 1647 (goto-char (point-min)) |
1651 (if (search-forward "</head>" nil t) | 1648 (search-forward "</title>" nil t) |
1652 (progn | 1649 (if (search-forward "</head>" nil t) |
1653 (search-forward "<body>" nil t) | 1650 (progn |
1654 (newline 1)) | 1651 (search-forward "<body>" nil t) |
1655 (if (search-forward "<body>" nil t) | 1652 (newline 1)) |
1656 (newline 1) | 1653 (if (search-forward "<body>" nil t) |
1657 (if (string= (what-line) "Line 1") | 1654 (newline 1) |
1658 (progn | 1655 (if (string= (what-line) "Line 1") |
1659 (end-of-line) | 1656 (progn |
1660 (newline 1))))) | 1657 (end-of-line) |
1661 (hm--html-add-header 1 title))) | 1658 (newline 1))))) |
1659 (hm--html-add-header 1 title)))) | |
1662 | 1660 |
1663 | 1661 |
1664 (defun hm--html-add-title-and-header-to-region () | 1662 (defun hm--html-add-title-and-header-to-region () |
1665 "Adds the HTML tags for a title and a header to the region." | 1663 "Adds the HTML tags for a title and a header to the region." |
1666 ;The parameter 'size' spezifies the size of the header.";" | 1664 ;The parameter 'size' spezifies the size of the header.";" |
1677 "Adds a full HTML frame to the current buffer. | 1675 "Adds a full HTML frame to the current buffer. |
1678 The frame consists of the elements html, head, body, title, | 1676 The frame consists of the elements html, head, body, title, |
1679 header and the signature. The parameter TITLE specifies the | 1677 header and the signature. The parameter TITLE specifies the |
1680 title and the header of the document." | 1678 title and the header of the document." |
1681 (interactive "sTitle and Header String: ") | 1679 (interactive "sTitle and Header String: ") |
1682 (hm--html-add-html) | 1680 (let ((case-fold-search t)) |
1683 (hm--html-add-head) | 1681 (hm--html-add-html) |
1684 (hm--html-add-body) | 1682 (hm--html-add-head) |
1685 (hm--html-add-title-and-header title) | 1683 (hm--html-add-body) |
1686 (if hm--html-signature-file | 1684 (hm--html-add-title-and-header title) |
1687 (hm--html-add-signature)) | 1685 (if hm--html-signature-file |
1688 (goto-char (point-min)) | 1686 (hm--html-add-signature)) |
1689 (search-forward "</h1>" nil t) | 1687 (goto-char (point-min)) |
1690 (forward-line 1) | 1688 (search-forward "</h1>" nil t) |
1691 (if hm--html-automatic-created-comment | 1689 (forward-line 1) |
1692 (hm--html-insert-created-comment))) | 1690 (if hm--html-automatic-created-comment |
1691 (hm--html-insert-created-comment)))) | |
1693 | 1692 |
1694 | 1693 |
1695 (defun hm--html-add-full-html-frame-with-region () | 1694 (defun hm--html-add-full-html-frame-with-region () |
1696 "Adds a full HTML frame to the current buffer with the use of a region. | 1695 "Adds a full HTML frame to the current buffer with the use of a region. |
1697 The frame consists of the elements html, head, body, title, | 1696 The frame consists of the elements html, head, body, title, |
1732 ;;; Functions which add links | 1731 ;;; Functions which add links |
1733 | 1732 |
1734 (defun hm--html-mark-example (parameter-list) | 1733 (defun hm--html-mark-example (parameter-list) |
1735 "Marks the example of the parameterlist in the current buffer. | 1734 "Marks the example of the parameterlist in the current buffer. |
1736 It returns the example extent." | 1735 It returns the example extent." |
1737 (if (hm--html-get-example-from-parameter-list parameter-list) | 1736 (let ((case-fold-search t)) |
1738 (progn | 1737 (if (hm--html-get-example-from-parameter-list parameter-list) |
1739 (search-forward (hm--html-get-example-from-parameter-list | 1738 (progn |
1740 parameter-list)) | 1739 (search-forward (hm--html-get-example-from-parameter-list |
1741 (let ((extent (make-extent (match-beginning 0) | 1740 parameter-list)) |
1742 (match-end 0)))) | 1741 (let ((extent (make-extent (match-beginning 0) |
1743 (set-extent-face extent 'hm--html-help-face) | 1742 (match-end 0)))) |
1744 extent)))) | 1743 (set-extent-face extent 'hm--html-help-face) |
1744 extent))))) | |
1745 | 1745 |
1746 | 1746 |
1747 (defun hm--html-unmark-example (extent) | 1747 (defun hm--html-unmark-example (extent) |
1748 "Unmarks the example for the current question." | 1748 "Unmarks the example for the current question." |
1749 (if extent | 1749 (if extent |
2418 "Makes a proggate-alist from the PROGGATE-ALLOWED-FILE." | 2418 "Makes a proggate-alist from the PROGGATE-ALLOWED-FILE." |
2419 (if (and (stringp proggate-allowed-file) | 2419 (if (and (stringp proggate-allowed-file) |
2420 (file-exists-p proggate-allowed-file)) | 2420 (file-exists-p proggate-allowed-file)) |
2421 (save-window-excursion | 2421 (save-window-excursion |
2422 (let ((alist nil) | 2422 (let ((alist nil) |
2423 (buffername (find-file-noselect proggate-allowed-file))) | 2423 (buffername (find-file-noselect proggate-allowed-file)) |
2424 (case-fold-search t)) | |
2424 (set-buffer buffername) | 2425 (set-buffer buffername) |
2425 (toggle-read-only) | 2426 (toggle-read-only) |
2426 (goto-char (point-min)) | 2427 (goto-char (point-min)) |
2427 (while (search-forward-regexp "[^ \t\n]+" nil t) | 2428 (while (search-forward-regexp "[^ \t\n]+" nil t) |
2428 (setq alist (append (list (list (buffer-substring | 2429 (setq alist (append (list (list (buffer-substring |
2573 (setq hm--html-newsgroup-alist gnus-newsrc-assoc)) | 2574 (setq hm--html-newsgroup-alist gnus-newsrc-assoc)) |
2574 (if (not (file-exists-p newsrc-file)) | 2575 (if (not (file-exists-p newsrc-file)) |
2575 '(("")) | 2576 '(("")) |
2576 (save-window-excursion | 2577 (save-window-excursion |
2577 (let ((alist nil) | 2578 (let ((alist nil) |
2578 (buffername (find-file-noselect newsrc-file))) | 2579 (buffername (find-file-noselect newsrc-file)) |
2580 (case-fold-search t)) | |
2579 (set-buffer buffername) | 2581 (set-buffer buffername) |
2580 (toggle-read-only) | 2582 (toggle-read-only) |
2581 (goto-char (point-min)) | 2583 (goto-char (point-min)) |
2582 (while (search-forward-regexp "[^:!]+" nil t) | 2584 (while (search-forward-regexp "[^:!]+" nil t) |
2583 (setq alist (append (list (list (buffer-substring | 2585 (setq alist (append (list (list (buffer-substring |
2728 (interactive) | 2730 (interactive) |
2729 (hm--html-add-mailto-link-1 'hm--html-add-tags-to-region)) | 2731 (hm--html-add-mailto-link-1 'hm--html-add-tags-to-region)) |
2730 | 2732 |
2731 (defun hm--html-add-relative-link (relative-file-path) | 2733 (defun hm--html-add-relative-link (relative-file-path) |
2732 "Adds the HTML tags for a relative link at the current point." | 2734 "Adds the HTML tags for a relative link at the current point." |
2733 (interactive (list (read-file-name "Relative Filename: " | 2735 (interactive (list (file-relative-name |
2734 nil | 2736 (read-file-name "Relative Filename: " |
2735 nil | 2737 nil |
2736 nil | 2738 nil |
2737 ""))) | 2739 nil |
2740 "") | |
2741 default-directory) | |
2742 )) | |
2738 (hm--html-add-tags 'hm--html-insert-start-tag | 2743 (hm--html-add-tags 'hm--html-insert-start-tag |
2739 (concat "<A HREF=\"" | 2744 (concat "<A HREF=\"" |
2740 relative-file-path | 2745 relative-file-path |
2741 "\">") | 2746 "\">") |
2742 'hm--html-insert-end-tag | 2747 'hm--html-insert-end-tag |
2743 "</A>")) | 2748 "</A>")) |
2744 | 2749 |
2745 (defun hm--html-add-relative-link-to-region (relative-file-path) | 2750 (defun hm--html-add-relative-link-to-region (relative-file-path) |
2746 "Adds the HTML tags for a relative link to the region." | 2751 "Adds the HTML tags for a relative link to the region." |
2747 (interactive (list (read-file-name "Relative Filename: " | 2752 (interactive (list (file-relative-name |
2748 nil | 2753 (read-file-name "Relative Filename: " |
2749 nil | 2754 nil |
2750 nil | 2755 nil |
2751 ""))) | 2756 nil |
2757 "")))) | |
2752 (hm--html-add-tags-to-region 'hm--html-insert-start-tag | 2758 (hm--html-add-tags-to-region 'hm--html-insert-start-tag |
2753 (concat "<A HREF=\"" | 2759 (concat "<A HREF=\"" |
2754 relative-file-path | 2760 relative-file-path |
2755 "\">") | 2761 "\">") |
2756 'hm--html-insert-end-tag | 2762 'hm--html-insert-end-tag |
2938 | 2944 |
2939 | 2945 |
2940 ;;; Functions to insert templates | 2946 ;;; Functions to insert templates |
2941 | 2947 |
2942 (defvar hm--html-template-file-history nil | 2948 (defvar hm--html-template-file-history nil |
2943 "Historvariable for the template files.") | 2949 "Historyvariable for the template files in the `hm--html-mode'.") |
2944 | 2950 |
2945 (defun hm--html-insert-template (filename) | 2951 (defun hm--html-insert-template (filename) |
2946 "Inserts a templatefile." | 2952 "Inserts a templatefile. |
2947 (interactive (list | 2953 It uses `tmpl-insert-template-file' to insert |
2948 (let ((file-name-history hm--html-template-file-history)) | 2954 the templates. The variables `tmpl-template-dir-list', |
2949 (read-file-name "Templatefile: " | 2955 `tmpl-automatic-expand' and `tmpl-history-variable-name' are |
2950 hm--html-template-dir | 2956 overwritten by `hm--html-template-dir', |
2951 nil | 2957 `hm--html-automatic-expand-templates' and `hm--html-template-file-history'." |
2952 t | 2958 (interactive (list nil)) |
2953 nil)))) | 2959 (let ((tmpl-template-dir-list (if (listp hm--html-template-dir) |
2954 ; 'hm--html-template-file-history))) | 2960 hm--html-template-dir |
2955 (insert-file (expand-file-name filename)) | 2961 (list hm--html-template-dir))) |
2956 (if hm--html-automatic-expand-templates | 2962 (tmpl-automatic-expand hm--html-automatic-expand-templates) |
2957 (tmpl-expand-templates-in-buffer)) | 2963 (tmpl-history-variable-name 'hm--html-template-file-history)) |
2958 (if hm--html-automatic-created-comment | 2964 (if filename |
2959 (hm--html-insert-created-comment t))) | 2965 (tmpl-insert-template-file filename) |
2966 (call-interactively 'tmpl-insert-template-file)) | |
2967 ; (if hm--html-automatic-created-comment ; better in the template files | |
2968 ; (hm--html-insert-created-comment t) | |
2969 )) | |
2970 | |
2971 (defun hm--html-insert-template-from-fixed-dirs (filename) | |
2972 "Inserts a templatefile. | |
2973 It uses `tmpl-insert-template-file-from-fixed-dirs' to insert | |
2974 the templates. The variables `tmpl-template-dir-list', | |
2975 `tmpl-automatic-expand', `tmpl-filter-regexp' and | |
2976 `tmpl-history-variable-name' are overwritten by | |
2977 `hm--html-template-dir', `hm--html-automatic-expand-templates', | |
2978 `hm--html-template-filter-regexp' and `hm--html-template-file-history'." | |
2979 (interactive (list nil)) | |
2980 (let ((tmpl-template-dir-list (if (listp hm--html-template-dir) | |
2981 hm--html-template-dir | |
2982 (list hm--html-template-dir))) | |
2983 (tmpl-automatic-expand hm--html-automatic-expand-templates) | |
2984 (tmpl-filter-regexp hm--html-template-filter-regexp) | |
2985 (tmpl-history-variable-name 'hm--html-template-file-history)) | |
2986 (if filename | |
2987 (tmpl-insert-template-file-from-fixed-dirs filename) | |
2988 (call-interactively 'tmpl-insert-template-file-from-fixed-dirs)) | |
2989 ; (if hm--html-automatic-created-comment ; better in the template files | |
2990 ; (hm--html-insert-created-comment t) | |
2991 )) | |
2992 | |
2993 ;(defun hm--html-insert-template (filename) | |
2994 ; "Inserts a templatefile." | |
2995 ; (interactive | |
2996 ; (list (tmpl-read-template-filename hm--html-template-dir | |
2997 ; hm--html-automatic-expand-templates | |
2998 ; hm--html-template-filter-regexp | |
2999 ; 'hm--html-template-file-history))) | |
3000 ; (interactive (list | |
3001 ; (let ((file-name-history hm--html-template-file-history)) | |
3002 ; (read-file-name "Templatefile: " | |
3003 ; hm--html-template-dir | |
3004 ; nil | |
3005 ; t | |
3006 ; nil)))) | |
3007 ;; 'hm--html-template-file-history))) | |
3008 ; (insert-file (expand-file-name filename)) | |
3009 ; (if hm--html-automatic-expand-templates | |
3010 ; (tmpl-expand-templates-in-buffer)) | |
3011 ; (if hm--html-automatic-created-comment | |
3012 ; (hm--html-insert-created-comment t))) | |
2960 | 3013 |
2961 | 3014 |
2962 | 3015 |
2963 ;;; Functions for highlighting | 3016 ;;; Functions for highlighting |
2964 | 3017 |
3475 (interactive "NNo of cells in a row: ") | 3528 (interactive "NNo of cells in a row: ") |
3476 (if (< no-of-cells 1) | 3529 (if (< no-of-cells 1) |
3477 (error "ERROR: There must be at least one cell in a row!")) | 3530 (error "ERROR: There must be at least one cell in a row!")) |
3478 (hm--html-add-tags | 3531 (hm--html-add-tags |
3479 'hm--html-insert-end-tag-with-newline | 3532 'hm--html-insert-end-tag-with-newline |
3480 (concat | 3533 (concat "<TR>" |
3481 (mapconcat '(lambda (entry) | 3534 (mapconcat '(lambda (entry) |
3482 (concat "<TH" entry)) | 3535 (concat "<TH" entry)) |
3483 (hm--html-table-read-cell-entries-and-alignments 1 no-of-cells) | 3536 (hm--html-table-read-cell-entries-and-alignments |
3484 " ") | 3537 1 |
3485 " <TR>"))) | 3538 no-of-cells) |
3539 " </TH>") | |
3540 " </TH></TR>"))) | |
3486 | 3541 |
3487 | 3542 |
3488 (defun hm--html-add-first-table-row (no-of-cells) | 3543 (defun hm--html-add-first-table-row (no-of-cells) |
3489 "Adds the HTML tags for a table row. | 3544 "Adds the HTML tags for a table row. |
3490 It asks for the number of cells and the allignment of the cells. | 3545 It asks for the number of cells and the allignment of the cells. |
3492 (interactive "NNo of cells in a row: ") | 3547 (interactive "NNo of cells in a row: ") |
3493 (if (< no-of-cells 1) | 3548 (if (< no-of-cells 1) |
3494 (error "ERROR: There must be at least one cell in a row!")) | 3549 (error "ERROR: There must be at least one cell in a row!")) |
3495 (hm--html-add-tags | 3550 (hm--html-add-tags |
3496 'hm--html-insert-end-tag-with-newline | 3551 'hm--html-insert-end-tag-with-newline |
3497 (concat "<TD" (car (hm--html-table-read-cell-entries-and-alignments 1 1)) | 3552 (concat "<TR><TD" |
3498 " " | 3553 (car (hm--html-table-read-cell-entries-and-alignments 1 1)) |
3554 " </TD>" | |
3499 (if (<= no-of-cells 1) | 3555 (if (<= no-of-cells 1) |
3500 "<TR>" | 3556 "</TR>" |
3501 (concat | 3557 (concat |
3502 (mapconcat '(lambda (entry) | 3558 (mapconcat '(lambda (entry) |
3503 (concat "<TD" entry)) | 3559 (concat "<TD" entry)) |
3504 (hm--html-table-read-cell-entries-and-alignments | 3560 (hm--html-table-read-cell-entries-and-alignments |
3505 2 no-of-cells) | 3561 2 no-of-cells) |
3506 " ") | 3562 " </TD>") |
3507 " <TR>"))))) | 3563 " </TD></TR>"))))) |
3508 | 3564 |
3509 | 3565 |
3510 (defun hm--html-table-get-previous-alignments () | 3566 (defun hm--html-table-get-previous-alignments () |
3511 "Returns a list with the alignments of the previous table row. | 3567 "Returns a list with the alignments of the previous table row. |
3512 The row must be a data row and not a header row! | 3568 The row must be a data row and not a header row! |
3513 An example for the return list: '(\"left\" \"default\" \"center\" \"right\")" | 3569 An example for the return list: '(\"left\" \"default\" \"center\" \"right\")" |
3514 (save-excursion | 3570 (save-excursion |
3515 (let* ((point-of-view (point)) | 3571 (let* ((point-of-view (point)) |
3516 (end-of-last-row (search-backward "<tr>" nil t)) | 3572 (case-fold-search t) |
3517 (begin-of-last-row (progn (search-backward "<tr" nil t) | 3573 (end-of-last-row (search-backward "</tr>" (point-min) t)) |
3518 (search-forward "<td" nil t) | 3574 (begin-of-last-row (progn (search-backward "<tr" (point-min) t) |
3575 (re-search-forward "<t[dh]" | |
3576 point-of-view t) | |
3519 (match-beginning 0))) | 3577 (match-beginning 0))) |
3520 (alignment-list nil)) | 3578 (alignment-list nil)) |
3521 (if (not (search-forward "<td" end-of-last-row t)) | 3579 (goto-char begin-of-last-row) |
3580 (if (not (re-search-forward "<t[dh]" end-of-last-row t)) | |
3522 (error "Error: No previous data row found!") | 3581 (error "Error: No previous data row found!") |
3523 (goto-char end-of-last-row) | 3582 (goto-char end-of-last-row) |
3524 (while (> (point) begin-of-last-row) | 3583 (while (> (point) begin-of-last-row) |
3525 (let ((cell-start | 3584 (let ((cell-start |
3526 (search-backward-regexp "\\(<td[^>]*>\\)\\|\\(<th[^>]*>\\)" | 3585 (search-backward-regexp "\\(<td[^>]*>\\)\\|\\(<th[^>]*>\\)" |
3548 (interactive) | 3607 (interactive) |
3549 (let* ((old-alignment-list (hm--html-table-get-previous-alignments)) | 3608 (let* ((old-alignment-list (hm--html-table-get-previous-alignments)) |
3550 (no-of-cells (length old-alignment-list))) | 3609 (no-of-cells (length old-alignment-list))) |
3551 (hm--html-add-tags | 3610 (hm--html-add-tags |
3552 'hm--html-insert-end-tag-with-newline | 3611 'hm--html-insert-end-tag-with-newline |
3553 (concat "<TD" (car (hm--html-table-read-cell-entries-and-alignments | 3612 (concat "<TR><TD" (car (hm--html-table-read-cell-entries-and-alignments |
3554 1 | 3613 1 |
3555 1 | 3614 1 |
3556 old-alignment-list)) | 3615 old-alignment-list)) |
3557 " " | 3616 " </TD>" |
3558 (if (<= no-of-cells 1) | 3617 (if (<= no-of-cells 1) |
3559 "<TR>" | 3618 "</TR>" |
3560 (concat | 3619 (concat |
3561 (mapconcat '(lambda (entry) | 3620 (mapconcat '(lambda (entry) |
3562 (concat "<TD" entry)) | 3621 (concat "<TD" entry)) |
3563 (hm--html-table-read-cell-entries-and-alignments | 3622 (hm--html-table-read-cell-entries-and-alignments |
3564 2 | 3623 2 |
3565 no-of-cells | 3624 no-of-cells |
3566 (cdr old-alignment-list)) | 3625 (cdr old-alignment-list)) |
3567 " ") | 3626 " </TD>") |
3568 " <TR>")))))) | 3627 " </TD></TR>")))))) |
3569 | 3628 |
3570 | 3629 |
3571 (defun hm--html-add-row-entry (alignment) | 3630 (defun hm--html-add-row-entry (alignment) |
3572 "Adds the HTML tag for a table row entry at the current point." | 3631 "Adds the HTML tag for a table row entry at the current point." |
3573 (interactive (list (completing-read "Alignment of the cell: " | 3632 (interactive (list (completing-read "Alignment of the cell: " |
3630 | 3689 |
3631 (defun hm--html-table-add-colspan-attribute (columns) | 3690 (defun hm--html-table-add-colspan-attribute (columns) |
3632 "Adds a colspawn attribute to a table cell. | 3691 "Adds a colspawn attribute to a table cell. |
3633 A prefix arg is used as no of COLUMNS." | 3692 A prefix arg is used as no of COLUMNS." |
3634 (interactive "NNo of columns, spaned by this cell: ") | 3693 (interactive "NNo of columns, spaned by this cell: ") |
3635 (save-excursion | 3694 (let ((case-fold-search t)) |
3636 (if (and (search-backward "<" nil t) | 3695 (save-excursion |
3637 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t)) | 3696 (if (and (search-backward "<" nil t) |
3638 (if (search-forward-regexp "\\([ \t\n]+colspan=\\)\\([^ \t\n>]*\\)" | 3697 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t)) |
3639 nil | 3698 (if (search-forward-regexp "\\([ \t\n]+colspan=\\)\\([^ \t\n>]*\\)" |
3640 t) | 3699 nil |
3641 (progn | 3700 t) |
3642 (delete-region (match-beginning 2) (match-end 2)) | 3701 (progn |
3643 (insert (format "\"%d\"" columns))) | 3702 (delete-region (match-beginning 2) (match-end 2)) |
3644 (insert (format " colspan=\"%d\"" columns))) | 3703 (insert (format "\"%d\"" columns))) |
3645 (error "ERROR: Point not in a table cell!")))) | 3704 (insert (format " colspan=\"%d\"" columns))) |
3705 (error "ERROR: Point not in a table cell!"))))) | |
3646 | 3706 |
3647 | 3707 |
3648 (defun hm--html-table-add-rowspan-attribute (rows) | 3708 (defun hm--html-table-add-rowspan-attribute (rows) |
3649 "Adds a rowspan attribute to a table cell. | 3709 "Adds a rowspan attribute to a table cell. |
3650 A prefix arg is used as no of ROWS." | 3710 A prefix arg is used as no of ROWS." |
3651 (interactive "NNo of rows, spaned by this cell: ") | 3711 (interactive "NNo of rows, spaned by this cell: ") |
3652 (save-excursion | 3712 (let ((case-fold-search t)) |
3653 (if (and (search-backward "<" nil t) | 3713 (save-excursion |
3654 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t)) | 3714 (if (and (search-backward "<" nil t) |
3655 (if (search-forward-regexp "\\([ \t\n]+rowspan=\\)\\([^ \t\n>]*\\)" | 3715 (search-forward-regexp "<[ \t\n]*\\(th\\)\\|\\(td\\)" nil t)) |
3656 nil | 3716 (if (search-forward-regexp "\\([ \t\n]+rowspan=\\)\\([^ \t\n>]*\\)" |
3657 t) | 3717 nil |
3658 (progn | 3718 t) |
3659 (delete-region (match-beginning 2) (match-end 2)) | 3719 (progn |
3660 (insert (format "\"%d\"" rows))) | 3720 (delete-region (match-beginning 2) (match-end 2)) |
3661 (insert (format " rowspan=\"%d\"" rows))) | 3721 (insert (format "\"%d\"" rows))) |
3662 (error "ERROR: Point not in a table cell!")))) | 3722 (insert (format " rowspan=\"%d\"" rows))) |
3723 (error "ERROR: Point not in a table cell!"))))) | |
3663 | 3724 |
3664 | 3725 |
3665 ;;; ISO-Characters for Emacs HTML-mode (Berthold Crysmann) | 3726 ;;; ISO-Characters for Emacs HTML-mode (Berthold Crysmann) |
3666 ;(setq buffer-invisibility-spec '(hm--html-iso-entity-invisible-flag)) | 3727 ;(setq buffer-invisibility-spec '(hm--html-iso-entity-invisible-flag)) |
3667 | 3728 |
4169 'hm--html-server-side-include-command-with-parameter-alist | 4230 'hm--html-server-side-include-command-with-parameter-alist |
4170 'hm--html-signature-file | 4231 'hm--html-signature-file |
4171 'hm--html-template-dir | 4232 'hm--html-template-dir |
4172 'hm--html-url-alist | 4233 'hm--html-url-alist |
4173 'hm--html-user-config-file | 4234 'hm--html-user-config-file |
4235 'hm--html-site-config-file | |
4174 'hm--html-username | 4236 'hm--html-username |
4175 'hm--html-wais-hostname:port-alist | 4237 'hm--html-wais-hostname:port-alist |
4176 'hm--html-wais-hostname:port-default | 4238 'hm--html-wais-hostname:port-default |
4177 'hm--html-wais-path-alist | 4239 'hm--html-wais-path-alist |
4178 'hm--html-wais-servername:port-alist | 4240 'hm--html-wais-servername:port-alist |
4241 ; | 4303 ; |
4242 | 4304 |
4243 (defun hm--html-load-config-files () | 4305 (defun hm--html-load-config-files () |
4244 "Load the html configuration files. | 4306 "Load the html configuration files. |
4245 First, the system config file (detemined by the environment variable | 4307 First, the system config file (detemined by the environment variable |
4246 HTML_CONFIG_FILE; normaly hm--html-configuration.el(c)) is loaded and | 4308 HTML_CONFIG_FILE; normaly hm--html-configuration.el(c)) is loaded. |
4247 after that the user config file (determined by the environment variable | 4309 At second a site config file is loaded, if the environment variable |
4310 HTML_SITE_CONFIG_FILE or the lisp variable `hm--html-site-config-file' | |
4311 is set to such a file. | |
4312 At least the user config file (determined by the environment variable | |
4248 HTML_USER_CONFIG_FILE; normaly the file ~/.hm--html-configuration.el(c)). | 4313 HTML_USER_CONFIG_FILE; normaly the file ~/.hm--html-configuration.el(c)). |
4249 If no HTML_CONFIG_FILE exists, then the file hm--html-configuration.el(c) | 4314 If no HTML_CONFIG_FILE exists, then the file hm--html-configuration.el(c) |
4250 is searched in one of the lisp load path directories. | 4315 is searched in one of the lisp load path directories. |
4251 If no HTML_USER_CONFIG_FILE exists, then the variable | 4316 If no HTML_USER_CONFIG_FILE exists, then the variable |
4252 `hm--html-user-config-file' is checked. If this variable is nil or the file | 4317 `hm--html-user-config-file' is checked. If this variable is nil or the file |
4257 (file-exists-p | 4322 (file-exists-p |
4258 (expand-file-name | 4323 (expand-file-name |
4259 (getenv "HTML_CONFIG_FILE")))) | 4324 (getenv "HTML_CONFIG_FILE")))) |
4260 (load-library (expand-file-name (getenv "HTML_CONFIG_FILE"))) | 4325 (load-library (expand-file-name (getenv "HTML_CONFIG_FILE"))) |
4261 (load-library "hm--html-configuration")) | 4326 (load-library "hm--html-configuration")) |
4327 | |
4328 ;; at second the site config file | |
4329 (if (and (stringp (getenv "HTML_SITE_CONFIG_FILE")) | |
4330 (file-exists-p | |
4331 (expand-file-name | |
4332 (getenv "HTML_SITE_CONFIG_FILE")))) | |
4333 (load-file (expand-file-name (getenv "HTML_SITE_CONFIG_FILE"))) | |
4334 (when (and (boundp 'hm--html-site-config-file) | |
4335 (stringp hm--html-site-config-file) | |
4336 (file-exists-p (expand-file-name hm--html-site-config-file))) | |
4337 (load-file (expand-file-name hm--html-site-config-file)))) | |
4262 | 4338 |
4263 ;; and now the user config file | 4339 ;; and now the user config file |
4264 (cond ((and (stringp (getenv "HTML_USER_CONFIG_FILE")) | 4340 (cond ((and (stringp (getenv "HTML_USER_CONFIG_FILE")) |
4265 (file-exists-p | 4341 (file-exists-p |
4266 (expand-file-name | 4342 (expand-file-name |