annotate lisp/textmodes/sgml-mode.el @ 80683:6525c75243ea

* fileio.c (Vauto_save_list_file_name): Move here from file.el. (auto_save_1): Update modtime when auto-save-list-file-name is on.
author Chong Yidong <cyd@stupidchicken.com>
date Tue, 05 Aug 2008 21:43:50 +0000
parents 09b5c9664c42
children f991f10f15ec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
68223
69be9c945c82 Add `coding: iso-2022-7bit' cookie.
Juri Linkov <juri@jurta.org>
parents: 66963
diff changeset
1 ;;; sgml-mode.el --- SGML- and HTML-editing modes -*- coding: iso-2022-7bit -*-
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2
64751
5b1a238fcbb4 Update years in copyright notice; nfc.
Thien-Thi Nguyen <ttn@gnuvola.org>
parents: 64084
diff changeset
3 ;; Copyright (C) 1992, 1995, 1996, 1998, 2001, 2002, 2003, 2004,
79719
dc100f64b2b7 Add 2008 to copyright years.
Glenn Morris <rgm@gnu.org>
parents: 78482
diff changeset
4 ;; 2005, 2006, 2007, 2008 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
78225
b6d25790aab2 Switch license to GPLv3 or later.
Glenn Morris <rgm@gnu.org>
parents: 77825
diff changeset
16 ;; the Free Software Foundation; either version 3, 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
64084
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64058
diff changeset
26 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
a8fa7c632ee4 Update FSF's address.
Lute Kamstra <lute@gnu.org>
parents: 64058
diff changeset
27 ;; Boston, MA 02110-1301, 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
64058
7e00d33823d3 (sgml): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63521
diff changeset
43 "SGML editing mode."
66963
a11fdee52c05 Add :link (custom-group-link font-lock-faces) to defgroup.
Juri Linkov <juri@jurta.org>
parents: 65175
diff changeset
44 :link '(custom-group-link :tag "Font Lock Faces group" font-lock-faces)
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
45 :group 'languages)
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
46
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
47 (defcustom sgml-basic-offset 2
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
48 "*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
49 :type 'integer
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
50 :group 'sgml)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
51
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
52 (defcustom sgml-transformation-function 'identity
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
53 "*Default value for `skeleton-transformation-function' in SGML mode."
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
54 :type 'function
17530
9fb83ef40566 (sgml-transformation): Fix previous change.
Richard M. Stallman <rms@gnu.org>
parents: 17500
diff changeset
55 :group 'sgml)
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
56
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
57 (put 'sgml-transformation-function 'variable-interactive
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
58 "aTransformation function: ")
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
59 (defvaralias 'sgml-transformation 'sgml-transformation-function)
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
60
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
61 (defcustom sgml-mode-hook nil
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
62 "Hook run by command `sgml-mode'.
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
63 `text-mode-hook' is run first."
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
64 :group 'sgml
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
65 :type 'hook)
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
66
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
67 ;; 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
68 ;; 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
69 ;; kludgy kind of tradeoff.
16404
0cdf66e69ad8 (sgml-specials): Delete `-' from the list.
Richard M. Stallman <rms@gnu.org>
parents: 15867
diff changeset
70 (defvar sgml-specials '(?\")
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
71 "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
72 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
73 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
74
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
75 ?\\\" Makes \" in text start a string.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
76 ?' Makes ' in text start a string.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
77 ?- Makes -- in text start a comment.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
78
22319
18b5b2445726 (sgml-font-lock-keywords-1): Add -. as
Dave Love <fx@gnu.org>
parents: 22222
diff changeset
79 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
80 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
81 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
82
0cdf66e69ad8 (sgml-specials): Delete `-' from the list.
Richard M. Stallman <rms@gnu.org>
parents: 15867
diff changeset
83 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
84 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
85
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
86 (defvar sgml-quick-keys nil
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
87 "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
88 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
89
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
90 (defvar sgml-mode-map
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
91 (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
92 (menu-map (make-sparse-keymap "SGML")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
93 (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
94 (define-key map "/" 'sgml-slash)
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
95 (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
96 (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
97 (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
98 (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
99 (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
100 (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
101 (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
102 (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
103 (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
104 (define-key map "\C-c?" 'sgml-tag-help)
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
105 (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
106 (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
107 (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
108 (when sgml-quick-keys
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
109 (define-key map "&" 'sgml-name-char)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
110 (define-key map "<" 'sgml-tag)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
111 (define-key map " " 'sgml-auto-attributes)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
112 (define-key map ">" 'sgml-maybe-end-tag)
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))
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
115 (when (memq ?' sgml-specials)
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
116 (define-key map "'" 'sgml-name-self)))
38108
f535923264bd (sgml-mode-map): Fix thinko.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 38068
diff changeset
117 (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
118 '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
119 (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
120 (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
121 (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
122 (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
123 (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
124 (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
125 (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
126 '("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
127 (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
128 '("Toggle Tag Visibility" . sgml-tags-invisible))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
129 (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
130 '("Describe Tag" . sgml-tag-help))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
131 (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
132 '("Delete Tag" . sgml-delete-tag))
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-forward]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
134 '("Forward Tag" . sgml-skip-tag-forward))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
135 (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
136 '("Backward Tag" . sgml-skip-tag-backward))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
137 (define-key menu-map [sgml-attributes]
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
138 '("Insert Attributes" . sgml-attributes))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
139 (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
140 map)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
141 "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
142
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
143 (defun sgml-make-syntax-table (specials)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
144 (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
145 (modify-syntax-entry ?< "(>" table)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
146 (modify-syntax-entry ?> ")<" table)
44200
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 (modify-syntax-entry ?_ "_" table)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
149 (modify-syntax-entry ?. "_" table)
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 ?- "_ 1234" 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 (if (memq ?' specials)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
155 (modify-syntax-entry ?\' "\"'" table))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
156 table))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
157
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
158 (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
159 "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
160
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
161 (defconst sgml-tag-syntax-table
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
162 (let ((table (sgml-make-syntax-table '(?- ?\" ?\'))))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
163 (dolist (char '(?\( ?\) ?\{ ?\} ?\[ ?\] ?$ ?% ?& ?* ?+ ?/))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
164 (modify-syntax-entry char "." table))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
165 table)
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
166 "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
167
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
168 (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
169 "*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
170 :type 'boolean
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
171 :group 'sgml)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
172
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
173 (defvar sgml-char-names
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
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
176 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
177 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
178 "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
179 "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
180 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
181 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
182 "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
183 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
184 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
185 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
186 "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
187 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
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 "lcub" "verbar" "rcub" "tilde" 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 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
193 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
194 "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
195 "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
196 "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
197 "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
198 "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
199 "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
200 "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
201 "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
202 "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
203 "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
204 "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
205 "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
206 "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
207
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
208 (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
209
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 (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
211 (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
212 (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
213 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
214 (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
215 (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
216 (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
217 (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
218 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
219 "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
220 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
221
25052
d2a4359531e0 (sgml-validate-command): Use nsgmls.
Dave Love <fx@gnu.org>
parents: 24463
diff changeset
222 ;; 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
223 ;; 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
224 ;; 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
225 ;; The -s option suppresses output.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
226
25052
d2a4359531e0 (sgml-validate-command): Use nsgmls.
Dave Love <fx@gnu.org>
parents: 24463
diff changeset
227 (defcustom sgml-validate-command "nsgmls -s" ; replaced old `sgmls'
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
228 "*The command to validate an SGML document.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
229 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
230 separated by a space."
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
231 :type 'string
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
232 :version "21.1"
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
233 :group 'sgml)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
234
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
235 (defvar sgml-saved-validate-command nil
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
236 "The command last used to validate in this buffer.")
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
237
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
238 ;; 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
239 ;; 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
240 (defcustom sgml-slash-distance 1000
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
241 "*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
242 :type '(choice (const nil) integer)
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
243 :group 'sgml)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
244
50955
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
245 (defconst sgml-namespace-re "[_[:alpha:]][-_.[:alnum:]]*")
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
246 (defconst sgml-name-re "[_:[:alpha:]][-_.:[:alnum:]]*")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
247 (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
248 (defconst sgml-attrs-re "\\(?:[^\"'/><]\\|\"[^\"]*\"\\|'[^']*'\\)*")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
249 (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
250 "Regular expression that matches a non-empty start tag.
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
251 Any terminating `>' or `/' is not matched.")
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
252
63226
33e854825b44 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-390
Miles Bader <miles@gnu.org>
parents: 62809
diff changeset
253 (defface sgml-namespace
50955
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
254 '((t (:inherit font-lock-builtin-face)))
62809
e38d2ae61b0a (sgml-namespace-face): Specify customization group.
Lute Kamstra <lute@gnu.org>
parents: 61014
diff changeset
255 "`sgml-mode' face used to highlight the namespace part of identifiers."
e38d2ae61b0a (sgml-namespace-face): Specify customization group.
Lute Kamstra <lute@gnu.org>
parents: 61014
diff changeset
256 :group 'sgml)
63226
33e854825b44 Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-390
Miles Bader <miles@gnu.org>
parents: 62809
diff changeset
257 (defvar sgml-namespace-face 'sgml-namespace)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
258
21780
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
259 ;; internal
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
260 (defconst sgml-font-lock-keywords-1
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
261 `((,(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
262 ;; 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
263 ;; 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
264 (,(concat "</?\\(" sgml-namespace-re "\\)\\(?::\\(" sgml-name-re "\\)\\)?")
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
265 (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
266 (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
267 ;; FIXME: this doesn't cover the variables using a default value.
74397
429f18443ca0 (sgml-font-lock-keywords-1): Fix pathological O(n^2) regexp-search by
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70823
diff changeset
268 ;; The first shy-group is an important anchor: it prevents an O(n^2)
429f18443ca0 (sgml-font-lock-keywords-1): Fix pathological O(n^2) regexp-search by
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70823
diff changeset
269 ;; pathological case where we otherwise keep retrying a failing match
429f18443ca0 (sgml-font-lock-keywords-1): Fix pathological O(n^2) regexp-search by
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70823
diff changeset
270 ;; against a very long word at every possible position within the word.
429f18443ca0 (sgml-font-lock-keywords-1): Fix pathological O(n^2) regexp-search by
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 70823
diff changeset
271 (,(concat "\\(?:^\\|[ \t]\\)\\(" sgml-namespace-re "\\)\\(?::\\("
50955
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
272 sgml-name-re "\\)\\)?=[\"']")
7a718ea39fba (sgml-namespace-re): New const.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 49153
diff changeset
273 (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
274 (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
275 (,(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
276
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
277 (defconst sgml-font-lock-keywords-2
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
278 (append
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
279 sgml-font-lock-keywords-1
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
280 '((eval
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
281 . (cons (concat "<"
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
282 (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
283 "\\([ \t][^>]*\\)?>\\([^<]+\\)</\\1>")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
284 '(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
285 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
286
5dc3fe7cd300 (sgml-font-lock-keywords-1): Copy initialization from sgml-font-lock-keywords.
Richard M. Stallman <rms@gnu.org>
parents: 20922
diff changeset
287 ;; 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
288 ;; 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
289 (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
290 "*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
291
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
292 (defvar sgml-font-lock-syntactic-keywords
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
293 ;; 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
294 ;; comments recognized when `sgml-specials' includes ?-.
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
295 ;; FIXME: beware of <!--> blabla <!--> !!
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
296 '(("\\(<\\)!--" (1 "< b"))
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
297 ("--[ \t\n]*\\(>\\)" (1 "> b")))
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
298 "Syntactic keywords for `sgml-mode'.")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
299
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
300 ;; internal
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
301 (defvar sgml-face-tag-alist ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
302 "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
303
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
304 (defvar sgml-tag-face-alist ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
305 "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
306 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
307 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
308
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
309 (defvar sgml-display-text ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
310 "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
311
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
312 ;; internal
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
313 (defvar sgml-tags-invisible nil)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
314
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
315 (defcustom sgml-tag-alist
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
316 '(("![" ("ignore" t) ("include" t))
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
317 ("!attlist")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
318 ("!doctype")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
319 ("!element")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
320 ("!entity"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
321 "*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
322 This alist is made up as
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
323
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
324 ((\"tag\" . TAGRULE)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
325 ...)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
326
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
327 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
328 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
329 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
330 attribute alist.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
331
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
332 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
333
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
334 ((\"attribute\" . ATTRIBUTERULE)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
335 ...)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
336
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
337 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
338 an optional alist of possible values."
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
339 :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
340 (repeat :tag "Tag Rule" sexp)))
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
341 :group 'sgml)
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
342 (put 'sgml-tag-alist 'risky-local-variable t)
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
343
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
344 (defcustom sgml-tag-help
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
345 '(("!" . "Empty declaration for comment")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
346 ("![" . "Embed declarations with parser directive")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
347 ("!attlist" . "Tag attributes declaration")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
348 ("!doctype" . "Document type (DTD) declaration")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
349 ("!element" . "Tag declaration")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
350 ("!entity" . "Entity (macro) declaration"))
17432
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
351 "*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
352 :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
353 (string :tag "Description")))
5d2e0051fe39 Add defgroup; use defcustom for user vars.
Richard M. Stallman <rms@gnu.org>
parents: 17309
diff changeset
354 :group 'sgml)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
355
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
356 (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
357 "*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
358 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
359 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
360 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
361 :type 'boolean
59996
aac0a33f5772 Change release version from 21.4 to 22.1 throughout.
Kim F. Storm <storm@cua.dk>
parents: 59519
diff changeset
362 :version "22.1"
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
363 :group 'sgml)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
364
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
365 (defvar sgml-empty-tags nil
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
366 "List of tags whose !ELEMENT definition says EMPTY.")
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
367
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
368 (defvar sgml-unclosed-tags nil
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
369 "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
370
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
371 (defun sgml-xml-guess ()
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
372 "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
373 (save-excursion
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
374 (goto-char (point-min))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
375 (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
376 (looking-at "\\s-*<\\?xml")
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
377 (when (re-search-forward
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
378 (eval-when-compile
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
379 (mapconcat 'identity
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
380 '("<!DOCTYPE" "\\(\\w+\\)" "\\(\\w+\\)"
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
381 "\"\\([^\"]+\\)\"" "\"\\([^\"]+\\)\"")
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
382 "\\s-+"))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
383 nil t)
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
384 (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
385 (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
386
23726
ca83df619ee6 Require skeleton when compiling.
Dave Love <fx@gnu.org>
parents: 23652
diff changeset
387 (defvar v2) ; free for skeleton
ca83df619ee6 Require skeleton when compiling.
Dave Love <fx@gnu.org>
parents: 23652
diff changeset
388
44443
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
389 (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
390 (let ((comment-start "-- ")
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
391 (comment-start-skip "\\(<!\\)?--[ \t]*")
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
392 (comment-end " --")
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
393 (comment-style 'plain))
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
394 (comment-indent-new-line soft)))
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
395
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
396 (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
397 (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
398 (progn
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
399 (setq face (funcall skeleton-transformation-function face))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
400 (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
401 (concat "<" face ">"))
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
402 (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
403
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
404 (defun sgml-fill-nobreak ()
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
405 ;; 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
406 (save-excursion
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
407 (skip-chars-backward " \t")
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
408 (and (not (zerop (skip-syntax-backward "w_")))
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
409 (skip-chars-backward "/?!")
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
410 (eq (char-before) ?<))))
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
411
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
412 ;;;###autoload
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
413 (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
414 "Major mode for editing SGML documents.
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
415 Makes > match <.
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
416 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
417 `sgml-quick-keys'.
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 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
420 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
421 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
422
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
423 If you like upcased tags, put (setq sgml-transformation-function 'upcase)
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
424 in your `.emacs' file.
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
425
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
426 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
427
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
428 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
429 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
430 \\{sgml-mode-map}"
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
431 (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
432 (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
433 ;;(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
434 ;; 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
435 ;; 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
436 ;; 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
437 (set (make-local-variable 'paragraph-start) (concat "[ \t]*$\\|\
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
438 \[ \t]*</?\\(" sgml-name-re sgml-attrs-re "\\)?>"))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
439 (set (make-local-variable 'paragraph-separate)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
440 (concat paragraph-start "$"))
40377
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
441 (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
442 (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
443 (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
444 (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
445 (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
446 (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
447 (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
448 '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
449 (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
450 '((completion-ignore-case t)))
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
451 (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
452 (lambda ()
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
453 (or (eolp)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
454 (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
455 (newline-and-indent))))
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
456 (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
457 '((sgml-font-lock-keywords
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
458 sgml-font-lock-keywords-1
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
459 sgml-font-lock-keywords-2)
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
460 nil t nil nil
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
461 (font-lock-syntactic-keywords
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
462 . sgml-font-lock-syntactic-keywords)))
ea7ef845ccf3 renamed `html-xhtml' to `sgml-xml' and generalized accordingly
Sam Steingold <sds@gnu.org>
parents: 40350
diff changeset
463 (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
464 '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
465 (sgml-xml-guess)
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
466 (if sgml-xml-mode
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
467 (setq mode-name "XML")
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
468 (set (make-local-variable 'skeleton-transformation-function)
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
469 sgml-transformation-function))
36609
8e1755c3dd2b (sgml-mode-common): Correct value of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27683
diff changeset
470 ;; 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
471 ;; recognized.
80120
09b5c9664c42 (sgml-mode): Fix comment syntax.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79719
diff changeset
472 ;; I can't find a clear description of SGML/XML comments, but it seems that
09b5c9664c42 (sgml-mode): Fix comment syntax.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79719
diff changeset
473 ;; the only reliable ones are <!-- ... --> although it's not clear what
09b5c9664c42 (sgml-mode): Fix comment syntax.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79719
diff changeset
474 ;; "..." can contain. It used to accept -- ... -- as well, but that was
09b5c9664c42 (sgml-mode): Fix comment syntax.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79719
diff changeset
475 ;; apparently a mistake.
09b5c9664c42 (sgml-mode): Fix comment syntax.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79719
diff changeset
476 (set (make-local-variable 'comment-start-skip) "<!--[ \t]*")
09b5c9664c42 (sgml-mode): Fix comment syntax.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 79719
diff changeset
477 (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
478 ;; 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
479 (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
480 `((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
481 ,(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
482 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
483 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
484 ("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
485 ,(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
486 (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
487 "\\)\\(" 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
488 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
489 ("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
490 ,(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
491 (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
492 "\\)\\(" 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
493 2))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
494
45557
1cae8564d2c7 (xml-mode): New alias for `sgml-mode'.
Colin Walters <walters@gnu.org>
parents: 45463
diff changeset
495 ;; 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
496 ;; -*- mode: xml -*-.
51795
cd4ac91f52c9 (xml-mode): Add autoload cookie.
Richard M. Stallman <rms@gnu.org>
parents: 51478
diff changeset
497 ;;;###autoload
45557
1cae8564d2c7 (xml-mode): New alias for `sgml-mode'.
Colin Walters <walters@gnu.org>
parents: 45463
diff changeset
498 (defalias 'xml-mode 'sgml-mode)
1cae8564d2c7 (xml-mode): New alias for `sgml-mode'.
Colin Walters <walters@gnu.org>
parents: 45463
diff changeset
499
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
500 (defun sgml-comment-indent ()
36609
8e1755c3dd2b (sgml-mode-common): Correct value of
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 27683
diff changeset
501 (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
502
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
503 (defun sgml-slash (arg)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
504 "Insert ARG slash characters.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
505 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
506 (interactive "p")
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
507 (cond
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
508 ((not (and (eq (char-before) ?<) (= arg 1)))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
509 (sgml-slash-matching arg))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
510 ((eq sgml-quick-keys 'indent)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
511 (insert-char ?/ 1)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
512 (indent-according-to-mode))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
513 ((eq sgml-quick-keys 'close)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
514 (delete-backward-char 1)
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
515 (sgml-close-tag))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
516 (t
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
517 (sgml-slash-matching arg))))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
518
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
519 (defun sgml-slash-matching (arg)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
520 "Insert `/' and display any previous matching `/'.
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
521 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
522 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
523 (interactive "p")
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
524 (insert-char ?/ arg)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
525 (if (> arg 0)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
526 (let ((oldpos (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
527 (blinkpos)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
528 (level 0))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
529 (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
530 (save-restriction
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
531 (if sgml-slash-distance
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
532 (narrow-to-region (max (point-min)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
533 (- (point) sgml-slash-distance))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
534 oldpos))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
535 (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
536 (eq (match-end 0) (1- oldpos)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
537 ()
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
538 (goto-char (1- oldpos))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
539 (while (and (not blinkpos)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
540 (search-backward "/" (point-min) t))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
541 (let ((tagend (save-excursion
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
542 (if (re-search-backward sgml-start-tag-regex
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
543 (point-min) t)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
544 (match-end 0)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
545 nil))))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
546 (if (eq tagend (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
547 (if (eq level 0)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
548 (setq blinkpos (point))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
549 (setq level (1- level)))
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
550 (setq level (1+ level)))))))
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
551 (when blinkpos
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
552 (goto-char blinkpos)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
553 (if (pos-visible-in-window-p)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
554 (sit-for 1)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
555 (message "Matches %s"
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
556 (buffer-substring (line-beginning-position)
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
557 (1+ blinkpos)))))))))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
558
43692
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
559 ;; 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
560 ;; 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
561 ;; 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
562 (defun sgml-name-char (&optional char)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
563 "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
564 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
565 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
566 encoded keyboard operation."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
567 (interactive "*")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
568 (insert ?&)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
569 (or char
17500
e8d7c7e2acab (sgml-name-char): Ask user with a prompt.
Richard M. Stallman <rms@gnu.org>
parents: 17491
diff changeset
570 (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
571 (delete-backward-char 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
572 (insert char)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
573 (undo-boundary)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
574 (sgml-namify-char))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
575
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
576 (defun sgml-namify-char ()
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
577 "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
578 Uses `sgml-char-names'."
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
579 (interactive)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
580 (let* ((char (char-before))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
581 (name
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
582 (cond
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
583 ((null char) (error "No char before point"))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
584 ((< 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
585 ((aref sgml-char-names-table char))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
586 ((encode-char char 'ucs)))))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
587 (if (not name)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
588 (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
589 (delete-backward-char 1)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
590 (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
591
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
592 (defun sgml-name-self ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
593 "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
594 (interactive "*")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
595 (sgml-name-char last-command-char))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
596
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
597 (defun sgml-maybe-name-self ()
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
598 "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
599 (interactive "*")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
600 (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
601 (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
602 (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
603 (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
604 (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
605 (sgml-name-char mc))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
606 (self-insert-command 1)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
607
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
608 (defun sgml-name-8bit-mode ()
43692
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
609 "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
610 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
611 (interactive)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
612 (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
613 (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
614 (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
615
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
616 ;; When an element of a skeleton is a string "str", it is passed
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
617 ;; through `skeleton-transformation-function' and inserted.
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
618 ;; If "str" is to be inserted literally, one should obtain it as
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
619 ;; the return value of a function, e.g. (identity "str").
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
620
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
621 (defvar sgml-tag-last nil)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
622 (defvar sgml-tag-history nil)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
623 (define-skeleton sgml-tag
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
624 "Prompt for a tag and insert it, optionally with attributes.
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
625 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
626 If you like tags and attributes in uppercase do \\[set-variable]
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
627 `skeleton-transformation-function' RET `upcase' RET, or put this
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
628 in your `.emacs':
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
629 (setq sgml-transformation-function 'upcase)"
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
630 (funcall (or skeleton-transformation-function 'identity)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
631 (setq sgml-tag-last
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
632 (completing-read
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
633 (if (> (length sgml-tag-last) 0)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
634 (format "Tag (default %s): " sgml-tag-last)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
635 "Tag: ")
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
636 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
637 ?< str |
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
638 (("") -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
639 `(("") '(setq v2 (sgml-attributes ,str t)) ?>
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
640 (cond
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
641 ((string= "![" ,str)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
642 (backward-char)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
643 '(("") " [ " _ " ]]"))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
644 ((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
645 '(("") -1 " />"))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
646 ((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
647 nil)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
648 ((symbolp v2)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
649 ;; 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
650 ;; 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
651 (if (eq v2 t) (setq v2 nil))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
652 ;; We use `identity' to prevent skeleton from passing
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
653 ;; `str' through `skeleton-transformation-function' a second time.
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
654 '(("") v2 _ v2 "</" (identity ',str) ?>))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
655 ((eq (car v2) t)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
656 (cons '("") (cdr v2)))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
657 (t
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
658 (append '(("") (car v2))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
659 (cdr v2)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
660 '(resume: (car v2) _ "</" (identity ',str) ?>))))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
661
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
662 (autoload 'skeleton-read "skeleton")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
663
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
664 (defun sgml-attributes (tag &optional quiet)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
665 "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
666
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
667 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
668 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
669 (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
670 (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
671 (if tag
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
672 (let ((completion-ignore-case t)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
673 (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
674 car attribute i)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
675 (if (or (symbolp (car alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
676 (symbolp (car (car alist))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
677 (setq car (car alist)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
678 alist (cdr alist)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
679 (or quiet
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
680 (message "No attributes configured."))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
681 (if (stringp (car alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
682 (progn
64058
7e00d33823d3 (sgml): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63521
diff changeset
683 (insert (if (eq (preceding-char) ?\s) "" ?\s)
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
684 (funcall skeleton-transformation-function (car alist)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
685 (sgml-value alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
686 (setq i (length alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
687 (while (> i 0)
64058
7e00d33823d3 (sgml): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63521
diff changeset
688 (insert ?\s)
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
689 (insert (funcall skeleton-transformation-function
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
690 (setq attribute
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
691 (skeleton-read '(completing-read
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
692 "Attribute: "
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
693 alist)))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
694 (if (string= "" attribute)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
695 (setq i 0)
20922
3ae81bc17b19 (sgml-mode-common): Downcase key for
Dave Love <fx@gnu.org>
parents: 20394
diff changeset
696 (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
697 (setq i (1- i))))
64058
7e00d33823d3 (sgml): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63521
diff changeset
698 (if (eq (preceding-char) ?\s)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
699 (delete-backward-char 1)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
700 car)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
701
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
702 (defun sgml-auto-attributes (arg)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
703 "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
704 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
705 (interactive "*P")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
706 (let ((point (point))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
707 tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
708 (if (or arg
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
709 (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
710 (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
711 (eq (aref tag 0) ?/))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
712 (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
713 (sgml-attributes tag)
64058
7e00d33823d3 (sgml): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63521
diff changeset
714 (setq last-command-char ?\s)
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
715 (or (> (point) point)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
716 (self-insert-command 1)))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
717
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
718 (defun sgml-tag-help (&optional tag)
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
719 "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
720 (interactive)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
721 (or tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
722 (save-excursion
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
723 (if (eq (following-char) ?<)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
724 (forward-char))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
725 (setq tag (sgml-beginning-of-tag))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
726 (or (stringp tag)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
727 (error "No tag selected"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
728 (setq tag (downcase tag))
14328
5d0e329a44d8 (sgml-tag-help): Pass proper format string to message.
Karl Heuer <kwzh@gnu.org>
parents: 14270
diff changeset
729 (message "%s"
20922
3ae81bc17b19 (sgml-mode-common): Downcase key for
Dave Love <fx@gnu.org>
parents: 20394
diff changeset
730 (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
731 (and (eq (aref tag 0) ?/)
20922
3ae81bc17b19 (sgml-mode-common): Downcase key for
Dave Love <fx@gnu.org>
parents: 20394
diff changeset
732 (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
733 "No description available")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
734
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
735 (defun sgml-maybe-end-tag (&optional arg)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
736 "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
737 (interactive "P")
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
738 (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
739 (self-insert-command (prefix-numeric-value arg))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
740 (sgml-name-self)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
741
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
742 (defun sgml-skip-tag-backward (arg)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
743 "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
744 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
745 (interactive "p")
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
746 ;; 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
747 (while (>= arg 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
748 (search-backward "<" nil t)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
749 (if (looking-at "</\\([^ \n\t>]+\\)")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
750 ;; end tag, skip any nested pairs
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
751 (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
752 (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
753 ;; Ignore empty tags like <foo/>.
2c2ce75616ef (sgml-skip-tag-backward, sgml-skip-tag-forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47933
diff changeset
754 "\\([^>]*[^/>]\\)?>")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
755 (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
756 (eq (char-after (1+ (point))) ?/))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
757 (forward-char 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
758 (sgml-skip-tag-backward 1))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
759 (setq arg (1- arg))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
760
48109
2c2ce75616ef (sgml-skip-tag-backward, sgml-skip-tag-forward):
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 47933
diff changeset
761 (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
762 "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
763 With prefix argument ARG, repeat this ARG times.
78482
80e300a489d6 Replace `iff' in doc-strings and comments.
Glenn Morris <rgm@gnu.org>
parents: 78225
diff changeset
764 Return t if after a closing tag."
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
765 (interactive "p")
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
766 ;; FIXME: Use sgml-get-context or something similar.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
767 ;; 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
768 ;; 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
769 (let ((return t))
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
770 (with-syntax-table sgml-tag-syntax-table
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
771 (while (>= arg 1)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
772 (skip-chars-forward "^<>")
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
773 (if (eq (following-char) ?>)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
774 (up-list -1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
775 (if (looking-at "<\\([^/ \n\t>]+\\)\\([^>]*[^/>]\\)?>")
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
776 ;; 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
777 (let ((case-fold-search t)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
778 (re (concat "</?" (regexp-quote (match-string 1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
779 ;; Ignore empty tags like <foo/>.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
780 "\\([^>]*[^/>]\\)?>"))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
781 point close)
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 point (point))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
784 ;; FIXME: This re-search-forward will mistakenly match
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
785 ;; tag-like text inside attributes.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
786 (while (and (re-search-forward re nil t)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
787 (not (setq close
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
788 (eq (char-after (1+ (match-beginning 0))) ?/)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
789 (goto-char (match-beginning 0))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
790 (sgml-skip-tag-forward 1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
791 (setq close nil))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
792 (unless close
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
793 (goto-char point)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
794 (setq return nil)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
795 (forward-list 1))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
796 (setq arg (1- arg)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
797 return)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
798
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
799 (defun sgml-delete-tag (arg)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
800 ;; 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
801 "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
802 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
803 (interactive "p")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
804 (while (>= arg 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
805 (save-excursion
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
806 (let* (close open)
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
807 (if (looking-at "[ \t\n]*<")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
808 ;; just before tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
809 (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
810 ;; closing tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
811 (progn
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
812 (setq close (point))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
813 (goto-char (match-end 0))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
814 ;; on tag?
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
815 (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
816 close (and (stringp close)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
817 (eq (aref close 0) ?/)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
818 (point))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
819 ;; not on closing tag
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
820 (let ((point (point)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
821 (sgml-skip-tag-backward 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
822 (if (or (not (eq (following-char) ?<))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
823 (save-excursion
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
824 (forward-list 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
825 (<= (point) point)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
826 (error "Not on or before tag")))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
827 (if close
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
828 (progn
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
829 (sgml-skip-tag-backward 1)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
830 (setq open (point))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
831 (goto-char close)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
832 (kill-sexp 1))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
833 (setq open (point))
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
834 (when (and (sgml-skip-tag-forward 1)
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
835 (not (looking-back "/>")))
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
836 (kill-sexp -1)))
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
837 ;; 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
838 ;; 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
839 (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
840 (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
841 (goto-char open)
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
842 (kill-sexp 1)
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
843 (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
844 (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
845 (setq arg (1- arg))))
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
846
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
847
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
848 ;; 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
849 (or (get 'sgml-tag 'invisible)
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
850 (setplist 'sgml-tag
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
851 (append '(invisible t
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
852 point-entered sgml-point-entered
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
853 rear-nonsticky t
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
854 read-only t)
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
855 (symbol-plist 'sgml-tag))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
856
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
857 (defun sgml-tags-invisible (arg)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
858 "Toggle visibility of existing tags."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
859 (interactive "P")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
860 (let ((modified (buffer-modified-p))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
861 (inhibit-read-only t)
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
862 (inhibit-modification-hooks t)
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
863 ;; Avoid spurious the `file-locked' checks.
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
864 (buffer-file-name nil)
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
865 ;; 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
866 ;; 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
867 ;; 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
868 (inhibit-point-motion-hooks t)
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
869 string)
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
870 (unwind-protect
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
871 (save-excursion
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
872 (goto-char (point-min))
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
873 (if (set (make-local-variable 'sgml-tags-invisible)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
874 (if arg
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
875 (>= (prefix-numeric-value arg) 0)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
876 (not sgml-tags-invisible)))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
877 (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
878 (setq string
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
879 (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
880 sgml-display-text)))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
881 (goto-char (match-beginning 0))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
882 (and (stringp string)
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
883 (not (overlays-at (point)))
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
884 (let ((ol (make-overlay (point) (match-beginning 1))))
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
885 (overlay-put ol 'before-string string)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
886 (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
887 (put-text-property (point)
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
888 (progn (forward-list) (point))
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
889 'category 'sgml-tag))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
890 (let ((pos (point-min)))
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
891 (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
892 (dolist (ol (overlays-at pos))
40393
591afd36f0b3 (sgml-tags-invisible): Typo.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40392
diff changeset
893 (if (overlay-get ol 'sgml-tag)
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
894 (delete-overlay ol)))))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
895 (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
896 (restore-buffer-modified-p modified))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
897 (run-hooks 'sgml-tags-invisible-hook)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
898 (message "")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
899
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
900 (defun sgml-point-entered (x y)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
901 ;; 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
902 (let ((inhibit-point-motion-hooks t))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
903 (save-excursion
77825
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
904 (condition-case nil
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
905 (message "Invisible tag: %s"
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
906 ;; Strip properties, otherwise, the text is invisible.
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
907 (buffer-substring-no-properties
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
908 (point)
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
909 (if (or (and (> x y)
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
910 (not (eq (following-char) ?<)))
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
911 (and (< x y)
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
912 (eq (preceding-char) ?>)))
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
913 (backward-list)
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
914 (forward-list))))
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
915 (error nil)))))
72e7efdd6433 (sgml-point-entered): Use condition-case.
Chong Yidong <cyd@stupidchicken.com>
parents: 76104
diff changeset
916
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
917
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
918
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
919 (defun sgml-validate (command)
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
920 "Validate an SGML document.
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
921 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
922 with output going to the buffer `*compilation*'.
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
923 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
924 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
925 (interactive
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
926 (list (read-string "Validate command: "
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
927 (or sgml-saved-validate-command
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
928 (concat sgml-validate-command
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
929 " "
76104
33363c78b671 (sgml-validate): Quote the file name with shell-quote-argument.
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
930 (shell-quote-argument
33363c78b671 (sgml-validate): Quote the file name with shell-quote-argument.
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
931 (let ((name (buffer-file-name)))
33363c78b671 (sgml-validate): Quote the file name with shell-quote-argument.
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
932 (and name
33363c78b671 (sgml-validate): Quote the file name with shell-quote-argument.
Eli Zaretskii <eliz@gnu.org>
parents: 75347
diff changeset
933 (file-name-nondirectory name)))))))))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
934 (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
935 (save-some-buffers (not compilation-ask-about-save) nil)
65133
265f46863d5b (sgml-validate): Use `compilation-start'
Romain Francoise <romain@orebokech.com>
parents: 64993
diff changeset
936 (compilation-start command))
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
937
44619
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
938 (defsubst sgml-at-indentation-p ()
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
939 "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
940 (save-excursion
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
941 (skip-chars-backward " \t")
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
942 (bolp)))
504c3192243a (sgml-at-indentation-p): Move to fix compilation error.
Mike Williams <mdub@bigfoot.com>
parents: 44582
diff changeset
943
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
944 (defun sgml-lexical-context (&optional limit)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
945 "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
946 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
947 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
948
44460
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
949 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
950 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
951 (save-excursion
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
952 (let ((pos (point))
44387
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
953 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
954 (if limit
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
955 (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
956 ;; 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
957 (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
958 (not (sgml-at-indentation-p)))))
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
959 (with-syntax-table sgml-tag-syntax-table
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
960 (while (< (point) pos)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
961 ;; 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
962 (setq text-start (point))
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
963 (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
964 (setq state
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
965 (cond
44443
9e6f2afa9f19 (sgml-comment-indent-new-line): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44388
diff changeset
966 ((= (point) pos)
44387
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
967 ;; 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
968 nil)
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
969 ((looking-at "<!\\[[A-Z]+\\[")
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
970 ;; 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
971 (let ((cdata-start (point)))
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
972 (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
973 (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
974 (t
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
975 ;; 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
976 ;; 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
977 (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
978 (cond
a8edf3f6811d (sgml-lexical-context): Fix up CDATA detection for boundary cases.
Mike Williams <mdub@bigfoot.com>
parents: 44362
diff changeset
979 ((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
980 ((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
981 ((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
982 ((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
983 (t (cons 'text text-start))))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
984
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
985 (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
986 "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
987 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
988 (let ((context (sgml-lexical-context)))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
989 (if (eq (car context) 'tag)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
990 (progn
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
991 (goto-char (cdr context))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
992 (when (looking-at sgml-tag-name-re)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
993 (match-string-no-properties 1)))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
994 (if top-level nil
44244
31f1fc31fd45 (sgml-lexical-context): Return (text . START)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44241
diff changeset
995 (when (not (eq (car context) 'text))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
996 (goto-char (cdr context))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
997 (sgml-beginning-of-tag t))))))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
998
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
999 (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
1000 "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
1001 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
1002 (setq alist (cdr alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1003 (if (stringp (car alist))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1004 (insert "=\"" (car alist) ?\")
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1005 (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
1006 (when (cdr alist)
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1007 (insert "=\"")
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1008 (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
1009 (if (string< "" alist)
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1010 (insert alist ?\")
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1011 (delete-backward-char 2)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1012 (insert "=\"")
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1013 (when alist
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1014 (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
1015 (insert ?\"))))
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1016
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1017 (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
1018 "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
1019 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
1020 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
1021 (interactive "r\nP")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1022 (save-restriction
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1023 (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
1024 (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
1025 (if unquotep
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1026 ;; 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
1027 (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
1028 "\\(&\\(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
1029 nil t)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1030 (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
1031 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
1032 (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
1033 (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
1034 (?< . "&lt;")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1035 (?> . "&gt;"))))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1036 t t)))))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1037
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1038 (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
1039 "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
1040 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
1041 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
1042 ;; TODO:
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1043 ;; - 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
1044 ;; - 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
1045 (interactive "r")
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1046 (save-excursion
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1047 (if (< beg end)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1048 (goto-char beg)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1049 (goto-char end)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1050 (setq end beg)
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1051 (setq beg (point)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1052 ;; 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
1053 (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
1054 (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
1055 (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
1056 (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
1057 (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
1058 (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
1059 (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
1060 (forward-sexp 1)))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1061 ;; (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
1062 ))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1063
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1064
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1065 ;; Parsing
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1066
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1067 (defstruct (sgml-tag
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1068 (: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
1069 type start end name)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1070
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1071 (defsubst sgml-parse-tag-name ()
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1072 "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
1073 (buffer-substring-no-properties
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1074 (point) (progn (skip-syntax-forward "w_") (point))))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1075
44460
45c30120001e (sgml-lexical-context): Use sgml-parse-tag-backward to find start point.
Mike Williams <mdub@bigfoot.com>
parents: 44459
diff changeset
1076 (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
1077 "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
1078 (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
1079 (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
1080 (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
1081
58122
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1082 (defun sgml-tag-text-p (start end)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1083 "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
1084 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
1085 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
1086 really isn't a tag after all."
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1087 (save-excursion
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 ((pps (parse-partial-sexp start end 2)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1090 (and (= (nth 0 pps) 0))))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1091
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1092 (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
1093 "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
1094 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
1095 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
1096 (catch 'found
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1097 (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
1098 (or (re-search-backward "[<>]" limit 'move)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1099 (error "No tag found"))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1100 (when (eq (char-after) ?<)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1101 ;; 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
1102 ;; Let's try to recover.
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1103 (with-syntax-table sgml-tag-syntax-table
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1104 (let ((pos (point)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1105 (condition-case nil
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1106 (forward-sexp)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1107 (scan-error
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1108 ;; 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
1109 (goto-char pos)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1110 (throw 'found (sgml-parse-tag-backward limit))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1111 ;; 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
1112 (unless (sgml-tag-text-p pos (point))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1113 (goto-char pos)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1114 (throw 'found (sgml-parse-tag-backward limit)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1115 (forward-char -1))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1116 (setq tag-end (1+ (point)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1117 (cond
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1118 ((sgml-looking-back-at "--") ; comment
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1119 (setq tag-type 'comment
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1120 tag-start (search-backward "<!--" nil t)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1121 ((sgml-looking-back-at "]]") ; cdata
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1122 (setq tag-type 'cdata
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1123 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
1124 (t
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1125 (setq tag-start
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1126 (with-syntax-table sgml-tag-syntax-table
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1127 (goto-char tag-end)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1128 (condition-case nil
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1129 (backward-sexp)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1130 (scan-error
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1131 ;; 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
1132 (goto-char (1- tag-end))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1133 (throw 'found (sgml-parse-tag-backward limit))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1134 (point)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1135 (goto-char (1+ tag-start))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1136 (case (char-after)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1137 (?! ; declaration
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1138 (setq tag-type 'decl))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1139 (?? ; processing-instruction
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1140 (setq tag-type 'pi))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1141 (?/ ; close-tag
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1142 (forward-char 1)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1143 (setq tag-type 'close
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1144 name (sgml-parse-tag-name)))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1145 (?% ; JSP tags
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1146 (setq tag-type 'jsp))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1147 (t ; open or empty tag
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1148 (setq tag-type 'open
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1149 name (sgml-parse-tag-name))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1150 (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
1151 (sgml-empty-tag-p name))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1152 (setq tag-type 'empty))))))
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1153 (goto-char tag-start)
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
1154 (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
1155
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1156 (defun sgml-get-context (&optional until)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1157 "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
1158 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
1159 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
1160 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
1161
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1162 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
1163 immediately enclosing the current position.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1164
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1165 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
1166 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
1167 (let ((here (point))
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1168 (stack nil)
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1169 (ignore nil)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1170 (context nil)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1171 tag-info)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1172 ;; CONTEXT keeps track of the tag-stack
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1173 ;; 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
1174 ;; 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
1175 ;; 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
1176 ;; closed implicitly.
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1177 (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
1178 (while
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1179 (and (not (eq until 'now))
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1180 (or stack
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1181 (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
1182 (not (sgml-at-indentation-p))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1183 (and context
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1184 (/= (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
1185 (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
1186 (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
1187
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1188 ;; 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
1189 ;; discard them.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1190 (while (and context
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1191 (> (sgml-tag-end tag-info)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1192 (sgml-tag-end (car context))))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1193 (setq context (cdr context)))
47933
b5ddbda34d8e (sgml-close-tag, html-imenu-index): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47679
diff changeset
1194
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1195 (cond
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1196 ((> (sgml-tag-end tag-info) here)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1197 ;; 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
1198 (push tag-info context)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1199 (setq until 'now))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1200
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1201 ;; start-tag
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1202 ((eq (sgml-tag-type tag-info) 'open)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1203 (cond
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1204 ((null stack)
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1205 (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
1206 ;; There was an implicit end-tag.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1207 nil
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1208 (push tag-info context)
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1209 ;; 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
1210 ;; 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
1211 ;; [ 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
1212 ;; 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
1213 (setq ignore nil)))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1214 ((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
1215 (car stack) nil nil t))
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1216 (setq stack (cdr stack)))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1217 (t
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1218 ;; 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
1219 (if (not sgml-xml-mode)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1220 (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
1221 (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
1222 (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
1223 ;; 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
1224 ;; 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
1225 ;; not properly nested.
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1226 (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
1227 (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
1228 (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
1229 (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
1230 (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
1231 (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
1232 (message "Unmatched tags <%s> and </%s>"
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1233 (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
1234
59519
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1235 (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
1236 ;; 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
1237 ;; 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
1238 ;; because it's been implicitly closed.
e51199adcfb0 (sgml-fill-nobreak): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 58122
diff changeset
1239 (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
1240
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1241 ;; end-tag
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1242 ((eq (sgml-tag-type tag-info) 'close)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1243 (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
1244 (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
1245 (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
1246 ))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1247
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1248 ;; return context
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1249 context))
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1250
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1251 (defun sgml-show-context (&optional full)
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1252 "Display the current context.
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1253 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
1254 (interactive "P")
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1255 (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
1256 (save-excursion
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1257 (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
1258 (when full
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1259 (let ((more nil))
66fb3c24b4ba (sgml-quote): Use narrowing. Improve the regexp used when unquoting.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 45557
diff changeset
1260 (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
1261 (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
1262 (pp context)))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1263
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1264
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1265 ;; Editing shortcuts
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1266
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1267 (defun sgml-close-tag ()
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1268 "Close current element.
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1269 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
1270 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
1271 (interactive)
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1272 (case (car (sgml-lexical-context))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1273 (comment (insert " -->"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1274 (cdata (insert "]]>"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1275 (pi (insert " ?>"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1276 (jsp (insert " %>"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1277 (tag (insert " />"))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1278 (text
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1279 (let ((context (save-excursion (sgml-get-context))))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1280 (if context
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1281 (progn
44333
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1282 (insert "</" (sgml-tag-name (car (last context))) ">")
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1283 (indent-according-to-mode)))))
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1284 (otherwise
efbd9e76f0a4 (sgml-close-tag): Rename from
Mike Williams <mdub@bigfoot.com>
parents: 44330
diff changeset
1285 (error "Nothing to close"))))
44330
96c839b7b4c2 (sgml-at-indentation-p, sgml-tag)
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44293
diff changeset
1286
44286
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1287 (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
1288 "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
1289 (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
1290 (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
1291
1d7ee8515c45 Add an explicit check for 'text syntax, to protect against future
Mike Williams <mdub@bigfoot.com>
parents: 44244
diff changeset
1292 (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
1293 "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
1294 (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
1295 (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
1296
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1297 (defun sgml-calculate-indent (&optional lcon)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1298 "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
1299 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
1300 (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
1301
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1302 ;; 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
1303 (if (and (eq (car lcon) 'tag)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1304 (looking-at "--")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1305 (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
1306 (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
1307
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1308 (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
1309
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1310 (string
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1311 ;; 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
1312 (while (and (> (point) (cdr lcon))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1313 (zerop (forward-line -1))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1314 (looking-at "[ \t]*$")))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1315 (if (> (point) (cdr lcon))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1316 ;; Previous line is inside the string.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1317 (current-indentation)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1318 (goto-char (cdr lcon))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1319 (1+ (current-column))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1320
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1321 (comment
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1322 (let ((mark (looking-at "--")))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1323 ;; Go back to previous non-empty line.
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1324 (while (and (> (point) (cdr lcon))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1325 (zerop (forward-line -1))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1326 (or (looking-at "[ \t]*$")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1327 (if mark (not (looking-at "[ \t]*--"))))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1328 (if (> (point) (cdr lcon))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1329 ;; Previous line is inside the comment.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1330 (skip-chars-forward " \t")
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1331 (goto-char (cdr lcon))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1332 ;; 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
1333 (search-forward "--")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1334 (goto-char (match-beginning 0)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1335 (when (and (not mark) (looking-at "--"))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1336 (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
1337 (current-column)))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1338
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1339 ;; 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
1340 (cdata nil)
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1341
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1342 (tag
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1343 (goto-char (1+ (cdr lcon)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1344 (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
1345 (skip-chars-forward " \t")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1346 (if (not (eolp))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1347 (current-column)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1348 ;; This is the first attribute: indent.
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1349 (goto-char (1+ (cdr lcon)))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1350 (+ (current-column) sgml-basic-offset)))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1351
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1352 (text
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1353 (while (looking-at "</")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1354 (forward-sexp 1)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1355 (skip-chars-forward " \t"))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1356 (let* ((here (point))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1357 (unclosed (and ;; (not sgml-xml-mode)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1358 (looking-at sgml-tag-name-re)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1359 (member-ignore-case (match-string 1)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1360 sgml-unclosed-tags)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1361 (match-string 1)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1362 (context
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1363 ;; 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
1364 ;; 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
1365 ;; 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
1366 (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
1367 (< (skip-chars-backward " \t\n") 0)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1368 (back-to-indentation)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1369 (> (point) (cdr lcon)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1370 nil
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1371 (goto-char here)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1372 (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
1373 (there (point)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1374 ;; 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
1375 (while (and context unclosed
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1376 (eq t (compare-strings
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1377 (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
1378 unclosed nil nil t)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1379 (setq context (cdr context)))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1380 ;; Indent to reflect nesting.
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1381 (cond
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1382 ;; 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
1383 ((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
1384 (goto-char here)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1385 (sgml-calculate-indent
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1386 (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
1387 (sgml-tag-type (car context)) 'tag)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1388 (sgml-tag-start (car context)))))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1389 ;; 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
1390 ((and context
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1391 (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
1392 (skip-chars-forward " \t\n")
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1393 (< (point) here) (sgml-at-indentation-p))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1394 (current-column))
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1395 (t
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1396 (goto-char there)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1397 (+ (current-column)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1398 (* sgml-basic-offset (length context)))))))
47933
b5ddbda34d8e (sgml-close-tag, html-imenu-index): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47679
diff changeset
1399
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1400 (otherwise
63521
0f90f64f45d8 (sgml-calculate-indent, html-tag-help): Fix spellings.
Juanma Barranquero <lekktu@gmail.com>
parents: 63226
diff changeset
1401 (error "Unrecognized 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
1402
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1403 ))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1404
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1405 (defun sgml-indent-line ()
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1406 "Indent the current line as SGML."
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1407 (interactive)
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1408 (let* ((savep (point))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1409 (indent-col
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1410 (save-excursion
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1411 (back-to-indentation)
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1412 (if (>= (point) savep) (setq savep nil))
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1413 (sgml-calculate-indent))))
51478
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1414 (if (null indent-col)
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1415 'noindent
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1416 (if savep
cc38ef483a77 (sgml-parse-tag-backward): Try and detect
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 50955
diff changeset
1417 (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
1418 (indent-line-to indent-col)))))
44200
3ea526b58b9e (sgml-make-syntax-table): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43979
diff changeset
1419
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1420 (defun sgml-guess-indent ()
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1421 "Guess an appropriate value for `sgml-basic-offset'.
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1422 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
1423 Add this to `sgml-mode-hook' for convenience."
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1424 (interactive)
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1425 (save-excursion
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1426 (goto-char (point-min))
45463
62d5e10140e7 (sgml-guess-indent): Look further into the buffer.
Mike Williams <mdub@bigfoot.com>
parents: 45286
diff changeset
1427 (if (re-search-forward "^\\([ \t]+\\)<" 500 'noerror)
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1428 (progn
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1429 (set (make-local-variable 'sgml-basic-offset)
47679
96093793b6b4 (sgml-guess-indent): Handle tabs correctly.
Mike Williams <mdub@bigfoot.com>
parents: 46352
diff changeset
1430 (1- (current-column)))
44502
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1431 (message "Guessed sgml-basic-offset = %d"
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1432 sgml-basic-offset)
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1433 ))))
4067d1e7f884 (sgml-guess-indent): New function.
Mike Williams <mdub@bigfoot.com>
parents: 44460
diff changeset
1434
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1435 (defun sgml-parse-dtd ()
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1436 "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
1437 Currently just returns (EMPTY-TAGS UNCLOSED-TAGS)."
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1438 (goto-char (point-min))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1439 (let ((empty nil)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1440 (unclosed nil))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1441 (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
1442 (cond
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1443 ((string= (match-string 3) "EMPTY")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1444 (push (match-string-no-properties 1) empty))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1445 ((string= (match-string 2) "O")
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1446 (push (match-string-no-properties 1) unclosed))))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1447 (setq empty (sort (mapcar 'downcase empty) 'string<))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1448 (setq unclosed (sort (mapcar 'downcase unclosed) 'string<))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1449 (list empty unclosed)))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1450
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1451 ;;; HTML mode
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1452
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1453 (defcustom html-mode-hook nil
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1454 "Hook run by command `html-mode'.
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1455 `text-mode-hook' and `sgml-mode-hook' are run first."
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1456 :group 'sgml
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1457 :type 'hook
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1458 :options '(html-autoview-mode))
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1459
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1460 (defvar html-quick-keys sgml-quick-keys
14377
2e6bd1a2712a Whitespace fix.
Richard M. Stallman <rms@gnu.org>
parents: 14328
diff changeset
1461 "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
1462 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
1463 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
1464
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1465 (defvar html-mode-map
37252
5db39c2eba1e Add unknown maintainer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36609
diff changeset
1466 (let ((map (make-sparse-keymap))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1467 (menu-map (make-sparse-keymap "HTML")))
37252
5db39c2eba1e Add unknown maintainer.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 36609
diff changeset
1468 (set-keymap-parent map sgml-mode-map)
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1469 (define-key map "\C-c6" 'html-headline-6)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1470 (define-key map "\C-c5" 'html-headline-5)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1471 (define-key map "\C-c4" 'html-headline-4)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1472 (define-key map "\C-c3" 'html-headline-3)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1473 (define-key map "\C-c2" 'html-headline-2)
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1474 (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
1475 (define-key map "\C-c\r" 'html-paragraph)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1476 (define-key map "\C-c\n" 'html-line)
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1477 (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
1478 (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
1479 (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
1480 (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
1481 (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
1482 (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
1483 (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
1484 (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
1485 (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
1486 (when html-quick-keys
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1487 (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
1488 (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
1489 (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
1490 (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
1491 (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
1492 (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
1493 (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
1494 (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
1495 (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
1496 (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
1497 (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
1498 (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
1499 (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
1500 '("Toggle Autoviewing" . html-autoview-mode))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1501 (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
1502 '("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
1503 (define-key menu-map [nil] '("--"))
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1504 ;;(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
1505 ;;(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
1506 ;;(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
1507 (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
1508 (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
1509 (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
1510 (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
1511 (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
1512 (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
1513 (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
1514 (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
1515 (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
1516 (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
1517 (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
1518 (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
1519 (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
1520 (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
1521 map)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1522 "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
1523
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1524 (defvar html-face-tag-alist
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1525 '((bold . "b")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1526 (italic . "i")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1527 (underline . "u")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1528 (modeline . "rev"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1529 "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
1530
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1531 (defvar html-tag-face-alist
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1532 '(("b" . bold)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1533 ("big" . bold)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1534 ("blink" . highlight)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1535 ("cite" . italic)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1536 ("em" . italic)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1537 ("h1" bold underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1538 ("h2" bold-italic underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1539 ("h3" italic underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1540 ("h4" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1541 ("h5" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1542 ("h6" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1543 ("i" . italic)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1544 ("rev" . modeline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1545 ("s" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1546 ("small" . default)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1547 ("strong" . bold)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1548 ("title" bold underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1549 ("tt" . default)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1550 ("u" . underline)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1551 ("var" . italic))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1552 "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
1553
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1554 (defvar html-display-text
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1555 '((img . "[/]")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1556 (hr . "----------")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1557 (li . "o "))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1558 "Value of `sgml-display-text' for HTML mode.")
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
1559
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1560
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1561 ;; 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
1562 (defvar html-tag-alist
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1563 (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
1564 (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
1565 (align '(("align" ("left") ("center") ("right"))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1566 (valign '(("top") ("middle") ("bottom") ("baseline")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1567 (rel '(("next") ("previous") ("parent") ("subdocument") ("made")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1568 (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
1569 ("mailto:") ("news:") ("rlogin:") ("telnet:") ("tn3270:")
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1570 ("wais:") ("/cgi-bin/")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1571 (name '("name"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1572 (link `(,href
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1573 ("rel" ,@rel)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1574 ("rev" ,@rel)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1575 ("title")))
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
1576 (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
1577 (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
1578 (cell `(t
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1579 ,@align
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1580 ("valign" ,@valign)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1581 ("colspan" ,@1-9)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1582 ("rowspan" ,@1-9)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1583 ("nowrap" t))))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1584 ;; 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
1585 ;; 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
1586 `(("a" ,name ,@link)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1587 ("base" t ,@href)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1588 ("dir" ,@list)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1589 ("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
1590 ("form" (\n _ \n "<input type=\"submit\" value=\"\""
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1591 (if sgml-xml-mode " />" ">"))
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1592 ("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
1593 ("h1" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1594 ("h2" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1595 ("h3" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1596 ("h4" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1597 ("h5" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1598 ("h6" ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1599 ("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
1600 ("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
1601 ("src") ("alt") ("width" "1") ("height" "1")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1602 ("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
1603 ("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
1604 ("type" ("text") ("password") ("checkbox") ("radio")
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1605 ("submit") ("reset"))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1606 ("value"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1607 ("link" t ,@link)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1608 ("menu" ,@list)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1609 ("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
1610 ("p" t ,@align)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1611 ("select" (nil \n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1612 ("Text: "
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1613 "<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
1614 ,name ("size" ,@1-9) ("multiple" t))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1615 ("table" (nil \n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1616 ((completing-read "Cell kind: " '(("td") ("th"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1617 nil t "t")
40392
e4b72489cdc4 (sgml-empty-tags): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40377
diff changeset
1618 "<tr><" str ?> _
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1619 (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
1620 ("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
1621 ("td" ,@cell)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1622 ("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
1623 ("th" ,@cell)
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1624 ("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
1625
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1626 ,@sgml-tag-alist
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1627
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1628 ("abbrev")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1629 ("acronym")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1630 ("address")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1631 ("array" (nil \n
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1632 ("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
1633 "align")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1634 ("au")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1635 ("b")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1636 ("big")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1637 ("blink")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1638 ("blockquote" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1639 ("body" \n ("background" ".gif") ("bgcolor" "#") ("text" "#")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1640 ("link" "#") ("alink" "#") ("vlink" "#"))
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1641 ("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
1642 ("br" t ("clear" ("left") ("right")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1643 ("caption" ("valign" ("top") ("bottom")))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1644 ("center" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1645 ("cite")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1646 ("code" \n)
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1647 ("dd" ,(not sgml-xml-mode))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1648 ("del")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1649 ("dfn")
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1650 ("div")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1651 ("dl" (nil \n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1652 ( "Term: "
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1653 "<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
1654 "<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
1655 ("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
1656 "<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
1657 ("em")
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1658 ;("fn" "id" "fn") ; ???
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1659 ("head" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1660 ("html" (\n
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1661 "<head>\n"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1662 "<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
1663 "</head>\n"
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1664 "<body>\n<h1>" str "</h1>\n" _
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1665 "\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
1666 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
1667 "\">" (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
1668 "</body>"
e2c5b1571392 (html-tag-alist): Add /head and /body to the "html" template.
Richard M. Stallman <rms@gnu.org>
parents: 23970
diff changeset
1669 ))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1670 ("i")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1671 ("ins")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1672 ("isindex" t ("action") ("prompt"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1673 ("kbd")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1674 ("lang")
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1675 ("li" ,(not sgml-xml-mode))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1676 ("math" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1677 ("nobr")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1678 ("option" t ("value") ("label") ("selected" t))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1679 ("over" t)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1680 ("person")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1681 ("pre" \n)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1682 ("q")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1683 ("rev")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1684 ("s")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1685 ("samp")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1686 ("small")
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1687 ("span" nil
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1688 ("class"
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1689 ("builtin")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1690 ("comment")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1691 ("constant")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1692 ("function-name")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1693 ("keyword")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1694 ("string")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1695 ("type")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1696 ("variable-name")
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1697 ("warning")))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1698 ("strong")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1699 ("sub")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1700 ("sup")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1701 ("title")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1702 ("tr" t)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1703 ("tt")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1704 ("u")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1705 ("var")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1706 ("wbr" t)))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1707 "*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
1708
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1709 (defvar html-tag-help
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1710 `(,@sgml-tag-help
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1711 ("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
1712 ("abbrev" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1713 ("acronym" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1714 ("address" . "Formatted mail address")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1715 ("array" . "Math array")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1716 ("au" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1717 ("b" . "Bold face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1718 ("base" . "Base address for URLs")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1719 ("big" . "Font size")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1720 ("blink" . "Blinking text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1721 ("blockquote" . "Indented quotation")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1722 ("body" . "Document body")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1723 ("box" . "Math fraction")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1724 ("br" . "Line break")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1725 ("caption" . "Table caption")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1726 ("center" . "Centered text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1727 ("changed" . "Change bars")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1728 ("cite" . "Citation of a document")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1729 ("code" . "Formatted source code")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1730 ("dd" . "Definition of term")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1731 ("del" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1732 ("dfn" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1733 ("dir" . "Directory list (obsolete)")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1734 ("dl" . "Definition list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1735 ("dt" . "Term to be definined")
63521
0f90f64f45d8 (sgml-calculate-indent, html-tag-help): Fix spellings.
Juanma Barranquero <lekktu@gmail.com>
parents: 63226
diff changeset
1736 ("em" . "Emphasized")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1737 ("embed" . "Embedded data in foreign format")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1738 ("fig" . "Figure")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1739 ("figa" . "Figure anchor")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1740 ("figd" . "Figure description")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1741 ("figt" . "Figure text")
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1742 ;("fn" . "?") ; ???
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1743 ("font" . "Font size")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1744 ("form" . "Form with input fields")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1745 ("group" . "Document grouping")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1746 ("h1" . "Most important section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1747 ("h2" . "Important section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1748 ("h3" . "Section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1749 ("h4" . "Minor section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1750 ("h5" . "Unimportant section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1751 ("h6" . "Least important section headline")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1752 ("head" . "Document header")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1753 ("hr" . "Horizontal rule")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1754 ("html" . "HTML Document")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1755 ("i" . "Italic face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1756 ("img" . "Graphic image")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1757 ("input" . "Form input field")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1758 ("ins" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1759 ("isindex" . "Input field for index search")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1760 ("kbd" . "Keybard example face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1761 ("lang" . "Natural language")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1762 ("li" . "List item")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1763 ("link" . "Link relationship")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1764 ("math" . "Math formula")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1765 ("menu" . "Menu list (obsolete)")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1766 ("mh" . "Form mail header")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1767 ("nextid" . "Allocate new id")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1768 ("nobr" . "Text without line break")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1769 ("ol" . "Ordered list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1770 ("option" . "Selection list item")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1771 ("over" . "Math fraction rule")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1772 ("p" . "Paragraph start")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1773 ("panel" . "Floating panel")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1774 ("person" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1775 ("pre" . "Preformatted fixed width text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1776 ("q" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1777 ("rev" . "Reverse video")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1778 ("s" . "?")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1779 ("samp" . "Sample text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1780 ("select" . "Selection list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1781 ("small" . "Font size")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1782 ("sp" . "Nobreak space")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1783 ("strong" . "Standout text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1784 ("sub" . "Subscript")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1785 ("sup" . "Superscript")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1786 ("table" . "Table with rows and columns")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1787 ("tb" . "Table vertical break")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1788 ("td" . "Table data cell")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1789 ("textarea" . "Form multiline edit area")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1790 ("th" . "Table header cell")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1791 ("title" . "Document title")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1792 ("tr" . "Table row separator")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1793 ("tt" . "Typewriter face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1794 ("u" . "Underlined text")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1795 ("ul" . "Unordered list")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1796 ("var" . "Math variable face")
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1797 ("wbr" . "Enable <br> within <nobr>"))
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1798 "*Value of `sgml-tag-help' for HTML mode.")
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
1799
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1800
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1801 ;;;###autoload
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1802 (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
1803 "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
1804 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
1805 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
1806 \\[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
1807 which this is based.
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1808
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1809 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
1810
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1811 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
1812 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
1813 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
1814 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
1815
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1816 <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
1817 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
1818 <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
1819
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1820 <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
1821 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
1822 <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
1823 Edit/Text Properties/Face commands.
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1824
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1825 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
1826 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
1827 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
1828 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
1829
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1830 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
1831
17551
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
1832 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
1833 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
1834 To work around that, do:
2738b57e4704 Many doc fixes.
Richard M. Stallman <rms@gnu.org>
parents: 17545
diff changeset
1835 (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
1836
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1837 \\{html-mode-map}"
40320
66ba1d523634 (sgml-font-lock-keywords-1): Ignore comments.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 40176
diff changeset
1838 (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
1839 (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
1840 (make-local-variable 'sgml-tag-alist)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1841 (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
1842 (make-local-variable 'sgml-tag-help)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1843 (make-local-variable 'outline-regexp)
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1844 (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
1845 (make-local-variable 'outline-level)
68223
69be9c945c82 Add `coding: iso-2022-7bit' cookie.
Juri Linkov <juri@jurta.org>
parents: 66963
diff changeset
1846 (make-local-variable 'sentence-end-base)
69be9c945c82 Add `coding: iso-2022-7bit' cookie.
Juri Linkov <juri@jurta.org>
parents: 66963
diff changeset
1847 (setq sentence-end-base "[.?!][]\"'$B!I$,1r}(B)}]*\\(<[^>]*>\\)*"
69be9c945c82 Add `coding: iso-2022-7bit' cookie.
Juri Linkov <juri@jurta.org>
parents: 66963
diff changeset
1848 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
1849 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
1850 sgml-tag-help html-tag-help
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1851 outline-regexp "^.*<[Hh][1-6]\\>"
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1852 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
1853 outline-level (lambda ()
43692
568974ab1796 Change maintainer to FSF.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43589
diff changeset
1854 (char-before (match-end 0))))
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1855 (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
1856 (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
1857 (set (make-local-variable 'sgml-empty-tags)
44241
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1858 ;; 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
1859 ;; plus manual addition of "wbr".
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1860 '("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
1861 "isindex" "link" "meta" "param" "wbr"))
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1862 (set (make-local-variable 'sgml-unclosed-tags)
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1863 ;; 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
1864 '("body" "colgroup" "dd" "dt" "head" "html" "li" "option"
600b7e53cf18 (sgml-basic-offset): New var.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 44200
diff changeset
1865 "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
1866 ;; 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
1867 ;; (make-local-variable 'imenu-sort-function)
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
1868 ;; (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
1869 )
44459
25c3c51b0375 (sgml-tag-alist): Doc fix.
Mike Williams <mdub@bigfoot.com>
parents: 44443
diff changeset
1870
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1871 (defvar html-imenu-regexp
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1872 "\\s-*<h\\([1-9]\\)[^\n<>]*>\\(<[^\n<>]*>\\)*\\s-*\\([^\n<>]*\\)"
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1873 "*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
1874 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
1875 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
1876 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
1877
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1878 (defun html-imenu-index ()
47933
b5ddbda34d8e (sgml-close-tag, html-imenu-index): Fix typo.
Juanma Barranquero <lekktu@gmail.com>
parents: 47679
diff changeset
1879 "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
1880 (let (toc-index)
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1881 (save-excursion
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1882 (goto-char (point-min))
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1883 (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
1884 (setq toc-index
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1885 (cons (cons (concat (make-string
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1886 (* 2 (1- (string-to-number (match-string 1))))
64058
7e00d33823d3 (sgml): Finish `defgroup' description with period.
Juanma Barranquero <lekktu@gmail.com>
parents: 63521
diff changeset
1887 ?\s)
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1888 (match-string 3))
40343
25129ef47b45 some code simplifications: when instead of if+progn;
Sam Steingold <sds@gnu.org>
parents: 40320
diff changeset
1889 (line-beginning-position))
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1890 toc-index))))
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1891 (nreverse toc-index)))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1892
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1893 (define-minor-mode html-autoview-mode
25175
d780a1dc11f2 Require outline when compiling.
Dave Love <fx@gnu.org>
parents: 25052
diff changeset
1894 "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
1895 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
1896 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
1897 nil nil nil
48402
f4682f3c8e03 (html-autoview-mode): Add group.
Markus Rost <rost@math.uni-bielefeld.de>
parents: 48262
diff changeset
1898 :group 'sgml
48262
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1899 (if html-autoview-mode
1ef1bf10c03c (sgml-namify-char): New cmd.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 48109
diff changeset
1900 (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
1901 (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
1902
22629
5d51b13e0d1f (html-imenu-regexp): New defvar.
Richard M. Stallman <rms@gnu.org>
parents: 22319
diff changeset
1903
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1904 (define-skeleton html-href-anchor
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1905 "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
1906 "URL: "
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1907 ;; '(setq input "http:")
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1908 "<a href=\"" str "\">" _ "</a>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1909
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1910 (define-skeleton html-name-anchor
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1911 "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
1912 "Name: "
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1913 "<a name=\"" str "\""
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1914 (if sgml-xml-mode (concat " id=\"" str "\""))
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1915 ">" _ "</a>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1916
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1917 (define-skeleton html-headline-1
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1918 "HTML level 1 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1919 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1920 "<h1>" _ "</h1>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1921
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1922 (define-skeleton html-headline-2
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1923 "HTML level 2 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1924 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1925 "<h2>" _ "</h2>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1926
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1927 (define-skeleton html-headline-3
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1928 "HTML level 3 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1929 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1930 "<h3>" _ "</h3>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1931
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1932 (define-skeleton html-headline-4
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1933 "HTML level 4 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1934 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1935 "<h4>" _ "</h4>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1936
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1937 (define-skeleton html-headline-5
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1938 "HTML level 5 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1939 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1940 "<h5>" _ "</h5>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1941
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1942 (define-skeleton html-headline-6
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1943 "HTML level 6 headline tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1944 nil
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1945 "<h6>" _ "</h6>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1946
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1947 (define-skeleton html-horizontal-rule
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1948 "HTML horizontal rule tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1949 nil
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1950 (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
1951
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1952 (define-skeleton html-image
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1953 "HTML image tag."
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1954 "Image URL: "
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1955 "<img src=\"" str "\" alt=\"" _ "\""
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1956 (if sgml-xml-mode " />" ">"))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1957
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1958 (define-skeleton html-line
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1959 "HTML line break tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1960 nil
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1961 (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
1962
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1963 (define-skeleton html-ordered-list
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1964 "HTML ordered list tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1965 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1966 "<ol>" \n
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1967 "<li>" _ (if sgml-xml-mode "</li>") \n
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1968 "</ol>")
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1969
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1970 (define-skeleton html-unordered-list
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1971 "HTML unordered list tags."
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1972 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1973 "<ul>" \n
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1974 "<li>" _ (if sgml-xml-mode "</li>") \n
15437
43b1f8a3af53 (html-list): Definition deleted.
Richard M. Stallman <rms@gnu.org>
parents: 14518
diff changeset
1975 "</ul>")
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1976
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1977 (define-skeleton html-list-item
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1978 "HTML list item tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1979 nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1980 (if (bolp) nil '\n)
43979
6dff5806cdcd (sgml-xml-mode): Renamed from sgml-xml.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 43692
diff changeset
1981 "<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
1982
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1983 (define-skeleton html-paragraph
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1984 "HTML paragraph tag."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1985 nil
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
1986 (if (bolp) nil ?\n)
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
1987 "<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
1988
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1989 (define-skeleton html-checkboxes
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1990 "Group of connected checkbox inputs."
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
1991 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1992 '(setq v1 nil
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1993 v2 nil)
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
1994 ("Value: "
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
1995 "<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
1996 "\" 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
1997 "\" value=\"" str ?\"
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
1998 (when (y-or-n-p "Set \"checked\" attribute? ")
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
1999 (funcall skeleton-transformation-function
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2000 (if sgml-xml-mode " checked=\"checked\"" " checked")))
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2001 (if sgml-xml-mode " />" ">")
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2002 (skeleton-read "Text: " (capitalize str))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2003 (or v2 (setq v2 (if (y-or-n-p "Newline after text? ")
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
2004 (funcall skeleton-transformation-function
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2005 (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
2006 "")))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2007 \n))
14270
15c3d6255a1c (sgml-quick-keys): New variable.
Richard M. Stallman <rms@gnu.org>
parents: 14169
diff changeset
2008
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
2009 (define-skeleton html-radio-buttons
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
2010 "Group of connected radio button inputs."
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
2011 nil
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2012 '(setq v1 nil
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2013 v2 (cons nil nil))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2014 ("Value: "
17545
c67787f92aea (sgml-value): Use 'identity as default value.
Richard M. Stallman <rms@gnu.org>
parents: 17530
diff changeset
2015 "<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
2016 "\" 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
2017 "\" value=\"" str ?\"
39616
13a1b8cf5135 added `html-xhtml' for XHTML input
Sam Steingold <sds@gnu.org>
parents: 38431
diff changeset
2018 (when (and (not v1) (setq v1 (y-or-n-p "Set \"checked\" attribute? ")))
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
2019 (funcall skeleton-transformation-function
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2020 (if sgml-xml-mode " checked=\"checked\"" " checked")))
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2021 (if sgml-xml-mode " />" ">")
17491
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2022 (skeleton-read "Text: " (capitalize str))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2023 (or (cdr v2) (setcdr v2 (if (y-or-n-p "Newline after text? ")
70823
ca1b3788f58d (sgml-transformation): Make this the alias for the following variable.
Roland Winkler <Roland.Winkler@physik.uni-erlangen.de>
parents: 68648
diff changeset
2024 (funcall skeleton-transformation-function
60521
f38eb69aa763 (sgml-tag, html-tag-alist)
Juri Linkov <juri@jurta.org>
parents: 59996
diff changeset
2025 (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
2026 "")))
4c6505ca34a7 (sgml-value): Don't perform the skeleton-transformation
Richard M. Stallman <rms@gnu.org>
parents: 17433
diff changeset
2027 \n))
14159
93175ed23e01 Also load for .sgm and .dtd files.
Richard M. Stallman <rms@gnu.org>
parents: 12244
diff changeset
2028
38068
e3bd229672c1 Move `provide' to the end. Update copyright.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 37252
diff changeset
2029 (provide 'sgml-mode)
38431
853c3674f20a Fixes to follow coding conventions.
Pavel Janík <Pavel@Janik.cz>
parents: 38108
diff changeset
2030
58122
1e9ea828c37a (sgml-tag-text-p): New fun.
Stefan Monnier <monnier@iro.umontreal.ca>
parents: 57718
diff changeset
2031 ;; arch-tag: 9675da94-b7f9-4bda-ad19-73ed7b4fb401
809
8a0066235d56 Initial revision
Eric S. Raymond <esr@snark.thyrsus.com>
parents:
diff changeset
2032 ;;; sgml-mode.el ends here