;;; /u/sy/beebe/xml/docbookmenu.el, Fri Sep 20 10:29:42 2002
;;; Edit by Nelson H. F. Beebe <beebe@math.utah.edu>
;;; ====================================================================
;;;  @Emacs-Lisp-file{
;;;     author          = "Nelson H. F. Beebe",
;;;     version         = "0.06",
;;;     date            = "11 March 2004",
;;;     time            = "09:52:47 MST",
;;;     filename        = "docbookmenu.el",
;;;     address         = "Center for Scientific Computing
;;;                        University of Utah
;;;                        Department of Mathematics, 110 LCB
;;;                        155 S 1400 E RM 233
;;;                        Salt Lake City, UT 84112-0090
;;;                        USA",
;;;     telephone       = "+1 801 581 5254",
;;;     FAX             = "+1 801 585 1640, +1 801 581 4148",
;;;     URL             = "http://www.math.utah.edu/~beebe",
;;;     checksum        = "13816 1027 3545 37024",
;;;     email           = "beebe@math.utah.edu, beebe@acm.org,
;;;                        beebe@computer.org (Internet)",
;;;     codetable       = "ISO/ASCII",
;;;     keywords        = "DocBook, O'Reilly & Associates, SGML, XML",
;;;     supported       = "yes",
;;;     docstring       = "This file provides X Window System popup
;;;                        menu support for docbook-mode in GNU Emacs
;;;                        version 20 or later.  The companion file,
;;;                        docbook.el, provides editing support.
;;;
;;;                        The checksum field above contains a CRC-16
;;;                        checksum as the first value, followed by the
;;;                        equivalent of the standard UNIX wc (word
;;;                        count) utility output of lines, words, and
;;;                        characters.  This is produced by Robert
;;;                        Solovay's checksum utility.",
;;;  }
;;; ====================================================================


;;; docbookmenu.el --- Window system menu support for docbook.el

;;; Copyright (C) 2002 Free Software Foundation, Inc.

;;; Author: Nelson H. F. Beebe <beebe@math.utah.edu>
;;; Maintainer: Nelson H. F. Beebe <beebe@math.utah.edu>
;;; Created: 19 September 2002
;;; Version: 0.00
;;; Keywords: DocBook, O'Reilly & Associates, SGML, XML

;;; This file is part of GNU Emacs.

;;; GNU Emacs is free software; you can redistribute it and/or modify
;;; it under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 2, or (at your option)
;;; any later version.

;;; GNU Emacs is distributed in the hope that it will be useful,
;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;;; GNU General Public License for more details.

;;; You should have received a copy of the GNU General Public License
;;; along with GNU Emacs; see the file COPYING.  If not, write to
;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.

;;; Commentary:
;;; This file provides GNU Emacs (version 20 or later) support
;;; for editing documents in DocBook/XML, notably, the variant
;;; used by the publisher O'Reilly & Associates for its books.
;;;
;;; Unlike psgml.el, which attempts to parse the SGML DTD to
;;; create a customized editing environment, the companion docbook.el
;;; ignores DTDs, and uses the tag repertoire defined in Appendix G of
;;; ``DocBook: The Definitive Guide'', whose home page is at
;;; http://www.oreilly.com/catalog/docbook/chapter/book/docbook.html
;;;
;;; Window system menu support is provided in a this file,
;;; docbookmenu.el.  That support has been modeled after that in the
;;; author's LaTeX editing support in latex.el and ltxmenu.el.

(defconst docbookmenu-version "0.06")		;NB: update this at every change
(defconst docbookmenu-date "[11-Mar-2004]") 	;NB: update this at every change

;;; Change log:
;;;=====================================================================
;;;
;;; Version 0.06	[11-Mar-2004]
;;; Add colspec menu item.
;;;
;;; Version 0.05	[28-May-2003]
;;; Add &quot;&quot; menu items.
;;;
;;; Version 0.04	[26-May-2003]
;;; Add &minus; and &quot; menu items.
;;;
;;; Version 0.03	[10-Jan-2003]
;;; Add internal-x-docbook-menu-checks tools menu.
;;;
;;; Version 0.02	[08-Jan-2003]
;;; Add orderedlist menu item.
;;;
;;; Version 0.01	[04-Jan-2003]
;;; Add several new menu items.
;;;
;;; Version 0.00	[19-Sep-2002]
;;; Initial working template of DocBook/XML editing menu support.

;;; Code:

;;; Please keep the functions sorted ALPHABETICALLY, except for those
;;; that must be defined after certain others.

