Resorted; add some missing Morohashi's Daikanwa characters; add
[chise/xemacs-chise.git] / info / lispref.info-41
index a0cdfc2..c4ba9dd 100644 (file)
@@ -50,6 +50,805 @@ may be included in a translation approved by the Free Software
 Foundation instead of in the original English.
 
 \1f
+File: lispref.info,  Node: Input Modes,  Next: Translating Input,  Up: Terminal Input
+
+Input Modes
+-----------
+
+ - Function: set-input-mode interrupt flow meta quit-char
+     This function sets the mode for reading keyboard input.  If
+     INTERRUPT is non-null, then XEmacs uses input interrupts.  If it is
+     `nil', then it uses CBREAK mode.  When XEmacs communicates
+     directly with X, it ignores this argument and uses interrupts if
+     that is the way it knows how to communicate.
+
+     If FLOW is non-`nil', then XEmacs uses XON/XOFF (`C-q', `C-s')
+     flow control for output to the terminal.  This has no effect except
+     in CBREAK mode.  *Note Flow Control::.
+
+     The default setting is system dependent.  Some systems always use
+     CBREAK mode regardless of what is specified.
+
+     The argument META controls support for input character codes above
+     127.  If META is `t', XEmacs converts characters with the 8th bit
+     set into Meta characters.  If META is `nil', XEmacs disregards the
+     8th bit; this is necessary when the terminal uses it as a parity
+     bit.  If META is neither `t' nor `nil', XEmacs uses all 8 bits of
+     input unchanged.  This is good for terminals using European 8-bit
+     character sets.
+
+     If QUIT-CHAR is non-`nil', it specifies the character to use for
+     quitting.  Normally this character is `C-g'.  *Note Quitting::.
+
+   The `current-input-mode' function returns the input mode settings
+XEmacs is currently using.
+
+ - Function: current-input-mode
+     This function returns current mode for reading keyboard input.  It
+     returns a list, corresponding to the arguments of `set-input-mode',
+     of the form `(INTERRUPT FLOW META QUIT)' in which:
+    INTERRUPT
+          is non-`nil' when XEmacs is using interrupt-driven input.  If
+          `nil', Emacs is using CBREAK mode.
+
+    FLOW
+          is non-`nil' if XEmacs uses XON/XOFF (`C-q', `C-s') flow
+          control for output to the terminal.  This value has no effect
+          unless INTERRUPT is non-`nil'.
+
+    META
+          is `t' if XEmacs treats the eighth bit of input characters as
+          the meta bit; `nil' means XEmacs clears the eighth bit of
+          every input character; any other value means XEmacs uses all
+          eight bits as the basic character code.
+
+    QUIT
+          is the character XEmacs currently uses for quitting, usually
+          `C-g'.
+
+\1f
+File: lispref.info,  Node: Translating Input,  Next: Recording Input,  Prev: Input Modes,  Up: Terminal Input
+
+Translating Input Events
+------------------------
+
+   This section describes features for translating input events into
+other input events before they become part of key sequences.
+
+ - Variable: function-key-map
+     This variable holds a keymap that describes the character sequences
+     sent by function keys on an ordinary character terminal.  This
+     keymap uses the same data structure as other keymaps, but is used
+     differently: it specifies translations to make while reading
+     events.
+
+     If `function-key-map' "binds" a key sequence K to a vector V, then
+     when K appears as a subsequence _anywhere_ in a key sequence, it
+     is replaced with the events in V.
+
+     For example, VT100 terminals send `<ESC> O P' when the keypad PF1
+     key is pressed.  Therefore, we want XEmacs to translate that
+     sequence of events into the single event `pf1'.  We accomplish
+     this by "binding" `<ESC> O P' to `[pf1]' in `function-key-map',
+     when using a VT100.
+
+     Thus, typing `C-c <PF1>' sends the character sequence `C-c <ESC> O
+     P'; later the function `read-key-sequence' translates this back
+     into `C-c <PF1>', which it returns as the vector `[?\C-c pf1]'.
+
+     Entries in `function-key-map' are ignored if they conflict with
+     bindings made in the minor mode, local, or global keymaps.  The
+     intent is that the character sequences that function keys send
+     should not have command bindings in their own right.
+
+     The value of `function-key-map' is usually set up automatically
+     according to the terminal's Terminfo or Termcap entry, but
+     sometimes those need help from terminal-specific Lisp files.
+     XEmacs comes with terminal-specific files for many common
+     terminals; their main purpose is to make entries in
+     `function-key-map' beyond those that can be deduced from Termcap
+     and Terminfo.  *Note Terminal-Specific::.
+
+     Emacs versions 18 and earlier used totally different means of
+     detecting the character sequences that represent function keys.
+
+ - Variable: key-translation-map
+     This variable is another keymap used just like `function-key-map'
+     to translate input events into other events.  It differs from
+     `function-key-map' in two ways:
+
+        * `key-translation-map' goes to work after `function-key-map' is
+          finished; it receives the results of translation by
+          `function-key-map'.
+
+        * `key-translation-map' overrides actual key bindings.
+
+     The intent of `key-translation-map' is for users to map one
+     character set to another, including ordinary characters normally
+     bound to `self-insert-command'.
+
+   You can use `function-key-map' or `key-translation-map' for more
+than simple aliases, by using a function, instead of a key sequence, as
+the "translation" of a key.  Then this function is called to compute
+the translation of that key.
+
+   The key translation function receives one argument, which is the
+prompt that was specified in `read-key-sequence'--or `nil' if the key
+sequence is being read by the editor command loop.  In most cases you
+can ignore the prompt value.
+
+   If the function reads input itself, it can have the effect of
+altering the event that follows.  For example, here's how to define
+`C-c h' to turn the character that follows into a Hyper character:
+
+     (defun hyperify (prompt)
+       (let ((e (read-event)))
+         (vector (if (numberp e)
+                     (logior (lsh 1 20) e)
+                   (if (memq 'hyper (event-modifiers e))
+                       e
+                     (add-event-modifier "H-" e))))))
+     
+     (defun add-event-modifier (string e)
+       (let ((symbol (if (symbolp e) e (car e))))
+         (setq symbol (intern (concat string
+                                      (symbol-name symbol))))
+         (if (symbolp e)
+             symbol
+           (cons symbol (cdr e)))))
+     
+     (define-key function-key-map "\C-ch" 'hyperify)
+
+   The `iso-transl' library uses this feature to provide a way of
+inputting non-ASCII Latin-1 characters.
+
+\1f
+File: lispref.info,  Node: Recording Input,  Prev: Translating Input,  Up: Terminal Input
+
+Recording Input
+---------------
+
+ - Function: recent-keys &optional number
+     This function returns a vector containing recent input events from
+     the keyboard or mouse.  By default, 100 events are recorded, which
+     is how many `recent-keys' returns.
+
+     All input events are included, whether or not they were used as
+     parts of key sequences.  Thus, you always get the last 100 inputs,
+     not counting keyboard macros.  (Events from keyboard macros are
+     excluded because they are less interesting for debugging; it
+     should be enough to see the events that invoked the macros.)
+
+     If NUMBER is specified, not more than NUMBER events will be
+     returned.  You may change the number of stored events using
+     `set-recent-keys-ring-size'.
+
+ - Function: recent-keys-ring-size
+     This function returns the number of recent events stored
+     internally.  This is also the maximum number of events
+     `recent-keys' can return.  By default, 100 events are stored.
+
+ - Function: set-recent-keys-ring-size size
+     This function changes the number of events stored by XEmacs and
+     returned by `recent-keys'.
+
+     For example, `(set-recent-keys-ring-size 250)' will make XEmacs
+     remember last 250 events and will make `recent-keys' return last
+     250 events by default.
+
+ - Command: open-dribble-file filename
+     This function opens a "dribble file" named FILENAME.  When a
+     dribble file is open, each input event from the keyboard or mouse
+     (but not those from keyboard macros) is written in that file.  A
+     non-character event is expressed using its printed representation
+     surrounded by `<...>'.
+
+     You close the dribble file by calling this function with an
+     argument of `nil'.
+
+     This function is normally used to record the input necessary to
+     trigger an XEmacs bug, for the sake of a bug report.
+
+          (open-dribble-file "~/dribble")
+               => nil
+
+   See also the `open-termscript' function (*note Terminal Output::).
+
+\1f
+File: lispref.info,  Node: Terminal Output,  Next: Flow Control,  Prev: Terminal Input,  Up: System Interface
+
+Terminal Output
+===============
+
+   The terminal output functions send output to the terminal or keep
+track of output sent to the terminal.  The function `device-baud-rate'
+tells you what XEmacs thinks is the output speed of the terminal.
+
+ - Function: device-baud-rate &optional device
+     This function's value is the output speed of the terminal
+     associated with DEVICE, as far as XEmacs knows.  DEVICE defaults
+     to the selected device (usually the only device) if omitted.
+     Changing this value does not change the speed of actual data
+     transmission, but the value is used for calculations such as
+     padding.  This value has no effect for window-system devices.
+     (This is different in FSF Emacs, where the baud rate also affects
+     decisions about whether to scroll part of the screen or repaint,
+     even when using a window system.)
+
+     The value is measured in bits per second.
+
+   XEmacs attempts to automatically initialize the baud rate by querying
+the terminal.  If you are running across a network, however, and
+different parts of the network work are at different baud rates, the
+value returned by XEmacs may be different from the value used by your
+local terminal.  Some network protocols communicate the local terminal
+speed to the remote machine, so that XEmacs and other programs can get
+the proper value, but others do not.  If XEmacs has the wrong value, it
+makes decisions that are less than optimal.  To fix the problem, use
+`set-device-baud-rate'.
+
+ - Function: set-device-baud-rate &optional device
+     This function sets the output speed of DEVICE.  See
+     `device-baud-rate'.  DEVICE defaults to the selected device
+     (usually the only device) if omitted.
+
+ - Function: send-string-to-terminal char-or-string &optional stdout-p
+          device
+     This function sends CHAR-OR-STRING to the terminal without
+     alteration.  Control characters in CHAR-OR-STRING have
+     terminal-dependent effects.
+
+     If DEVICE is `nil', this function writes to XEmacs's stderr, or to
+     stdout if STDOUT-P is non-`nil'.  Otherwise, DEVICE should be a
+     tty or stream device, and the function writes to the device's
+     normal or error output, according to STDOUT-P.
+
+     One use of this function is to define function keys on terminals
+     that have downloadable function key definitions.  For example,
+     this is how on certain terminals to define function key 4 to move
+     forward four characters (by transmitting the characters `C-u C-f'
+     to the computer):
+
+          (send-string-to-terminal "\eF4\^U\^F")
+               => nil
+
+ - Command: open-termscript filename
+     This function is used to open a "termscript file" that will record
+     all the characters sent by XEmacs to the terminal. (If there are
+     multiple tty or stream devices, all characters sent to all such
+     devices are recorded.) The function returns `nil'.  Termscript
+     files are useful for investigating problems where XEmacs garbles
+     the screen, problems that are due to incorrect Termcap entries or
+     to undesirable settings of terminal options more often than to
+     actual XEmacs bugs.  Once you are certain which characters were
+     actually output, you can determine reliably whether they
+     correspond to the Termcap specifications in use.
+
+     A `nil' value for FILENAME stops recording terminal output.
+
+     See also `open-dribble-file' in *Note Terminal Input::.
+
+          (open-termscript "../junk/termscript")
+               => nil
+
+\1f
+File: lispref.info,  Node: Flow Control,  Next: Batch Mode,  Prev: Terminal Output,  Up: System Interface
+
+Flow Control
+============
+
+   This section attempts to answer the question "Why does XEmacs choose
+to use flow-control characters in its command character set?"  For a
+second view on this issue, read the comments on flow control in the
+`emacs/INSTALL' file from the distribution; for help with Termcap
+entries and DEC terminal concentrators, see `emacs/etc/TERMS'.
+
+   At one time, most terminals did not need flow control, and none used
+`C-s' and `C-q' for flow control.  Therefore, the choice of `C-s' and
+`C-q' as command characters was uncontroversial.  XEmacs, for economy
+of keystrokes and portability, used nearly all the ASCII control
+characters, with mnemonic meanings when possible; thus, `C-s' for
+search and `C-q' for quote.
+
+   Later, some terminals were introduced which required these characters
+for flow control.  They were not very good terminals for full-screen
+editing, so XEmacs maintainers did not pay attention.  In later years,
+flow control with `C-s' and `C-q' became widespread among terminals,
+but by this time it was usually an option.  And the majority of users,
+who can turn flow control off, were unwilling to switch to less
+mnemonic key bindings for the sake of flow control.
+
+   So which usage is "right", XEmacs's or that of some terminal and
+concentrator manufacturers?  This question has no simple answer.
+
+   One reason why we are reluctant to cater to the problems caused by
+`C-s' and `C-q' is that they are gratuitous.  There are other
+techniques (albeit less common in practice) for flow control that
+preserve transparency of the character stream.  Note also that their use
+for flow control is not an official standard.  Interestingly, on the
+model 33 teletype with a paper tape punch (which is very old), `C-s'
+and `C-q' were sent by the computer to turn the punch on and off!
+
+   As X servers and other window systems replace character-only
+terminals, this problem is gradually being cured.  For the mean time,
+XEmacs provides a convenient way of enabling flow control if you want
+it: call the function `enable-flow-control'.
+
+ - Function: enable-flow-control
+     This function enables use of `C-s' and `C-q' for output flow
+     control, and provides the characters `C-\' and `C-^' as aliases
+     for them using `keyboard-translate-table' (*note Translating
+     Input::).
+
+   You can use the function `enable-flow-control-on' in your `.emacs'
+file to enable flow control automatically on certain terminal types.
+
+ - Function: enable-flow-control-on &rest termtypes
+     This function enables flow control, and the aliases `C-\' and
+     `C-^', if the terminal type is one of TERMTYPES.  For example:
+
+          (enable-flow-control-on "vt200" "vt300" "vt101" "vt131")
+
+   Here is how `enable-flow-control' does its job:
+
+  1. It sets CBREAK mode for terminal input, and tells the operating
+     system to handle flow control, with `(set-input-mode nil t)'.
+
+  2. It sets up `keyboard-translate-table' to translate `C-\' and `C-^'
+     into `C-s' and `C-q'.  Except at its very lowest level, XEmacs
+     never knows that the characters typed were anything but `C-s' and
+     `C-q', so you can in effect type them as `C-\' and `C-^' even when
+     they are input for other commands.  *Note Translating Input::.
+
+   If the terminal is the source of the flow control characters, then
+once you enable kernel flow control handling, you probably can make do
+with less padding than normal for that terminal.  You can reduce the
+amount of padding by customizing the Termcap entry.  You can also
+reduce it by setting `baud-rate' to a smaller value so that XEmacs uses
+a smaller speed when calculating the padding needed.  *Note Terminal
+Output::.
+
+\1f
+File: lispref.info,  Node: Batch Mode,  Prev: Flow Control,  Up: System Interface
+
+Batch Mode
+==========
+
+   The command line option `-batch' causes XEmacs to run
+noninteractively.  In this mode, XEmacs does not read commands from the
+terminal, it does not alter the terminal modes, and it does not expect
+to be outputting to an erasable screen.  The idea is that you specify
+Lisp programs to run; when they are finished, XEmacs should exit.  The
+way to specify the programs to run is with `-l FILE', which loads the
+library named FILE, and `-f FUNCTION', which calls FUNCTION with no
+arguments.
+
+   Any Lisp program output that would normally go to the echo area,
+either using `message' or using `prin1', etc., with `t' as the stream,
+goes instead to XEmacs's standard error descriptor when in batch mode.
+Thus, XEmacs behaves much like a noninteractive application program.
+(The echo area output that XEmacs itself normally generates, such as
+command echoing, is suppressed entirely.)
+
+ - Function: noninteractive
+     This function returns non-`nil' when XEmacs is running in batch
+     mode.
+
+ - Variable: noninteractive
+     This variable is non-`nil' when XEmacs is running in batch mode.
+     Setting this variable to `nil', however, will not change whether
+     XEmacs is running in batch mode, and will not change the return
+     value of the `noninteractive' function.
+
+\1f
+File: lispref.info,  Node: X-Windows,  Next: ToolTalk Support,  Prev: System Interface,  Up: Top
+
+Functions Specific to the X Window System
+*****************************************
+
+   XEmacs provides the concept of "devices", which generalizes
+connections to an X server, a TTY device, etc.  Most information about
+an X server that XEmacs is connected to can be determined through
+general console and device functions.  *Note Consoles and Devices::.
+However, there are some features of the X Window System that do not
+generalize well, and they are covered specially here.
+
+* Menu:
+
+* X Selections::                Transferring text to and from other X clients.
+* X Server::                    Information about the X server connected to
+                                  a particular device.
+* X Miscellaneous::             Other X-specific functions and variables.
+
+\1f
+File: lispref.info,  Node: X Selections,  Next: X Server,  Up: X-Windows
+
+X Selections
+============
+
+   The X server records a set of "selections" which permit transfer of
+data between application programs.  The various selections are
+distinguished by "selection types", represented in XEmacs by symbols.
+X clients including XEmacs can read or set the selection for any given
+type.
+
+ - Function: x-own-selection data &optional type
+     This function sets a "selection" in the X server.  It takes two
+     arguments: a value, DATA, and the selection type TYPE to assign it
+     to.  DATA may be a string, a cons of two markers, or an extent.
+     In the latter cases, the selection is considered to be the text
+     between the markers, or between the extent's endpoints.
+
+     Each possible TYPE has its own selection value, which changes
+     independently.  The usual values of TYPE are `PRIMARY' and
+     `SECONDARY'; these are symbols with upper-case names, in accord
+     with X Windows conventions.  The default is `PRIMARY'.
+
+     (In FSF Emacs, this function is called `x-set-selection' and takes
+     different arguments.)
+
+ - Function: x-get-selection
+     This function accesses selections set up by XEmacs or by other X
+     clients.  It returns the value of the current primary selection.
+
+ - Function: x-disown-selection &optional secondary-p
+     Assuming we own the selection, this function disowns it.  If
+     SECONDARY-P is non-`nil', the secondary selection instead of the
+     primary selection is discarded.
+
+   The X server also has a set of numbered "cut buffers" which can
+store text or other data being moved between applications.  Cut buffers
+are considered obsolete, but XEmacs supports them for the sake of X
+clients that still use them.
+
+ - Function: x-get-cutbuffer &optional n
+     This function returns the contents of cut buffer number N. (This
+     function is called `x-get-cut-buffer' in FSF Emacs.)
+
+ - Function: x-store-cutbuffer string
+     This function stores STRING into the first cut buffer (cut buffer
+     0), moving the other values down through the series of cut buffers,
+     kill-ring-style. (This function is called `x-set-cut-buffer' in FSF
+     Emacs.)
+
+\1f
+File: lispref.info,  Node: X Server,  Next: X Miscellaneous,  Prev: X Selections,  Up: X-Windows
+
+X Server
+========
+
+   This section describes how to access and change the overall status of
+the X server XEmacs is using.
+
+* Menu:
+
+* Resources::                   Getting resource values from the server.
+* Server Data::                 Getting info about the X server.
+* Grabs::                       Restricting access to the server by other apps.
+
+\1f
+File: lispref.info,  Node: Resources,  Next: Server Data,  Up: X Server
+
+Resources
+---------
+
+ - Function: default-x-device
+     This function return the default X device for resourcing.  This is
+     the first-created X device that still exists.
+
+ - Function: x-get-resource name class type &optional locale device
+          noerror
+     This function retrieves a resource value from the X resource
+     manager.
+
+        * The first arg is the name of the resource to retrieve, such as
+          `"font"'.
+
+        * The second arg is the class of the resource to retrieve, like
+          `"Font"'.
+
+        * The third arg should be one of the symbols `string',
+          `integer', `natnum', or `boolean', specifying the type of
+          object that the database is searched for.
+
+        * The fourth arg is the locale to search for the resources on,
+          and can currently be a a buffer, a frame, a device, or the
+          symbol `global'.  If omitted, it defaults to `global'.
+
+        * The fifth arg is the device to search for the resources on.
+          (The resource database for a particular device is constructed
+          by combining non-device- specific resources such any
+          command-line resources specified and any app-defaults files
+          found [or the fallback resources supplied by XEmacs, if no
+          app-defaults file is found] with device-specific resources
+          such as those supplied using `xrdb'.) If omitted, it defaults
+          to the device of LOCALE, if a device can be derived (i.e. if
+          LOCALE is a frame or device), and otherwise defaults to the
+          value of `default-x-device'.
+
+        * The sixth arg NOERROR, if non-`nil', means do not signal an
+          error if a bogus resource specification was retrieved (e.g.
+          if a non-integer was given when an integer was requested).
+          In this case, a warning is issued instead.
+
+     The resource names passed to this function are looked up relative
+     to the locale.
+
+     If you want to search for a subresource, you just need to specify
+     the resource levels in NAME and CLASS.  For example, NAME could be
+     `"modeline.attributeFont"', and CLASS `"Face.AttributeFont"'.
+
+     Specifically,
+
+       1. If LOCALE is a buffer, a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string SOME-BUFFER)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.buffer.BUFFER-NAME.foreground",
+                                       "Emacs.EmacsLocaleType.EmacsBuffer.Foreground",
+                                       "String");'
+
+       2. If LOCALE is a frame, a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string SOME-FRAME)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.frame.FRAME-NAME.foreground",
+                                       "Emacs.EmacsLocaleType.EmacsFrame.Foreground",
+                                       "String");'
+
+       3. If LOCALE is a device, a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string SOME-DEVICE)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.device.DEVICE-NAME.foreground",
+                                       "Emacs.EmacsLocaleType.EmacsDevice.Foreground",
+                                       "String");'
+
+       4. If LOCALE is the symbol `global', a call
+
+                   `(x-get-resource "foreground" "Foreground" 'string 'global)'
+
+          is an interface to a C call something like
+
+                   `XrmGetResource (db, "xemacs.foreground",
+                                       "Emacs.Foreground",
+                                       "String");'
+
+     Note that for `global', no prefix is added other than that of the
+     application itself; thus, you can use this locale to retrieve
+     arbitrary application resources, if you really want to.
+
+     The returned value of this function is `nil' if the queried
+     resource is not found.  If TYPE is `string', a string is returned,
+     and if it is `integer', an integer is returned.  If TYPE is
+     `boolean', then the returned value is the list `(t)' for true,
+     `(nil)' for false, and is `nil' to mean "unspecified".
+
+ - Function: x-put-resource resource-line &optional device
+     This function adds a resource to the resource database for DEVICE.
+     RESOURCE-LINE specifies the resource to add and should be a
+     standard resource specification.
+
+ - Variable: x-emacs-application-class
+     This variable holds The X application class of the XEmacs process.
+     This controls, among other things, the name of the "app-defaults"
+     file that XEmacs will use.  For changes to this variable to take
+     effect, they must be made before the connection to the X server is
+     initialized, that is, this variable may only be changed before
+     XEmacs is dumped, or by setting it in the file
+     `lisp/term/x-win.el'.
+
+     By default, this variable is nil at startup.  When the connection
+     to the X server is first initialized, the X resource database will
+     be consulted and the value will be set according to whether any
+     resources are found for the application class "XEmacs".
+
+\1f
+File: lispref.info,  Node: Server Data,  Next: Grabs,  Prev: Resources,  Up: X Server
+
+Data about the X Server
+-----------------------
+
+   This section describes functions and a variable that you can use to
+get information about the capabilities and origin of the X server
+corresponding to a particular device.  The device argument is generally
+optional and defaults to the selected device.
+
+ - Function: x-server-version &optional device
+     This function returns the list of version numbers of the X server
+     DEVICE is on.  The returned value is a list of three integers: the
+     major and minor version numbers of the X protocol in use, and the
+     vendor-specific release number.
+
+ - Function: x-server-vendor &optional device
+     This function returns the vendor supporting the X server DEVICE is
+     on.
+
+ - Function: x-display-visual-class &optional device
+     This function returns the visual class of the display DEVICE is
+     on.  The value is one of the symbols `static-gray', `gray-scale',
+     `static-color', `pseudo-color', `true-color', and `direct-color'.
+     (Note that this is different from previous versions of XEmacs,
+     which returned `StaticGray', `GrayScale', etc.)
+
+\1f
+File: lispref.info,  Node: Grabs,  Prev: Server Data,  Up: X Server
+
+Restricting Access to the Server by Other Apps
+----------------------------------------------
+
+ - Function: x-grab-keyboard &optional device
+     This function grabs the keyboard on the given device (defaulting
+     to the selected one).  So long as the keyboard is grabbed, all
+     keyboard events will be delivered to XEmacs--it is not possible
+     for other X clients to eavesdrop on them.  Ungrab the keyboard
+     with `x-ungrab-keyboard' (use an `unwind-protect').  Returns `t'
+     if the grab was successful; `nil' otherwise.
+
+ - Function: x-ungrab-keyboard &optional device
+     This function releases a keyboard grab made with `x-grab-keyboard'.
+
+ - Function: x-grab-pointer &optional device cursor ignore-keyboard
+     This function grabs the pointer and restricts it to its current
+     window.  If optional DEVICE argument is `nil', the selected device
+     will be used.  If optional CURSOR argument is non-`nil', change
+     the pointer shape to that until `x-ungrab-pointer' is called (it
+     should be an object returned by the `make-cursor' function).  If
+     the second optional argument IGNORE-KEYBOARD is non-`nil', ignore
+     all keyboard events during the grab.  Returns `t' if the grab is
+     successful, `nil' otherwise.
+
+ - Function: x-ungrab-pointer &optional device
+     This function releases a pointer grab made with `x-grab-pointer'.
+     If optional first arg DEVICE is `nil' the selected device is used.
+     If it is `t' the pointer will be released on all X devices.
+
+\1f
+File: lispref.info,  Node: X Miscellaneous,  Prev: X Server,  Up: X-Windows
+
+Miscellaneous X Functions and Variables
+=======================================
+
+ - Variable: x-bitmap-file-path
+     This variable holds a list of the directories in which X bitmap
+     files may be found.  If `nil', this is initialized from the
+     `"*bitmapFilePath"' resource.  This is used by the
+     `make-image-instance' function (however, note that if the
+     environment variable `XBMLANGPATH' is set, it is consulted first).
+
+ - Variable: x-library-search-path
+     This variable holds the search path used by `read-color' to find
+     `rgb.txt'.
+
+ - Function: x-valid-keysym-name-p keysym
+     This function returns true if KEYSYM names a keysym that the X
+     library knows about.  Valid keysyms are listed in the files
+     `/usr/include/X11/keysymdef.h' and in `/usr/lib/X11/XKeysymDB', or
+     whatever the equivalents are on your system.
+
+ - Function: x-window-id &optional frame
+     This function returns the ID of the X11 window.  This gives us a
+     chance to manipulate the Emacs window from within a different
+     program.  Since the ID is an unsigned long, we return it as a
+     string.
+
+ - Variable: x-allow-sendevents
+     If non-`nil', synthetic events are allowed.  `nil' means they are
+     ignored.  Beware: allowing XEmacs to process SendEvents opens a
+     big security hole.
+
+ - Function: x-debug-mode arg &optional device
+     With a true arg, make the connection to the X server synchronous.
+     With false, make it asynchronous.  Synchronous connections are
+     much slower, but are useful for debugging. (If you get X errors,
+     make the connection synchronous, and use a debugger to set a
+     breakpoint on `x_error_handler'.  Your backtrace of the C stack
+     will now be useful.  In asynchronous mode, the stack above
+     `x_error_handler' isn't helpful because of buffering.)  If DEVICE
+     is not specified, the selected device is assumed.
+
+     Calling this function is the same as calling the C function
+     `XSynchronize', or starting the program with the `-sync' command
+     line argument.
+
+ - Variable: x-debug-events
+     If non-zero, debug information about events that XEmacs sees is
+     displayed.  Information is displayed on stderr.  Currently defined
+     values are:
+
+        * 1 == non-verbose output
+
+        * 2 == verbose output
+
+\1f
+File: lispref.info,  Node: ToolTalk Support,  Next: LDAP Support,  Prev: X-Windows,  Up: Top
+
+ToolTalk Support
+****************
+
+* Menu:
+
+* XEmacs ToolTalk API Summary::
+* Sending Messages::
+* Receiving Messages::
+
+\1f
+File: lispref.info,  Node: XEmacs ToolTalk API Summary,  Next: Sending Messages,  Up: ToolTalk Support
+
+XEmacs ToolTalk API Summary
+===========================
+
+   The XEmacs Lisp interface to ToolTalk is similar, at least in spirit,
+to the standard C ToolTalk API.  Only the message and pattern parts of
+the API are supported at present; more of the API could be added if
+needed.  The Lisp interface departs from the C API in a few ways:
+
+   * ToolTalk is initialized automatically at XEmacs startup-time.
+     Messages can only be sent other ToolTalk applications connected to
+     the same X11 server that XEmacs is running on.
+
+   * There are fewer entry points; polymorphic functions with keyword
+     arguments are used instead.
+
+   * The callback interface is simpler and marginally less functional.
+     A single callback may be associated with a message or a pattern;
+     the callback is specified with a Lisp symbol (the symbol should
+     have a function binding).
+
+   * The session attribute for messages and patterns is always
+     initialized to the default session.
+
+   * Anywhere a ToolTalk enum constant, e.g. `TT_SESSION', is valid, one
+     can substitute the corresponding symbol, e.g. `'TT_SESSION'.  This
+     simplifies building lists that represent messages and patterns.
+
+\1f
+File: lispref.info,  Node: Sending Messages,  Next: Receiving Messages,  Prev: XEmacs ToolTalk API Summary,  Up: ToolTalk Support
+
+Sending Messages
+================
+
+* Menu:
+
+* Example of Sending Messages::
+* Elisp Interface for Sending Messages::
+
+\1f
+File: lispref.info,  Node: Example of Sending Messages,  Next: Elisp Interface for Sending Messages,  Up: Sending Messages
+
+Example of Sending Messages
+---------------------------
+
+   Here's a simple example that sends a query to another application
+and then displays its reply.  Both the query and the reply are stored
+in the first argument of the message.
+
+     (defun tooltalk-random-query-handler (msg)
+       (let ((state (get-tooltalk-message-attribute msg 'state)))
+         (cond
+           ((eq state 'TT_HANDLED)
+            (message (get-tooltalk-message-attribute msg arg_val 0)))
+           ((memq state '(TT_FAILED TT_REJECTED))
+            (message "Random query turns up nothing")))))
+     
+     (defvar random-query-message
+       '(   class TT_REQUEST
+            scope TT_SESSION
+          address TT_PROCEDURE
+               op "random-query"
+             args '((TT_INOUT "?" "string"))
+         callback tooltalk-random-query-handler))
+     
+     (let ((m (make-tooltalk-message random-query-message)))
+       (send-tooltalk-message m))
+
+\1f
 File: lispref.info,  Node: Elisp Interface for Sending Messages,  Prev: Example of Sending Messages,  Up: Sending Messages
 
 Elisp Interface for Sending Messages
@@ -370,584 +1169,3 @@ and ensuring compliance with LDAP internationalization rules and formats
 * The Low-Level LDAP API::      Low-level LDAP lisp primitives
 * LDAP Internationalization::   I18n variables and functions
 
-\1f
-File: lispref.info,  Node: LDAP Variables,  Next: The High-Level LDAP API,  Prev: XEmacs LDAP API,  Up: XEmacs LDAP API
-
-LDAP Variables
---------------
-
- - Variable: ldap-default-host
-     The default LDAP server hostname.  A TCP port number can be
-     appended to that name using a colon as a separator.
-
- - Variable: ldap-default-port
-     Default TCP port for LDAP connections.  Initialized from the LDAP
-     library. Default value is 389.
-
- - Variable: ldap-default-base
-     Default base for LDAP searches.  This is a string using the syntax
-     of RFC 1779.  For instance, "o=ACME, c=US" limits the search to the
-     Acme organization in the United States.
-
- - Variable: ldap-host-parameters-alist
-     An alist of per host options for LDAP transactions.  The list
-     elements look like `(HOST PROP1 VAL1 PROP2 VAL2 ...)' HOST is the
-     name of an LDAP server. A TCP port number can be appended to that
-     name using a colon as a separator.  PROPN and VALN are
-     property/value pairs describing parameters for the server.  Valid
-     properties:
-    `binddn'
-          The distinguished name of the user to bind as.  This may look
-          like `cn=Babs Jensen,o=ACME,c=US', see RFC 1779 for details.
-
-    `passwd'
-          The password to use for authentication.
-
-    `auth'
-          The authentication method to use, possible values depend on
-          the LDAP library XEmacs was compiled with, they may include
-          `simple', `krbv41' and `krbv42'.
-
-    `base'
-          The base for the search. This may look like `cÿ, o¬me', see
-          RFC 1779 for syntax details.
-
-    `scope'
-          One of the symbols `base', `onelevel' or `subtree' indicating
-          the scope of the search limited to a base object, to a single
-          level or to the whole subtree.
-
-    `deref'
-          The dereference policy is one of the symbols `never',
-          `always', `search' or `find' and defines how aliases are
-          dereferenced.
-         `never'
-               Aliases are never dereferenced
-
-         `always'
-               Aliases are always dereferenced
-
-         `search'
-               Aliases are dereferenced when searching
-
-         `find'
-               Aliases are dereferenced when locating the base object
-               for the search
-
-    `timelimit'
-          The timeout limit for the connection in seconds.
-
-    `sizelimit'
-          The maximum number of matches to return for searches
-          performed on this connection.
-
- - Variable: ldap-verbose
-     If non-`nil', LDAP operations will echo progress messages.
-     Defaults to `nil'.
-
-\1f
-File: lispref.info,  Node: The High-Level LDAP API,  Next: The Low-Level LDAP API,  Prev: LDAP Variables,  Up: XEmacs LDAP API
-
-The High-Level LDAP API
------------------------
-
-   The following functions provide the most convenient interface to
-perform LDAP operations.  All of them open a connection to a host,
-perform an operation (add/search/modify/delete) on one or several
-entries and cleanly close the connection thus insulating the user from
-all the details of the low-level interface such as LDAP Lisp objects
-*note The Low-Level LDAP API::.
-
-   Note that `ldap-search' which used to be the name of the high-level
-search function in XEmacs 21.1 is now obsolete.  For consistency  in the
-naming as well as backward compatibility, that function now acts as a
-wrapper that calls either `ldap-search-basic' (low-level search
-function) or `ldap-search-entries' (high-level search function)
-according to the actual parameters.  A direct call to one of these two
-functions is preferred since it is faster and unambiguous.
-
- - Function: ldap-search-entries filter &optional host attributes
-          attrsonly withdn
-     Perform an LDAP search.  FILTER is the search filter *note Syntax
-     of Search Filters:: HOST is the LDAP host on which to perform the
-     search.  ATTRIBUTES is the specific attributes to retrieve, `nil'
-     means retrieve all.  ATTRSONLY if non-`nil' retrieves the
-     attributes only without their associated values.  If WITHDN is
-     non-`nil' each entry in the result will be prepended with its
-     distinguished name DN.  Additional search parameters can be
-     specified through `ldap-host-parameters-alist'.  The function
-     returns a list of matching entries.  Each entry is itself an alist
-     of attribute/value pairs optionally preceded by the DN of the
-     entry according to the value of WITHDN.
-
- - Function: ldap-add-entries entries &optional host binddn passwd
-     Add entries to an LDAP directory.  ENTRIES is a list of entry
-     specifications of the form `(DN (ATTR . VALUE) (ATTR . VALUE) ...)'
-     where DN the distinguished name of an entry to add, the following
-     are cons cells containing attribute/value string pairs.  HOST is
-     the LDAP host, defaulting to `ldap-default-host' BINDDN is the DN
-     to bind as to the server PASSWD is the corresponding password.
-
- - Function: ldap-modify-entries entry-mods &optional host binddn passwd
-     Modify entries of an LDAP directory.  ENTRY_MODS is a list of
-     entry modifications of the form `(DN MOD-SPEC1 MOD-SPEC2 ...)'
-     where DN is the distinguished name of the entry to modify, the
-     following are modification specifications.  A modification
-     specification is itself a list of the form `(MOD-OP ATTR VALUE1
-     VALUE2 ...)' MOD-OP and ATTR are mandatory, VALUES are optional
-     depending on MOD-OP.  MOD-OP is the type of modification, one of
-     the symbols `add', `delete' or `replace'. ATTR is the LDAP
-     attribute type to modify.  HOST is the LDAP host, defaulting to
-     `ldap-default-host' BINDDN is the DN to bind as to the server
-     PASSWD is the corresponding password"
-
- - Function: ldap-delete-entries dn &optional host binddn passwd
-     Delete an entry from an LDAP directory.  DN is the distinguished
-     name of an entry to delete or a list of those.  HOST is the LDAP
-     host, defaulting to `ldap-default-host' BINDDN is the DN to bind
-     as to the server PASSWD is the corresponding password.
-
-\1f
-File: lispref.info,  Node: The Low-Level LDAP API,  Next: LDAP Internationalization,  Prev: The High-Level LDAP API,  Up: XEmacs LDAP API
-
-The Low-Level LDAP API
-----------------------
-
-   The low-level API should be used directly for very specific purposes
-(such as multiple operations on a connection) only.  The higher-level
-functions provide a more convenient way to access LDAP directories
-hiding the subtleties of handling the connection, translating arguments
-and ensuring compliance with LDAP internationalization rules and formats
-(currently partly implemented only). See *note The High-Level LDAP API::
-
-   Note that the former functions `ldap-*-internal' functions have been
-renamed in XEmacs 21.2
-
-* Menu:
-
-* The LDAP Lisp Object::
-* Opening and Closing a LDAP Connection::
-* Low-level Operations on a LDAP Server::
-
-\1f
-File: lispref.info,  Node: The LDAP Lisp Object,  Next: Opening and Closing a LDAP Connection,  Prev: The Low-Level LDAP API,  Up: The Low-Level LDAP API
-
-The LDAP Lisp Object
-....................
-
-   An internal built-in `ldap' lisp object represents a LDAP connection.
-
- - Function: ldapp object
-     This function returns non-`nil' if OBJECT is a `ldap' object.
-
- - Function: ldap-host ldap
-     Return the server host of the connection represented by LDAP
-
- - Function: ldap-live-p ldap
-     Return non-`nil' if LDAP is an active LDAP connection
-
-\1f
-File: lispref.info,  Node: Opening and Closing a LDAP Connection,  Next: Low-level Operations on a LDAP Server,  Prev: The LDAP Lisp Object,  Up: The Low-Level LDAP API
-
-Opening and Closing a LDAP Connection
-.....................................
-
- - Function: ldap-open host &optional plist
-     Open a LDAP connection to HOST.  PLIST is a property list
-     containing additional parameters for the connection.  Valid keys
-     in that list are:
-    `port'
-          The TCP port to use for the connection if different from
-          `ldap-default-port' or the library builtin value
-
-    `auth'
-          The authentication method to use, possible values depend on
-          the LDAP library XEmacs was compiled with, they may include
-          `simple', `krbv41' and `krbv42'.
-
-    `binddn'
-          The distinguished name of the user to bind as.  This may look
-          like `c=com, o=Acme, cn=Babs Jensen', see RFC 1779 for
-          details.
-
-    `passwd'
-          The password to use for authentication.
-
-    `deref'
-          The dereference policy is one of the symbols `never',
-          `always', `search' or `find' and defines how aliases are
-          dereferenced.
-         `never'
-               Aliases are never dereferenced
-
-         `always'
-               Aliases are always dereferenced
-
-         `search'
-               Aliases are dereferenced when searching
-
-         `find'
-               Aliases are dereferenced when locating the base object
-               for the search The default is `never'.
-
-    `timelimit'
-          The timeout limit for the connection in seconds.
-
-    `sizelimit'
-          The maximum number of matches to return for searches
-          performed on this connection.
-
- - Function: ldap-close ldap
-     Close the connection represented by LDAP
-
-\1f
-File: lispref.info,  Node: Low-level Operations on a LDAP Server,  Prev: Opening and Closing a LDAP Connection,  Up: The Low-Level LDAP API
-
-Low-level Operations on a LDAP Server
-.....................................
-
-   `ldap-search-basic' is the low-level primitive to perform a search
-on a LDAP server.  It works directly on an open LDAP connection thus
-requiring a preliminary call to `ldap-open'.  Multiple searches can be
-made on the same connection, then the session must be closed with
-`ldap-close'.
-
- - Function: ldap-search-basic ldap filter base scope attrs attrsonly
-     Perform a search on an open connection LDAP created with
-     `ldap-open'.  FILTER is a filter string for the search *note
-     Syntax of Search Filters:: BASE is the distinguished name at which
-     to start the search.  SCOPE is one of the symbols `base',
-     `onelevel' or `subtree' indicating the scope of the search limited
-     to a base object, to a single level or to the whole subtree.  The
-     default is `subtree'.  `attrs' is a list of strings indicating
-     which attributes to retrieve for each matching entry. If `nil' all
-     available attributes are returned.  If `attrsonly' is non-`nil'
-     then only the attributes are retrieved, not their associated values
-     If `withdn' is non-`nil' then each entry in the result is
-     prepended with its distinguished name DN If `verbose' is non-`nil'
-     then progress messages are echoed The function returns a list of
-     matching entries.  Each entry  is itself an alist of
-     attribute/value pairs optionally preceded by the DN of the entry
-     according to the value of `withdn'.
-
- - Function: ldap-add ldap dn entry
-     Add ENTRY to a LDAP directory which a connection LDAP has been
-     opened to with `ldap-open'.  DN is the distinguished name of the
-     entry to add.  ENTRY is an entry specification, i.e., a list of
-     cons cells containing attribute/value string pairs.
-
- - Function: ldap-modify ldap dn mods
-     Modify an entry in an LDAP directory.  LDAP is an LDAP connection
-     object created with `ldap-open'.  DN is the distinguished name of
-     the entry to modify.  MODS is a list of modifications to apply.  A
-     modification is a list of the form `(MOD-OP ATTR VALUE1 VALUE2
-     ...)'  MOD-OP and ATTR are mandatory, VALUES are optional
-     depending on MOD-OP.  MOD-OP is the type of modification, one of
-     the symbols `add', `delete' or `replace'. ATTR is the LDAP
-     attribute type to modify
-
- - Function: ldap-delete ldap dn
-     Delete an entry to an LDAP directory.  LDAP is an LDAP connection
-     object created with `ldap-open'.  DN is the distinguished name of
-     the entry to delete
-
-\1f
-File: lispref.info,  Node: LDAP Internationalization,  Prev: The Low-Level LDAP API,  Up: XEmacs LDAP API
-
-LDAP Internationalization
--------------------------
-
-   The XEmacs LDAP API provides basic internationalization features
-based on the LDAP v3 specification (essentially RFC2252 on "LDAP v3
-Attribute Syntax Definitions").  Unfortunately since there is currently
-no free LDAP v3 server software, this part has not received much
-testing and should be considered experimental.  The framework is in
-place though.
-
- - Function: ldap-decode-attribute attr
-     Decode the attribute/value pair ATTR according to LDAP rules.  The
-     attribute name is looked up in `ldap-attribute-syntaxes-alist' and
-     the corresponding decoder is then retrieved from
-     `ldap-attribute-syntax-decoders'' and applied on the value(s).
-
-* Menu:
-
-* LDAP Internationalization Variables::
-* Encoder/Decoder Functions::
-
-\1f
-File: lispref.info,  Node: LDAP Internationalization Variables,  Next: Encoder/Decoder Functions,  Prev: LDAP Internationalization,  Up: LDAP Internationalization
-
-LDAP Internationalization Variables
-...................................
-
- - Variable: ldap-ignore-attribute-codings
-     If non-`nil', no encoding/decoding will be performed LDAP
-     attribute values
-
- - Variable: ldap-coding-system
-     Coding system of LDAP string values.  LDAP v3 specifies the coding
-     system of strings to be UTF-8.  You need an XEmacs with Mule
-     support for this.
-
- - Variable: ldap-default-attribute-decoder
-     Decoder function to use for attributes whose syntax is unknown.
-     Such a function receives an encoded attribute value as a string
-     and should return the decoded value as a string
-
- - Variable: ldap-attribute-syntax-encoders
-     A vector of functions used to encode LDAP attribute values.  The
-     sequence of functions corresponds to the sequence of LDAP
-     attribute syntax object identifiers of the form
-     1.3.6.1.4.1.1466.1115.121.1.* as defined in RFC2252 section 4.3.2.
-     As of this writing, only a few encoder functions are available.
-
- - Variable: ldap-attribute-syntax-decoders
-     A vector of functions used to decode LDAP attribute values.  The
-     sequence of functions corresponds to the sequence of LDAP
-     attribute syntax object identifiers of the form
-     1.3.6.1.4.1.1466.1115.121.1.* as defined in RFC2252 section 4.3.2.
-     As of this writing, only a few decoder functions are available.
-
- - Variable: ldap-attribute-syntaxes-alist
-     A map of LDAP attribute names to their type object id minor number.
-     This table is built from RFC2252 Section 5 and RFC2256 Section 5
-
-\1f
-File: lispref.info,  Node: Encoder/Decoder Functions,  Prev: LDAP Internationalization Variables,  Up: LDAP Internationalization
-
-Encoder/Decoder Functions
-.........................
-
- - Function: ldap-encode-boolean bool
-     A function that encodes an elisp boolean BOOL into a LDAP boolean
-     string representation
-
- - Function: ldap-decode-boolean str
-     A function that decodes a LDAP boolean string representation STR
-     into an elisp boolean
-
- - Function: ldap-decode-string str
-     Decode a string STR according to `ldap-coding-system'
-
- - Function: ldap-encode-string str
-     Encode a string STR according to `ldap-coding-system'
-
- - Function: ldap-decode-address str
-     Decode an address STR according to `ldap-coding-system' and
-     replacing $ signs with newlines as specified by LDAP encoding
-     rules for addresses
-
- - Function: ldap-encode-address str
-     Encode an address STR according to `ldap-coding-system' and
-     replacing newlines with $ signs as specified by LDAP encoding
-     rules for addresses
-
-\1f
-File: lispref.info,  Node: Syntax of Search Filters,  Prev: XEmacs LDAP API,  Up: LDAP Support
-
-Syntax of Search Filters
-========================
-
-   LDAP search functions use RFC1558 syntax to describe the search
-filter.  In that syntax simple filters have the form:
-
-     (<attr> <filtertype> <value>)
-
-   `<attr>' is an attribute name such as `cn' for Common Name, `o' for
-Organization, etc...
-
-   `<value>' is the corresponding value.  This is generally an exact
-string but may also contain `*' characters as wildcards
-
-   `filtertype' is one `=' `~=', `<=', `>=' which respectively describe
-equality, approximate equality, inferiority and superiority.
-
-   Thus `(cn=John Smith)' matches all records having a canonical name
-equal to John Smith.
-
-   A special case is the presence filter `(<attr>=*' which matches
-records containing a particular attribute.  For instance `(mail=*)'
-matches all records containing a `mail' attribute.
-
-   Simple filters can be connected together with the logical operators
-`&', `|' and `!' which stand for the usual and, or and not operators.
-
-   `(&(objectClass=Person)(mail=*)(|(sn=Smith)(givenname=John)))'
-matches records of class `Person' containing a `mail' attribute and
-corresponding to people whose last name is `Smith' or whose first name
-is `John'.
-
-\1f
-File: lispref.info,  Node: PostgreSQL Support,  Next: Internationalization,  Prev: LDAP Support,  Up: Top
-
-PostgreSQL Support
-******************
-
-   XEmacs can be linked with PostgreSQL libpq run-time support to
-provide relational database access from Emacs Lisp code.
-
-* Menu:
-
-* Building XEmacs with PostgreSQL support::
-* XEmacs PostgreSQL libpq API::
-* XEmacs PostgreSQL libpq Examples::
-
-\1f
-File: lispref.info,  Node: Building XEmacs with PostgreSQL support,  Next: XEmacs PostgreSQL libpq API,  Up: PostgreSQL Support
-
-Building XEmacs with PostgreSQL support
-=======================================
-
-   XEmacs PostgreSQL support requires linking to the PostgreSQL libpq.so
-library.  Describing how to build and install PostgreSQL is beyond the
-scope of this document, see the PostgreSQL manual for details.
-
-   If you have installed XEmacs from one of the binary kits on
-(<ftp://ftp.xemacs.org/>), or are using an XEmacs binary from a CD ROM,
-you should have XEmacs PostgreSQL support by default.  If you are
-building XEmacs from source on a Linux system with PostgreSQL installed
-into the default location, it should be autodetected when you run
-configure.  If you have installed PostgreSQL into its non-Linux default
-location, `/usr/local/pgsql', you must specify
-`--site-prefixes=/usr/local/pgsql' when you run configure.  If you
-installed PostgreSQL into another location, use that instead of
-`/usr/local/pgsql' when specifying `--site-prefixes'.
-
-   As of XEmacs 21.2, PostgreSQL versions 6.5.3 and 7.0 are supported.
-XEmacs Lisp support for V7.0 is somewhat more extensive than support for
-V6.5.  In particular, asynchronous queries are supported.
-
-\1f
-File: lispref.info,  Node: XEmacs PostgreSQL libpq API,  Next: XEmacs PostgreSQL libpq Examples,  Prev: Building XEmacs with PostgreSQL support,  Up: PostgreSQL Support
-
-XEmacs PostgreSQL libpq API
-===========================
-
-   XEmacs PostgreSQL API is intended to be a policy-free, low-level
-binding to libpq.  The intent is to provide all the basic functionality
-and then let high level Lisp code decide its own policies.
-
-   This documentation assumes that the reader has knowledge of SQL, but
-requires no prior knowledge of libpq.
-
-   There are many examples in this manual and some setup will be
-required.  In order to run most of the following examples, the
-following code needs to be executed.  In addition to the data is in
-this table, nearly all of the examples will assume that the free
-variable `P' refers to this database connection.  The examples in the
-original edition of this manual were run against Postgres 7.0beta1.
-
-     (progn
-       (setq P (pq-connectdb ""))
-       ;; id is the primary key, shikona is a Japanese word that
-       ;; means `the professional name of a Sumo wrestler', and
-       ;; rank is the Sumo rank name.
-       (pq-exec P (concat "CREATE TABLE xemacs_test"
-                          " (id int, shikona text, rank text);"))
-       (pq-exec P "COPY xemacs_test FROM stdin;")
-       (pq-put-line P "1\tMusashimaru\tYokuzuna\n")
-       (pq-put-line P "2\tDejima\tOozeki\n")
-       (pq-put-line P "3\tMusoyama\tSekiwake\n")
-       (pq-put-line P "4\tMiyabiyama\tSekiwake\n")
-       (pq-put-line P "5\tWakanoyama\tMaegashira\n")
-       (pq-put-line P "\\.\n")
-       (pq-end-copy P))
-          => nil
-
-* Menu:
-
-* libpq Lisp Variables::
-* libpq Lisp Symbols and DataTypes::
-* Synchronous Interface Functions::
-* Asynchronous Interface Functions::
-* Large Object Support::
-* Other libpq Functions::
-* Unimplemented libpq Functions::
-
-\1f
-File: lispref.info,  Node: libpq Lisp Variables,  Next: libpq Lisp Symbols and DataTypes,  Prev: XEmacs PostgreSQL libpq API,  Up: XEmacs PostgreSQL libpq API
-
-libpq Lisp Variables
---------------------
-
-   Various Unix environment variables are used by libpq to provide
-defaults to the many different parameters.  In the XEmacs Lisp API,
-these environment variables are bound to Lisp variables to provide more
-convenient access to Lisp Code.  These variables are passed to the
-backend database server during the establishment of a database
-connection and when the `pq-setenv' call is made.
-
- - Variable: pg:host
-     Initialized from the PGHOST environment variable.  The default
-     host to connect to.
-
- - Variable: pg:user
-     Initialized from the PGUSER environment variable.  The default
-     database user name.
-
- - Variable: pg:options
-     Initialized from the PGOPTIONS environment variable.  Default
-     additional server options.
-
- - Variable: pg:port
-     Initialized from the PGPORT environment variable.  The default TCP
-     port to connect to.
-
- - Variable: pg:tty
-     Initialized from the PGTTY environment variable.  The default
-     debugging TTY.
-
-     Compatibility note:  Debugging TTYs are turned off in the XEmacs
-     Lisp binding.
-
- - Variable: pg:database
-     Initialized from the PGDATABASE environment variable.  The default
-     database to connect to.
-
- - Variable: pg:realm
-     Initialized from the PGREALM environment variable.  The default
-     Kerberos realm.
-
- - Variable: pg:client-encoding
-     Initialized from the PGCLIENTENCODING environment variable.  The
-     default client encoding.
-
-     Compatibility note:  This variable is not present in non-Mule
-     XEmacsen.  This variable is not present in versions of libpq prior
-     to 7.0.  In the current implementation, client encoding is
-     equivalent to the `file-name-coding-system' format.
-
- - Variable: pg:authtype
-     Initialized from the PGAUTHTYPE environment variable.  The default
-     authentication scheme used.
-
-     Compatibility note:  This variable is unused in versions of libpq
-     after 6.5.  It is not implemented at all in the XEmacs Lisp
-     binding.
-
- - Variable: pg:geqo
-     Initialized from the PGGEQO environment variable.  Genetic
-     optimizer options.
-
- - Variable: pg:cost-index
-     Initialized from the PGCOSTINDEX environment variable.  Cost index
-     options.
-
- - Variable: pg:cost-heap
-     Initialized from the PGCOSTHEAP environment variable.  Cost heap
-     options.
-
- - Variable: pg:tz
-     Initialized from the PGTZ environment variable.  Default timezone.
-
- - Variable: pg:date-style
-     Initialized from the PGDATESTYLE environment variable.  Default
-     date style in returned date objects.
-
- - Variable: pg-coding-system
-     This is a variable controlling which coding system is used to
-     encode non-ASCII strings sent to the database.
-
-     Compatibility Note: This variable is not present in InfoDock.
-