Using sgml-mode with
Emacs
Recent versions of Emacs or Xemacs (available from the ports
collection) contain a very useful package called PSGML. Automatically
invoked when a file with .sgml extension is loaded,
or by typing M-x sgml-mode, it is a major mode for
dealing with SGML files, elements and attributes.
An understanding of some of the commands provided by this mode can
make working with SGML documents such as the Handbook much easier.
C-c C-e
Runs sgml-insert-element. You will be
prompted for the name of the element to insert at the current point.
You can use the TAB key to complete the element. Elements that are
not valid at the current point will be disallowed.
The start and end tags for the element will be inserted. If the
element contains other, mandatory, elements then these will be
inserted as well.
C-c =
Runs sgml-change-element-name. Place the
point within an element and run this command. You will be prompted
for the name of the element to change to. Both the start and end
tags of the current element will be changed to the new
element.
C-c C-r
Runs sgml-tag-region. Select some text (move
to start of text, C-space, move to end of text, C-space) and then
run this command. You will be prompted for the element to use. This
element will then be inserted immediately before and after your
marked region.
C-c -
Runs sgml-untag-element. Place the point
within the start or end tag of an element you want to remove, and
run this command. The element's start and end tags will be
removed.
C-c C-q
Runs sgml-fill-element. Will recursively fill
(i.e., reformat) content from the current element in. The filling
will affect content in which whitespace is
significant, such as within programlisting
elements, so run this command with care.
C-c C-a
Runs sgml-edit-attributes. Opens a second
buffer containing a list of all the attributes for the closest
enclosing element, and their current values. Use TAB to navigate
between attributes, C-k to remove an existing
value and replace it with a new one, C-c to close
this buffer and return to the main document.
C-c C-v
Runs sgml-validate. Prompts you to save the
current document (if necessary) and then runs an SGML validator. The
output from the validator is captured into a new buffer, and you can
then navigate from one troublespot to the next, fixing markup errors
as you go.
Doubtless there are other useful functions of this mode, but those are
the ones I use most often.