(provide 'docbookmenu)

(require 'docbook-mode "docbook.el")

;;; NB: x-popup-menu (defined in emacs/src/xmenu.c) doesn't eval its
;;; arguments---it expects them to be (position menu), and works as
;;; follows:
;;;
;;; >> Pop up a deck-of-cards menu and return user's selection.
;;; >> POSITION is a position specification.  This is either a mouse
;;; >> button event or a list ((XOFFSET YOFFSET) WINDOW) where XOFFSET
;;; >> and YOFFSET are positions in characters from the top left corner
;;; >> of WINDOW's frame.  (WINDOW may be a frame object instead of a
;;; >> window.)  This controls the position of the center of the first
;;; >> line in the first pane of the menu, not the top left of the menu
;;; >> as a whole.
;;; >>
;;; >> MENU is a specifier for a menu.  For the simplest case, MENU is a
;;; >> keymap.  The menu items come from key bindings that have a menu
;;; >> string as well as a definition; actually, the \"definition\" in
;;; >> such a key binding looks like \(STRING . REAL-DEFINITION).  To
;;; >> give the menu a title, put a string into the keymap as a
;;; >> top-level element.
;;; >>
;;; >> You can also use a list of keymaps as MENU.  Then each keymap
;;; >> makes a separate pane.
;;; >>
;;; >> When MENU is a keymap or a list of keymaps, the return value is a
;;; >> list of events.
;;; >>
;;; >> Alternatively, you can specify a menu of multiple panes with a
;;; >> list of the form (TITLE PANE1 PANE2...), where each pane is a
;;; >> list of form (TITLE ITEM1 ITEM2...).  Each ITEM is normally a
;;; >> cons cell (STRING . VALUE); but a string can appear as an
;;; >> item--that makes a nonselectable line in the menu.  With this
;;; >> form of menu, the return value is VALUE from the chosen item.
;;;
;;; We therefore need to use backquote here to eval them in advance.
;;; This setq for internal-x-docbook-menu-of-menus must occur after all
;;; of its components have been defined above.

(defvar internal-x-docbook-menu-of-menus nil
  "Top-level menu of DocBook commands.")

(defvar internal-x-docbook-menu-insertion nil
  "Menu of insertion support functions.")

(defvar internal-x-docbook-menu-help nil
  "Menu of help support functions.")

(defvar internal-x-docbook-menu-general-tags nil
  "Menu of all DocBook/XML tags.")

(defvar internal-x-docbook-menu-checks nil
  "Menu of DocBook/XML syntax checks.")

(defvar internal-x-docbook-menu-common-entities nil
  "Menu of common DocBook/XML entities.")

(setq internal-x-docbook-menu-checks
      '("Checks"
	("check screens"	. docbook-check-screens)
	("sgmlify"		. sgmlify-region)))

(setq internal-x-docbook-menu-common-entities
      '("Common entities"
	("&bsol;"		. docbook-entity-bsol)
	("&hairsp;"		. docbook-entity-hairsp)
	("&mdash;"		. docbook-entity-mdash)
	("&minus;"		. docbook-entity-minus)
	("&nbsp;"		. docbook-entity-nbsp)
	("&ndash;"		. docbook-entity-ndash)
	("&quot;"		. docbook-entity-quot)
	("&quot;&quot;"		. docbook-entity-quot-quot)
	("&thinsp;"		. docbook-entity-thinsp)
	))

(defvar internal-x-docbook-menu-common-tags nil
  "Menu of common DocBook/XML tags.")

(setq internal-x-docbook-menu-common-tags
      '("Common tags"
	("chapter"		. docbook-tag-chapter)
	("caution"		. docbook-tag-caution)
	("chapter"		. docbook-tag-chapter)
	("citetitle"		. docbook-tag-citetitle)
	("colspec"		. docbook-tag-colspec)
	("command"		. docbook-tag-command)
	("email"		. docbook-tag-email)
	("emphasis"		. docbook-tag-emphasis)
	("emphasis-strong"	. docbook-tag-emphasis-strong)
	("envar"		. docbook-tag-envar)
	("example"		. docbook-tag-example)
	("figure"		. docbook-tag-figure)
	("filename"		. docbook-tag-filename)
	("firstterm"		. docbook-tag-firstterm)
	("footnote"		. docbook-tag-footnote)
	("graphic"		. docbook-tag-graphic)
	("itemizedlist"		. docbook-tag-itemizedlist)
	("lineannotation"	. docbook-tag-lineannotation)
	("listitem"		. docbook-tag-listitem)
	("literal"		. docbook-tag-literal)
	("literallayout"	. docbook-tag-literallayout)
	("note"			. docbook-tag-note)
	("option"		. docbook-tag-option)
	("orderedlist"		. docbook-tag-orderedlist)
	("para"			. docbook-tag-para)
	("parbreak"		. docbook-tag-parbreak)
	("preface"		. docbook-tag-preface)
	("replaceable"		. docbook-tag-replaceable)
	("screen"		. docbook-tag-screen)
	("sect1"		. docbook-tag-sect1)
	("sect2"		. docbook-tag-sect2)
	("sect3"		. docbook-tag-sect3)
	("sect4"		. docbook-tag-sect4)
	("sect5"		. docbook-tag-sect5)
	("sidebar"		. docbook-tag-sidebar)
	("simplesect"		. docbook-tag-simplesect)
	("subscript"		. docbook-tag-subscript)
	("superscript"		. docbook-tag-superscript)
	("symbol"		. docbook-tag-symbol)
	("term"			. docbook-tag-term)
	("title"		. docbook-tag-title)
	("url"			. docbook-tag-url)
	("userinput"		. docbook-tag-userinput)
	("variablelist"		. docbook-tag-variablelist)
	("varlistentry"		. docbook-tag-varlistentry)
	("xref"			. docbook-tag-xref)
	))

