ErgoEmacsEmacsLispBlogEmacsLispBuy Tutorial
Web Hosting by 1&1

29.10 SGML and HTML Modes

The major modes for SGML and HTML provide indentation support and commands for operating on tags. HTML mode is a slightly customized variant of SGML mode.

C-c C-n
Interactively specify a special character and insert the SGML ‘&’-command for that character (sgml-name-char).
C-c C-t
Interactively specify a tag and its attributes (sgml-tag). This command asks you for a tag name and for the attribute values, then inserts both the opening tag and the closing tag, leaving point between them.

With a prefix argument n, the command puts the tag around the n words already present in the buffer after point. Whenever a region is active, it puts the tag around the region (when Transient Mark mode is off, it does this when a numeric argument of −1 is supplied.)

C-c C-a
Interactively insert attribute values for the current tag (sgml-attributes).
C-c C-f
Skip across a balanced tag group (which extends from an opening tag through its corresponding closing tag) (sgml-skip-tag-forward). A numeric argument acts as a repeat count.
C-c C-b
Skip backward across a balanced tag group (which extends from an opening tag through its corresponding closing tag) (sgml-skip-tag-backward). A numeric argument acts as a repeat count.
C-c C-d
Delete the tag at or after point, and delete the matching tag too (sgml-delete-tag). If the tag at or after point is an opening tag, delete the closing tag too; if it is a closing tag, delete the opening tag too.
C-c ? tag <RET>
Display a description of the meaning of tag tag (sgml-tag-help). If the argument tag is empty, describe the tag at point.
C-c /
Insert a close tag for the innermost unterminated tag (sgml-close-tag). If called from within a tag or a comment, close this element instead of inserting a close tag.
C-c 8
Toggle a minor mode in which Latin-1 characters insert the corresponding SGML commands that stand for them, instead of the characters themselves (sgml-name-8bit-mode).
C-c C-v
Run a shell command (which you must specify) to validate the current buffer as SGML (sgml-validate).
C-c TAB
Toggle the visibility of existing tags in the buffer. This can be used as a cheap preview (sgml-tags-invisible).

The default mode for editing XML documents is called nXML mode (xml-mode or nxml-mode). This is a powerful major mode that can recognize many existing XML schema and use them to provide completion of XML elements via C-<RET> or M-<TAB>, as well as “on-the-fly” XML validation with error highlighting. It is described in its own manual. See nXML Mode.

However, you can also use SGML mode to edit XML, since XML is a strict subset of SGML. In XML, every opening tag must have an explicit closing tag. When the variable sgml-xml-mode is non-nil, the tag insertion commands described above always insert explicit closing tags as well. When you visit a file in SGML mode, Emacs determines whether it is XML by examining the file contents, and sets sgml-xml-mode accordingly.

blog comments powered by Disqus