Update documentation editor setup instructions

Now that the documentation sources are in XML rather than SGML, some of
the documentation about the editor, or more specifically Emacs, setup
needs updating.  The updated instructions recommend using nxml-mode,
which works mostly out of the box, with some small tweaks in
emacs.samples and .dir-locals.el.

Also remove some obsolete stuff in .dir-locals.el.  I did, however,
leave the sgml-mode settings in there so that someone using Emacs
without emacs.samples gets those settings when editing a *.sgml file.
This commit is contained in:
Peter Eisentraut 2018-07-13 21:23:41 +02:00
parent 4984784f83
commit 333224c99e
3 changed files with 38 additions and 103 deletions

View File

@ -5,8 +5,8 @@
(fill-column . 78) (fill-column . 78)
(indent-tabs-mode . t) (indent-tabs-mode . t)
(tab-width . 4))) (tab-width . 4)))
(dsssl-mode . ((indent-tabs-mode . nil))) (nxml-mode . ((fill-column . 78)
(nxml-mode . ((indent-tabs-mode . nil))) (indent-tabs-mode . nil)))
(perl-mode . ((perl-indent-level . 4) (perl-mode . ((perl-indent-level . 4)
(perl-continued-statement-offset . 2) (perl-continued-statement-offset . 2)
(perl-continued-brace-offset . 4) (perl-continued-brace-offset . 4)

View File

@ -393,112 +393,36 @@ ADDITIONAL_FLAGS='-Xmx1500m'
<title>Documentation Authoring</title> <title>Documentation Authoring</title>
<para> <para>
<acronym>SGML</acronym> and <productname>DocBook</productname> do The documentation sources are most conveniently modified with an editor
not suffer from an oversupply of open-source authoring tools. The that has a mode for editing XML, and even more so if it has some awareness
most common tool set is the of XML schema languages so that it can know about
<productname>Emacs</productname>/<productname>XEmacs</productname> <productname>DocBook</productname> syntax specifically.
editor with appropriate editing mode. On some systems </para>
these tools are provided in a typical full installation.
<para>
Note that for historical reasons the documentation source files are named
with an extension <filename>.sgml</filename> even though they are now XML
files. So you might need to adjust your editor configuration to set the
correct mode.
</para> </para>
<sect2> <sect2>
<title>Emacs/PSGML</title> <title>Emacs</title>
<para> <para>
<productname>PSGML</productname> is the most common and most <productname>nXML Mode</productname>, which ships with
powerful mode for editing <acronym>SGML</acronym> documents. <productname>Emacs</productname>, is the most common mode for editing
When properly configured, it will allow you to use <acronym>XML</acronym> documents with <productname>Emacs</productname>.
<application>Emacs</application> to insert tags and check markup It will allow you to use <application>Emacs</application> to insert tags
consistency. You could use it for <acronym>HTML</acronym> as and check markup consistency, and it supports
well. Check the <ulink url="http://www.lysator.liu.se/projects/about_psgml.html"> <productname>DocBook</productname> out of the box. Check the <ulink
PSGML web site</ulink> for downloads, installation instructions, and url="https://www.gnu.org/software/emacs/manual/html_mono/nxml-mode.html">
detailed documentation. nXML manual</ulink> for detailed documentation.
</para> </para>
<para> <para>
There is one important thing to note with
<productname>PSGML</productname>: its author assumed that your
main <acronym>SGML</acronym> <acronym>DTD</acronym> directory
would be <filename>/usr/local/lib/sgml</filename>. If, as in the
examples in this chapter, you use
<filename>/usr/local/share/sgml</filename>, you have to
compensate for this, either by setting
<envar>SGML_CATALOG_FILES</envar> environment variable, or you
can customize your <productname>PSGML</productname> installation
(its manual tells you how).
</para>
<para>
Put the following in your <filename>~/.emacs</filename>
environment file (adjusting the path names to be appropriate for
your system):
<programlisting>
; ********** for SGML mode (psgml)
(setq sgml-omittag t)
(setq sgml-shorttag t)
(setq sgml-minimize-attributes nil)
(setq sgml-always-quote-attributes t)
(setq sgml-indent-step 1)
(setq sgml-indent-data t)
(setq sgml-parent-document nil)
(setq sgml-exposed-tags nil)
(setq sgml-catalog-files '("/usr/local/share/sgml/catalog"))
(autoload 'sgml-mode "psgml" "Major mode to edit SGML files." t )
</programlisting>
and in the same file add an entry for <acronym>SGML</acronym>
into the (existing) definition for
<varname>auto-mode-alist</varname>:
<programlisting>
(setq
auto-mode-alist
'(("\\.sgml$" . sgml-mode)
))
</programlisting>
</para>
<para>
You might find that when using <productname>PSGML</productname>, a
comfortable way of working with these separate files of book
parts is to insert a proper <literal>DOCTYPE</literal>
declaration while you're editing them. If you are working on
this source, for instance, it is an appendix chapter, so you
would specify the document as an <quote>appendix</quote> instance
of a DocBook document by making the first line look like this:
<programlisting>
&lt;!DOCTYPE appendix PUBLIC "-//OASIS//DTD DocBook V4.2//EN"&gt;
</programlisting>
This means that anything and everything that reads
<acronym>SGML</acronym> will get it right, and I can verify the
document with <command>nsgmls -s docguide.sgml</command>. (But
you need to take out that line before building the entire
documentation set.)
</para>
</sect2>
<sect2>
<title>Other Emacs Modes</title>
<para>
<productname>GNU Emacs</productname> ships with a different
<acronym>SGML</acronym> mode, which is not quite as powerful as
<productname>PSGML</productname>, but it's less confusing and
lighter weight. Also, it offers syntax highlighting (font lock),
which can be very helpful.
<filename>src/tools/editors/emacs.samples</filename> contains <filename>src/tools/editors/emacs.samples</filename> contains
sample settings for this mode. recommended settings for this mode.
</para>
<para>
Norm Walsh offers a
<ulink url="http://nwalsh.com/emacs/docbookide/index.html">major mode</ulink>
specifically for DocBook which also has font-lock and a number of features to
reduce typing.
</para> </para>
</sect2> </sect2>

View File

@ -62,12 +62,23 @@
;;; documentation files ;;; documentation files
(add-hook 'sgml-mode-hook ;; *.sgml files are actually XML
(defun postgresql-sgml-mode-hook () (add-to-list 'auto-mode-alist '("/postgres\\(ql\\)?/.*\\.sgml\\'" . nxml-mode))
(add-hook 'nxml-mode-hook
(defun postgresql-xml-mode-hook ()
(when (string-match "/postgres\\(ql\\)?/" buffer-file-name) (when (string-match "/postgres\\(ql\\)?/" buffer-file-name)
(setq fill-column 78) (setq fill-column 78)
(setq indent-tabs-mode nil) (setq indent-tabs-mode nil))))
(setq sgml-basic-offset 1))))
;; The *.xsl files use 2-space indent, which is consistent with
;; docbook-xsl sources and also the nxml-mode default. But the *.sgml
;; files use 1-space indent, mostly for historical reasons at this
;; point.
(add-hook 'nxml-mode-hook
(defun postgresql-xml-src-mode-hook ()
(when (string-match "/postgres\\(ql\\)?/.*\\.sgml\\'" buffer-file-name)
(setq nxml-child-indent 1))))
;;; Makefiles ;;; Makefiles