(setq internal-x-docbook-menu-general-tags
      '("General tags"
	("a"		. docbook-menu-help-a)
	("b"		. docbook-menu-help-b)
	("c"		. docbook-menu-help-c)
	("d"		. docbook-menu-help-d)
	("e"		. docbook-menu-help-e)
	("f"		. docbook-menu-help-f)
	("g"		. docbook-menu-help-g)
	("h"		. docbook-menu-help-h)
	("i"		. docbook-menu-help-i)
	("j"		. docbook-menu-help-j)
	("k"		. docbook-menu-help-k)
	("l"		. docbook-menu-help-l)
	("m"		. docbook-menu-help-m)
	("n"		. docbook-menu-help-n)
	("o"		. docbook-menu-help-o)
	("p"		. docbook-menu-help-p)
	("q"		. docbook-menu-help-q)
	("r"		. docbook-menu-help-r)
	("s"		. docbook-menu-help-s)
	("t"		. docbook-menu-help-t)
	("u"		. docbook-menu-help-u)
	("v"		. docbook-menu-help-v)
	("w"		. docbook-menu-help-w)
	("x"		. docbook-menu-help-x)
	("y"		. docbook-menu-help-y)
	("z"		. docbook-menu-help-z)
	))

(setq internal-x-docbook-menu-of-menus
      (`("docbook main menu"	   ;this menu title is never displayed
	 (, internal-x-docbook-menu-checks)
	 (, internal-x-docbook-menu-common-entities)
	 (, internal-x-docbook-menu-common-tags)
	 (, internal-x-docbook-menu-general-tags)
	 )))

(defun x-docbook-help (&optional arg)
  "Mouse commands for DocBook mode.  ARG is a pair (xoffset,yoffset)
giving the offset from the upper-left window corner in character
positions of the pointer when the mouse button is activated."
  (interactive)
  (let ((selection (x-popup-menu last-nonmenu-event
				 internal-x-docbook-menu-of-menus)))
    (if selection
	(call-interactively selection))))

(define-key docbook-mode-map [menu-bar docbook]
  (cons "docbook" 'x-docbook-help))

(define-key docbook-mode-map [S-mouse-1] 'x-docbook-help)

(defvar internal-x-docbook-menu-a nil "Tag submenu A")
(defvar internal-x-docbook-menu-b nil "Tag submenu B")
(defvar internal-x-docbook-menu-c nil "Tag submenu C")
(defvar internal-x-docbook-menu-d nil "Tag submenu D")
(defvar internal-x-docbook-menu-e nil "Tag submenu E")
(defvar internal-x-docbook-menu-f nil "Tag submenu F")
(defvar internal-x-docbook-menu-g nil "Tag submenu G")
(defvar internal-x-docbook-menu-h nil "Tag submenu H")
(defvar internal-x-docbook-menu-i nil "Tag submenu I")
(defvar internal-x-docbook-menu-j nil "Tag submenu J")
(defvar internal-x-docbook-menu-k nil "Tag submenu K")
(defvar internal-x-docbook-menu-l nil "Tag submenu L")
(defvar internal-x-docbook-menu-m nil "Tag submenu M")
(defvar internal-x-docbook-menu-n nil "Tag submenu N")
(defvar internal-x-docbook-menu-o nil "Tag submenu O")
(defvar internal-x-docbook-menu-p nil "Tag submenu P")
(defvar internal-x-docbook-menu-q nil "Tag submenu Q")
(defvar internal-x-docbook-menu-r nil "Tag submenu R")
(defvar internal-x-docbook-menu-s nil "Tag submenu S")
(defvar internal-x-docbook-menu-t nil "Tag submenu T")
(defvar internal-x-docbook-menu-u nil "Tag submenu U")
(defvar internal-x-docbook-menu-v nil "Tag submenu V")
(defvar internal-x-docbook-menu-w nil "Tag submenu W")
(defvar internal-x-docbook-menu-x nil "Tag submenu X")
(defvar internal-x-docbook-menu-y nil "Tag submenu Y")
(defvar internal-x-docbook-menu-z nil "Tag submenu Z")

(defvar internal-x-docbook-menu-group-a nil "Menu of group A tags")
(defvar internal-x-docbook-menu-group-b nil "Menu of group B tags")
(defvar internal-x-docbook-menu-group-c nil "Menu of group C tags")
(defvar internal-x-docbook-menu-group-d nil "Menu of group D tags")
(defvar internal-x-docbook-menu-group-e nil "Menu of group E tags")
(defvar internal-x-docbook-menu-group-f nil "Menu of group F tags")
(defvar internal-x-docbook-menu-group-g nil "Menu of group G tags")
(defvar internal-x-docbook-menu-group-h nil "Menu of group H tags")
(defvar internal-x-docbook-menu-group-i nil "Menu of group I tags")
(defvar internal-x-docbook-menu-group-j nil "Menu of group J tags")
(defvar internal-x-docbook-menu-group-k nil "Menu of group K tags")
(defvar internal-x-docbook-menu-group-l nil "Menu of group L tags")
(defvar internal-x-docbook-menu-group-m nil "Menu of group M tags")
(defvar internal-x-docbook-menu-group-n nil "Menu of group N tags")
(defvar internal-x-docbook-menu-group-o nil "Menu of group O tags")
(defvar internal-x-docbook-menu-group-p nil "Menu of group P tags")
(defvar internal-x-docbook-menu-group-q nil "Menu of group Q tags")
(defvar internal-x-docbook-menu-group-r nil "Menu of group R tags")
(defvar internal-x-docbook-menu-group-s nil "Menu of group S tags")
(defvar internal-x-docbook-menu-group-t nil "Menu of group T tags")
(defvar internal-x-docbook-menu-group-u nil "Menu of group U tags")
(defvar internal-x-docbook-menu-group-v nil "Menu of group V tags")
(defvar internal-x-docbook-menu-group-w nil "Menu of group W tags")
(defvar internal-x-docbook-menu-group-x nil "Menu of group X tags")
(defvar internal-x-docbook-menu-group-y nil "Menu of group Y tags")
(defvar internal-x-docbook-menu-group-z nil "Menu of group Z tags")

(setq internal-x-docbook-menu-group-a
      '("Group A tags"
	("Abbrev"		. docbook-tag-Abbrev)
	("Abstract"		. docbook-tag-Abstract)
	("Accel"		. docbook-tag-Accel)
	("Ackno"		. docbook-tag-Ackno)
	("Acronym"		. docbook-tag-Acronym)
	("Action"		. docbook-tag-Action)
	("Address"		. docbook-tag-Address)
	("Affiliation"		. docbook-tag-Affiliation)
	("Alt"			. docbook-tag-Alt)
	("Anchor"		. docbook-tag-Anchor)
	("Answer"		. docbook-tag-Answer)
	("Appendix"		. docbook-tag-Appendix)
	("Application"		. docbook-tag-Application)
	("Area"			. docbook-tag-Area)
	("AreaSet"		. docbook-tag-AreaSet)
	("AreaSpec"		. docbook-tag-AreaSpec)
	("Arg"			. docbook-tag-Arg)
	("ArtHeader"		. docbook-tag-ArtHeader)
	("ArtPageNums"		. docbook-tag-ArtPageNums)
	("Article"		. docbook-tag-Article)
	("Attribution"		. docbook-tag-Attribution)
	("AudioData"		. docbook-tag-AudioData)
	("AudioObject"		. docbook-tag-AudioObject)
	("Author"		. docbook-tag-Author)
	("AuthorBlurb"		. docbook-tag-AuthorBlurb)
	("AuthorGroup"		. docbook-tag-AuthorGroup)
	("AuthorInitials"	. docbook-tag-AuthorInitials)
	))

(setq internal-x-docbook-menu-group-b
      '("Group B tags"
	("BeginPage"		. docbook-tag-BeginPage)
	("BiblioDiv"		. docbook-tag-BiblioDiv)
	("BiblioEntry"		. docbook-tag-BiblioEntry)
	("BiblioMSet"		. docbook-tag-BiblioMSet)
	("BiblioMisc"		. docbook-tag-BiblioMisc)
	("BiblioMixed"		. docbook-tag-BiblioMixed)
	("BiblioSet"		. docbook-tag-BiblioSet)
	("Bibliography"		. docbook-tag-Bibliography)
	("BlockQuote"		. docbook-tag-BlockQuote)
	("Book"			. docbook-tag-Book)
	("BookBiblio"		. docbook-tag-BookBiblio)
	("BookInfo"		. docbook-tag-BookInfo)
	("BridgeHead"		. docbook-tag-BridgeHead)
	))

(setq internal-x-docbook-menu-group-c
      '("Group C tags"
	("CO"			. docbook-tag-CO)
	("Callout"		. docbook-tag-Callout)
	("CalloutList"		. docbook-tag-CalloutList)
	("Caption"		. docbook-tag-Caption)
	("Caution"		. docbook-tag-Caution)
	("Chapter"		. docbook-tag-Chapter)
	("Citation"		. docbook-tag-Citation)
	("CiteRefEntry"		. docbook-tag-CiteRefEntry)
	("CiteTitle"		. docbook-tag-CiteTitle)
	("City"			. docbook-tag-City)
	("ClassName"		. docbook-tag-ClassName)
	("CmdSynopsis"		. docbook-tag-CmdSynopsis)
	("ColSpec"		. docbook-tag-ColSpec)
	("Collab"		. docbook-tag-Collab)
	("CollabName"		. docbook-tag-CollabName)
	("Colophon"		. docbook-tag-Colophon)
	("Command"		. docbook-tag-Command)
	("Comment"		. docbook-tag-Comment)
	("ComputerOutput"	. docbook-tag-ComputerOutput)
	("ConfDates"		. docbook-tag-ConfDates)
	("ConfGroup"		. docbook-tag-ConfGroup)
	("ConfNum"		. docbook-tag-ConfNum)
	("ConfSponsor"		. docbook-tag-ConfSponsor)
	("ConfTitle"		. docbook-tag-ConfTitle)
	("Constant"		. docbook-tag-Constant)
	("ContractNum"		. docbook-tag-ContractNum)
	("ContractSponsor"	. docbook-tag-ContractSponsor)
	("Contrib"		. docbook-tag-Contrib)
	("Copyright"		. docbook-tag-Copyright)
	("CorpAuthor"		. docbook-tag-CorpAuthor)
	("CorpName"		. docbook-tag-CorpName)
	("Country"		. docbook-tag-Country)
	))

(setq internal-x-docbook-menu-group-d
      '("Group D tags"
	("Database"		. docbook-tag-Database)
	("Date"			. docbook-tag-Date)
	("Dedication"		. docbook-tag-Dedication)
	("DocInfo"		. docbook-tag-DocInfo)
	))

(setq internal-x-docbook-menu-group-e
      '("Group E tags"
	("Edition"		. docbook-tag-Edition)
	("Editor"		. docbook-tag-Editor)
	("Email"		. docbook-tag-Email)
	("Emphasis"		. docbook-tag-Emphasis)
	("EnVar"		. docbook-tag-EnVar)
	("Entry"		. docbook-tag-Entry)
	("EntryTbl"		. docbook-tag-EntryTbl)
	("Epigraph"		. docbook-tag-Epigraph)
	("Equation"		. docbook-tag-Equation)
	("ErrorCode"		. docbook-tag-ErrorCode)
	("ErrorName"		. docbook-tag-ErrorName)
	("ErrorType"		. docbook-tag-ErrorType)
	("Example"		. docbook-tag-Example)
	))

(setq internal-x-docbook-menu-group-f
      '("Group F tags"
	("Fax"			. docbook-tag-Fax)
	("Figure"		. docbook-tag-Figure)
	("Filename"		. docbook-tag-Filename)
	("FirstName"		. docbook-tag-FirstName)
	("FirstTerm"		. docbook-tag-FirstTerm)
	("Footnote"		. docbook-tag-Footnote)
	("FootnoteRef"		. docbook-tag-FootnoteRef)
	("ForeignPhrase"	. docbook-tag-ForeignPhrase)
	("FormalPara"		. docbook-tag-FormalPara)
	("FuncDef"		. docbook-tag-FuncDef)
	("FuncParams"		. docbook-tag-FuncParams)
	("FuncPrototype"	. docbook-tag-FuncPrototype)
	("FuncSynopsis"		. docbook-tag-FuncSynopsis)
	("FuncSynopsisInfo"	. docbook-tag-FuncSynopsisInfo)
	("FuncSynopsis"		. docbook-tag-FuncSynopsis)
	("Function"		. docbook-tag-Function)
	))

(setq internal-x-docbook-menu-group-g
      '("Group G tags"
	("GUIButton"		. docbook-tag-GUIButton)
	("GUIIcon"		. docbook-tag-GUIIcon)
	("GUILabel"		. docbook-tag-GUILabel)
	("GUIMenu"		. docbook-tag-GUIMenu)
	("GUIMenuItem"		. docbook-tag-GUIMenuItem)
	("GUISubmenu"		. docbook-tag-GUISubmenu)
	("GlossDef"		. docbook-tag-GlossDef)
	("GlossDiv"		. docbook-tag-GlossDiv)
	("GlossEntry"		. docbook-tag-GlossEntry)
	("GlossList"		. docbook-tag-GlossList)
	("GlossSee"		. docbook-tag-GlossSee)
	("GlossSeeAlso"		. docbook-tag-GlossSeeAlso)
	("GlossTerm"		. docbook-tag-GlossTerm)
	("Glossary"		. docbook-tag-Glossary)
	("Graphic"		. docbook-tag-Graphic)
	("GraphicCO"		. docbook-tag-GraphicCO)
	("Group"		. docbook-tag-Group)
	))

(setq internal-x-docbook-menu-group-h
      '("Group H tags"
	("Hardware"		. docbook-tag-Hardware)
	("Highlights"		. docbook-tag-Highlights)
	("Holder"		. docbook-tag-Holder)
	("Honorific"		. docbook-tag-Honorific)
	))

(setq internal-x-docbook-menu-group-i
      '("Group I tags"
	("ISBN"			. docbook-tag-ISBN)
	("ISSN"			. docbook-tag-ISSN)
	("ITermSet"		. docbook-tag-ITermSet)
	("ImageData"		. docbook-tag-ImageData)
	("ImageObject"		. docbook-tag-ImageObject)
	("ImageObjectCO"	. docbook-tag-ImageObjectCO)
	("Important"		. docbook-tag-Important)
	("Index"		. docbook-tag-Index)
	("IndexDiv"		. docbook-tag-IndexDiv)
	("IndexEntry"		. docbook-tag-IndexEntry)
	("IndexTerm"		. docbook-tag-IndexTerm)
	("InformalEquation"	. docbook-tag-InformalEquation)
	("InformalExample"	. docbook-tag-InformalExample)
	("InformalFigure"	. docbook-tag-InformalFigure)
	("InformalTable"	. docbook-tag-InformalTable)
	("InlineEquation"	. docbook-tag-InlineEquation)
	("InlineGraphic"	. docbook-tag-InlineGraphic)
	("InlineMediaObject"	. docbook-tag-InlineMediaObject)
	("Interface"		. docbook-tag-Interface)
	("InterfaceDefinition"	. docbook-tag-InterfaceDefinition)
	("InvPartNumber"	. docbook-tag-InvPartNumber)
	("IssueNum"		. docbook-tag-IssueNum)
	("ItemizedList"		. docbook-tag-ItemizedList)
	))

(setq internal-x-docbook-menu-group-j
      '("Group J tags"
	("JobTitle"		. docbook-tag-JobTitle)
	))

(setq internal-x-docbook-menu-group-k
      '("Group K tags"
	("KeyCap"		. docbook-tag-KeyCap)
	("KeyCode"		. docbook-tag-KeyCode)
	("KeyCombo"		. docbook-tag-KeyCombo)
	("KeySym"		. docbook-tag-KeySym)
	("Keyword"		. docbook-tag-Keyword)
	("KeywordSet"		. docbook-tag-KeywordSet)
	))

(setq internal-x-docbook-menu-group-l
      '("Group L tags"
	("LegalNotice"		. docbook-tag-LegalNotice)
	("LineAnnotation"	. docbook-tag-LineAnnotation)
	("Lineage"		. docbook-tag-Lineage)
	("Link"			. docbook-tag-Link)
	("ListItem"		. docbook-tag-ListItem)
	("Literal"		. docbook-tag-Literal)
	("LiteralLayout"	. docbook-tag-LiteralLayout)
	("LoT"			. docbook-tag-LoT)
	("LoTentry"		. docbook-tag-LoTentry)
	))

(setq internal-x-docbook-menu-group-m
      '("Group M tags"
	("ManVolNum"		. docbook-tag-ManVolNum)
	("Markup"		. docbook-tag-Markup)
	("MediaLabel"		. docbook-tag-MediaLabel)
	("MediaObject"		. docbook-tag-MediaObject)
	("MediaObjectCO"	. docbook-tag-MediaObjectCO)
	("Member"		. docbook-tag-Member)
	("MenuChoice"		. docbook-tag-MenuChoice)
	("ModeSpec"		. docbook-tag-ModeSpec)
	("MouseButton"		. docbook-tag-MouseButton)
	("Msg"			. docbook-tag-Msg)
	("MsgAud"		. docbook-tag-MsgAud)
	("MsgEntry"		. docbook-tag-MsgEntry)
	("MsgExplan"		. docbook-tag-MsgExplan)
	("MsgInfo"		. docbook-tag-MsgInfo)
	("MsgLevel"		. docbook-tag-MsgLevel)
	("MsgMain"		. docbook-tag-MsgMain)
	("MsgOrig"		. docbook-tag-MsgOrig)
	("MsgRel"		. docbook-tag-MsgRel)
	("MsgSet"		. docbook-tag-MsgSet)
	("MsgSub"		. docbook-tag-MsgSub)
	("MsgText"		. docbook-tag-MsgText)
	))

(setq internal-x-docbook-menu-group-n
      '("Group N tags"
	("Note"			. docbook-tag-Note)
	))

(setq internal-x-docbook-menu-group-o
      '("Group O tags"
	("OLink"		. docbook-tag-OLink)
	("ObjectInfo"		. docbook-tag-ObjectInfo)
	("Option"		. docbook-tag-Option)
	("Optional"		. docbook-tag-Optional)
	("OrderedList"		. docbook-tag-OrderedList)
	("OrgDiv"		. docbook-tag-OrgDiv)
	("OrgName"		. docbook-tag-OrgName)
	("OtherAddr"		. docbook-tag-OtherAddr)
	("OtherCredit"		. docbook-tag-OtherCredit)
	("OtherName"		. docbook-tag-OtherName)
	))

(setq internal-x-docbook-menu-group-p
      '("Group P tags"
	("POB"			. docbook-tag-POB)
	("PageNums"		. docbook-tag-PageNums)
	("Para"			. docbook-tag-Para)
	("ParamDef"		. docbook-tag-ParamDef)
	("Parameter"		. docbook-tag-Parameter)
	("Part"			. docbook-tag-Part)
	("PartIntro"		. docbook-tag-PartIntro)
	("Phone"		. docbook-tag-Phone)
	("Phrase"		. docbook-tag-Phrase)
	("Postcode"		. docbook-tag-Postcode)
	("Preface"		. docbook-tag-Preface)
	("Primary"		. docbook-tag-Primary)
	("PrimaryIE"		. docbook-tag-PrimaryIE)
	("PrintHistory"		. docbook-tag-PrintHistory)
	("Procedure"		. docbook-tag-Procedure)
	("ProductName"		. docbook-tag-ProductName)
	("ProductNumber"	. docbook-tag-ProductNumber)
	("ProgramListing"	. docbook-tag-ProgramListing)
	("ProgramListingCO"	. docbook-tag-ProgramListingCO)
	("Prompt"		. docbook-tag-Prompt)
	("Property"		. docbook-tag-Property)
	("PubDate"		. docbook-tag-PubDate)
	("Publisher"		. docbook-tag-Publisher)
	("PublisherName"	. docbook-tag-PublisherName)
	("PubsNumber"		. docbook-tag-PubsNumber)
	))

(setq internal-x-docbook-menu-group-q
      '("Group Q tags"
	("QandADiv"		. docbook-tag-QandADiv)
	("QandAEntry"		. docbook-tag-QandAEntry)
	("QandASet"		. docbook-tag-QandASet)
	("Question"		. docbook-tag-Question)
	("Quote"		. docbook-tag-Quote)
	))

(setq internal-x-docbook-menu-group-r
      '("Group R tags"
	("RefClass"		. docbook-tag-RefClass)
	("RefDescriptor"	. docbook-tag-RefDescriptor)
	("RefEntry"		. docbook-tag-RefEntry)
	("RefEntryTitle"	. docbook-tag-RefEntryTitle)
	("RefMeta"		. docbook-tag-RefMeta)
	("RefMiscInfo"		. docbook-tag-RefMiscInfo)
	("RefName"		. docbook-tag-RefName)
	("RefNameDiv"		. docbook-tag-RefNameDiv)
	("RefPurpose"		. docbook-tag-RefPurpose)
	("RefSect1"		. docbook-tag-RefSect1)
	("RefSect1Info"		. docbook-tag-RefSect1Info)
	("RefSect2"		. docbook-tag-RefSect2)
	("RefSect2Info"		. docbook-tag-RefSect2Info)
	("RefSect3"		. docbook-tag-RefSect3)
	("RefSect3Info"		. docbook-tag-RefSect3Info)
	("RefSynopsisDiv"	. docbook-tag-RefSynopsisDiv)
	("RefSynopsisDivInfo"	. docbook-tag-RefSynopsisDivInfo)
	("Reference"		. docbook-tag-Reference)
	("ReleaseInfo"		. docbook-tag-ReleaseInfo)
	("Replaceable"		. docbook-tag-Replaceable)
	("ReturnValue"		. docbook-tag-ReturnValue)
	("RevHistory"		. docbook-tag-RevHistory)
	("RevNumber"		. docbook-tag-RevNumber)
	("RevRemark"		. docbook-tag-RevRemark)
	("Revision"		. docbook-tag-Revision)
	("Row"			. docbook-tag-Row)
	))

(setq internal-x-docbook-menu-group-s
      '("Group S tags"
	("SBR"			. docbook-tag-SBR)
	("SGMLTag"		. docbook-tag-SGMLTag)
	("Screen"		. docbook-tag-Screen)
	("ScreenCO"		. docbook-tag-ScreenCO)
	("ScreenInfo"		. docbook-tag-ScreenInfo)
	("ScreenShot"		. docbook-tag-ScreenShot)
	("Secondary"		. docbook-tag-Secondary)
	("SecondaryIE"		. docbook-tag-SecondaryIE)
	("Sect1"		. docbook-tag-Sect1)
	("Sect1Info"		. docbook-tag-Sect1Info)
	("Sect2"		. docbook-tag-Sect2)
	("Sect2Info"		. docbook-tag-Sect2Info)
	("Sect3"		. docbook-tag-Sect3)
	("Sect3Info"		. docbook-tag-Sect3Info)
	("Sect4"		. docbook-tag-Sect4)
	("Sect4Info"		. docbook-tag-Sect4Info)
	("Sect5"		. docbook-tag-Sect5)
	("Sect5Info"		. docbook-tag-Sect5Info)
	("Section"		. docbook-tag-Section)
	("SectionInfo"		. docbook-tag-SectionInfo)
	("See"			. docbook-tag-See)
	("SeeAlso"		. docbook-tag-SeeAlso)
	("SeeAlsoIE"		. docbook-tag-SeeAlsoIE)
	("SeeIE"		. docbook-tag-SeeIE)
	("Seg"			. docbook-tag-Seg)
	("SegListItem"		. docbook-tag-SegListItem)
	("SegTitle"		. docbook-tag-SegTitle)
	("SegmentedList"	. docbook-tag-SegmentedList)
	("SeriesInfo"		. docbook-tag-SeriesInfo)
	("SeriesVolNums"	. docbook-tag-SeriesVolNums)
	("Set"			. docbook-tag-Set)
	("SetIndex"		. docbook-tag-SetIndex)
	("SetInfo"		. docbook-tag-SetInfo)
	("ShortAffil"		. docbook-tag-ShortAffil)
	("Shortcut"		. docbook-tag-Shortcut)
	("Sidebar"		. docbook-tag-Sidebar)
	("SimPara"		. docbook-tag-SimPara)
	("SimpleList"		. docbook-tag-SimpleList)
	("SimpleSect"		. docbook-tag-SimpleSect)
	("SpanSpec"		. docbook-tag-SpanSpec)
	("State"		. docbook-tag-State)
	("Step"			. docbook-tag-Step)
	("Street"		. docbook-tag-Street)
	("StructField"		. docbook-tag-StructField)
	("StructName"		. docbook-tag-StructName)
	("SubSteps"		. docbook-tag-SubSteps)
	("Subject"		. docbook-tag-Subject)
	("SubjectSet"		. docbook-tag-SubjectSet)
	("SubjectTerm"		. docbook-tag-SubjectTerm)
	("Subscript"		. docbook-tag-Subscript)
	("Subtitle"		. docbook-tag-Subtitle)
	("Superscript"		. docbook-tag-Superscript)
	("Surname"		. docbook-tag-Surname)
	("Symbol"		. docbook-tag-Symbol)
	("SynopFragment"	. docbook-tag-SynopFragment)
	("SynopFragmentRef"	. docbook-tag-SynopFragmentRef)
	("Synopsis"		. docbook-tag-Synopsis)
	("SystemItem"		. docbook-tag-SystemItem)
	))

(setq internal-x-docbook-menu-group-t
      '("Group T tags"
	("TBody"		. docbook-tag-TBody)
	("TFoot"		. docbook-tag-TFoot)
	("TGroup"		. docbook-tag-TGroup)
	("THead"		. docbook-tag-THead)
	("Table"		. docbook-tag-Table)
	("Term"			. docbook-tag-Term)
	("Tertiary"		. docbook-tag-Tertiary)
	("TertiaryIE"		. docbook-tag-TertiaryIE)
	("TextObject"		. docbook-tag-TextObject)
	("Tip"			. docbook-tag-Tip)
	("Title"		. docbook-tag-Title)
	("TitleAbbrev"		. docbook-tag-TitleAbbrev)
	("ToC"			. docbook-tag-ToC)
	("ToCback"		. docbook-tag-ToCback)
	("ToCchap"		. docbook-tag-ToCchap)
	("ToCentry"		. docbook-tag-ToCentry)
	("ToCfront"		. docbook-tag-ToCfront)
	("ToClevel1"		. docbook-tag-ToClevel1)
	("ToClevel2"		. docbook-tag-ToClevel2)
	("ToClevel3"		. docbook-tag-ToClevel3)
	("ToClevel4"		. docbook-tag-ToClevel4)
	("ToClevel5"		. docbook-tag-ToClevel5)
	("ToCpart"		. docbook-tag-ToCpart)
	("Token"		. docbook-tag-Token)
	("Trademark"		. docbook-tag-Trademark)
	("Type"			. docbook-tag-Type)
	))

(setq internal-x-docbook-menu-group-u
      '("Group U tags"
	("ULink"		. docbook-tag-ULink)
	("UserInput"		. docbook-tag-UserInput)
	))

(setq internal-x-docbook-menu-group-v
      '("Group V tags"
	("VarArgs"		. docbook-tag-VarArgs)
	("VarListEntry"		. docbook-tag-VarListEntry)
	("VarName"		. docbook-tag-VarName)
	("VariableList"		. docbook-tag-VariableList)
	("VideoData"		. docbook-tag-VideoData)
	("VideoObject"		. docbook-tag-VideoObject)
	("Void"			. docbook-tag-Void)
	("VolumeNum"		. docbook-tag-VolumeNum)
	))

(setq internal-x-docbook-menu-group-w
      '("Group W tags"
	("Warning"		. docbook-tag-Warning)
	("WordAsWord"		. docbook-tag-WordAsWord)
	))

(setq internal-x-docbook-menu-group-x
      '("Group X tags"
	("XRef"			. docbook-tag-XRef)
	))

(setq internal-x-docbook-menu-group-y
      '("Group Y tags"
	("Year"			. docbook-tag-Year)
	))

(setq internal-x-docbook-menu-group-z
      '("Group Z tags"
	nil				; No Z tags in DocBook/XML
	))

(setq internal-x-docbook-menu-a
      (`("docbook tag submenu A"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-a))))

