annotate lisp/textmodes/sgml-mode.el @ 62568:7be08219b736

(imenu-generic-expression, imenu--generic-function'): REGEXP may also be a search function now. The part of doc-string for describing the structure was 95% identical to that of `imenu--generic-function'. Unify it there.
author Daniel Pfeiffer <occitan@esperanto.org>
date Sat, 21 May 2005 02:44:29 +0000
parents 9a8eaf5d664a
children e38d2ae61b0a 4da4a09e8b1b
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1 ;;; sgml-mode.el --- SGML- and HTML-editing modes
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
3 ;; Copyright (C) 1992, 1995, 1996, 1998, 2001, 2002, 2003, 2004, 2005
58122
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
4 ;; Free Software Foundation, Inc.
844
bf829a2d63b4 *** empty log message ***
Eric S. Raymond <esr@snark.thyrsus.com>
parents: 828
diff changeset
5
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
6 ;; Author: James Clark <jjc@jclark.com>
43692
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
7 ;; Maintainer: FSF
23869
8d2bb5d1416a Update comment.
Karl Heuer <kwzh@gnu.org>
parents: 23726
diff changeset
8 ;; Adapted-By: ESR, Daniel Pfeiffer <occitan@esperanto.org>,
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
9 ;; F.Potorti@cnuce.cnr.it
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
10 ;; Keywords: wp, hypermedia, comm, languages
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
11
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
12 ;; This file is part of GNU Emacs.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
13
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
14 ;; GNU Emacs is free software; you can redistribute it and/or modify
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
15 ;; it under the terms of the GNU General Public License as published by
12244
ac7375e60931 Update GPL to version 2.
Karl Heuer <kwzh@gnu.org>
parents: 3366
diff changeset
16 ;; the Free Software Foundation; either version 2, or (at your option)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
17 ;; any later version.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
18
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
19 ;; GNU Emacs is distributed in the hope that it will be useful,
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
20 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
21 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
22 ;; GNU General Public License for more details.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
23
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
24 ;; You should have received a copy of the GNU General Public License
14169
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14168
diff changeset
25 ;; along with GNU Emacs; see the file COPYING. If not, write to the
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14168
diff changeset
26 ;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
83f275dcd93a Update FSF's address.
Erik Naggum <erik@naggum.no>
parents: 14168
diff changeset
27 ;; Boston, MA 02111-1307, USA.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
28
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
29 ;;; Commentary:
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
30
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
31 ;; Configurable major mode for editing document in the SGML standard general
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
32 ;; markup language. As an example contains a mode for editing the derived
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
33 ;; HTML hypertext markup language.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
34
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
35 ;;; Code:
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
36
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
37 (eval-when-compile
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
38 (require 'skeleton)
44388
01d388c4b0a3 Remember to (require 'cl).
Mike Williams <mdub@bigfoot.com>
parents: 44387
diff changeset
39 (require 'outline)
01d388c4b0a3 Remember to (require 'cl).
Mike Williams <mdub@bigfoot.com>
parents: 44387
diff changeset
40 (require 'cl))
23726
ca83df619ee6 Require skeleton when compiling.
Dave Love <fx@gnu.org>
parents: 23652
diff changeset
41
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
42 (defgroup sgml nil
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
43 "SGML editing mode"
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
44 :group 'languages)
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
45
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
46 (defcustom sgml-basic-offset 2
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
47 "*Specifies the basic indentation level for `sgml-indent-line'."
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
48 :type 'integer
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
49 :group 'sgml)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
50
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
51 (defcustom sgml-transformation 'identity
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
52 "*Default value for `skeleton-transformation' (which see) in SGML mode."
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
53 :type 'function
17530
9fb83ef40566 (sgml-transformation): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 17500
diff changeset
54 :group 'sgml)
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
55
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
56 (put 'sgml-transformation 'variable-interactive
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
57 "aTransformation function: ")
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
58
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
59 (defcustom sgml-mode-hook nil
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
60 "Hook run by command `sgml-mode'.
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
61 `text-mode-hook' is run first."
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
62 :group 'sgml
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
63 :type 'hook)
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
64
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
65 ;; As long as Emacs' syntax can't be complemented with predicates to context
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
66 ;; sensitively confirm the syntax of characters, we have to live with this
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
67 ;; kludgy kind of tradeoff.
16404
0cdf66e69ad8 (sgml-specials): Delete `-' from the list.
Richard M. Stallman <rms@gnu.org>
parents: 15867
diff changeset
68 (defvar sgml-specials '(?\")
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
69 "List of characters that have a special meaning for SGML mode.
43589
57e4f81f3346 (sgml-specials, sgml-quick-keys): Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 40624
diff changeset
70 This list is used when first loading the `sgml-mode' library.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
71 The supported characters and potential disadvantages are:
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
72
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
73 ?\\\" Makes \" in text start a string.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
74 ?' Makes ' in text start a string.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
75 ?- Makes -- in text start a comment.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
76
22319
18b5b2445726 (sgml-font-lock-keywords-1): Add -. as
Dave Love <fx@gnu.org>
parents: 22222
diff changeset
77 When only one of ?\\\" or ?' are included, \"'\" or '\"', as can be found in
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
78 DTDs, start a string. To partially avoid this problem this also makes these
16404
0cdf66e69ad8 (sgml-specials): Delete `-' from the list.
Richard M. Stallman <rms@gnu.org>
parents: 15867
diff changeset
79 self insert as named entities depending on `sgml-quick-keys'.
0cdf66e69ad8 (sgml-specials): Delete `-' from the list.
Richard M. Stallman <rms@gnu.org>
parents: 15867
diff changeset
80
0cdf66e69ad8 (sgml-specials): Delete `-' from the list.
Richard M. Stallman <rms@gnu.org>
parents: 15867
diff changeset
81 Including ?- has the problem of affecting dashes that have nothing to do
0cdf66e69ad8 (sgml-specials): Delete `-' from the list.
Richard M. Stallman <rms@gnu.org>
parents: 15867
diff changeset
82 with comments, so we normally turn it off.")
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
83
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
84 (defvar sgml-quick-keys nil
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
85 "Use <, >, &, /, SPC and `sgml-specials' keys \"electrically\" when non-nil.
43589
57e4f81f3346 (sgml-specials, sgml-quick-keys): Doc fixes.
Pavel Janík <Pavel@Janik.cz>
parents: 40624
diff changeset
86 This takes effect when first loading the `sgml-mode' library.")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
87
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
88 (defvar sgml-mode-map
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
89 (let ((map (make-keymap)) ;`sparse' doesn't allow binding to charsets.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
90 (menu-map (make-sparse-keymap "SGML")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
91 (define-key map "\C-c\C-i" 'sgml-tags-invisible)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
92 (define-key map "/" 'sgml-slash)
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
93 (define-key map "\C-c\C-n" 'sgml-name-char)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
94 (define-key map "\C-c\C-t" 'sgml-tag)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
95 (define-key map "\C-c\C-a" 'sgml-attributes)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
96 (define-key map "\C-c\C-b" 'sgml-skip-tag-backward)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
97 (define-key map [?\C-c left] 'sgml-skip-tag-backward)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
98 (define-key map "\C-c\C-f" 'sgml-skip-tag-forward)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
99 (define-key map [?\C-c right] 'sgml-skip-tag-forward)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
100 (define-key map "\C-c\C-d" 'sgml-delete-tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
101 (define-key map "\C-c\^?" 'sgml-delete-tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
102 (define-key map "\C-c?" 'sgml-tag-help)
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
103 (define-key map "\C-c/" 'sgml-close-tag)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
104 (define-key map "\C-c8" 'sgml-name-8bit-mode)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
105 (define-key map "\C-c\C-v" 'sgml-validate)
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
106 (when sgml-quick-keys
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
107 (define-key map "&" 'sgml-name-char)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
108 (define-key map "<" 'sgml-tag)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
109 (define-key map " " 'sgml-auto-attributes)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
110 (define-key map ">" 'sgml-maybe-end-tag)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
111 (when (memq ?\" sgml-specials)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
112 (define-key map "\"" 'sgml-name-self))
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
113 (when (memq ?' sgml-specials)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
114 (define-key map "'" 'sgml-name-self)))
38108
f535923264bd (sgml-mode-map): Fix thinko.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38068
diff changeset
115 (define-key map (vector (make-char 'latin-iso8859-1))
f535923264bd (sgml-mode-map): Fix thinko.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38068
diff changeset
116 'sgml-maybe-name-self)
40176
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
117 (let ((c 127)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
118 (map (nth 1 map)))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
119 (while (< (setq c (1+ c)) 256)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
120 (aset map c 'sgml-maybe-name-self)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
121 (define-key map [menu-bar sgml] (cons "SGML" menu-map))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
122 (define-key menu-map [sgml-validate] '("Validate" . sgml-validate))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
123 (define-key menu-map [sgml-name-8bit-mode]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
124 '("Toggle 8 Bit Insertion" . sgml-name-8bit-mode))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
125 (define-key menu-map [sgml-tags-invisible]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
126 '("Toggle Tag Visibility" . sgml-tags-invisible))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
127 (define-key menu-map [sgml-tag-help]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
128 '("Describe Tag" . sgml-tag-help))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
129 (define-key menu-map [sgml-delete-tag]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
130 '("Delete Tag" . sgml-delete-tag))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
131 (define-key menu-map [sgml-skip-tag-forward]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
132 '("Forward Tag" . sgml-skip-tag-forward))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
133 (define-key menu-map [sgml-skip-tag-backward]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
134 '("Backward Tag" . sgml-skip-tag-backward))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
135 (define-key menu-map [sgml-attributes]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
136 '("Insert Attributes" . sgml-attributes))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
137 (define-key menu-map [sgml-tag] '("Insert Tag" . sgml-tag))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
138 map)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
139 "Keymap for SGML mode. See also `sgml-specials'.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
140
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
141 (defun sgml-make-syntax-table (specials)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
142 (let ((table (make-syntax-table text-mode-syntax-table)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
143 (modify-syntax-entry ?< "(>" table)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
144 (modify-syntax-entry ?> ")<" table)
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
145 (modify-syntax-entry ?: "_" table)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
146 (modify-syntax-entry ?_ "_" table)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
147 (modify-syntax-entry ?. "_" table)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
148 (if (memq ?- specials)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
149 (modify-syntax-entry ?- "_ 1234" table))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
150 (if (memq ?\" specials)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
151 (modify-syntax-entry ?\" "\"\"" table))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
152 (if (memq ?' specials)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
153 (modify-syntax-entry ?\' "\"'" table))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
154 table))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
155
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
156 (defvar sgml-mode-syntax-table (sgml-make-syntax-table sgml-specials)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
157 "Syntax table used in SGML mode. See also `sgml-specials'.")
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
158
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
159 (defconst sgml-tag-syntax-table
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
160 (let ((table (sgml-make-syntax-table '(?- ?\" ?\'))))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
161 (dolist (char '(?\( ?\) ?\{ ?\} ?\[ ?\] ?$ ?% ?& ?* ?+ ?/))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
162 (modify-syntax-entry char "." table))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
163 table)
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
164 "Syntax table used to parse SGML tags.")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
165
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
166 (defcustom sgml-name-8bit-mode nil
40176
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
167 "*When non-nil, insert non-ASCII characters as named entities."
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
168 :type 'boolean
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
169 :group 'sgml)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
170
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
171 (defvar sgml-char-names
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
172 [nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
173 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
174 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
175 nil nil nil nil nil nil nil nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
176 "nbsp" "excl" "quot" "num" "dollar" "percnt" "amp" "apos"
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
177 "lpar" "rpar" "ast" "plus" "comma" "hyphen" "period" "sol"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
178 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
179 nil nil "colon" "semi" "lt" "eq" "gt" "quest"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
180 "commat" nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
181 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
182 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
183 nil nil nil "lsqb" nil "rsqb" "uarr" "lowbar"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
184 "lsquo" nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
185 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
186 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
187 nil nil nil "lcub" "verbar" "rcub" "tilde" nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
188 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
189 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
190 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
191 nil nil nil nil nil nil nil nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
192 "nbsp" "iexcl" "cent" "pound" "curren" "yen" "brvbar" "sect"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
193 "uml" "copy" "ordf" "laquo" "not" "shy" "reg" "macr"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
194 "ring" "plusmn" "sup2" "sup3" "acute" "micro" "para" "middot"
26250
194bcc8d17db * textmodes/sgml-mode.el (sgml-char-names): Change "half" to
Gerd Moellmann <gerd@gnu.org>
parents: 25175
diff changeset
195 "cedil" "sup1" "ordm" "raquo" "frac14" "frac12" "frac34" "iquest"
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
196 "Agrave" "Aacute" "Acirc" "Atilde" "Auml" "Aring" "AElig" "Ccedil"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
197 "Egrave" "Eacute" "Ecirc" "Euml" "Igrave" "Iacute" "Icirc" "Iuml"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
198 "ETH" "Ntilde" "Ograve" "Oacute" "Ocirc" "Otilde" "Ouml" nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
199 "Oslash" "Ugrave" "Uacute" "Ucirc" "Uuml" "Yacute" "THORN" "szlig"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
200 "agrave" "aacute" "acirc" "atilde" "auml" "aring" "aelig" "ccedil"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
201 "egrave" "eacute" "ecirc" "euml" "igrave" "iacute" "icirc" "iuml"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
202 "eth" "ntilde" "ograve" "oacute" "ocirc" "otilde" "ouml" "divide"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
203 "oslash" "ugrave" "uacute" "ucirc" "uuml" "yacute" "thorn" "yuml"]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
204 "Vector of symbolic character names without `&' and `;'.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
205
40176
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
206 (put 'sgml-table 'char-table-extra-slots 0)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
207
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
208 (defvar sgml-char-names-table
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
209 (let ((table (make-char-table 'sgml-table))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
210 (i 32)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
211 elt)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
212 (while (< i 256)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
213 (setq elt (aref sgml-char-names i))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
214 (if elt (aset table (make-char 'latin-iso8859-1 i) elt))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
215 (setq i (1+ i)))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
216 table)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
217 "A table for mapping non-ASCII characters into SGML entity names.
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
218 Currently, only Latin-1 characters are supported.")
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
219
25052
d2a4359531e0 (sgml-validate-command): Use nsgmls.
Dave Love <fx@gnu.org>
parents: 24463
diff changeset
220 ;; nsgmls is a free SGML parser in the SP suite available from
d2a4359531e0 (sgml-validate-command): Use nsgmls.
Dave Love <fx@gnu.org>
parents: 24463
diff changeset
221 ;; ftp.jclark.com and otherwise packaged for GNU systems.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
222 ;; Its error messages can be parsed by next-error.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
223 ;; The -s option suppresses output.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
224
25052
d2a4359531e0 (sgml-validate-command): Use nsgmls.
Dave Love <fx@gnu.org>
parents: 24463
diff changeset
225 (defcustom sgml-validate-command "nsgmls -s" ; replaced old `sgmls'
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
226 "*The command to validate an SGML document.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
227 The file name of current buffer file name will be appended to this,
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
228 separated by a space."
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
229 :type 'string
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
230 :version "21.1"
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
231 :group 'sgml)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
232
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
233 (defvar sgml-saved-validate-command nil
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
234 "The command last used to validate in this buffer.")
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
235
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
236 ;; I doubt that null end tags are used much for large elements,
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
237 ;; so use a small distance here.
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
238 (defcustom sgml-slash-distance 1000
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
239 "*If non-nil, is the maximum distance to search for matching `/'."
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
240 :type '(choice (const nil) integer)
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
241 :group 'sgml)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
242
50955
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
243 (defconst sgml-namespace-re "[_[:alpha:]][-_.[:alnum:]]*")
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
244 (defconst sgml-name-re "[_:[:alpha:]][-_.:[:alnum:]]*")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
245 (defconst sgml-tag-name-re (concat "<\\([!/?]?" sgml-name-re "\\)"))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
246 (defconst sgml-attrs-re "\\(?:[^\"'/><]\\|\"[^\"]*\"\\|'[^']*'\\)*")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
247 (defconst sgml-start-tag-regex (concat "<" sgml-name-re sgml-attrs-re)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
248 "Regular expression that matches a non-empty start tag.
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
249 Any terminating `>' or `/' is not matched.")
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
250
50955
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
251 (defface sgml-namespace-face
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
252 '((t (:inherit font-lock-builtin-face)))
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
253 "`sgml-mode' face used to highlight the namespace part of identifiers.")
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
254 (defvar sgml-namespace-face 'sgml-namespace-face)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
255
21780
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
256 ;; internal
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
257 (defconst sgml-font-lock-keywords-1
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
258 `((,(concat "<\\([!?]" sgml-name-re "\\)") 1 font-lock-keyword-face)
50955
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
259 ;; We could use the simpler "\\(" sgml-namespace-re ":\\)?" instead,
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
260 ;; but it would cause a bit more backtracking in the re-matcher.
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
261 (,(concat "</?\\(" sgml-namespace-re "\\)\\(?::\\(" sgml-name-re "\\)\\)?")
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
262 (1 (if (match-end 2) sgml-namespace-face font-lock-function-name-face))
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
263 (2 font-lock-function-name-face nil t))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
264 ;; FIXME: this doesn't cover the variables using a default value.
50955
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
265 (,(concat "\\(" sgml-namespace-re "\\)\\(?::\\("
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
266 sgml-name-re "\\)\\)?=[\"']")
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
267 (1 (if (match-end 2) sgml-namespace-face font-lock-variable-name-face))
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
268 (2 font-lock-variable-name-face nil t))
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
269 (,(concat "[&%]" sgml-name-re ";?") . font-lock-variable-name-face)))
21780
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
270
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
271 (defconst sgml-font-lock-keywords-2
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
272 (append
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
273 sgml-font-lock-keywords-1
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
274 '((eval
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
275 . (cons (concat "<"
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
276 (regexp-opt (mapcar 'car sgml-tag-face-alist) t)
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
277 "\\([ \t][^>]*\\)?>\\([^<]+\\)</\\1>")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
278 '(3 (cdr (assoc (downcase (match-string 1))
49153
3db6e402ea2c (sgml-font-lock-keywords-2): Add flag to merge with existing fontification.
Andreas Schwab <schwab@suse.de>
parents: 48402
diff changeset
279 sgml-tag-face-alist)) prepend))))))
21780
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
280
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
281 ;; for font-lock, but must be defvar'ed after
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
282 ;; sgml-font-lock-keywords-1 and sgml-font-lock-keywords-2 above
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
283 (defvar sgml-font-lock-keywords sgml-font-lock-keywords-1
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
284 "*Rules for highlighting SGML code. See also `sgml-tag-face-alist'.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
285
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
286 (defvar sgml-font-lock-syntactic-keywords
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
287 ;; Use the `b' style of comments to avoid interference with the -- ... --
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
288 ;; comments recognized when `sgml-specials' includes ?-.
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
289 ;; FIXME: beware of <!--> blabla <!--> !!
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
290 '(("\\(<\\)!--" (1 "< b"))
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
291 ("--[ \t\n]*\\(>\\)" (1 "> b")))
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
292 "Syntactic keywords for `sgml-mode'.")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
293
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
294 ;; internal
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
295 (defvar sgml-face-tag-alist ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
296 "Alist of face and tag name for facemenu.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
297
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
298 (defvar sgml-tag-face-alist ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
299 "Tag names and face or list of faces to fontify with when invisible.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
300 When `font-lock-maximum-decoration' is 1 this is always used for fontifying.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
301 When more these are fontified together with `sgml-font-lock-keywords'.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
302
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
303 (defvar sgml-display-text ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
304 "Tag names as lowercase symbols, and display string when invisible.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
305
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
306 ;; internal
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
307 (defvar sgml-tags-invisible nil)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
308
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
309 (defcustom sgml-tag-alist
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
310 '(("![" ("ignore" t) ("include" t))
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
311 ("!attlist")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
312 ("!doctype")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
313 ("!element")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
314 ("!entity"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
315 "*Alist of tag names for completing read and insertion rules.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
316 This alist is made up as
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
317
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
318 ((\"tag\" . TAGRULE)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
319 ...)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
320
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
321 TAGRULE is a list of optionally t (no endtag) or `\\n' (separate endtag by
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
322 newlines) or a skeleton with nil, t or `\\n' in place of the interactor
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
323 followed by an ATTRIBUTERULE (for an always present attribute) or an
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
324 attribute alist.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
325
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
326 The attribute alist is made up as
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
327
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
328 ((\"attribute\" . ATTRIBUTERULE)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
329 ...)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
330
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
331 ATTRIBUTERULE is a list of optionally t (no value when no input) followed by
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
332 an optional alist of possible values."
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
333 :type '(repeat (cons (string :tag "Tag Name")
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
334 (repeat :tag "Tag Rule" sexp)))
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
335 :group 'sgml)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
336
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
337 (defcustom sgml-tag-help
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
338 '(("!" . "Empty declaration for comment")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
339 ("![" . "Embed declarations with parser directive")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
340 ("!attlist" . "Tag attributes declaration")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
341 ("!doctype" . "Document type (DTD) declaration")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
342 ("!element" . "Tag declaration")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
343 ("!entity" . "Entity (macro) declaration"))
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
344 "*Alist of tag name and short description."
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
345 :type '(repeat (cons (string :tag "Tag Name")
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
346 (string :tag "Description")))
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
347 :group 'sgml)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
348
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
349 (defcustom sgml-xml-mode nil
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
350 "*When non-nil, tag insertion functions will be XML-compliant.
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
351 If this variable is customized, the custom value is used always.
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
352 Otherwise, it is set to be buffer-local when the file has
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
353 a DOCTYPE or an XML declaration."
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
354 :type 'boolean
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59519
diff changeset
355 :version "22.1"
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
356 :group 'sgml)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
357
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
358 (defvar sgml-empty-tags nil
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
359 "List of tags whose !ELEMENT definition says EMPTY.")
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
360
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
361 (defvar sgml-unclosed-tags nil
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
362 "List of tags whose !ELEMENT definition says the end-tag is optional.")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
363
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
364 (defun sgml-xml-guess ()
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
365 "Guess whether the current buffer is XML."
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
366 (save-excursion
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
367 (goto-char (point-min))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
368 (when (or (string= "xml" (file-name-extension (or buffer-file-name "")))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
369 (looking-at "\\s-*<\\?xml")
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
370 (when (re-search-forward
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
371 (eval-when-compile
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
372 (mapconcat 'identity
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
373 '("<!DOCTYPE" "\\(\\w+\\)" "\\(\\w+\\)"
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
374 "\"\\([^\"]+\\)\"" "\"\\([^\"]+\\)\"")
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
375 "\\s-+"))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
376 nil t)
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
377 (string-match "X\\(HT\\)?ML" (match-string 3))))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
378 (set (make-local-variable 'sgml-xml-mode) t))))
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
379
23726
ca83df619ee6 Require skeleton when compiling.
Dave Love <fx@gnu.org>
parents: 23652
diff changeset
380 (defvar v2) ; free for skeleton
ca83df619ee6 Require skeleton when compiling.
Dave Love <fx@gnu.org>
parents: 23652
diff changeset
381
44443
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
382 (defun sgml-comment-indent-new-line (&optional soft)
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
383 (let ((comment-start "-- ")
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
384 (comment-start-skip "\\(<!\\)?--[ \t]*")
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
385 (comment-end " --")
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
386 (comment-style 'plain))
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
387 (comment-indent-new-line soft)))
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
388
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
389 (defun sgml-mode-facemenu-add-face-function (face end)
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
390 (if (setq face (cdr (assq face sgml-face-tag-alist)))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
391 (progn
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
392 (setq face (funcall skeleton-transformation face))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
393 (setq facemenu-end-add-face (concat "</" face ">"))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
394 (concat "<" face ">"))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
395 (error "Face not configured for %s mode" mode-name)))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
396
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
397 (defun sgml-fill-nobreak ()
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
398 ;; Don't break between a tag name and its first argument.
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
399 (save-excursion
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
400 (skip-chars-backward " \t")
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
401 (and (not (zerop (skip-syntax-backward "w_")))
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
402 (skip-chars-backward "/?!")
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
403 (eq (char-before) ?<))))
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
404
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
405 ;;;###autoload
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
406 (define-derived-mode sgml-mode text-mode "SGML"
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
407 "Major mode for editing SGML documents.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
408 Makes > match <.
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
409 Keys <, &, SPC within <>, \", / and ' can be electric depending on
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
410 `sgml-quick-keys'.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
411
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
412 An argument of N to a tag-inserting command means to wrap it around
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
413 the next N words. In Transient Mark mode, when the mark is active,
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
414 N defaults to -1, which means to wrap it around the current region.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
415
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
416 If you like upcased tags, put (setq sgml-transformation 'upcase) in
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
417 your `.emacs' file.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
418
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
419 Use \\[sgml-validate] to validate your document with an SGML parser.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
420
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
421 Do \\[describe-variable] sgml- SPC to see available variables.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
422 Do \\[describe-key] on the following bindings to discover what they do.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
423 \\{sgml-mode-map}"
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
424 (make-local-variable 'sgml-saved-validate-command)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
425 (make-local-variable 'facemenu-end-add-face)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
426 ;;(make-local-variable 'facemenu-remove-face-function)
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
427 ;; A start or end tag by itself on a line separates a paragraph.
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
428 ;; This is desirable because SGML discards a newline that appears
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
429 ;; immediately after a start tag or immediately before an end tag.
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
430 (set (make-local-variable 'paragraph-start) (concat "[ \t]*$\\|\
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
431 \[ \t]*</?\\(" sgml-name-re sgml-attrs-re "\\)?>"))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
432 (set (make-local-variable 'paragraph-separate)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
433 (concat paragraph-start "$"))
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
434 (set (make-local-variable 'adaptive-fill-regexp) "[ \t]*")
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
435 (add-hook 'fill-nobreak-predicate 'sgml-fill-nobreak nil t)
44293
a1bba2ef8c34 (sgml-mode): Set indent-line-function to sgml-indent-line.
Mike Williams <mdub@bigfoot.com>
parents: 44286
diff changeset
436 (set (make-local-variable 'indent-line-function) 'sgml-indent-line)
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
437 (set (make-local-variable 'comment-start) "<!-- ")
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
438 (set (make-local-variable 'comment-end) " -->")
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
439 (set (make-local-variable 'comment-indent-function) 'sgml-comment-indent)
44443
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
440 (set (make-local-variable 'comment-line-break-function)
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
441 'sgml-comment-indent-new-line)
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
442 (set (make-local-variable 'skeleton-further-elements)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
443 '((completion-ignore-case t)))
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
444 (set (make-local-variable 'skeleton-end-hook)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
445 (lambda ()
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
446 (or (eolp)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
447 (not (or (eq v2 '\n) (eq (car-safe v2) '\n)))
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
448 (newline-and-indent))))
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
449 (set (make-local-variable 'font-lock-defaults)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
450 '((sgml-font-lock-keywords
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
451 sgml-font-lock-keywords-1
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
452 sgml-font-lock-keywords-2)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
453 nil t nil nil
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
454 (font-lock-syntactic-keywords
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
455 . sgml-font-lock-syntactic-keywords)))
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
456 (set (make-local-variable 'facemenu-add-face-function)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
457 'sgml-mode-facemenu-add-face-function)
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
458 (sgml-xml-guess)
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
459 (if sgml-xml-mode
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
460 (setq mode-name "XML")
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
461 (set (make-local-variable 'skeleton-transformation) sgml-transformation))
36609
8e1755c3dd2b (sgml-mode-common): Correct value of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27683
diff changeset
462 ;; This will allow existing comments within declarations to be
8e1755c3dd2b (sgml-mode-common): Correct value of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27683
diff changeset
463 ;; recognized.
8e1755c3dd2b (sgml-mode-common): Correct value of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27683
diff changeset
464 (set (make-local-variable 'comment-start-skip) "\\(?:<!\\)?--[ \t]*")
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
465 (set (make-local-variable 'comment-end-skip) "[ \t]*--\\([ \t\n]*>\\)?")
57718
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
466 ;; This definition has an HTML leaning but probably fits well for other modes.
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
467 (setq imenu-generic-expression
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
468 `((nil
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
469 ,(concat "<!\\(element\\|entity\\)[ \t\n]+%?[ \t\n]*\\("
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
470 sgml-name-re "\\)")
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
471 2)
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
472 ("Id"
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
473 ,(concat "<[^>]+[ \t\n]+[Ii][Dd]=\\(['\"]"
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
474 (if sgml-xml-mode "" "?")
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
475 "\\)\\(" sgml-name-re "\\)\\1")
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
476 2)
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
477 ("Name"
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
478 ,(concat "<[^>]+[ \t\n]+[Nn][Aa][Mm][Ee]=\\(['\"]"
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
479 (if sgml-xml-mode "" "?")
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
480 "\\)\\(" sgml-name-re "\\)\\1")
e60d53125cf2 (sgml-mode): Fix imenu-generic-expression and add "Id" and "Name" submenus to it.
Daniel Pfeiffer <occitan@esperanto.org>
parents: 52401
diff changeset
481 2))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
482
45557
1cae8564d2c7 (xml-mode): New alias for `sgml-mode'.
Colin Walters <walters@gnu.org>
parents: 45463
diff changeset
483 ;; Some programs (such as Glade 2) generate XML which has
1cae8564d2c7 (xml-mode): New alias for `sgml-mode'.
Colin Walters <walters@gnu.org>
parents: 45463
diff changeset
484 ;; -*- mode: xml -*-.
51795
cd4ac91f52c9 (xml-mode): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 51478
diff changeset
485 ;;;###autoload
45557
1cae8564d2c7 (xml-mode): New alias for `sgml-mode'.
Colin Walters <walters@gnu.org>
parents: 45463
diff changeset
486 (defalias 'xml-mode 'sgml-mode)
1cae8564d2c7 (xml-mode): New alias for `sgml-mode'.
Colin Walters <walters@gnu.org>
parents: 45463
diff changeset
487
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
488 (defun sgml-comment-indent ()
36609
8e1755c3dd2b (sgml-mode-common): Correct value of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27683
diff changeset
489 (if (looking-at "--") comment-column 0))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
490
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
491 (defun sgml-slash (arg)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
492 "Insert ARG slash characters.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
493 Behaves electrically if `sgml-quick-keys' is non-nil."
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
494 (interactive "p")
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
495 (cond
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
496 ((not (and (eq (char-before) ?<) (= arg 1)))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
497 (sgml-slash-matching arg))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
498 ((eq sgml-quick-keys 'indent)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
499 (insert-char ?/ 1)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
500 (indent-according-to-mode))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
501 ((eq sgml-quick-keys 'close)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
502 (delete-backward-char 1)
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
503 (sgml-close-tag))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
504 (t
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
505 (sgml-slash-matching arg))))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
506
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
507 (defun sgml-slash-matching (arg)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
508 "Insert `/' and display any previous matching `/'.
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
509 Two `/'s are treated as matching if the first `/' ends a net-enabling
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
510 start tag, and the second `/' is the corresponding null end tag."
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
511 (interactive "p")
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
512 (insert-char ?/ arg)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
513 (if (> arg 0)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
514 (let ((oldpos (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
515 (blinkpos)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
516 (level 0))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
517 (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
518 (save-restriction
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
519 (if sgml-slash-distance
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
520 (narrow-to-region (max (point-min)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
521 (- (point) sgml-slash-distance))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
522 oldpos))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
523 (if (and (re-search-backward sgml-start-tag-regex (point-min) t)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
524 (eq (match-end 0) (1- oldpos)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
525 ()
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
526 (goto-char (1- oldpos))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
527 (while (and (not blinkpos)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
528 (search-backward "/" (point-min) t))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
529 (let ((tagend (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
530 (if (re-search-backward sgml-start-tag-regex
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
531 (point-min) t)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
532 (match-end 0)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
533 nil))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
534 (if (eq tagend (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
535 (if (eq level 0)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
536 (setq blinkpos (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
537 (setq level (1- level)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
538 (setq level (1+ level)))))))
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
539 (when blinkpos
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
540 (goto-char blinkpos)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
541 (if (pos-visible-in-window-p)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
542 (sit-for 1)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
543 (message "Matches %s"
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
544 (buffer-substring (line-beginning-position)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
545 (1+ blinkpos)))))))))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
546
43692
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
547 ;; Why doesn't this use the iso-cvt table or, preferably, generate the
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
548 ;; inverse of the extensive table in the SGML Quail input method? -- fx
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
549 ;; I guess that's moot since it only works with Latin-1 anyhow.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
550 (defun sgml-name-char (&optional char)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
551 "Insert a symbolic character name according to `sgml-char-names'.
40176
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
552 Non-ASCII chars may be inserted either with the meta key, as in M-SPC for
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
553 no-break space or M-- for a soft hyphen; or via an input method or
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
554 encoded keyboard operation."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
555 (interactive "*")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
556 (insert ?&)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
557 (or char
17500
e8d7c7e2acab (sgml-name-char): Ask user with a prompt.
Richard M. Stallman <rms@gnu.org>
parents: 17491
diff changeset
558 (setq char (read-quoted-char "Enter char or octal number")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
559 (delete-backward-char 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
560 (insert char)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
561 (undo-boundary)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
562 (sgml-namify-char))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
563
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
564 (defun sgml-namify-char ()
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
565 "Change the char before point into its `&name;' equivalent.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
566 Uses `sgml-char-names'."
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
567 (interactive)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
568 (let* ((char (char-before))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
569 (name
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
570 (cond
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
571 ((null char) (error "No char before point"))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
572 ((< char 256) (or (aref sgml-char-names char) char))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
573 ((aref sgml-char-names-table char))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
574 ((encode-char char 'ucs)))))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
575 (if (not name)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
576 (error "Don't know the name of `%c'" char)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
577 (delete-backward-char 1)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
578 (insert (format (if (numberp name) "&#%d;" "&%s;") name)))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
579
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
580 (defun sgml-name-self ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
581 "Insert a symbolic character name according to `sgml-char-names'."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
582 (interactive "*")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
583 (sgml-name-char last-command-char))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
584
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
585 (defun sgml-maybe-name-self ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
586 "Insert a symbolic character name according to `sgml-char-names'."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
587 (interactive "*")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
588 (if sgml-name-8bit-mode
40176
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
589 (let ((mc last-command-char))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
590 (if (< mc 256)
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
591 (setq mc (unibyte-char-to-multibyte mc)))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
592 (or mc (setq mc last-command-char))
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
593 (sgml-name-char mc))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
594 (self-insert-command 1)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
595
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
596 (defun sgml-name-8bit-mode ()
43692
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
597 "Toggle whether to insert named entities instead of non-ASCII characters.
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
598 This only works for Latin-1 input."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
599 (interactive)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
600 (setq sgml-name-8bit-mode (not sgml-name-8bit-mode))
40176
744190a4880c (sgml-mode-map): Bind 8-bit codes above 127 to sgml-maybe-name-self.
Eli Zaretskii <eliz@gnu.org>
parents: 39616
diff changeset
601 (message "sgml name entity mode is now %s"
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
602 (if sgml-name-8bit-mode "ON" "OFF")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
603
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
604 ;; When an element of a skeleton is a string "str", it is passed
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
605 ;; through skeleton-transformation and inserted. If "str" is to be
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
606 ;; inserted literally, one should obtain it as the return value of a
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
607 ;; function, e.g. (identity "str").
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
608
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
609 (defvar sgml-tag-last nil)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
610 (defvar sgml-tag-history nil)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
611 (define-skeleton sgml-tag
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
612 "Prompt for a tag and insert it, optionally with attributes.
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
613 Completion and configuration are done according to `sgml-tag-alist'.
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
614 If you like tags and attributes in uppercase do \\[set-variable]
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
615 skeleton-transformation RET upcase RET, or put this in your `.emacs':
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
616 (setq sgml-transformation 'upcase)"
45286
6373f485f3c2 (sgml-tag): Default skeleton-transformation to `identity'.
Mike Williams <mdub@bigfoot.com>
parents: 45255
diff changeset
617 (funcall (or skeleton-transformation 'identity)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
618 (setq sgml-tag-last
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
619 (completing-read
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
620 (if (> (length sgml-tag-last) 0)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
621 (format "Tag (default %s): " sgml-tag-last)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
622 "Tag: ")
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
623 sgml-tag-alist nil nil nil 'sgml-tag-history sgml-tag-last)))
36609
8e1755c3dd2b (sgml-mode-common): Correct value of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27683
diff changeset
624 ?< str |
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
625 (("") -1 '(undo-boundary) (identity "&lt;")) | ; see comment above
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
626 `(("") '(setq v2 (sgml-attributes ,str t)) ?>
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
627 (cond
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
628 ((string= "![" ,str)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
629 (backward-char)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
630 '(("") " [ " _ " ]]"))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
631 ((and (eq v2 t) sgml-xml-mode (member ,str sgml-empty-tags))
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
632 '(("") -1 " />"))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
633 ((or (and (eq v2 t) (not sgml-xml-mode)) (string-match "^[/!?]" ,str))
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
634 nil)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
635 ((symbolp v2)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
636 ;; Make sure we don't fall into an infinite loop.
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
637 ;; For xhtml's `tr' tag, we should maybe use \n instead.
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
638 (if (eq v2 t) (setq v2 nil))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
639 ;; We use `identity' to prevent skeleton from passing
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
640 ;; `str' through skeleton-transformation a second time.
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
641 '(("") v2 _ v2 "</" (identity ',str) ?>))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
642 ((eq (car v2) t)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
643 (cons '("") (cdr v2)))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
644 (t
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
645 (append '(("") (car v2))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
646 (cdr v2)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
647 '(resume: (car v2) _ "</" (identity ',str) ?>))))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
648
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
649 (autoload 'skeleton-read "skeleton")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
650
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
651 (defun sgml-attributes (tag &optional quiet)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
652 "When at top level of a tag, interactively insert attributes.
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
653
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
654 Completion and configuration of TAG are done according to `sgml-tag-alist'.
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
655 If QUIET, do not print a message when there are no attributes for TAG."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
656 (interactive (list (save-excursion (sgml-beginning-of-tag t))))
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
657 (or (stringp tag) (error "Wrong context for adding attribute"))
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
658 (if tag
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
659 (let ((completion-ignore-case t)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
660 (alist (cdr (assoc (downcase tag) sgml-tag-alist)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
661 car attribute i)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
662 (if (or (symbolp (car alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
663 (symbolp (car (car alist))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
664 (setq car (car alist)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
665 alist (cdr alist)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
666 (or quiet
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
667 (message "No attributes configured."))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
668 (if (stringp (car alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
669 (progn
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
670 (insert (if (eq (preceding-char) ? ) "" ? )
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
671 (funcall skeleton-transformation (car alist)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
672 (sgml-value alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
673 (setq i (length alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
674 (while (> i 0)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
675 (insert ? )
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
676 (insert (funcall skeleton-transformation
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
677 (setq attribute
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
678 (skeleton-read '(completing-read
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
679 "Attribute: "
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
680 alist)))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
681 (if (string= "" attribute)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
682 (setq i 0)
20922
3ae81bc17b19 (sgml-mode-common): Downcase key for
Dave Love <fx@gnu.org>
parents: 20394
diff changeset
683 (sgml-value (assoc (downcase attribute) alist))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
684 (setq i (1- i))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
685 (if (eq (preceding-char) ? )
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
686 (delete-backward-char 1)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
687 car)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
688
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
689 (defun sgml-auto-attributes (arg)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
690 "Self insert the character typed; at top level of tag, prompt for attributes.
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
691 With prefix argument, only self insert."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
692 (interactive "*P")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
693 (let ((point (point))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
694 tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
695 (if (or arg
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
696 (not sgml-tag-alist) ; no message when nothing configured
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
697 (symbolp (setq tag (save-excursion (sgml-beginning-of-tag t))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
698 (eq (aref tag 0) ?/))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
699 (self-insert-command (prefix-numeric-value arg))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
700 (sgml-attributes tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
701 (setq last-command-char ? )
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
702 (or (> (point) point)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
703 (self-insert-command 1)))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
704
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
705 (defun sgml-tag-help (&optional tag)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
706 "Display description of tag TAG. If TAG is omitted, use the tag at point."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
707 (interactive)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
708 (or tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
709 (save-excursion
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
710 (if (eq (following-char) ?<)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
711 (forward-char))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
712 (setq tag (sgml-beginning-of-tag))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
713 (or (stringp tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
714 (error "No tag selected"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
715 (setq tag (downcase tag))
14328
5d0e329a44d8 (sgml-tag-help): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14270
diff changeset
716 (message "%s"
20922
3ae81bc17b19 (sgml-mode-common): Downcase key for
Dave Love <fx@gnu.org>
parents: 20394
diff changeset
717 (or (cdr (assoc (downcase tag) sgml-tag-help))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
718 (and (eq (aref tag 0) ?/)
20922
3ae81bc17b19 (sgml-mode-common): Downcase key for
Dave Love <fx@gnu.org>
parents: 20394
diff changeset
719 (cdr (assoc (downcase (substring tag 1)) sgml-tag-help)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
720 "No description available")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
721
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
722 (defun sgml-maybe-end-tag (&optional arg)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
723 "Name self unless in position to end a tag or a prefix ARG is given."
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
724 (interactive "P")
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
725 (if (or arg (eq (car (sgml-lexical-context)) 'tag))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
726 (self-insert-command (prefix-numeric-value arg))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
727 (sgml-name-self)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
728
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
729 (defun sgml-skip-tag-backward (arg)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
730 "Skip to beginning of tag or matching opening tag if present.
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
731 With prefix argument ARG, repeat this ARG times."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
732 (interactive "p")
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
733 ;; FIXME: use sgml-get-context or something similar.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
734 (while (>= arg 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
735 (search-backward "<" nil t)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
736 (if (looking-at "</\\([^ \n\t>]+\\)")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
737 ;; end tag, skip any nested pairs
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
738 (let ((case-fold-search t)
48109
2c2ce75616ef (sgml-skip-tag-backward, sgml-skip-tag-forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47933
diff changeset
739 (re (concat "</?" (regexp-quote (match-string 1))
2c2ce75616ef (sgml-skip-tag-backward, sgml-skip-tag-forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47933
diff changeset
740 ;; Ignore empty tags like <foo/>.
2c2ce75616ef (sgml-skip-tag-backward, sgml-skip-tag-forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47933
diff changeset
741 "\\([^>]*[^/>]\\)?>")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
742 (while (and (re-search-backward re nil t)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
743 (eq (char-after (1+ (point))) ?/))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
744 (forward-char 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
745 (sgml-skip-tag-backward 1))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
746 (setq arg (1- arg))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
747
48109
2c2ce75616ef (sgml-skip-tag-backward, sgml-skip-tag-forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47933
diff changeset
748 (defun sgml-skip-tag-forward (arg)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
749 "Skip to end of tag or matching closing tag if present.
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
750 With prefix argument ARG, repeat this ARG times.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
751 Return t iff after a closing tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
752 (interactive "p")
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
753 ;; FIXME: Use sgml-get-context or something similar.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
754 ;; It currently might jump to an unrelated </P> if the <P>
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
755 ;; we're skipping has no matching </P>.
48109
2c2ce75616ef (sgml-skip-tag-backward, sgml-skip-tag-forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47933
diff changeset
756 (let ((return t))
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
757 (with-syntax-table sgml-tag-syntax-table
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
758 (while (>= arg 1)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
759 (skip-chars-forward "^<>")
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
760 (if (eq (following-char) ?>)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
761 (up-list -1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
762 (if (looking-at "<\\([^/ \n\t>]+\\)\\([^>]*[^/>]\\)?>")
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
763 ;; start tag, skip any nested same pairs _and_ closing tag
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
764 (let ((case-fold-search t)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
765 (re (concat "</?" (regexp-quote (match-string 1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
766 ;; Ignore empty tags like <foo/>.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
767 "\\([^>]*[^/>]\\)?>"))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
768 point close)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
769 (forward-list 1)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
770 (setq point (point))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
771 ;; FIXME: This re-search-forward will mistakenly match
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
772 ;; tag-like text inside attributes.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
773 (while (and (re-search-forward re nil t)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
774 (not (setq close
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
775 (eq (char-after (1+ (match-beginning 0))) ?/)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
776 (goto-char (match-beginning 0))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
777 (sgml-skip-tag-forward 1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
778 (setq close nil))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
779 (unless close
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
780 (goto-char point)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
781 (setq return nil)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
782 (forward-list 1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
783 (setq arg (1- arg)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
784 return)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
785
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
786 (defun sgml-delete-tag (arg)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
787 ;; FIXME: Should be called sgml-kill-tag or should not touch the kill-ring.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
788 "Delete tag on or after cursor, and matching closing or opening tag.
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
789 With prefix argument ARG, repeat this ARG times."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
790 (interactive "p")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
791 (while (>= arg 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
792 (save-excursion
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
793 (let* (close open)
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
794 (if (looking-at "[ \t\n]*<")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
795 ;; just before tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
796 (if (eq (char-after (match-end 0)) ?/)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
797 ;; closing tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
798 (progn
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
799 (setq close (point))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
800 (goto-char (match-end 0))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
801 ;; on tag?
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
802 (or (save-excursion (setq close (sgml-beginning-of-tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
803 close (and (stringp close)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
804 (eq (aref close 0) ?/)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
805 (point))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
806 ;; not on closing tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
807 (let ((point (point)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
808 (sgml-skip-tag-backward 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
809 (if (or (not (eq (following-char) ?<))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
810 (save-excursion
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
811 (forward-list 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
812 (<= (point) point)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
813 (error "Not on or before tag")))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
814 (if close
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
815 (progn
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
816 (sgml-skip-tag-backward 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
817 (setq open (point))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
818 (goto-char close)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
819 (kill-sexp 1))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
820 (setq open (point))
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
821 (when (and (sgml-skip-tag-forward 1)
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
822 (not (looking-back "/>")))
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
823 (kill-sexp -1)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
824 ;; Delete any resulting empty line. If we didn't kill-sexp,
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
825 ;; this *should* do nothing, because we're right after the tag.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
826 (if (progn (forward-line 0) (looking-at "\\(?:[ \t]*$\\)\n?"))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
827 (delete-region (match-beginning 0) (match-end 0)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
828 (goto-char open)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
829 (kill-sexp 1)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
830 (if (progn (forward-line 0) (looking-at "\\(?:[ \t]*$\\)\n?"))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
831 (delete-region (match-beginning 0) (match-end 0)))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
832 (setq arg (1- arg))))
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
833
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
834
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
835 ;; Put read-only last to enable setting this even when read-only enabled.
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
836 (or (get 'sgml-tag 'invisible)
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
837 (setplist 'sgml-tag
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
838 (append '(invisible t
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
839 point-entered sgml-point-entered
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
840 rear-nonsticky t
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
841 read-only t)
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
842 (symbol-plist 'sgml-tag))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
843
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
844 (defun sgml-tags-invisible (arg)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
845 "Toggle visibility of existing tags."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
846 (interactive "P")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
847 (let ((modified (buffer-modified-p))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
848 (inhibit-read-only t)
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
849 (inhibit-modification-hooks t)
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
850 ;; Avoid spurious the `file-locked' checks.
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
851 (buffer-file-name nil)
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
852 ;; This is needed in case font lock gets called,
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
853 ;; since it moves point and might call sgml-point-entered.
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
854 ;; How could it get called? -stef
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
855 (inhibit-point-motion-hooks t)
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
856 string)
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
857 (unwind-protect
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
858 (save-excursion
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
859 (goto-char (point-min))
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
860 (if (set (make-local-variable 'sgml-tags-invisible)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
861 (if arg
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
862 (>= (prefix-numeric-value arg) 0)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
863 (not sgml-tags-invisible)))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
864 (while (re-search-forward sgml-tag-name-re nil t)
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
865 (setq string
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
866 (cdr (assq (intern-soft (downcase (match-string 1)))
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
867 sgml-display-text)))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
868 (goto-char (match-beginning 0))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
869 (and (stringp string)
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
870 (not (overlays-at (point)))
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
871 (let ((ol (make-overlay (point) (match-beginning 1))))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
872 (overlay-put ol 'before-string string)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
873 (overlay-put ol 'sgml-tag t)))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
874 (put-text-property (point)
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
875 (progn (forward-list) (point))
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
876 'category 'sgml-tag))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
877 (let ((pos (point-min)))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
878 (while (< (setq pos (next-overlay-change pos)) (point-max))
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
879 (dolist (ol (overlays-at pos))
40393
591afd36f0b3 (sgml-tags-invisible): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40392
diff changeset
880 (if (overlay-get ol 'sgml-tag)
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
881 (delete-overlay ol)))))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
882 (remove-text-properties (point-min) (point-max) '(category nil))))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
883 (restore-buffer-modified-p modified))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
884 (run-hooks 'sgml-tags-invisible-hook)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
885 (message "")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
886
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
887 (defun sgml-point-entered (x y)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
888 ;; Show preceding or following hidden tag, depending of cursor direction.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
889 (let ((inhibit-point-motion-hooks t))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
890 (save-excursion
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
891 (message "Invisible tag: %s"
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
892 ;; Strip properties, otherwise, the text is invisible.
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
893 (buffer-substring-no-properties
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
894 (point)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
895 (if (or (and (> x y)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
896 (not (eq (following-char) ?<)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
897 (and (< x y)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
898 (eq (preceding-char) ?>)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
899 (backward-list)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
900 (forward-list)))))))
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
901
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
902
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
903 (autoload 'compile-internal "compile")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
904
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
905 (defun sgml-validate (command)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
906 "Validate an SGML document.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
907 Runs COMMAND, a shell command, in a separate process asynchronously
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
908 with output going to the buffer `*compilation*'.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
909 You can then use the command \\[next-error] to find the next error message
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
910 and move to the line in the SGML document that caused it."
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
911 (interactive
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
912 (list (read-string "Validate command: "
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
913 (or sgml-saved-validate-command
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
914 (concat sgml-validate-command
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
915 " "
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
916 (let ((name (buffer-file-name)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
917 (and name
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
918 (file-name-nondirectory name))))))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
919 (setq sgml-saved-validate-command command)
23970
d1d08f461c9c (sgml-validate): Ask whether to save only
Richard M. Stallman <rms@gnu.org>
parents: 23869
diff changeset
920 (save-some-buffers (not compilation-ask-about-save) nil)
3121
8cf203c42bee (sgml-validate): compile1 renamed to compile-internal.
Richard M. Stallman <rms@gnu.org>
parents: 2315
diff changeset
921 (compile-internal command "No more errors"))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
922
44619
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
923 (defsubst sgml-at-indentation-p ()
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
924 "Return true if point is at the first non-whitespace character on the line."
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
925 (save-excursion
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
926 (skip-chars-backward " \t")
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
927 (bolp)))
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
928
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
929 (defun sgml-lexical-context (&optional limit)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
930 "Return the lexical context at point as (TYPE . START).
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
931 START is the location of the start of the lexical element.
44362
2480de7648c8 (sgml-lexical-context)
Mike Williams <mdub@bigfoot.com>
parents: 44335
diff changeset
932 TYPE is one of `string', `comment', `tag', `cdata', or `text'.
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
933
44460
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
934 Optional argument LIMIT is the position to start parsing from.
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
935 If nil, start from a preceding tag at indentation."
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
936 (save-excursion
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
937 (let ((pos (point))
44387
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
938 text-start state)
44460
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
939 (if limit
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
940 (goto-char limit)
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
941 ;; Skip tags backwards until we find one at indentation
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
942 (while (and (ignore-errors (sgml-parse-tag-backward))
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
943 (not (sgml-at-indentation-p)))))
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
944 (with-syntax-table sgml-tag-syntax-table
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
945 (while (< (point) pos)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
946 ;; When entering this loop we're inside text.
44335
1a7be1d554f5 (sgml-looking-back-at): Short-circuit at beg of buffer.
Mike Williams <mdub@bigfoot.com>
parents: 44333
diff changeset
947 (setq text-start (point))
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
948 (skip-chars-forward "^<" pos)
44387
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
949 (setq state
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
950 (cond
44443
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
951 ((= (point) pos)
44387
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
952 ;; We got to the end without seeing a tag.
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
953 nil)
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
954 ((looking-at "<!\\[[A-Z]+\\[")
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
955 ;; We've found a CDATA section or similar.
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
956 (let ((cdata-start (point)))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
957 (unless (search-forward "]]>" pos 'move)
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
958 (list 0 nil nil 'cdata nil nil nil nil cdata-start))))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
959 (t
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
960 ;; We've reached a tag. Parse it.
44387
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
961 ;; FIXME: Handle net-enabling start-tags
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
962 (parse-partial-sexp (point) pos 0))))))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
963 (cond
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
964 ((eq (nth 3 state) 'cdata) (cons 'cdata (nth 8 state)))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
965 ((nth 3 state) (cons 'string (nth 8 state)))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
966 ((nth 4 state) (cons 'comment (nth 8 state)))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
967 ((and state (> (nth 0 state) 0)) (cons 'tag (nth 1 state)))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
968 (t (cons 'text text-start))))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
969
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
970 (defun sgml-beginning-of-tag (&optional top-level)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
971 "Skip to beginning of tag and return its name.
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
972 If this can't be done, return nil."
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
973 (let ((context (sgml-lexical-context)))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
974 (if (eq (car context) 'tag)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
975 (progn
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
976 (goto-char (cdr context))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
977 (when (looking-at sgml-tag-name-re)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
978 (match-string-no-properties 1)))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
979 (if top-level nil
44244
31f1fc31fd45 (sgml-lexical-context): Return (text . START)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44241
diff changeset
980 (when (not (eq (car context) 'text))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
981 (goto-char (cdr context))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
982 (sgml-beginning-of-tag t))))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
983
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
984 (defun sgml-value (alist)
44286
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
985 "Interactively insert value taken from attribute-rule ALIST.
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
986 See `sgml-tag-alist' for info about attribute rules."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
987 (setq alist (cdr alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
988 (if (stringp (car alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
989 (insert "=\"" (car alist) ?\")
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
990 (if (and (eq (car alist) t) (not sgml-xml-mode))
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
991 (when (cdr alist)
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
992 (insert "=\"")
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
993 (setq alist (skeleton-read '(completing-read "Value: " (cdr alist))))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
994 (if (string< "" alist)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
995 (insert alist ?\")
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
996 (delete-backward-char 2)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
997 (insert "=\"")
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
998 (when alist
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
999 (insert (skeleton-read '(completing-read "Value: " alist))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1000 (insert ?\"))))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1001
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1002 (defun sgml-quote (start end &optional unquotep)
46352
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1003 "Quote SGML text in region START ... END.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1004 Only &, < and > are quoted, the rest is left untouched.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1005 With prefix argument UNQUOTEP, unquote the region."
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1006 (interactive "r\nP")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1007 (save-restriction
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1008 (narrow-to-region start end)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1009 (goto-char (point-min))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1010 (if unquotep
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1011 ;; FIXME: We should unquote other named character references as well.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1012 (while (re-search-forward
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1013 "\\(&\\(amp\\|\\(l\\|\\(g\\)\\)t\\)\\)[][<>&;\n\t \"%!'(),/=?]"
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1014 nil t)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1015 (replace-match (if (match-end 4) ">" (if (match-end 3) "<" "&")) t t
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1016 nil (if (eq (char-before (match-end 0)) ?\;) 0 1)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1017 (while (re-search-forward "[&<>]" nil t)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1018 (replace-match (cdr (assq (char-before) '((?& . "&amp;")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1019 (?< . "&lt;")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1020 (?> . "&gt;"))))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1021 t t)))))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1022
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1023 (defun sgml-pretty-print (beg end)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1024 "Simple-minded pretty printer for SGML.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1025 Re-indents the code and inserts newlines between BEG and END.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1026 You might want to turn on `auto-fill-mode' to get better results."
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1027 ;; TODO:
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1028 ;; - insert newline between some start-tag and text.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1029 ;; - don't insert newline in front of some end-tags.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1030 (interactive "r")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1031 (save-excursion
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1032 (if (< beg end)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1033 (goto-char beg)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1034 (goto-char end)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1035 (setq end beg)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1036 (setq beg (point)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1037 ;; Don't use narrowing because it screws up auto-indent.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1038 (setq end (copy-marker end t))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1039 (with-syntax-table sgml-tag-syntax-table
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1040 (while (re-search-forward "<" end t)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1041 (goto-char (match-beginning 0))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1042 (unless (or ;;(looking-at "</")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1043 (progn (skip-chars-backward " \t") (bolp)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1044 (reindent-then-newline-and-indent))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1045 (forward-sexp 1)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1046 ;; (indent-region beg end)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1047 ))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1048
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1049
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1050 ;; Parsing
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1051
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1052 (defstruct (sgml-tag
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1053 (:constructor sgml-make-tag (type start end name)))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1054 type start end name)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1055
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1056 (defsubst sgml-parse-tag-name ()
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1057 "Skip past a tag-name, and return the name."
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1058 (buffer-substring-no-properties
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1059 (point) (progn (skip-syntax-forward "w_") (point))))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1060
44460
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
1061 (defsubst sgml-looking-back-at (str)
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
1062 "Return t if the test before point matches STR."
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
1063 (let ((start (- (point) (length str))))
44335
1a7be1d554f5 (sgml-looking-back-at): Short-circuit at beg of buffer.
Mike Williams <mdub@bigfoot.com>
parents: 44333
diff changeset
1064 (and (>= start (point-min))
44460
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
1065 (equal str (buffer-substring-no-properties start (point))))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1066
58122
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1067 (defun sgml-tag-text-p (start end)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1068 "Return non-nil if text between START and END is a tag.
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1069 Checks among other things that the tag does not contain spurious
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1070 unquoted < or > chars inside, which would indicate that it
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1071 really isn't a tag after all."
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1072 (save-excursion
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1073 (with-syntax-table sgml-tag-syntax-table
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1074 (let ((pps (parse-partial-sexp start end 2)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1075 (and (= (nth 0 pps) 0))))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1076
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1077 (defun sgml-parse-tag-backward (&optional limit)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1078 "Parse an SGML tag backward, and return information about the tag.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1079 Assume that parsing starts from within a textual context.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1080 Leave point at the beginning of the tag."
58122
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1081 (catch 'found
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1082 (let (tag-type tag-start tag-end name)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1083 (or (re-search-backward "[<>]" limit 'move)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1084 (error "No tag found"))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1085 (when (eq (char-after) ?<)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1086 ;; Oops!! Looks like we were not in a textual context after all!.
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1087 ;; Let's try to recover.
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1088 (with-syntax-table sgml-tag-syntax-table
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1089 (let ((pos (point)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1090 (condition-case nil
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1091 (forward-sexp)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1092 (scan-error
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1093 ;; This < seems to be just a spurious one, let's ignore it.
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1094 (goto-char pos)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1095 (throw 'found (sgml-parse-tag-backward limit))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1096 ;; Check it is really a tag, without any extra < or > inside.
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1097 (unless (sgml-tag-text-p pos (point))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1098 (goto-char pos)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1099 (throw 'found (sgml-parse-tag-backward limit)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1100 (forward-char -1))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1101 (setq tag-end (1+ (point)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1102 (cond
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1103 ((sgml-looking-back-at "--") ; comment
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1104 (setq tag-type 'comment
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1105 tag-start (search-backward "<!--" nil t)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1106 ((sgml-looking-back-at "]]") ; cdata
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1107 (setq tag-type 'cdata
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1108 tag-start (re-search-backward "<!\\[[A-Z]+\\[" nil t)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1109 (t
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1110 (setq tag-start
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1111 (with-syntax-table sgml-tag-syntax-table
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1112 (goto-char tag-end)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1113 (condition-case nil
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1114 (backward-sexp)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1115 (scan-error
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1116 ;; This > isn't really the end of a tag. Skip it.
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1117 (goto-char (1- tag-end))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1118 (throw 'found (sgml-parse-tag-backward limit))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1119 (point)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1120 (goto-char (1+ tag-start))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1121 (case (char-after)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1122 (?! ; declaration
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1123 (setq tag-type 'decl))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1124 (?? ; processing-instruction
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1125 (setq tag-type 'pi))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1126 (?/ ; close-tag
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1127 (forward-char 1)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1128 (setq tag-type 'close
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1129 name (sgml-parse-tag-name)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1130 (?% ; JSP tags
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1131 (setq tag-type 'jsp))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1132 (t ; open or empty tag
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1133 (setq tag-type 'open
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1134 name (sgml-parse-tag-name))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1135 (if (or (eq ?/ (char-before (- tag-end 1)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1136 (sgml-empty-tag-p name))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1137 (setq tag-type 'empty))))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1138 (goto-char tag-start)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1139 (sgml-make-tag tag-type tag-start tag-end name))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1140
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1141 (defun sgml-get-context (&optional until)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1142 "Determine the context of the current position.
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1143 By default, parse until we find a start-tag as the first thing on a line.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1144 If UNTIL is `empty', return even if the context is empty (i.e.
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1145 we just skipped over some element and got to a beginning of line).
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1146
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1147 The context is a list of tag-info structures. The last one is the tag
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1148 immediately enclosing the current position.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1149
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1150 Point is assumed to be outside of any tag. If we discover that it's
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1151 not the case, the first tag returned is the one inside which we are."
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1152 (let ((here (point))
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1153 (stack nil)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1154 (ignore nil)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1155 (context nil)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1156 tag-info)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1157 ;; CONTEXT keeps track of the tag-stack
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1158 ;; STACK keeps track of the end tags we've seen (and thus the start-tags
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1159 ;; we'll have to ignore) when skipping over matching open..close pairs.
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1160 ;; IGNORE is a list of tags that can be ignored because they have been
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1161 ;; closed implicitly.
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1162 (skip-chars-backward " \t\n") ; Make sure we're not at indentation.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1163 (while
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1164 (and (not (eq until 'now))
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1165 (or stack
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1166 (not (if until (eq until 'empty) context))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1167 (not (sgml-at-indentation-p))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1168 (and context
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1169 (/= (point) (sgml-tag-start (car context)))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1170 (sgml-unclosed-tag-p (sgml-tag-name (car context)))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1171 (setq tag-info (ignore-errors (sgml-parse-tag-backward))))
47933
b5ddbda34d8e (sgml-close-tag, html-imenu-index): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47679
diff changeset
1172
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1173 ;; This tag may enclose things we thought were tags. If so,
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1174 ;; discard them.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1175 (while (and context
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1176 (> (sgml-tag-end tag-info)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1177 (sgml-tag-end (car context))))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1178 (setq context (cdr context)))
47933
b5ddbda34d8e (sgml-close-tag, html-imenu-index): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47679
diff changeset
1179
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1180 (cond
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1181 ((> (sgml-tag-end tag-info) here)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1182 ;; Oops!! Looks like we were not outside of any tag, after all.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1183 (push tag-info context)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1184 (setq until 'now))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1185
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1186 ;; start-tag
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1187 ((eq (sgml-tag-type tag-info) 'open)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1188 (cond
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1189 ((null stack)
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1190 (if (member-ignore-case (sgml-tag-name tag-info) ignore)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1191 ;; There was an implicit end-tag.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1192 nil
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1193 (push tag-info context)
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1194 ;; We're changing context so the tags implicitly closed inside
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1195 ;; the previous context aren't implicitly closed here any more.
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1196 ;; [ Well, actually it depends, but we don't have the info about
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1197 ;; when it doesn't and when it does. --Stef ]
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1198 (setq ignore nil)))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1199 ((eq t (compare-strings (sgml-tag-name tag-info) nil nil
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1200 (car stack) nil nil t))
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1201 (setq stack (cdr stack)))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1202 (t
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1203 ;; The open and close tags don't match.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1204 (if (not sgml-xml-mode)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1205 (unless (sgml-unclosed-tag-p (sgml-tag-name tag-info))
46352
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1206 (message "Unclosed tag <%s>" (sgml-tag-name tag-info))
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1207 (let ((tmp stack))
46352
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1208 ;; We could just assume that the tag is simply not closed
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1209 ;; but it's a bad assumption when tags *are* closed but
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1210 ;; not properly nested.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1211 (while (and (cdr tmp)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1212 (not (eq t (compare-strings
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1213 (sgml-tag-name tag-info) nil nil
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1214 (cadr tmp) nil nil t))))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1215 (setq tmp (cdr tmp)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1216 (if (cdr tmp) (setcdr tmp (cddr tmp)))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1217 (message "Unmatched tags <%s> and </%s>"
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1218 (sgml-tag-name tag-info) (pop stack)))))
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59519
diff changeset
1219
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1220 (if (and (null stack) (sgml-unclosed-tag-p (sgml-tag-name tag-info)))
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1221 ;; This is a top-level open of an implicitly closed tag, so any
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1222 ;; occurrence of such an open tag at the same level can be ignored
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1223 ;; because it's been implicitly closed.
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1224 (push (sgml-tag-name tag-info) ignore)))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1225
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1226 ;; end-tag
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1227 ((eq (sgml-tag-type tag-info) 'close)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1228 (if (sgml-empty-tag-p (sgml-tag-name tag-info))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1229 (message "Spurious </%s>: empty tag" (sgml-tag-name tag-info))
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1230 (push (sgml-tag-name tag-info) stack)))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1231 ))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1232
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1233 ;; return context
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1234 context))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1235
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1236 (defun sgml-show-context (&optional full)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1237 "Display the current context.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1238 If FULL is non-nil, parse back to the beginning of the buffer."
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1239 (interactive "P")
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1240 (with-output-to-temp-buffer "*XML Context*"
46352
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1241 (save-excursion
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1242 (let ((context (sgml-get-context)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1243 (when full
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1244 (let ((more nil))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1245 (while (setq more (sgml-get-context))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1246 (setq context (nconc more context)))))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1247 (pp context)))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1248
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1249
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1250 ;; Editing shortcuts
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1251
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1252 (defun sgml-close-tag ()
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1253 "Close current element.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1254 Depending on context, inserts a matching close-tag, or closes
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1255 the current start-tag or the current comment or the current cdata, ..."
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1256 (interactive)
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1257 (case (car (sgml-lexical-context))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1258 (comment (insert " -->"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1259 (cdata (insert "]]>"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1260 (pi (insert " ?>"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1261 (jsp (insert " %>"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1262 (tag (insert " />"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1263 (text
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1264 (let ((context (save-excursion (sgml-get-context))))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1265 (if context
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1266 (progn
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1267 (insert "</" (sgml-tag-name (car (last context))) ">")
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1268 (indent-according-to-mode)))))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1269 (otherwise
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1270 (error "Nothing to close"))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1271
44286
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1272 (defun sgml-empty-tag-p (tag-name)
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1273 "Return non-nil if TAG-NAME is an implicitly empty tag."
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1274 (and (not sgml-xml-mode)
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1275 (member-ignore-case tag-name sgml-empty-tags)))
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1276
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1277 (defun sgml-unclosed-tag-p (tag-name)
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1278 "Return non-nil if TAG-NAME is a tag for which an end-tag is optional."
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1279 (and (not sgml-xml-mode)
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1280 (member-ignore-case tag-name sgml-unclosed-tags)))
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1281
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1282 (defun sgml-calculate-indent (&optional lcon)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1283 "Calculate the column to which this line should be indented.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1284 LCON is the lexical context, if any."
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1285 (unless lcon (setq lcon (sgml-lexical-context)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1286
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1287 ;; Indent comment-start markers inside <!-- just like comment-end markers.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1288 (if (and (eq (car lcon) 'tag)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1289 (looking-at "--")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1290 (save-excursion (goto-char (cdr lcon)) (looking-at "<!--")))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1291 (setq lcon (cons 'comment (+ (cdr lcon) 2))))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1292
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1293 (case (car lcon)
44286
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1294
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1295 (string
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1296 ;; Go back to previous non-empty line.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1297 (while (and (> (point) (cdr lcon))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1298 (zerop (forward-line -1))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1299 (looking-at "[ \t]*$")))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1300 (if (> (point) (cdr lcon))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1301 ;; Previous line is inside the string.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1302 (current-indentation)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1303 (goto-char (cdr lcon))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1304 (1+ (current-column))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1305
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1306 (comment
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1307 (let ((mark (looking-at "--")))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1308 ;; Go back to previous non-empty line.
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1309 (while (and (> (point) (cdr lcon))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1310 (zerop (forward-line -1))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1311 (or (looking-at "[ \t]*$")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1312 (if mark (not (looking-at "[ \t]*--"))))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1313 (if (> (point) (cdr lcon))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1314 ;; Previous line is inside the comment.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1315 (skip-chars-forward " \t")
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1316 (goto-char (cdr lcon))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1317 ;; Skip `<!' to get to the `--' with which we want to align.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1318 (search-forward "--")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1319 (goto-char (match-beginning 0)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1320 (when (and (not mark) (looking-at "--"))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1321 (forward-char 2) (skip-chars-forward " \t"))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1322 (current-column)))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1323
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1324 ;; We don't know how to indent it. Let's be honest about it.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1325 (cdata nil)
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1326
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1327 (tag
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1328 (goto-char (1+ (cdr lcon)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1329 (skip-chars-forward "^ \t\n") ;Skip tag name.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1330 (skip-chars-forward " \t")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1331 (if (not (eolp))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1332 (current-column)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1333 ;; This is the first attribute: indent.
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1334 (goto-char (1+ (cdr lcon)))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1335 (+ (current-column) sgml-basic-offset)))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1336
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1337 (text
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1338 (while (looking-at "</")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1339 (forward-sexp 1)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1340 (skip-chars-forward " \t"))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1341 (let* ((here (point))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1342 (unclosed (and ;; (not sgml-xml-mode)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1343 (looking-at sgml-tag-name-re)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1344 (member-ignore-case (match-string 1)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1345 sgml-unclosed-tags)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1346 (match-string 1)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1347 (context
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1348 ;; If possible, align on the previous non-empty text line.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1349 ;; Otherwise, do a more serious parsing to find the
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1350 ;; tag(s) relative to which we should be indenting.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1351 (if (and (not unclosed) (skip-chars-backward " \t")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1352 (< (skip-chars-backward " \t\n") 0)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1353 (back-to-indentation)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1354 (> (point) (cdr lcon)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1355 nil
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1356 (goto-char here)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1357 (nreverse (sgml-get-context (if unclosed nil 'empty)))))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1358 (there (point)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1359 ;; Ignore previous unclosed start-tag in context.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1360 (while (and context unclosed
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1361 (eq t (compare-strings
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1362 (sgml-tag-name (car context)) nil nil
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1363 unclosed nil nil t)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1364 (setq context (cdr context)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1365 ;; Indent to reflect nesting.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1366 (cond
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1367 ;; If we were not in a text context after all, let's try again.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1368 ((and context (> (sgml-tag-end (car context)) here))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1369 (goto-char here)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1370 (sgml-calculate-indent
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1371 (cons (if (memq (sgml-tag-type (car context)) '(comment cdata))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1372 (sgml-tag-type (car context)) 'tag)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1373 (sgml-tag-start (car context)))))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1374 ;; Align on the first element after the nearest open-tag, if any.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1375 ((and context
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1376 (goto-char (sgml-tag-end (car context)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1377 (skip-chars-forward " \t\n")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1378 (< (point) here) (sgml-at-indentation-p))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1379 (current-column))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1380 (t
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1381 (goto-char there)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1382 (+ (current-column)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1383 (* sgml-basic-offset (length context)))))))
47933
b5ddbda34d8e (sgml-close-tag, html-imenu-index): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47679
diff changeset
1384
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1385 (otherwise
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1386 (error "Unrecognised context %s" (car lcon)))
44286
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1387
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1388 ))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1389
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1390 (defun sgml-indent-line ()
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1391 "Indent the current line as SGML."
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1392 (interactive)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1393 (let* ((savep (point))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1394 (indent-col
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1395 (save-excursion
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1396 (back-to-indentation)
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1397 (if (>= (point) savep) (setq savep nil))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1398 (sgml-calculate-indent))))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1399 (if (null indent-col)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1400 'noindent
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1401 (if savep
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1402 (save-excursion (indent-line-to indent-col))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1403 (indent-line-to indent-col)))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1404
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1405 (defun sgml-guess-indent ()
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1406 "Guess an appropriate value for `sgml-basic-offset'.
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1407 Base the guessed identation level on the first indented tag in the buffer.
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1408 Add this to `sgml-mode-hook' for convenience."
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1409 (interactive)
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1410 (save-excursion
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1411 (goto-char (point-min))
45463
62d5e10140e7 (sgml-guess-indent): Look further into the buffer.
Mike Williams <mdub@bigfoot.com>
parents: 45286
diff changeset
1412 (if (re-search-forward "^\\([ \t]+\\)<" 500 'noerror)
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1413 (progn
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1414 (set (make-local-variable 'sgml-basic-offset)
47679
96093793b6b4 (sgml-guess-indent): Handle tabs correctly.
Mike Williams <mdub@bigfoot.com>
parents: 46352
diff changeset
1415 (1- (current-column)))
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1416 (message "Guessed sgml-basic-offset = %d"
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1417 sgml-basic-offset)
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1418 ))))
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1419
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1420 (defun sgml-parse-dtd ()
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1421 "Simplistic parse of the current buffer as a DTD.
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1422 Currently just returns (EMPTY-TAGS UNCLOSED-TAGS)."
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1423 (goto-char (point-min))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1424 (let ((empty nil)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1425 (unclosed nil))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1426 (while (re-search-forward "<!ELEMENT[ \t\n]+\\([^ \t\n]+\\)[ \t\n]+[-O][ \t\n]+\\([-O]\\)[ \t\n]+\\([^ \t\n]+\\)" nil t)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1427 (cond
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1428 ((string= (match-string 3) "EMPTY")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1429 (push (match-string-no-properties 1) empty))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1430 ((string= (match-string 2) "O")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1431 (push (match-string-no-properties 1) unclosed))))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1432 (setq empty (sort (mapcar 'downcase empty) 'string<))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1433 (setq unclosed (sort (mapcar 'downcase unclosed) 'string<))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1434 (list empty unclosed)))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1435
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1436 ;;; HTML mode
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1437
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1438 (defcustom html-mode-hook nil
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1439 "Hook run by command `html-mode'.
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1440 `text-mode-hook' and `sgml-mode-hook' are run first."
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1441 :group 'sgml
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1442 :type 'hook
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1443 :options '(html-autoview-mode))
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1444
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1445 (defvar html-quick-keys sgml-quick-keys
14377
2e6bd1a2712a Whitespace fix.
Richard M. Stallman <rms@gnu.org>
parents: 14328
diff changeset
1446 "Use C-c X combinations for quick insertion of frequent tags when non-nil.
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1447 This defaults to `sgml-quick-keys'.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1448 This takes effect when first loading the library.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1449
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1450 (defvar html-mode-map
37252
5db39c2eba1e Add unknown maintainer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36609
diff changeset
1451 (let ((map (make-sparse-keymap))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1452 (menu-map (make-sparse-keymap "HTML")))
37252
5db39c2eba1e Add unknown maintainer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36609
diff changeset
1453 (set-keymap-parent map sgml-mode-map)
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1454 (define-key map "\C-c6" 'html-headline-6)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1455 (define-key map "\C-c5" 'html-headline-5)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1456 (define-key map "\C-c4" 'html-headline-4)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1457 (define-key map "\C-c3" 'html-headline-3)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1458 (define-key map "\C-c2" 'html-headline-2)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1459 (define-key map "\C-c1" 'html-headline-1)
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1460 (define-key map "\C-c\r" 'html-paragraph)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1461 (define-key map "\C-c\n" 'html-line)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1462 (define-key map "\C-c\C-c-" 'html-horizontal-rule)
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1463 (define-key map "\C-c\C-co" 'html-ordered-list)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1464 (define-key map "\C-c\C-cu" 'html-unordered-list)
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1465 (define-key map "\C-c\C-cr" 'html-radio-buttons)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1466 (define-key map "\C-c\C-cc" 'html-checkboxes)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1467 (define-key map "\C-c\C-cl" 'html-list-item)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1468 (define-key map "\C-c\C-ch" 'html-href-anchor)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1469 (define-key map "\C-c\C-cn" 'html-name-anchor)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1470 (define-key map "\C-c\C-ci" 'html-image)
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1471 (when html-quick-keys
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1472 (define-key map "\C-c-" 'html-horizontal-rule)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1473 (define-key map "\C-co" 'html-ordered-list)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1474 (define-key map "\C-cu" 'html-unordered-list)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1475 (define-key map "\C-cr" 'html-radio-buttons)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1476 (define-key map "\C-cc" 'html-checkboxes)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1477 (define-key map "\C-cl" 'html-list-item)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1478 (define-key map "\C-ch" 'html-href-anchor)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1479 (define-key map "\C-cn" 'html-name-anchor)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1480 (define-key map "\C-ci" 'html-image))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1481 (define-key map "\C-c\C-s" 'html-autoview-mode)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1482 (define-key map "\C-c\C-v" 'browse-url-of-buffer)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1483 (define-key map [menu-bar html] (cons "HTML" menu-map))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1484 (define-key menu-map [html-autoview-mode]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1485 '("Toggle Autoviewing" . html-autoview-mode))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1486 (define-key menu-map [browse-url-of-buffer]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1487 '("View Buffer Contents" . browse-url-of-buffer))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1488 (define-key menu-map [nil] '("--"))
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1489 ;;(define-key menu-map "6" '("Heading 6" . html-headline-6))
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1490 ;;(define-key menu-map "5" '("Heading 5" . html-headline-5))
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1491 ;;(define-key menu-map "4" '("Heading 4" . html-headline-4))
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1492 (define-key menu-map "3" '("Heading 3" . html-headline-3))
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1493 (define-key menu-map "2" '("Heading 2" . html-headline-2))
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1494 (define-key menu-map "1" '("Heading 1" . html-headline-1))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1495 (define-key menu-map "l" '("Radio Buttons" . html-radio-buttons))
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1496 (define-key menu-map "c" '("Checkboxes" . html-checkboxes))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1497 (define-key menu-map "l" '("List Item" . html-list-item))
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1498 (define-key menu-map "u" '("Unordered List" . html-unordered-list))
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1499 (define-key menu-map "o" '("Ordered List" . html-ordered-list))
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1500 (define-key menu-map "-" '("Horizontal Rule" . html-horizontal-rule))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1501 (define-key menu-map "\n" '("Line Break" . html-line))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1502 (define-key menu-map "\r" '("Paragraph" . html-paragraph))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1503 (define-key menu-map "i" '("Image" . html-image))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1504 (define-key menu-map "h" '("Href Anchor" . html-href-anchor))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1505 (define-key menu-map "n" '("Name Anchor" . html-name-anchor))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1506 map)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1507 "Keymap for commands for use in HTML mode.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1508
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1509 (defvar html-face-tag-alist
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1510 '((bold . "b")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1511 (italic . "i")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1512 (underline . "u")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1513 (modeline . "rev"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1514 "Value of `sgml-face-tag-alist' for HTML mode.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1515
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1516 (defvar html-tag-face-alist
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1517 '(("b" . bold)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1518 ("big" . bold)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1519 ("blink" . highlight)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1520 ("cite" . italic)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1521 ("em" . italic)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1522 ("h1" bold underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1523 ("h2" bold-italic underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1524 ("h3" italic underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1525 ("h4" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1526 ("h5" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1527 ("h6" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1528 ("i" . italic)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1529 ("rev" . modeline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1530 ("s" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1531 ("small" . default)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1532 ("strong" . bold)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1533 ("title" bold underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1534 ("tt" . default)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1535 ("u" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1536 ("var" . italic))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1537 "Value of `sgml-tag-face-alist' for HTML mode.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1538
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1539 (defvar html-display-text
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1540 '((img . "[/]")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1541 (hr . "----------")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1542 (li . "o "))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1543 "Value of `sgml-display-text' for HTML mode.")
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
1544
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1545
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1546 ;; should code exactly HTML 3 here when that is finished
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1547 (defvar html-tag-alist
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1548 (let* ((1-7 '(("1") ("2") ("3") ("4") ("5") ("6") ("7")))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1549 (1-9 `(,@1-7 ("8") ("9")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1550 (align '(("align" ("left") ("center") ("right"))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1551 (valign '(("top") ("middle") ("bottom") ("baseline")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1552 (rel '(("next") ("previous") ("parent") ("subdocument") ("made")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1553 (href '("href" ("ftp:") ("file:") ("finger:") ("gopher:") ("http:")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1554 ("mailto:") ("news:") ("rlogin:") ("telnet:") ("tn3270:")
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1555 ("wais:") ("/cgi-bin/")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1556 (name '("name"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1557 (link `(,href
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1558 ("rel" ,@rel)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1559 ("rev" ,@rel)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1560 ("title")))
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
1561 (list '((nil \n ("List item: " "<li>" str
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1562 (if sgml-xml-mode "</li>") \n))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1563 (cell `(t
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1564 ,@align
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1565 ("valign" ,@valign)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1566 ("colspan" ,@1-9)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1567 ("rowspan" ,@1-9)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1568 ("nowrap" t))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1569 ;; put ,-expressions first, else byte-compile chokes (as of V19.29)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1570 ;; and like this it's more efficient anyway
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1571 `(("a" ,name ,@link)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1572 ("base" t ,@href)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1573 ("dir" ,@list)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1574 ("font" nil "size" ("-1") ("+1") ("-2") ("+2") ,@1-7)
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1575 ("form" (\n _ \n "<input type=\"submit\" value=\"\""
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1576 (if sgml-xml-mode " />" ">"))
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1577 ("action" ,@(cdr href)) ("method" ("get") ("post")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1578 ("h1" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1579 ("h2" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1580 ("h3" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1581 ("h4" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1582 ("h5" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1583 ("h6" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1584 ("hr" t ("size" ,@1-9) ("width") ("noshade" t) ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1585 ("img" t ("align" ,@valign ("texttop") ("absmiddle") ("absbottom"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1586 ("src") ("alt") ("width" "1") ("height" "1")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1587 ("border" "1") ("vspace" "1") ("hspace" "1") ("ismap" t))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1588 ("input" t ("size" ,@1-9) ("maxlength" ,@1-9) ("checked" t) ,name
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1589 ("type" ("text") ("password") ("checkbox") ("radio")
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1590 ("submit") ("reset"))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1591 ("value"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1592 ("link" t ,@link)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1593 ("menu" ,@list)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1594 ("ol" ,@list ("type" ("A") ("a") ("I") ("i") ("1")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1595 ("p" t ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1596 ("select" (nil \n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1597 ("Text: "
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1598 "<option>" str (if sgml-xml-mode "</option>") \n))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1599 ,name ("size" ,@1-9) ("multiple" t))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1600 ("table" (nil \n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1601 ((completing-read "Cell kind: " '(("td") ("th"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1602 nil t "t")
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1603 "<tr><" str ?> _
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1604 (if sgml-xml-mode (concat "<" str "></tr>")) \n))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1605 ("border" t ,@1-9) ("width" "10") ("cellpadding"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1606 ("td" ,@cell)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1607 ("textarea" ,name ("rows" ,@1-9) ("cols" ,@1-9))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1608 ("th" ,@cell)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1609 ("ul" ,@list ("type" ("disc") ("circle") ("square")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1610
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1611 ,@sgml-tag-alist
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1612
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1613 ("abbrev")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1614 ("acronym")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1615 ("address")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1616 ("array" (nil \n
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1617 ("Item: " "<item>" str (if sgml-xml-mode "</item>") \n))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1618 "align")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1619 ("au")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1620 ("b")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1621 ("big")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1622 ("blink")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1623 ("blockquote" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1624 ("body" \n ("background" ".gif") ("bgcolor" "#") ("text" "#")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1625 ("link" "#") ("alink" "#") ("vlink" "#"))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1626 ("box" (nil _ "<over>" _ (if sgml-xml-mode "</over>")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1627 ("br" t ("clear" ("left") ("right")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1628 ("caption" ("valign" ("top") ("bottom")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1629 ("center" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1630 ("cite")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1631 ("code" \n)
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1632 ("dd" ,(not sgml-xml-mode))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1633 ("del")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1634 ("dfn")
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1635 ("div")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1636 ("dl" (nil \n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1637 ( "Term: "
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1638 "<dt>" str (if sgml-xml-mode "</dt>")
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1639 "<dd>" _ (if sgml-xml-mode "</dd>") \n)))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1640 ("dt" (t _ (if sgml-xml-mode "</dt>")
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1641 "<dd>" (if sgml-xml-mode "</dd>") \n))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1642 ("em")
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1643 ;("fn" "id" "fn") ; ???
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1644 ("head" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1645 ("html" (\n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1646 "<head>\n"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1647 "<title>" (setq str (read-input "Title: ")) "</title>\n"
24413
e2c5b1571392 (html-tag-alist): Add /head and /body to the "html" template.
Richard M. Stallman <rms@gnu.org>
parents: 23970
diff changeset
1648 "</head>\n"
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1649 "<body>\n<h1>" str "</h1>\n" _
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1650 "\n<address>\n<a href=\"mailto:"
14518
5b2bc060c90d (html-tag-alist): within the <ADDRESS> tag
Richard M. Stallman <rms@gnu.org>
parents: 14377
diff changeset
1651 user-mail-address
24413
e2c5b1571392 (html-tag-alist): Add /head and /body to the "html" template.
Richard M. Stallman <rms@gnu.org>
parents: 23970
diff changeset
1652 "\">" (user-full-name) "</a>\n</address>\n"
e2c5b1571392 (html-tag-alist): Add /head and /body to the "html" template.
Richard M. Stallman <rms@gnu.org>
parents: 23970
diff changeset
1653 "</body>"
e2c5b1571392 (html-tag-alist): Add /head and /body to the "html" template.
Richard M. Stallman <rms@gnu.org>
parents: 23970
diff changeset
1654 ))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1655 ("i")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1656 ("ins")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1657 ("isindex" t ("action") ("prompt"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1658 ("kbd")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1659 ("lang")
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1660 ("li" ,(not sgml-xml-mode))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1661 ("math" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1662 ("nobr")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1663 ("option" t ("value") ("label") ("selected" t))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1664 ("over" t)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1665 ("person")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1666 ("pre" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1667 ("q")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1668 ("rev")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1669 ("s")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1670 ("samp")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1671 ("small")
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1672 ("span" nil
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1673 ("class"
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1674 ("builtin")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1675 ("comment")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1676 ("constant")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1677 ("function-name")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1678 ("keyword")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1679 ("string")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1680 ("type")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1681 ("variable-name")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1682 ("warning")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1683 ("strong")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1684 ("sub")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1685 ("sup")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1686 ("title")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1687 ("tr" t)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1688 ("tt")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1689 ("u")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1690 ("var")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1691 ("wbr" t)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1692 "*Value of `sgml-tag-alist' for HTML mode.")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1693
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1694 (defvar html-tag-help
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1695 `(,@sgml-tag-help
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1696 ("a" . "Anchor of point or link elsewhere")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1697 ("abbrev" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1698 ("acronym" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1699 ("address" . "Formatted mail address")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1700 ("array" . "Math array")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1701 ("au" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1702 ("b" . "Bold face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1703 ("base" . "Base address for URLs")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1704 ("big" . "Font size")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1705 ("blink" . "Blinking text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1706 ("blockquote" . "Indented quotation")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1707 ("body" . "Document body")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1708 ("box" . "Math fraction")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1709 ("br" . "Line break")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1710 ("caption" . "Table caption")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1711 ("center" . "Centered text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1712 ("changed" . "Change bars")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1713 ("cite" . "Citation of a document")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1714 ("code" . "Formatted source code")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1715 ("dd" . "Definition of term")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1716 ("del" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1717 ("dfn" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1718 ("dir" . "Directory list (obsolete)")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1719 ("dl" . "Definition list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1720 ("dt" . "Term to be definined")
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
1721 ("em" . "Emphasised")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1722 ("embed" . "Embedded data in foreign format")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1723 ("fig" . "Figure")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1724 ("figa" . "Figure anchor")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1725 ("figd" . "Figure description")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1726 ("figt" . "Figure text")
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1727 ;("fn" . "?") ; ???
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1728 ("font" . "Font size")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1729 ("form" . "Form with input fields")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1730 ("group" . "Document grouping")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1731 ("h1" . "Most important section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1732 ("h2" . "Important section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1733 ("h3" . "Section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1734 ("h4" . "Minor section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1735 ("h5" . "Unimportant section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1736 ("h6" . "Least important section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1737 ("head" . "Document header")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1738 ("hr" . "Horizontal rule")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1739 ("html" . "HTML Document")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1740 ("i" . "Italic face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1741 ("img" . "Graphic image")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1742 ("input" . "Form input field")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1743 ("ins" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1744 ("isindex" . "Input field for index search")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1745 ("kbd" . "Keybard example face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1746 ("lang" . "Natural language")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1747 ("li" . "List item")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1748 ("link" . "Link relationship")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1749 ("math" . "Math formula")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1750 ("menu" . "Menu list (obsolete)")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1751 ("mh" . "Form mail header")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1752 ("nextid" . "Allocate new id")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1753 ("nobr" . "Text without line break")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1754 ("ol" . "Ordered list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1755 ("option" . "Selection list item")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1756 ("over" . "Math fraction rule")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1757 ("p" . "Paragraph start")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1758 ("panel" . "Floating panel")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1759 ("person" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1760 ("pre" . "Preformatted fixed width text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1761 ("q" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1762 ("rev" . "Reverse video")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1763 ("s" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1764 ("samp" . "Sample text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1765 ("select" . "Selection list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1766 ("small" . "Font size")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1767 ("sp" . "Nobreak space")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1768 ("strong" . "Standout text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1769 ("sub" . "Subscript")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1770 ("sup" . "Superscript")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1771 ("table" . "Table with rows and columns")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1772 ("tb" . "Table vertical break")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1773 ("td" . "Table data cell")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1774 ("textarea" . "Form multiline edit area")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1775 ("th" . "Table header cell")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1776 ("title" . "Document title")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1777 ("tr" . "Table row separator")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1778 ("tt" . "Typewriter face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1779 ("u" . "Underlined text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1780 ("ul" . "Unordered list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1781 ("var" . "Math variable face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1782 ("wbr" . "Enable <br> within <nobr>"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1783 "*Value of `sgml-tag-help' for HTML mode.")
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
1784
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1785
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1786 ;;;###autoload
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1787 (define-derived-mode html-mode sgml-mode "HTML"
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1788 "Major mode based on SGML mode for editing HTML documents.
23652
42bf6553a2e9 (html-mode): Doc fix.
Andreas Schwab <schwab@suse.de>
parents: 22772
diff changeset
1789 This allows inserting skeleton constructs used in hypertext documents with
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1790 completion. See below for an introduction to HTML. Use
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1791 \\[browse-url-of-buffer] to see how this comes out. See also `sgml-mode' on
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1792 which this is based.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1793
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1794 Do \\[describe-variable] html- SPC and \\[describe-variable] sgml- SPC to see available variables.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1795
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1796 To write fairly well formatted pages you only need to know few things. Most
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1797 browsers have a function to read the source code of the page being seen, so
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1798 you can imitate various tricks. Here's a very short HTML primer which you
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1799 can also view with a browser to see what happens:
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1800
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1801 <title>A Title Describing Contents</title> should be on every page. Pages can
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1802 have <h1>Very Major Headlines</h1> through <h6>Very Minor Headlines</h6>
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1803 <hr> Parts can be separated with horizontal rules.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1804
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1805 <p>Paragraphs only need an opening tag. Line breaks and multiple spaces are
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1806 ignored unless the text is <pre>preformatted.</pre> Text can be marked as
61014
9a8eaf5d664a (html-mode): Doc update.
Luc Teirlinck <teirllm@auburn.edu>
parents: 60521
diff changeset
1807 <b>bold</b>, <i>italic</i> or <u>underlined</u> using the normal M-o or
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1808 Edit/Text Properties/Face commands.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1809
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1810 Pages can have <a name=\"SOMENAME\">named points</a> and can link other points
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1811 to them with <a href=\"#SOMENAME\">see also somename</a>. In the same way <a
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1812 href=\"URL\">see also URL</a> where URL is a filename relative to current
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
1813 directory, or absolute as in `http://www.cs.indiana.edu/elisp/w3/docs.html'.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1814
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1815 Images in many formats can be inlined with <img src=\"URL\">.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1816
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
1817 If you mainly create your own documents, `sgml-specials' might be
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
1818 interesting. But note that some HTML 2 browsers can't handle `&apos;'.
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
1819 To work around that, do:
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
1820 (eval-after-load \"sgml-mode\" '(aset sgml-char-names ?' nil))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1821
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1822 \\{html-mode-map}"
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1823 (set (make-local-variable 'sgml-display-text) html-display-text)
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1824 (set (make-local-variable 'sgml-tag-face-alist) html-tag-face-alist)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1825 (make-local-variable 'sgml-tag-alist)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1826 (make-local-variable 'sgml-face-tag-alist)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1827 (make-local-variable 'sgml-tag-help)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1828 (make-local-variable 'outline-regexp)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1829 (make-local-variable 'outline-heading-end-regexp)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1830 (make-local-variable 'outline-level)
16914
4b79df16b939 (html-mode): Locally set sentence-end.
Richard M. Stallman <rms@gnu.org>
parents: 16404
diff changeset
1831 (make-local-variable 'sentence-end)
4b79df16b939 (html-mode): Locally set sentence-end.
Richard M. Stallman <rms@gnu.org>
parents: 16404
diff changeset
1832 (setq sentence-end
24463
9ef31386cb47 (html-mode): Use sentence-end-double-space when setting sentence-end.
Dave Love <fx@gnu.org>
parents: 24413
diff changeset
1833 (if sentence-end-double-space
9ef31386cb47 (html-mode): Use sentence-end-double-space when setting sentence-end.
Dave Love <fx@gnu.org>
parents: 24413
diff changeset
1834 "[.?!][]\"')}]*\\(<[^>]*>\\)*\\($\\| $\\|\t\\| \\)[ \t\n]*"
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1835 "[.?!][]\"')}]*\\(<[^>]*>\\)*\\($\\|[ \t]\\)[ \t\n]*"))
22772
3dc5c3a4f1f8 (sgml-mode): Call kill-local-variables
Richard M. Stallman <rms@gnu.org>
parents: 22629
diff changeset
1836 (setq sgml-tag-alist html-tag-alist
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1837 sgml-face-tag-alist html-face-tag-alist
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1838 sgml-tag-help html-tag-help
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1839 outline-regexp "^.*<[Hh][1-6]\\>"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1840 outline-heading-end-regexp "</[Hh][1-6]>"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1841 outline-level (lambda ()
43692
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
1842 (char-before (match-end 0))))
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1843 (setq imenu-create-index-function 'html-imenu-index)
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1844 (when sgml-xml-mode (setq mode-name "XHTML"))
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1845 (set (make-local-variable 'sgml-empty-tags)
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1846 ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd',
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1847 ;; plus manual addition of "wbr".
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1848 '("area" "base" "basefont" "br" "col" "frame" "hr" "img" "input"
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1849 "isindex" "link" "meta" "param" "wbr"))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1850 (set (make-local-variable 'sgml-unclosed-tags)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1851 ;; From HTML-4.01's loose.dtd, parsed with `sgml-parse-dtd'.
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1852 '("body" "colgroup" "dd" "dt" "head" "html" "li" "option"
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1853 "p" "tbody" "td" "tfoot" "th" "thead" "tr"))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1854 ;; It's for the user to decide if it defeats it or not -stef
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1855 ;; (make-local-variable 'imenu-sort-function)
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1856 ;; (setq imenu-sort-function nil) ; sorting the menu defeats the purpose
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1857 )
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
1858
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1859 (defvar html-imenu-regexp
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1860 "\\s-*<h\\([1-9]\\)[^\n<>]*>\\(<[^\n<>]*>\\)*\\s-*\\([^\n<>]*\\)"
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1861 "*A regular expression matching a head line to be added to the menu.
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1862 The first `match-string' should be a number from 1-9.
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1863 The second `match-string' matches extra tags and is ignored.
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1864 The third `match-string' will be the used in the menu.")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1865
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1866 (defun html-imenu-index ()
47933
b5ddbda34d8e (sgml-close-tag, html-imenu-index): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47679
diff changeset
1867 "Return a table of contents for an HTML buffer for use with Imenu."
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1868 (let (toc-index)
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1869 (save-excursion
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1870 (goto-char (point-min))
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1871 (while (re-search-forward html-imenu-regexp nil t)
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1872 (setq toc-index
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1873 (cons (cons (concat (make-string
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1874 (* 2 (1- (string-to-number (match-string 1))))
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1875 ?\ )
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1876 (match-string 3))
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1877 (line-beginning-position))
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1878 toc-index))))
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1879 (nreverse toc-index)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1880
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1881 (define-minor-mode html-autoview-mode
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1882 "Toggle automatic viewing via `browse-url-of-buffer' upon saving buffer.
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1883 With positive prefix ARG always turns viewing on, with negative ARG always off.
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1884 Can be used as a value for `html-mode-hook'."
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1885 nil nil nil
48402
f4682f3c8e03 (html-autoview-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48262
diff changeset
1886 :group 'sgml
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1887 (if html-autoview-mode
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1888 (add-hook 'after-save-hook 'browse-url-of-buffer nil t)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1889 (remove-hook 'after-save-hook 'browse-url-of-buffer t)))
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
1890
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1891
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1892 (define-skeleton html-href-anchor
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1893 "HTML anchor tag with href attribute."
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1894 "URL: "
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1895 ;; '(setq input "http:")
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1896 "<a href=\"" str "\">" _ "</a>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1897
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1898 (define-skeleton html-name-anchor
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1899 "HTML anchor tag with name attribute."
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1900 "Name: "
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1901 "<a name=\"" str "\""
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1902 (if sgml-xml-mode (concat " id=\"" str "\""))
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1903 ">" _ "</a>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1904
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1905 (define-skeleton html-headline-1
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1906 "HTML level 1 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1907 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1908 "<h1>" _ "</h1>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1909
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1910 (define-skeleton html-headline-2
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1911 "HTML level 2 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1912 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1913 "<h2>" _ "</h2>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1914
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1915 (define-skeleton html-headline-3
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1916 "HTML level 3 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1917 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1918 "<h3>" _ "</h3>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1919
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1920 (define-skeleton html-headline-4
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1921 "HTML level 4 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1922 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1923 "<h4>" _ "</h4>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1924
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1925 (define-skeleton html-headline-5
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1926 "HTML level 5 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1927 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1928 "<h5>" _ "</h5>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1929
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1930 (define-skeleton html-headline-6
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1931 "HTML level 6 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1932 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1933 "<h6>" _ "</h6>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1934
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1935 (define-skeleton html-horizontal-rule
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1936 "HTML horizontal rule tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1937 nil
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1938 (if sgml-xml-mode "<hr />" "<hr>") \n)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1939
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1940 (define-skeleton html-image
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1941 "HTML image tag."
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1942 "Image URL: "
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1943 "<img src=\"" str "\" alt=\"" _ "\""
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1944 (if sgml-xml-mode " />" ">"))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1945
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1946 (define-skeleton html-line
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1947 "HTML line break tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1948 nil
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1949 (if sgml-xml-mode "<br />" "<br>") \n)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1950
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1951 (define-skeleton html-ordered-list
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1952 "HTML ordered list tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1953 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1954 "<ol>" \n
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1955 "<li>" _ (if sgml-xml-mode "</li>") \n
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1956 "</ol>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1957
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1958 (define-skeleton html-unordered-list
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1959 "HTML unordered list tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1960 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1961 "<ul>" \n
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1962 "<li>" _ (if sgml-xml-mode "</li>") \n
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1963 "</ul>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1964
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1965 (define-skeleton html-list-item
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1966 "HTML list item tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1967 nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1968 (if (bolp) nil '\n)
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1969 "<li>" _ (if sgml-xml-mode "</li>"))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1970
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1971 (define-skeleton html-paragraph
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1972 "HTML paragraph tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1973 nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1974 (if (bolp) nil ?\n)
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1975 "<p>" _ (if sgml-xml-mode "</p>"))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1976
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1977 (define-skeleton html-checkboxes
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1978 "Group of connected checkbox inputs."
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1979 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1980 '(setq v1 nil
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1981 v2 nil)
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1982 ("Value: "
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1983 "<input type=\"" (identity "checkbox") ; see comment above about identity
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1984 "\" name=\"" (or v1 (setq v1 (skeleton-read "Name: ")))
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1985 "\" value=\"" str ?\"
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
1986 (when (y-or-n-p "Set \"checked\" attribute? ")
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1987 (funcall skeleton-transformation
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1988 (if sgml-xml-mode " checked=\"checked\"" " checked")))
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1989 (if sgml-xml-mode " />" ">")
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1990 (skeleton-read "Text: " (capitalize str))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1991 (or v2 (setq v2 (if (y-or-n-p "Newline after text? ")
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
1992 (funcall skeleton-transformation
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1993 (if sgml-xml-mode "<br />" "<br>"))
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1994 "")))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1995 \n))
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1996
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1997 (define-skeleton html-radio-buttons
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1998 "Group of connected radio button inputs."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1999 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2000 '(setq v1 nil
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2001 v2 (cons nil nil))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2002 ("Value: "
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
2003 "<input type=\"" (identity "radio") ; see comment above about identity
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2004 "\" name=\"" (or (car v2) (setcar v2 (skeleton-read "Name: ")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
2005 "\" value=\"" str ?\"
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
2006 (when (and (not v1) (setq v1 (y-or-n-p "Set \"checked\" attribute? ")))
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2007 (funcall skeleton-transformation
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2008 (if sgml-xml-mode " checked=\"checked\"" " checked")))
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2009 (if sgml-xml-mode " />" ">")
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2010 (skeleton-read "Text: " (capitalize str))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2011 (or (cdr v2) (setcdr v2 (if (y-or-n-p "Newline after text? ")
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
2012 (funcall skeleton-transformation
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2013 (if sgml-xml-mode "<br />" "<br>"))
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2014 "")))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2015 \n))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
2016
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
2017 (provide 'sgml-mode)
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38108
diff changeset
2018
58122
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
2019 ;; arch-tag: 9675da94-b7f9-4bda-ad19-73ed7b4fb401
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2020 ;;; sgml-mode.el ends here