(setq internal-x-docbook-menu-b
      (`("docbook tag submenu B"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-b))))

(setq internal-x-docbook-menu-c
      (`("docbook tag submenu C"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-c))))

(setq internal-x-docbook-menu-d
      (`("docbook tag submenu D"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-d))))

(setq internal-x-docbook-menu-e
      (`("docbook tag submenu E"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-e))))

(setq internal-x-docbook-menu-f
      (`("docbook tag submenu F"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-f))))

(setq internal-x-docbook-menu-g
      (`("docbook tag submenu G"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-g))))

(setq internal-x-docbook-menu-h
      (`("docbook tag submenu H"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-h))))

(setq internal-x-docbook-menu-i
      (`("docbook tag submenu I"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-i))))

(setq internal-x-docbook-menu-j
      (`("docbook tag submenu J"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-j))))

(setq internal-x-docbook-menu-k
      (`("docbook tag submenu K"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-k))))

(setq internal-x-docbook-menu-l
      (`("docbook tag submenu L"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-l))))

(setq internal-x-docbook-menu-m
      (`("docbook tag submenu M"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-m))))

(setq internal-x-docbook-menu-n
      (`("docbook tag submenu N"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-n))))

(setq internal-x-docbook-menu-o
      (`("docbook tag submenu O"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-o))))

(setq internal-x-docbook-menu-p
      (`("docbook tag submenu P"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-p))))

(setq internal-x-docbook-menu-q
      (`("docbook tag submenu Q"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-q))))

(setq internal-x-docbook-menu-q
      (`("docbook tag submenu Q"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-q))))

(setq internal-x-docbook-menu-r
      (`("docbook tag submenu R"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-r))))

(setq internal-x-docbook-menu-s
      (`("docbook tag submenu R"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-s))))

(setq internal-x-docbook-menu-t
      (`("docbook tag submenu T"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-t))))

(setq internal-x-docbook-menu-u
      (`("docbook tag submenu U"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-u))))

(setq internal-x-docbook-menu-v
      (`("docbook tag submenu V"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-v))))

(setq internal-x-docbook-menu-w
      (`("docbook tag submenu W"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-w))))

(setq internal-x-docbook-menu-x
      (`("docbook tag submenu X"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-x))))

(setq internal-x-docbook-menu-y
      (`("docbook tag submenu Y"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-y))))

(setq internal-x-docbook-menu-z
      (`("docbook tag submenu Z"   ;this menu title is never displayed
	 (, internal-x-docbook-menu-group-z))))

(defun docbook-menu-popup-menu (func)
  (interactive)
  (let ((selection (x-popup-menu last-nonmenu-event func)))
    (if selection
	(call-interactively selection))))

(defun docbook-menu-help-a (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-a))

(defun docbook-menu-help-b (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-b))

(defun docbook-menu-help-c (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-c))

(defun docbook-menu-help-d (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-d))

(defun docbook-menu-help-e (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-e))

(defun docbook-menu-help-f (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-f))

(defun docbook-menu-help-g (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-g))

(defun docbook-menu-help-h (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-h))

(defun docbook-menu-help-i (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-i))

(defun docbook-menu-help-j (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-j))

(defun docbook-menu-help-k (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-k))

(defun docbook-menu-help-l (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-l))

(defun docbook-menu-help-m (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-m))

(defun docbook-menu-help-n (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-n))

(defun docbook-menu-help-o (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-o))

(defun docbook-menu-help-p (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-p))

(defun docbook-menu-help-q (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-q))

(defun docbook-menu-help-r (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-r))

(defun docbook-menu-help-s (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-s))

(defun docbook-menu-help-t (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-t))

(defun docbook-menu-help-u (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-u))

(defun docbook-menu-help-v (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-v))

(defun docbook-menu-help-w (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-w))

(defun docbook-menu-help-x (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-x))

(defun docbook-menu-help-y (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-y))

(defun docbook-menu-help-z (&optional arg)
  (interactive)
  (docbook-menu-popup-menu internal-x-docbook-menu-z))

(defun docbook-help-Abbrev (&optional arg)
  (interactive)
  (message "An abbreviation, especially one followed by a period")
  )